iptables ってコマンドのサンプルはたまに見かけるけど、そのコマンドにどういう意味があるのかとかどうやってサービスとして使うのかとかがよくわからなかったので調べました。
具体的な設定例は多く書いてないので他の記事を参照してください。
iptables
IP パケットのフィルタリングのルールを設定する。
Linux で使える。
類似なものとして firewall なるものがある。 Centos7 などで採用されており、裏側で iptables を使っている(らしい)。
Basics
まず、数種類の table がある。通常 filter テーブルを操作することが多く、 iptables
コマンド実行時にテーブルの指定を省略すると filter テーブルに対して操作が行われる。
filter テーブルでは、遮断・通過させるパケットを決定する。
その他 nat, mangle などのテーブルがあり、 -t
オプションによって操作するテーブルを指定できる。
それぞれの table にはいくつかの chain がある。チェーンの種類には INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING などがあるが、一つのテーブルですべてのチェーンを持っているわけではない。例えば、 Filter テーブルには INPUT, OUTPUT, FORWARD の3つのチェーンがある。
また、 -N
オプションによりユーザ定義チェーンを作成することができる。作成したチェーンは、ルール定義時に -j
オプションのターゲットとして指定でき、あるルールにマッチしたパケットはそのチェーンに流す、ということができる。
各チェーン上でルールは sequential に並んでおり、各パケットについて一番はじめにマッチしたルールによってそのパケットの処理が決定される。
そのため、ルールの設定時にはルールを末尾に追加する -A
オプションを使うことが多い。
どのルールにもマッチしなかった場合、そのチェーンの policy によってパケットの処理が決定される。
ポリシーは、 -P
オプションによって設定される。
Save/Restore Rules
iptables コマンドによってルールを書き換えた場合、
# iptables-save > /etc/iptables/iptables.rules
などとすることでそれをファイルに保存する。逆に、このファイルを直接書き換えた場合、及びシステムの起動時は
# iptables-restore < /etc/iptables/iptables.rules
とすることで保存されたルールを読み込むことができる。
起動時にこの操作を行うサービスが多くのシステムで存在するので、適宜 systemctl enable iptables
などで有効化する。
このサービスはルールの読み込みを行うのであって、このサービスの有無によって iptables によるフィルタリングが有効化・無効化されるわけではない
(systemctl disable iptables
としているシステムでも、直接 iptables
コマンドでルールを操作すれば、それは(再起動するまで)有効になる)。
Examples
filter テーブル INPUT チェーンのポリシーを DROP とする(どのルールにもマッチしなかったすべての内向きパケットを破棄する)
# iptables -P INPUT DROP
http アクセスを許可する
# iptables -A INPUT -p tcp --dport http -j ACCEPT
lo interface を通るパケットを許可する
# iptables -A INPUT -i lo -j ACCEPT
送信元が 192.168.10.0/24
、送信先が eth0
であるパケットに IP Masquerade を設定する
# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
参考
- http://www.unix-power.net/linux/iptables.html
- http://www.geocities.co.jp/SiliconValley-Cupertino/5128/500_compu/iptables.html
- http://www.yamamotolab.jt.u-tokai.ac.jp/~hiroshi/education/nwa/txt/nwa12.html
- https://wiki.archlinux.org/index.php/Iptables
- http://www.math.kobe-u.ac.jp/~kodama/tips-iptables.html
- http://www3.big.or.jp/~sian/linux/tips/iptables.html
- Stray Penguin - Linux Memo (iptables)
- Stray Penguin - Linux Memo (Iptables tutorial)