■CentOS7のiptablesについて
CentOS6から7に変わって大きく変わった中の一つとしてiptablesからfirewalldに変わったことが上げられます。長年、iptablesを利用してきたユーザにとってfirewalldは違和感を感じるものとなり、引き続きiptablesを利用し続けたい人のためのメモ書きです。firewalldについてはこちらを参照。
CentOS7からはfirewalldに入れ替わったということですが、このfirewalldのバックエンドで動いているのはiptablesなのでユーザから見たときの操作インターフェイスのみが変わっただけであり、動作的にはiptablesと変わりないのが実情です。
ただ、firewalldとiptablesは共存はできませんので、まずfirewalldを停止する必要があります。
# systemctl stop firewalld # systemctl disable firewalld |
次にyumでiptablesをインストールします。
# yum install iptables-services # rpm -qa | grep iptables iptables-services-1.4.21-18.2.el7_4.x86_64 iptables-1.4.21-18.2.el7_4.x86_64 |
設定ファイルは従来通り/etc/sysconfig/iptablesとなります。
# cat /etc/sysconfig/iptables # sample configuration for iptables service # you can edit this manually or use system-config-firewall # please do not ask us to add additional ports/services to this default configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT |
具体的な設定に関してはこちらを御覧ください。まずiptablesを有効とし、設定を変更した際などにはiptablesのりスタートが必要です。
# systemctl enable iptables.service # systemctl start iptables.service |
iptablesの設定内容は以下のコマンドで確認可能です。
# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination |