Linuxファイアウォールノート

6123 ワード

iptablesコマンドを使用してファイアウォールを構成する


ファイアウォールを構築するための通常の3つのステップ:
  • すべての規則
  • を明確にする
  • ファイアウォールポリシー
  • を設定
  • ファイアウォールルール
  • を設定
    基本構文:
    iptables [-t table] CMD [option]  [chain]  [matcher] [-j target]
    
  • テーブル(table):raw/mangle/nat/filter/security、デフォルトはfilter
  • 操作コマンド(CMD):追加、削除、チェーンルールの更新、カスタムチェーンの作成などを含む
  • .
  • チェーン(chain):異なる用途に対して操作するチェーン
  • を指定する.
  • ルールマッチング器(matcher):IPアドレス、ポート、パケットタイプなどの様々なマッチングルールを指定する
  • .
  • ターゲット(target):ルールがパッケージに一致する場合、本当に実行するタスクはターゲットIDで、受け入れまたは拒否など、各ルールにはターゲット注意が1つしかありません.iptablesコマンドは大文字と小文字を厳格に区別し、すべてのテーブル名は小文字で、すべてのチェーン名は大文字で、すべてのルールマッチングは小文字で
  • です.
    ファイアウォールの消去構文:iptables[-t table][-FXZ][chain]
    アクションコマンド
    説明
    -Fまたは--flush
    チェーンとテーブルのすべてのルールを明確に指定し、チェーンを指定しない場合はすべてのチェーンを空にします.
    -Xまたは--delete-chain
    指定したユーザー定義チェーンを削除するには、チェーン内のルールが使用されていないことを保証する必要があります.チェーンが指定されていない場合は、すべてのユーザー定義チェーンを削除します.
    -Zまたは--zero
    チェーン内のパケットカウンタとバイトカウンタをクリア
    ファイアウォールポリシー構文の設定:iptables[-t table]-P[chain]ACCEPT|DROP構成チェーンのデフォルトポリシーの一般的な3つの方法:
  • まずすべてのパケットを許可し、その後、危険なパケットiptables-P INPUT ACCEPT iptables-P OUTPUT ACCEPT iptables-P FOrWARD ACCEPT
  • を禁止するルールを設定する.
  • まずすべてのパケットを禁止し、その後、セキュリティパケットiptables-P INPUT DROP iptables-P OUTPUT DROP iptables-P FORWARD DROP
  • を許可するルールを設定する.
  • まずすべてのパケットを許可し、特定のパケットを許可し、最後にすべてのパケットiptables-P INPUT DROP iptables-A INPUT-j ACCEPT iptables-P OUTPUT DROP iptables-A OUTPUT-j ACCEPT iptables-P FOrWARD DROP iptables-A FORWARD-j ACCEPT
  • を禁止する.
    ファイアウォール規則の設定
     :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