Linuxファイアウォールノート
6123 ワード
iptablesコマンドを使用してファイアウォールを構成する
ファイアウォールを構築するための通常の3つのステップ:
基本構文:
iptables [-t table] CMD [option] [chain] [matcher] [-j target]
ファイアウォールの消去構文:iptables[-t table][-FXZ][chain]
アクションコマンド
説明
-Fまたは--flush
チェーンとテーブルのすべてのルールを明確に指定し、チェーンを指定しない場合はすべてのチェーンを空にします.
-Xまたは--delete-chain
指定したユーザー定義チェーンを削除するには、チェーン内のルールが使用されていないことを保証する必要があります.チェーンが指定されていない場合は、すべてのユーザー定義チェーンを削除します.
-Zまたは--zero
チェーン内のパケットカウンタとバイトカウンタをクリア
ファイアウォールポリシー構文の設定:iptables[-t table]-P[chain]ACCEPT|DROP構成チェーンのデフォルトポリシーの一般的な3つの方法:
ファイアウォール規則の設定
:iptables [-t table] [
iptablesチェーン操作コマンド(CMD)
アクションコマンド
説明
-Aまたは--append
選択したチェーンの最後にルールを追加
-Iまたは--insert[rulenum]
指定したルール番号を使用して、選択したチェーンにルールを挿入します.
-Rまたは--replace rulenum
指定したルール番号を使用して、選択したチェーンにルールを置き換えます.
-Dまたは--delete rulenum
指定したルール番号を使用して、選択したチェーンからルールを削除します.
-Lまたは--list[-line-numbers][-v][-n]
指定されたチェーンのすべてのルールがリストされ、指定されていない場合はすべてのチェーンがリストされます.オプション-line-numbersはルール番号を表示するために使用され、オプション-vは出力を詳細化し、オプション-nはデフォルトの名前ではなく、出力にIPアドレスとポート数値で表示されます.
-Nまたは--new-chain
指定した名前で新しいユーザーカスタムチェーンを作成します.既存のチェーンと同じ名前にすることはできません.
-E < old-chain-name> < new-chain-name>
カスタムチェーンの名前を変更
iptablesでよく使われるマッチングルール(rules)
パラメータ
説明
-s [!] address[/mask]
一致するパケットのソースアドレスまたはアドレス範囲、例えば-s 192.168.1.0/24
-d [!] address[/mask]
マッチング先アドレスまたはアドレス範囲、-d 192.168.1.0
-i [!] interface name[+]
一致するパケットがどのネットワークインタフェースから流入するか、デフォルトはすべてのインタフェースです.
-o [!] interface name[+]
一致するパケットがどのネットワークインタフェースから流出するか、デフォルトはすべてのインタフェースです.
-p [!] protocol
一致するプロトコルを指定
-m
拡張マッチングの実現
注:各コマンドの複数の一致条件は、AND関係です.
プロトコルパラメータ(-p)の使い方
プロトコル
関連パラメータ
説明
例を挙げる
-p tcpまたは-p udp
–sport
ルールに一致するソースポートまたはポート範囲
-p udp --sport 1024:65535
-p tcpまたは-p udp
–dport
照合ルールの宛先ポートまたはポート範囲
-p tdp --dport 80
-p tcp
–tcp-flags
指定されたTCPタグに一致し、このオプションには2つのパラメータがあり、いずれもリストであり、リスト内部はカンマで区切られ、リスト間はスペースで区切られ、1つ目のリストには検査が必要なタグがリストされ、2つ目のリストは1つ目のリストに1を設定しなければならない「タグ」を指定し、つまり1つ目のパラメータは検査範囲を提供し、2つ目のパラメータは設定条件を提供し、マッチング操作で識別できるタグはURG(U:Urgent緊急)である.ACK(A:Acknowledgement応答);PSH(P:Push推進);RST(R:Restリセット);SYN(S:Synchronize同期);FIN:(F:Final終了);他にも2つ、ALLとNONE
-p tcp--tcp-flags SYN,FIN,ACK SYNマッチングSYNは1に設定され、FINとACKは設定されていないパケット、-p tcp--tcp-flags!SYN,FIN,ACK SYNは、FINおよびACKが設定され、SYNが設定されていないパケット−p−tcp−flags ALL NONEと一致し、すべてのフラグが設定されていないパケット−p−tcp−flags ALL NONEが一致する
-p tcp
[!] --syn
SYNビットがセットされているだけで、ACK、FINビットが明確なTCPパケット
-p tcp --syn
-p icmp
–icmp-type [!] typename
ICMP情報タイプに一致
-p icmp --icmp-type 8
拡張マッチング(-m)の使い方
拡張
関連パラメータ
説明
例を挙げる
iprange
–src-range
ソースアドレス内の任意のIPが一致する
-m iprange --src-range 10.0.0.1-10.0.0.100
iprange
–dst-range
宛先アドレス内の任意のIPが一致する
multiport
–sports
ソースポートの範囲内の任意のポートが一致します.
multiport
–dports
目的ポート範囲内の任意のポートを一致させることができます
-m multiport --dports 111,2049,10001:10004
multiport
–ports
ポート範囲内の任意のポートが一致します.
state
–state
リンクトレースによるステータスマッチング
-m state --state INVALID,NEW
conntrack
–ctstate
リンクトレースによるステータスマッチング
-m conntrack --ctstate INVALID,NEW
mac
–mac-source
パケットのソースMACアドレスに一致し、INPUT、PREROUTINGおよびFORWARDチェーンにのみ使用される
-m mac --mac-source 00:21:97:30:51:2B
limit
–limit
単位時間内に通過できるパケットの数を指定します.単位時間は/second、/minute、/hour、/dayまたは頭文字です.
-m limit --limit 3/hour --limit burst 5
limit
–limit-burst
瞬間的に大量のパケットに一致する単位時間当たりの最大一致可能なパケット数を指定します.
iptablesでよく使われるルールターゲット(target)
ターゲット
目標の説明
パラメータ
-j ACCEPT
パケットの通過を許可
-j DROP
パケットを単純に破棄
-j REJECT
パケットを拒否しICMPエラーメッセージで応答
–reject-with < type>
-j DNAT
パケットの宛先を変更するsocket
–to-destination ipaddr [-ipaddr][:prot-prot]
-j REDIRECT
ファイアウォールでパケットをネイティブの別のポートにリダイレクト
–to-ports port[-port]
-j SNAT
パケットのソースsocketの変更
–to-source ipaddr[-ipaddr][:port-port]
-j MASQUERADE
SNAT機能と同様、知識は指定する必要はありません–to-source
–to-ports port[-port]
-j LOG
rsyslogdを使用してログを記録し、デフォルトは/var/log/messagesに記録します.
–log-prefix --log-ip-options–log-tcp-options
-j < custom chain>
ユーザーカスタムチェーンに移動し、実行後に呼び出されたチェーンに戻ります.
-g < custom chain>
ユーザーカスタムチェーンに移動し、実行後に呼び出されたチェーンを返さない
ルール・インスタンス1を設定します.リモートホストからのSSH要求の受信を許可するiptables-A INPUT-i eth 0-p tcp--dport 22-m state--state NEW,ESTABLISHED-j ACCEPT 2.ローカルホストのSSH応答iptables-A OUTPUT-o eth 0-p tcp--sport 22-m state--state ESTABLISHED-j ACCEPT 3の送信を許可する.送信パケットの宛先ポートは22 iptables-A OUTPUT-o eth 0-p tcp--dport 22-m state--state NEW,ESTABLISHED-j ACCEPT 4である.受信パケットソースポートは22 iptables-A INPUT-i eth 0-p tcp--sport 22-m state--state ESTABLISHED-j ACCEPT 5である.リモートホストからのHTTPリクエストの受信を許可するiptables-A INPUT-i eth 0-p tcp--dport 80-m state--state NEW,ESTABLISHED-j ACCEPT 6.ローカルホストへのHTTP応答を許可iptables-A OUTPUT-o eth 0-p tcp--sport 80-m state--state ESTABLISHED-j ACCEPT