Firewalldで特定IPアドレスからのアクセスを拒否

サーバを公開すると不正アクセスとの戦いになるが、昨日今日とC国からしつこくアクセスしてくるクライアントがいるのでIP単位でブロック設定したのでそのメモ。

特定ホストのブロックする方法は(思いついた限りでは)2種類。

ip blackhole

ルーティングテーブルにおいて「ルートしない」を定義する方法。

ip route add ${IPADDR}/${NETMASK} blackhole

iptablesやfirewalldは、場合によっては無効化しているケースがあるので
この方法はあらゆる状況のサーバにとって有効なものだと思う。
しかし、ルートテーブルは再起動したら消えてしまうので、/etc/rc.local等に書く必要がある。

firewalld

(iptablesや)firewalldでACLとして設定する方法。
今回はこちらのfirewalldでの設定を実施した。

firewall-cmd --zone=${ZONE} --add-rich-rule='rule family="ipv4" source address="${IPADDR}/${NETMASK}" reject' --permanent
systemctl restart firewalld.service

firewalldやiptablesを動作させている環境であれば有効な方法。
様々なACLと同じ場所でアクセス管理するため管理しやすい。
ただ、設定はruntime側に反映されないため、firewalldを再起動させる必要がある。
https://forums.fedoraforum.org/showthread.php?297560-Firewalld-Block-an-IP-Address
(conntrackモジュールが入っていれば再起動でステートがリセットされてしまうため、注意が必要)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です