RockyLinux,AlmaLinuxでfirewalldの代わりに iptables を使用する

ALL
スポンサーリンク

root で次を実行して、firewalldの代わりに iptables が起動するようにします。

yum install iptables-services
systemctl stop firewalld
systemctl disable firewalld
systemctl enable iptables
systemctl start iptables

以下のように iptables のINPUT,FORWARDチェインともに、デフォルトポリシーが ACCEPT になっています。
また、各チェインのルールの最後に、それまでのルールに該当しなかったものを明示的に Rejectするルールが入っています。

# 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

ここで、iptables のルール追加を iptables -A INPUT … のように行うと、Rejectするルールの後に追加されて意味が無いので、末尾の REJECT のルールより前に挿入する必要があります。

iptables -P INPUT DROP を実行してポリシーをDROPにし、末尾の
REJECT all — anywhere anywhere reject-with icmp-host-prohibited
のルールを削除すると、iptables -A INPUT … のように追加して運用できます。

ただし、元のルールの reject-with icmp-host-prohibited では通信元にrejectされたことを通知しますが、ポリシーをDROPにした場合は、通知なしにパケットが破棄されることに注意してください。

コメント