firewalld は iptables の新しいパッケージであるため、firewalld 自体は引き続き iptables を使用します。
Linux では firewalld と iptables が共存します。
firewalld をサポートするシステムの場合は、firewalld を使用することをお勧めします。firewalld の非常に便利な機能は、ファイアウォール ルールを動的に追加して直接有効にすることであり、iptables では不可能であるためです。これはシステム セキュリティにとって非常に重要です。例:開発者のプログラムが実行中で、その IP がルールまたは危険であると判断された場合、その IP をファイアウォールのブラックリストに動的に追加して、サーバーをより効果的に保護できます。攻撃の発信元 IP は無制限ではないことを知っておくことが重要です攻撃者は攻撃コストが大幅に増加するため、攻撃を放棄します。
ただし、firewalld も iptables も実際にはファイアウォールではなく、単なる保護ルールであり、CC 攻撃やその他のブルート フォース クラッキングなどのルール外の攻撃には抵抗できないことに注意してください。
付属の共通コマンド:
地域マネジメント
ネットワークを異なる領域に分割することで、異なる領域間のアクセス制御ポリシーを策定し、異なるプログラム領域間で送信されるデータ フローを制御します。たとえば、インターネットは信頼できないゾーンですが、内部ネットワークは信頼性の高いゾーンです。ネットワーク セキュリティ モデルは、インストール時、初回起動時、および最初のネットワーク接続確立時にオプションで初期化できます。このモデルは、ホストが接続されているネットワーク環境全体の信頼レベルを記述し、新しい接続の処理方法を定義します。次のようないくつかの異なる初期化領域があります。
ブロック領域 (ブロック): 受信ネットワーク パケットはすべてブロックされます。
作業領域 (職場): ネットワーク上の他のコンピュータがあなたのコンピュータに害を及ぼさないことを信頼してください。
ホームエリア (自宅): ネットワーク上の他のコンピュータを信頼して、自分のコンピュータに損害を与えないようにします。
パブリック エリア (パブリック): ネットワーク上のコンピュータを信頼せず、受信ネットワーク接続のみを受け入れることを選択します。
分離ゾーン (DMZ): 分離ゾーンは非武装地帯とも呼ばれ、内部ネットワークと外部ネットワークの間にバッファーとして機能するネットワーク層が追加されます。孤立したエリアの場合、着信ネットワーク接続を受け入れるオプションのみがあります。
信頼されたゾーン (信頼された): すべてのネットワーク接続が受け入れられます。
ドロップ ゾーン (ドロップ): 受信ネットワーク接続はすべて拒否されます。
内部ゾーン (内部): ネットワーク上の他のコンピュータを信頼して、自分のコンピュータに損害を与えないようにします。受信ネットワーク接続を受け入れるオプションのみがあります。
外部ゾーン (外部): ネットワーク上の他のコンピュータを信頼しないでください。コンピュータに損害を与えることはありません。受信ネットワーク接続を受け入れるオプションのみがあります。
注: FirewallD のデフォルト ゾーンはパブリックです。
firewalld はデフォルトで 9 つのゾーン構成ファイルを提供します: block.xml、dmz.xml、drop.xml、external.xml、home.xml、internal.xml、public.xml、trusted.xml、work.xml。これらはすべて次の場所に保存されます。 「/usr/lib/firewalld/zones/」ディレクトリ。
設定方法
firewalld には、firewall-config、firewall-cmd、xml ファイルの直接編集という 3 つの主な構成方法があります。そのうち、firewall-config はグラフィカル ツール、firewall-cmd はコマンド ライン ツールであり、Linux の場合は、誰もが次のことを行う必要があります。コマンド ライン モードの操作に慣れているため、firewall-config については説明しません。
インストール構成:
1.ファイアウォールをインストールする
ルート実行 # yum install firewalld firewall-config
2. firewalld を実行、停止、無効にする
開始: # systemctl start firewalld
ステータスの表示: # systemctl status firewalld または firewall-cmd --state
停止:# systemctl disable firewalld
無効化: # systemctl stop firewalld
systemctlマスクファイアウォール
systemctl ファイアウォールのマスク解除
4. ファイアウォールを設定する
バージョンを確認します: $ firewall-cmd --version
ヘルプを表示: $ firewall-cmd --help
設定を表示:
ステータスの表示: $ firewall-cmd --state
ゾーン情報の表示: $ firewall-cmd --get-active-zones
指定したインターフェイスが属するゾーンを表示します: $ firewall-cmd --get-zone-of-interface=eth0
すべてのパッケージを拒否します: # firewall-cmd --panic-on
拒否ステータスをキャンセル: # firewall-cmd --panic-off
拒否されたかどうかを確認します: $ firewall-cmd --query-panic
ファイアウォール ルールを更新します: # firewall-cmd --reload
# ファイアウォール-cmd --complete-reload
2 つの違いは、1 つ目はルールを動的に追加する firewalld 機能の 1 つであるため切断する必要がなく、2 つ目はサービスの再起動と同様に切断する必要があることです。
インターフェイスをゾーンに追加します。デフォルトのインターフェイスはパブリックです。
# firewall-cmd --zone=public --add-interface=eth0
永続的に有効にし 、 --permanentを加え てファイアウォールをリロードします。
デフォルトのインターフェースゾーンを設定する
# ファイアウォールcmd --set-default-zone=public
再起動しなくてもすぐに有効になります
ポートを開く(これが最もよく使われるようです)
開いているポートをすべて表示するには:
# ファイアウォール-cmd --zone=dmz --list-ports
ゾーンにポートを追加します。
# ファイアウォールcmd --zone=dmz --add-port=8080/tcp
永続的な効果の場合、方法は上記と同じです
サービスを開くことは、ポートを視覚化することと似ています。サービスは構成ファイルに追加する必要があります。/etc/firewalld ディレクトリに services フォルダーがあります。これについては詳しく説明しません。詳細については、書類
# firewall-cmd --zone=work --add-service=smtp
サービスを削除する
# firewall-cmd --zone=work --remove-service=smtp
ポート転送機能、カスタムの複雑なルール機能、ロックダウンもあります。
iptables は、Linux カーネルの最新バージョン 3.5 に統合された IP パケット フィルタリング システムです。Linux システムがインターネット、LAN、サーバー、または LAN をインターネットに接続するプロキシ サーバーに接続されている場合、システムは Linux システム上の IP パケット フィルタリングとファイアウォール構成をより詳細に制御することが容易になります。
iptables 基本コマンドの使用例
1. チェーンと NAT の基本操作
1. すべてのルールをクリアします。
1) プリセットテーブルフィルター内のすべてのルールチェーン内のルールをクリアします。
# iptables -F
2) デフォルトのテーブルフィルターのユーザー定義チェーン内のルールをクリアします。
#iptables -X
#iptables -Z
3) NAT テーブルルールをクリアする
#iptables -F -t nat
4) NATテーブルの表示
#iptables -t nat -nL
2. チェーンのデフォルトポリシーを設定します。一般に 2 つの方法があります。
1) 最初にすべてのパッケージを許可し、次に危険なパッケージがファイアウォールを通過することを禁止します。
#iptables -P INPUT ACCEPT
#iptables -P OUTPUT ACCEPT
#iptables -P FORWARD ACCEPT
2) 最初にすべてのパッケージを禁止し、次に必要なサービスに従って特定のパッケージがファイアウォールを通過できるようにします。
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -P FORWARD DROP
3. テーブル/チェーン内のすべてのルールをリストします。デフォルトでは、フィルタテーブルのみがリストされます。
#iptables -L
4. ルールをチェーンに追加します。次のステートメントは、ネットワーク インターフェイスを開くために使用されます。
#iptables -A INPUT -i lo -j ACCEPT
#iptables -A OUTPUT -o lo -j ACCEPT
#iptables -A INPUT -i eth0 -j ACEPT
#iptables -A OUTPUT - o eth1 -j ACCEPT
#iptables -A FORWARD -i eth1 -j ACCEPT
#iptables -A FORWARD -0 eth1 -j ACCEPT
注: ローカル プロセスは FORWARD チェーンを通過しないため、ループバック インターフェイス lo は INPUT でのみ機能します。および OUTPUT チェーン。
5. ユーザー定義のチェーン。
#iptables -Ncustom
#iptables -Acustom -s 0/0 -d 0/0 -p icmp -j DROP
#iptables -A INPUT -s 0/0 -d 0/0 -j DROP
2. 基本ルールの設定 一致
1. 一致するプロトコルを指定します。
1) 指定されたプロトコルと一致します。
#iptables -A INPUT -p tcp
2) 指定されたプロトコルを除くすべてのプロトコルと一致します。
#iptables -A INPUT -p !tcp
2. 指定したアドレスは一致します。
1) 一致するホストを指定します。
#iptables -A INPUT -s 192.168.0.18
2) 一致するネットワークを指定します。
#iptables -A INPUT -s 192.168.2.0/24
3) 指定したホスト以外のアドレスと一致します。
#iptables -A FORWARD -s !192.168.0.19
4) 指定したネットワーク以外のネットワークを照合します。
#iptables -A FORWARD -s ! 192.168.3.0/24
3. 一致するネットワーク インターフェイスを指定します。
1) 一致する単一のネットワーク インターフェイスを指定します。
#iptables -A INPUT -i eth0
#iptables -A FORWARD -o eth0
2) 一致する同じタイプのネットワーク インターフェイスを指定します。
#iptables -A FORWARD -o ppp+
4. ポートのマッチングを指定します。
1) 単一のポート一致を指定します。
#iptables -A INPUT -p tcp --sport www
#iptables -A INPUT -p udp –dport 53
2) 指定したポート以外のポートを照合します。
#iptables -A INPUT -p tcp –dport !22
3) ポート範囲を一致させます。
#iptables -A INPUT -p tcp –sport 22:80
4) ICMP ポートと ICMP タイプを一致させます。
#iptables -A INOUT -p icmp –icimp-type 8
5) ip フラグメントを指定します。
すべてのネットワーク インターフェイスには MTU (最大伝送単位) があり、通過できるパケットの最大サイズが定義されます。データ パケットがこのパラメータ値より大きい場合、システムはそれをより小さなデータ パケット
(ip フラグメントと呼ばれる) に分割して送信し、受信側はこれらの ip フラグメントを再構成してパケット全体を復元します。これにより問題が発生します。システムが送信のために大きなデータ パケットを IP フラグメントに分割するとき、最初のフラグメントには
完全なパケット ヘッダー情報 (IP+TCP、UDP、および ICMP) が含まれますが、後続のフラグメントにはパケット ヘッダーの部分的な情報しか含まれません (送信元アドレス、宛先アドレスなど)。したがって、次の IP フラグメント (TCP、UDP、ICMP など) のヘッダーをチェックすることは
できません。次のようなルールがあるとします。
#iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 192.168.2.100 –dport 80 -j ACCEPT
このとき、FORWARD のポリシーが DROP の場合、システムは最初の IP フラグメントのみを通過させ、パケット ヘッダー情報が不完全であるため、残りのフラグメントは通過できません。--fragment/-f オプションを使用して 2 番目以降の ip フラグメントを指定すると、上記の問題を解決できます。
#iptables -A FORWARD -f -s 192.168.1.0/24 -d 192.168.2.100 -j ACCEPT
DoS 攻撃などの IP フラグメント攻撃のインスタンスが多数あるため、IP フラグメントの通過を許可するとセキュリティ リスクになることに注意してください。 iptablesの拡張子を合わせることでこの1点を制限することができます。
3. 拡張ルール マッチングを設定します (たとえば、ターゲット アクションが無視されました)。
1. マルチポート マッチング。
1) 複数の送信元ポートを照合します。
#iptables -A INPUT -p tcp -m multiport –sport 22,53,80,110
2) 複数の宛先ポートを照合します。
#iptables -A INPUT -p tcp -m multiport –dpoort 22,53,80
3) 複数のポートを照合します (送信元ポートか宛先ポートか)
#iptables -A INPUT -p tcp -m multiport –port 22,53,80,110
2 TCP 一致拡張子の指定
-tcp-flags オプションを使用して、TCP パケットのフラグ ビットに従ってフィルタリングします。
#iptables -A INPUT -p tcp –tcp-flags SYN,FIN,ACK SYN
#iptables -A FROWARD -p tcp –tcp-flags ALL SYN,ACK
上記の例では、SYN、ACK、FIN を示す最初のフラグがすべてチェックされますが、一致するのは SYN のみです。ALL の 2 番目のフラグ (SYN、ACK、FIN、RST、URG、PSH) がチェックされますが、SYN と ACK が設定されている場合にのみ一致します。
#iptables -A FORWARD -p tcp --syn
オプション - syn は、「--tcp-flags SYN、RST、ACK SYN」の省略形と同等です。
3. 制限レートマッチング拡張。
1) 単位時間あたりに通過できるデータ パケットの数を指定します。単位時間は、/秒、/分、/時間、/日、または最初の括弧を使用できます。
#iptables -A INPUT -m limit --limit 300/hour
2) イベントをトリガーするしきい値を指定します。
#iptables -A INPUT -m limit –limit-burst 10 は、
一度に 10 パケットを超えて流入するかどうかを比較するために使用され、この制限を超えたパケットは直接破棄されます。
3) レート制限とトリガーしきい値を同時に指定します。
#iptables -A INPUT -p icmp -m limit –-limit 3/m –limit-burst 3 は、
1 分あたりに許可される最大パケット数が、制限レート (この例では 3) に現在のトリガーしきい値のバースト数を加えたものであることを示します。いずれの場合も、3 つのデータ パケットの通過が保証され、トリガーしきい値バーストは許可される追加パケットの数に相当します。
4) 状態ベースのマッチング拡張 (接続追跡)
各ネットワーク接続には次の情報が含まれます: 送信元アドレス、宛先アドレス、送信元ポート、宛先ポート、呼び出されたソケット ペア (ソケット ペア)、プロトコル タイプ、接続ステータス (TCP プロトコル)
そしてタイムアウトなど。ファイアウォールでは、この情報をステートフルと呼びます。ステートフル パケット フィルタリング ファイアウォールはメモリ内に状態追跡テーブルを維持できるため、単純なパケット フィルタリング ファイアウォールよりも安全です。コマンドの形式は次のとおりです: iptables
-m state –-state [!]state [,state,state,state ]
このうち、状態テーブルはカンマ区切りのリストで、接続ステータスを指定するために使用されます。次の 4 種類があります。
>NEW: パッケージは新しい接続を開始しようとしています (再接続または接続リダイレクト)
>RELATED: パッケージは既存のパッケージに属しています確立された接続によって確立された新しい接続。例:
FTP データ送信接続と制御接続の関係は RELATED です。
>ESTABLISHED: パケットは確立された接続に属しています。
>INVALID: パケットはどの接続にも一致しません。通常、これらのパケットはドロップされます。
例:
(1) 確立された接続、または確立された接続によって確立された新しい接続と一致するルールを INPUT チェーンに追加します。つまり、すべての TCP 応答パケットと一致します。
#iptables -A INPUT -m state –state RELATED,ESTABLISHED
(2) 非 eth0 インターフェイスからのすべての接続要求パケットに一致するルールを INPUT チェーンに追加します。
#iptables -A INPUT -m state --state NEW -i !eth0
別の例として、次の接続追跡を ftp 接続に使用できます。
(1) パッシブ (パッシブ) ftp 接続モード。
#iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state –-state ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: -m
state - –state ESTABLISHED,RELATED -j ACCEPT
(2)主動作(アクティブ)ftp接続モード
#iptables -A INNPUT -p tcp --sport 20 -m state –-state ESTABLISHED,RELATED -j ACCEPT
#iptables -A OUTPUT -p tcp –OUTPUT -p tcp –dport 20 -m state --state ESTABLISHED -j ACCEPT