読者です 読者をやめる 読者になる 読者になる

メモ

  • テーブル
テーブル名 役割 ターゲット名
filter パケットフィルタ
nat アドレス変換 DNAT, SNAT, MASQUERADE, REDIRECT
mangle 特別なパケット変換 TOS, TTL, MARK, SECMARK, CONNSECMARK
  • チェイン
チェイン名 処理のタイミング
INPUT ローカルマシンに受信時
FORWARD ローカルマシンから転送時
OUTPUT ローカルマシンから送信時
PREROUTING ローカルマシンに受信時。ただしINPUTとFORWARDチェインの前
POSTROUTING ローカルマシンから送信時。ただしFORWARDとOUTPUTチェインの前。
  • ターゲット
ターゲット名 処理内容 チェーン名
ACCEPT パケットを通す
DROP パケットを破棄
REJECT エラーパケットを送信。パケットは破棄。
MASQUERADE パケットをマスカレード?する
DNAT 送信先アドレスを変更する PREROUTING, OUTPUT
SNAT 送信元アドレスを変更する
LOG ログに記録する
  • ルール指定のオプション
オプション 説明
-p プロトコル プロトコルにマッチ。tcp, udp, icmp, all のどれか。
-s ホスト名orIPアドレス 送信元にマッチ。IPアドレスは、/の後ろにマスクも指定可。
-d ホスト名orIPアドレス 送信先にマッチ。IPアドレスは、/の後ろにマスクも指定可。
-i ネットワークインタフェース 受信するインタフェースを指定。
-o ネットワークインタフェース 送信するインタフェースを指定。
-j ターゲット 対象となるターゲット名を指定。
  • localhost, eth0 の通信は全許可。 eth1へのアクセスは、sshhttpssvn への通信のみ許可。
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -F

iptables -A INPUT -i lo   -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -i eth1 -s 116.130.210.0/21 -p udp -j ACCEPT
iptables -A INPUT -i eth1 -s 116.130.210.0/21 -p icmp -j ACCEPT
iptables -A INPUT -i eth1 -s 116.130.210.0/21 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -s 116.130.210.0/21 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth1 -s 116.130.210.0/21 -p tcp --dport 3690 -j ACCEPT
iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -P INPUT DROP

ポリシーを決め、ルールをクリアし、ルールを追加し、ポリシーを再設定 という流れ。

以下のコマンドで設定を保存

# service iptables save

設定ファイルは、/etc/sysconfig/iptables に保存される。

  • ルール表示
# iptables [-t テーブル名] -L [チェイン名] [-v] [-n] [--line-numbers]
# iptables -t filter -L INPUT -v -n --line-numbers
  • ポリシーの設定
# iptables [-t テーブル名] -P [チェイン名] [ターゲット名]
# iptables -t filter -P INPUT DROP
  • ルールの追加
# iptables [-t テーブル名] -A チェイン名  ルールの詳細
# iptables [-t テーブル名] -I チェイン名  ルール番号  ルールの詳細
  • 個別のルールの削除
# iptables [-t テーブル名] -D チェイン名  ルール番号
  • ルールの全削除
# iptables [-t テーブル名] -F
# iptables [-t テーブル名] -F チェイン名
  • ユーザ定義チェインの作成
# iptables -N ユーザ定義チェイン名
  • ユーザ定義チェインの削除
# iptables -X ユーザ定義チェイン名

ただし、ユーザ定義チェインを使用しているルールが存在する場合、ユーザ定義チェインにルールが存在している場合は削除できないのであらかじめ削除しておく。