はじめに
こんにちは!今回はiptablesコマンドについて解説します。
iptablesはLinuxのファイアウォール設定を行うコマンドです。ネットワークトラフィックをフィルタリングしたり、ポート転送したりするのに使います。
セキュリティの要ですね。サーバーを守るための重要なコマンドです。ちょっと複雑ですが、基本を理解するとめっちゃ便利ですよ!
iptablesコマンドとは
iptablesは、LinuxカーネルのNetfilterフレームワークを操作して、ファイアウォールルールを設定する外部コマンドです。
通信を許可したり拒否したり、ポート転送をしたり、NAT(ネットワークアドレス変換)を設定したりできます。インターネットに接続されたサーバーではほぼ必須のコマンドですね。
iptablesはテーブル→チェーン→ルールという階層構造で動作します。
基本構文
|
|
テーブル: filter(デフォルト), nat, mangle, raw などコマンド: -A(追加), -D(削除), -L(表示)などチェーン: INPUT, OUTPUT, FORWARD など条件: -s(送信元), -d(宛先), -p(プロトコル)などアクション: ACCEPT(許可), DROP(破棄), REJECT(拒否)など
主なオプション
| コマンド | 説明 |
|---|---|
-A |
ルールをチェーンの末尾に追加(Append) |
-D |
チェーンからルールを削除(Delete) |
-I |
ルールをチェーンの先頭に挿入(Insert) |
-L |
チェーンのルール一覧を表示(List) |
-F |
チェーンのすべてのルールを削除(Flush) |
-P |
チェーンのデフォルトポリシーを設定(Policy) |
-n |
IPアドレスをホスト名に変換しない |
-v |
詳細表示(verbose) |
-i |
入力インターフェース(-i eth0 など) |
-o |
出力インターフェース(-o eth0 など) |
-s |
送信元IPアドレス |
-d |
宛先IPアドレス |
-p |
プロトコル(tcp, udp, icmp など) |
--dport |
宛先ポート |
--sport |
送信元ポート |
-j |
ターゲット(ACCEPT, DROP, REJECT など) |
使用例
例1: 現在のファイアウォールルールを表示
|
|
実行結果:
|
|
現在のファイアウォールルール一覧を表示します。
例2: 詳細表示でルールを確認
|
|
実行結果:
|
|
-vで詳細、-nでIPアドレスをそのまま表示します。
例3: SSH接続を許可
|
|
実行結果:
|
|
TCPの22番ポート(SSH)への接続を許可します。
例4: 特定のIPアドレスからの接続を拒否
|
|
実行結果:
|
|
192.168.1.100からの全通信を遮断します。
例5: HTTPとHTTPSポートを許可
|
|
実行結果:
|
|
Webサーバーのポート80(HTTP)と443(HTTPS)を許可します。
例6: INPUTチェーンのデフォルトポリシーを変更
|
|
実行結果:
|
|
INPUTチェーンのデフォルトを「破棄」に設定します。明示的に許可されたトラフィックのみを受け入れるようになります。
例7: ローカルホストからの接続を許可
|
|
実行結果:
|
|
ループバックインターフェース(lo)から来たトラフィックを許可します。
例8: 確立済みの接続を許可
|
|
実行結果:
|
|
既に確立された接続と関連する通信を許可します。
例9: ルールの番号付き表示
|
|
実行結果:
|
|
各ルールに番号が表示されるので、削除や修正が簡単になります。
例10: 特定の番号のルールを削除
|
|
実行結果:
|
|
INPUT チェーンの2番目のルールを削除します。
例11: チェーンのすべてのルールをリセット
|
|
実行結果:
|
|
INPUTチェーンのすべてのルールを削除します。
例12: ポート転送を設定
|
|
実行結果:
|
|
8080番ポートへの通信を80番ポートにリダイレクトします。
Tips・注意点
設定の永続化
iptablesのルールはメモリに保存されるため、再起動すると消えます。永続化するにはiptables-persistentパッケージを使います:
|
|
ルールの順番が重要
iptablesはルールを上から順に評価します。最初にマッチしたルールが適用されるので、順番を間違えるとルールが効かない場合があります。
-jオプションのターゲット
- ACCEPT: パケットを許可
- DROP: パケットを無視(返答なし)
- REJECT: パケットを拒否(エラー返答あり)
ロックアウトに注意
デフォルトポリシーをDROPにする時は、自分のSSH接続を許可してからにしましょう。そうしないサーバーにアクセスできなくなります!
テーブルの確認
|
|
natテーブルを確認する場合は-t natを指定します。
実践的な使い方
基本的なセキュアな設定
|
|
デフォルトですべての受信を拒否し、必要なポートのみ明示的に許可します。
DDoS対策(SYNフラッド攻撃)
|
|
SYNパケットのレート制限を設定します。
ポートスキャン対策
|
|
不正なフラグの組み合わせを検出して破棄します。
設定をファイルに保存
|
|
現在のルール設定をファイルに保存します。
まとめ
iptablesコマンドのポイント:
- Linuxファイアウォール設定の基本コマンド
- テーブル→チェーン→ルールの階層構造で動作
- -A: ルール追加、-D: ルール削除、-L: ルール表示
- -P: デフォルトポリシー設定
- 設定は再起動で消えるので、永続化が必要
- ルールの順番が重要(上から順に評価される)
- よく使う組み合わせ:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
セキュリティの要となるコマンド。基本を理解して、適切にファイアウォールを設定しましょう。ただし、設定ミスでサーバーにアクセスできなくなることもあるので、慎重に!