iptables – Linux パケットフィルタリング設定コマンド
ネットワークセキュリティ
iptables コマンドは、Linux カーネルに組み込まれた netfilter フレームワーク を操作して、パケットフィルタリングや NAT(アドレス変換)を設定するためのコマンドです。
ファイアウォールの構築、ポート制御、IP マスカレードなどに利用されます。
構文(Syntax)
iptables [テーブル] <コマンド> [チェイン] [条件] [-j アクション]
主なテーブル
| テーブル | 用途 |
|---|
filter | パケットフィルタリング(デフォルト) |
nat | アドレス変換(NAT, マスカレード, ポートフォワード) |
mangle | パケットのヘッダ操作(TTL 書き換えなど) |
raw | コネクショントラッキング前の処理 |
主なコマンド(チェイン操作)
| コマンド | 説明 | 使用例 |
|---|
-A | ルールを追加(append) | iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
-I | ルールを挿入(insert) | iptables -I INPUT 1 -p icmp -j DROP |
-D | ルールを削除(delete) | iptables -D INPUT 2 |
-R | ルールを置換(replace) | iptables -R INPUT 3 -j ACCEPT |
-L | 現在のルールを一覧表示 | iptables -L -n -v |
-F | 全ルールを削除(flush) | iptables -F |
-P | デフォルトポリシーを設定 | iptables -P INPUT DROP |
-N | 新しいチェインを作成 | iptables -N LOGGING |
-X | ユーザー定義チェインを削除 | iptables -X LOGGING |
主な条件(マッチ条件)
| 条件 | 説明 | 使用例 |
|---|
-p <proto> | プロトコル指定(tcp, udp, icmp など) | -p tcp |
--dport <port> | 宛先ポート指定 | --dport 80 |
--sport <port> | 送信元ポート指定 | --sport 22 |
-s <IP> | 送信元 IP | -s 192.168.1.10 |
-d <IP> | 宛先 IP | -d 10.0.0.1 |
-i <iface> | 受信インターフェース | -i eth0 |
-o <iface> | 送信インターフェース | -o eth1 |
主なアクション(ターゲット)
| アクション | 説明 |
|---|
ACCEPT | パケットを許可 |
DROP | パケットを破棄(応答しない) |
REJECT | パケットを拒否(エラーを返す) |
LOG | ログに記録 |
MASQUERADE | NAT 変換で送信元を外部インターフェースに変更 |
DNAT | 宛先アドレスを変換(ポートフォワード) |
SNAT | 送信元アドレスを変換 |
実行例
現在のルールを表示
iptables -L -n -v
SSH(22番) を許可
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
HTTP(80番) を許可
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
ICMP(ping) を拒否
iptables -A INPUT -p icmp -j DROP
デフォルトポリシーを拒否に設定
iptables -P INPUT DROP
NAT(ポートフォワード)
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
マスカレード(NAT)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
全ルールを削除
iptables -F
エラー例(root 権限なし)
iptables -L
出力例:
iptables v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)
関連コマンド
ip : ネットワーク設定コマンド。nft / nftables : iptables の後継ツール。firewalld : iptables/nftables をラップする管理ツール。
備考
iptables は従来の標準ツールですが、近年は nftables に移行しつつあります。- ルール変更は再起動で消えるため、恒久化するには
iptables-save / iptables-restore を利用します。 - サーバーを外部公開する場合、ルール設計を誤ると接続不能になるため注意が必要です。
参考
コメント