ufwでIPアドレスを遮断したときのメモ。
ここ数日、海外のIPアドレスから本ブログに対して大量のスパムコメントが投稿されていることに気が付いた。
数分おきにコメントが投稿され、さすがに鬱陶しくなったのでIPアドレスを遮断することにした。
ログを調べたところ、送信元のIPアドレスは2つだけだった。
以下のiptablesコマンドでIPアドレスの遮断を試みた。
iptables -A INPUT -s 46.161.xxx.xxx -j DROP
iptables -A INPUT -s 188.143.xxx.xxx -j DROP
が、上記のルール投入後も相変わらずスパムコメントが送信されていた。
もしや、上記の遮断ルールより優先度の高いルールが存在しており、IPアドレスが遮断できていないのでは?と思い至り、一旦以下のiptablesコマンドでルールを削除した。
iptables -D INPUT -s 46.161.xxx.xxx -j DROP
iptables -D INPUT -s 188.143.xxx.xxx -j DROP
正直、iptablesコマンドの使い方をよく理解していないので、代わりにufwコマンドを利用することにした。
まずは、ufw status numbered
で現在適用されているルールの一覧を確認した。
# ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp LIMIT IN Anywhere
[ 2] 443/tcp ALLOW IN Anywhere
[ 3] 80/tcp ALLOW IN Anywhere
[ 4] 22/tcp (v6) LIMIT IN Anywhere (v6)
[ 5] 443/tcp (v6) ALLOW IN Anywhere (v6)
[ 6] 80/tcp (v6) ALLOW IN Anywhere (v6)
ルール2と3にて、ポート番号80と443宛のTCP通信が許可されている。
特定のIPアドレスからのスパムコメントを遮断したい場合は、これらのルールよりも高い優先度を設定する必要がある。
ufwのinsert文を利用して遮断ルールが最優先されるように設定した。
ufw insert 1 deny from 46.161.xxx.xxx to any
ufw insert 2 deny from 188.143.xxx.xxx to any
もう一度、ufw status numbered
で確認した。遮断ルールの優先順位が最も高くなっているのが分かる。
# ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] Anywhere DENY IN 46.161.xxx.xxx
[ 2] Anywhere DENY IN 188.143.xxx.xxx
[ 3] 22/tcp LIMIT IN Anywhere
[ 4] 443/tcp ALLOW IN Anywhere
[ 5] 80/tcp ALLOW IN Anywhere
[ 6] 22/tcp (v6) LIMIT IN Anywhere (v6)
[ 7] 443/tcp (v6) ALLOW IN Anywhere (v6)
[ 8] 80/tcp (v6) ALLOW IN Anywhere (v6)
数分後にiptablesコマンドで確認したところ、無事IPアドレスがブロックされているのが確認できた。
# iptables -L -v | grep 46.161.xxx.xxx
17 1020 DROP all -- any any 46.161.xxx.xxx anywhere
# iptables -L -v | grep 188.143.xxx.xxx
32 1920 DROP all -- any any 188.143.xxx.xxx anywhere
これでスパムコメントが止んだ。
参考
https://bunoacts.hatenablog.com/entry/2016/05/16/173816