ユーザ定義チェインをコマンドで変更する方法がなかなか見つからなかったので。
追加
追加に関してはググるとすぐに見つかる。
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT # 80番ポートを開けて入ってくるパケットを通す
変更
以下を想定した変更方法。
- 22番ポートを開けてsshできるようにする
- 間違えて23番ポートを開けてしまう
- 22番ポートに直したい
それではコマンドを見ながら順を追って手順を説明。
ユーザ定義チェインを追加
iptables -A INPUT -m state --state NEW -p tcp --dport 23 -j ACCEPT # 22番ポートを許可するつもりが、間違えて23番ポートを許可してしまう
ユーザ定義チェインの確認
いったん内容の確認と、先ほど追加した定義が何番目にあるのか確認。
sudo iptables -L INPUT # Chain INPUT (policy DROP) # target prot opt source destination # ACCEPT icmp -- anywhere anywhere # ACCEPT all -- anywhere anywhere # ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED # ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:telnet
ユーザ定義チェインの変更
上から4番目に間違えて追加した定義があるので、4番目の変更を行う。
sudo iptables -R INPUT 4 -m state --state NEW -p tcp --dport 22 -j ACCEPT # 上から4番目に設定された23番ポートの定義を22番ポートを許可する設定に変更する
簡単にオプションの説明を。
- 「-R INPUT」
INPUTチェインを置換 - 「4」
対象の定義番号 - 「-m state --state NEW -p tcp --dport 22 -j ACCEPT」
定義したいルール
再度、ユーザ定義チェインの確認
正しく変更を行えたかどうか確認。
sudo iptables -L INPUT # Chain INPUT (policy DROP) # target prot opt source destination # ACCEPT icmp -- anywhere anywhere # ACCEPT all -- anywhere anywhere # ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED # ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
削除
一応削除のコマンドについても触れたい。
要領については変更とほぼ同じで、オプションを変えるだけである。
sudo iptables -D INPUT 4 # 22番ポートの定義が不要になったので削除する sudo iptables -L INPUT # Chain INPUT (policy DROP) # target prot opt source destination # ACCEPT icmp -- anywhere anywhere # ACCEPT all -- anywhere anywhere # ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED