CentOS6を基準に記載しております。
iptablesの使い方で、よく解説されているコマンドの例は引数が -A
になっている記事をよく見かけます。
しかし!
このままではよくありません!
みんなでiptables大好きっ子になりましょう!
というわけで下記のコマンドを例にiptablesに追加します
下記はmuninやnagiosからデータを受け取った時のiptablesの設定例です。
sudo iptables -I RH-Firewall-1-INPUT 6 -m state --state NEW -p tcp --dport 4949 -j ACCEPT -s 192.168.0.2
sudo iptables -I RH-Firewall-1-INPUT 6 -m state --state NEW -p tcp --dport 5666 -j ACCEPT -s 192.168.0.2
sudo iptables -I RH-Firewall-1-INPUT 6 -m state --state NEW -p tcp --dport 3306 -j ACCEPT -s 192.168.0.0/24
sudo iptables -I RH-Firewall-1-INPUT 9 -p icmp --icmp-type 255 -j ACCEPT
sudo /etc/init.d/iptables save
いつもiptablesの後は -A
引数を実行していました。
しかし、既存のよくわかっていないサーバ環境に、muninやnagiosを追加しろとお達しを受け、iptablesを制御しなければならなくなりました。
というか、条件の途中ででdropしてるし、うかつに -A
を使うわけにはいきません!
しかし、iptablesの情報が大量に登録してあり、この後山ほどある登録情報を削除して、登録し直すっていうパターンが出てくるとイヤです。
そんな作業やってられるかーとお嘆きのあなた!
今ならなんと -I
をつけることで、そんなモヤモヤした悩みから解放され、すっきりした気持ちでiptablesを管理することができます。
つまり、このコマンドの例の中では、 RH-Firewall-1-INPUTというラベル名の6番目に、stateが新規の通信(NEW)であり、送信元ポート(dport)がxxxxでIPがxxx.xxx.xxx.xxxの場合、許可せよ、という例になります。
やった!!!!これであなたも今後、不明な通信からの接続に悩まされることがなくなりましたね!うおおお!!!!!!
ちなみに削除したいときは -D
を指定したら登録情報を削除できます。
保存したいときは /etc/init.d/iptables save
を実行すれば保存できます。
逆に失敗したり、変更した内容を保存時の状態にまで戻りたいときは、 /etc/init.d/iptables restart
すれば簡単に戻せます。
他の引数はなんとなく見ればわかるんですけど、iptablesコマンドは引数が多いので曲者ですよねえ。
勉強になりました。
※ 最近はAWSのセキュリティグループでチョチョイのチョイと弄れば済む話なのでこんな苦労することはないんですけどね