SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

iptables(ファイアウォール・パケットフィルタ)

問題

iptables 取っ付きにくい。

firewall

答え

iptablesでの特定IPからの通信の破棄などはわりと簡単。慣れておくのがよい。

現在の設定の確認

iptables --list
iptables -L
iptables -nvL
# iptables -nvL
Chain INPUT (policy ACCEPT 120 packets, 14434 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 93 packets, 25101 bytes)
 pkts bytes target     prot opt in     out     source               destination

特定のIPからの通信を破棄

iptables -I INPUT -s 117.128.0.0/10 -j DROP

ルールを削除する

iptables -L で表示される一覧の何番目かを指定する。

iptables -D INPUT 1

ルールを全部削除する

iptables -F

初期状態にする

-F だけでは、ポリシーはそのままになる。全部初期状態にしたいとき。

iptables -F # テーブル初期化
iptables -X # チェーンを削除
iptables -Z # パケットカウンタ・バイトカウンタをクリア
iptables -P INPUT   ACCEPT
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD ACCEPT

設定を保存したい

/etc/init.d/iptables save

/etc/sysconfig/iptables に保存される。

前回保存した設定で起動したい

/etc/init.d/iptables restart

いろいろ設定を変更した後で保存しないで再起動すると、以前の状態になる。

設定にあたってメモ

iptablesのコマンドでは、テーブル、チェイン、条件、アクションを指定する。

よく使うパターン

iptables -t テーブル -Aなど チェイン 条件 アクション

テーブル

filter(デフォルト。許可、破棄等に使う。), nat(送信元フィールドやあて先フィールドの変更に使う), mangle(パケットの内容変更に使う)

特別な事情がなければ、filterだけ、filterとnatだけの設定をすることが多いと思う。

チェイン

PREROUTING, INPUT, OUTPUT, FORWARD, POSTROUTING のチェインがあって、

filterテーブルの設定は、FORWARD, INPUT, OUTPUTチェインで適用される。
natテーブルの設定は、PREROUTING, POSTROUTING, OUTPUTチェインで適用される。
mangleテーブルの設定は、PREROUTING, INPUT, OUTPUT, FORWARD, POSTROUTINGチェインで適用される。

-A, --append       指定チェインに1つ以上の新しいルールを追加
-D, --delete       指定チェインから1つ以上のルールを削除
-P, --policy       指定チェインのポリシーを指定したターゲットに設定
-N, --new-chain    新しいユーザー定義チェインを作成
-X, --delete-chain 指定ユーザー定義チェインを削除
-F                 テーブル初期化

条件

-p, --protocol      プロコトル         プロトコル(tcp、udp、icmp、all)を指定
-s, --source        IPアドレス[/mask]  送信元のアドレス。IPアドレスorホスト名を記述
-d, --destination   IPアドレス[/mask]  送信先のアドレス。IPアドレスorホスト名を記述
-i, --in-interface  デバイス           パケットが入ってくるインターフェイスを指定
-o, --out-interface デバイス           パケットが出ていくインターフェイスを指定
-j, --jump          ターゲット         条件に合ったときのアクションを指定
-t, --table         テーブル           テーブルを指定
-m state --state    状態              パケットの状態を条件として指定
                                      stateは、 NEW、ESTABLISHED、RELATED、INVALIDが指定できる
!                   条件を反転(~以外となる)

アクション

ACCEPT パケットの通過を許可
DROP パケットを破棄
MASQUERADE マスカレード
SNAT 送信元のアドレスの変換
DNAT 送信先のアドレスの変換
LOG ログを取る
REJECT パケットを拒否し、ICMPメッセージを返信
REDIRECT 特定ポートにリダイレクト

関連するメモ

コメント