iptable

Last-modified: 2013-10-21 (月) 10:30:10

参考

概要

ネットワーク上に流れるパケットのヘッダー情報で受取を拒否したり破棄したりするしくみ

他にもNAT(Network Address Translation)やルールによってパケット送信先を変更することができる

仕組み

  • iptables 用途に応じたチェインを登録するテーブル。デフォルトはfilter
    テーブル用途チェイン
    filterfiltering packetINPUT/FORWARD/OUTPUT
    natNATPREROUTING/OUTPUT/POSTROUTING
    mangleQosPREROUTING/INPUT/OUTPUT/POSTROUTING
  • チェイン一覧 実行するルール(アクション?)の組み合わせ
    チェイン説明
    INPUT入力(受信)パケットに実行
    FORWARDマシンを経由するパケットに実行
    OUTPUT出力(送信)パケットに実行
    PREROUTING受信時にパケットに実行
    POSTROUTING送信時にパケットに実行
  • 処理の順番
    iptables_0.png
  • アクションポリシーの一覧 パケットがマッチした場合のアクション内容
    アクションポリシー説明
    ACCEPTパケットの通過を許可
    DROPパケットを破棄
    REJECTパケットを拒否し、ICMPメッセージを返信
    REDIRECT特定ポートにリダイレクト

コマンド

  • オプション一覧
    オプション説明
    -A指定チェインにルールを追加
    -D指定チェインからルールを削除
    -Lルールの表示
    -P指定チェインのポリシーをターゲットに設定
    -N新しいチェインを作成
    -Xチェインを削除

フィルタリング

  • CentOSでのデフォルト設定
    チェイン_0.png
  • INPUTチェイン デフォルトではポリシーはACCEPT
    INVALIDいままで接続していない
    ESTABLISHED過去双方向のパケット通信を実施
    NEW接続開始したが、双方向通信なし
    RELATED接続開始して、FTP転送などを実施
  • FORWARDチェイン
    転送パケットはすべてREJECTし "icmp-host-prohibited"を返す
  • OUTPUTチェイン
    • OUTPUTチェインルールがない
    • デフォルトポリシーACCEPTで動いている

チェインの編集設定

  • 編集方法にはコマンドでのCUI,GUIツールでの編集などの方法がある
  • enable to access port http,https
  1. edit config
    /etc/sysconfig/iptables
# 20131018 add ozaki
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
※commandで実施する場合は以下
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  1. reboot iptables
    sudo /etc/init.d/iptables restart
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]