fail2banでBANされたIPアドレスの公開ブラックリスト

ALL
スポンサーリンク
スポンサーリンク

www.blocklist.de での公開ブラックリスト

www.blocklist.de では、fail2ban(しつこい攻撃を fail2ban でブロックする 参照)でBANされたIPアドレスをブラックリストとして公開しています。
さくらインターネットの講演資料でも、外部のブロックリストとして取り上げています。(IAjapan 第16-17回 迷惑メール対策カンファレンス【D3-04】ホスティング事業者の取り組み p.21~)

リストは www.blocklist.de — Export all Attacker-IPs from the last 48 Hours. からダウンロードできます。

fail2banで不正IPアドレスをBANする際に、アクションとしてaction_blocklist_de を実行するようにしていると、BANしたIPアドレスを blocklist.de へレポートするようになっているようです。そのレポートされたIPアドレスをブラックリストとして公開しているようです。

また、リストは過去48時間に検出されたものとなっていて、30分ごとに更新されています。有効性が高いブラックリストなので、管理しているサーバーのアクセス制限に是非使いたいものです。

公開ブラックリストをipsetに適用する

このブラックリストを ipset に適用します。

下記記事で紹介した FireHOL で blocklist.de のブラックリストを ipset登録用に適した形で公開しているので、これを利用します。

FireHOLで公開されているブラックリストからの接続をipset+iptablesでブロックする – パソコン鳥のブログ

まず、ipset が使えるようにします。また、ipsetのセットがサーバー再起動時に失われないように ipset-service もインストールします。
CentOSの場合は、次を実行します。

yum install ipset ipset-libs ipset-service

次の内容で ファイルset_ipset_from_friehol_iplists.sh を作成します。

if [ $# -ne 2 ]; then
    echo "${BASH_SOURCE[0]} LISTNAME SETNAME "
    exit 1
fi
LISTNAME=$1
SETNAME=$2
mv $LISTNAME $LISTNAME.old 2>/dev/null
curl -f -o $LISTNAME -z $LISTNAME.old https://iplists.firehol.org/files/$LISTNAME || exit 1
if [ -f $LISTNAME ]; then
    ipset create -exist $SETNAME hash:net
    ipset f $SETNAME
    grep -v "^#" $LISTNAME | while read line;do ipset add $SETNAME $line; done < /dev/stdin
    ipset save > /etc/sysconfig/ipset
fi

次を実行します。

sh set_ipset_from_friehol_iplists.sh blocklist_de.ipset BLOCKLIST_DE

実行すると、FireHOLからブラックリストをダウンロードしてきて、ipset の BLOCKLIST_DEセットに登録します。
また、ipsetのセット内容が、サーバー再起動時に適用されるようにしています。(ipset save > /etc/sysconfig/ipset が実行されています)

blocklist.de のブラックリストは、30分に1回更新されているそうです。
適宜、作成した set_ipset_from_friehol_iplists.sh を実行して、 ipsetのセット BLOCKLIST_DE の内容を更新してください。

sh set_ipset_from_friehol_iplists.sh blocklist_de.ipset BLOCKLIST_DE

set_ipset_from_friehol_iplists.sh ではFireHOLのブラックリストに変更があった場合のみ、再ダウンロードやBLOCKLIST_DEセットの更新を行います。

ipset を iptablesと連携させる場合

iptablesと連携してブロックする場合は、続けて次のようにします。

iptablesのルールの先頭に、 BLOCKLIST_DE のセットにマッチしたらDROPするルールを追加します。

iptables -I INPUT -m set --match-set BLOCKLIST_DE src -j DROP

iptables のルールもサーバー再起動時に適用されるようにします。

iptables-save > /etc/sysconfig/iptables

これでOKです。
この状態で、ブラックリストに載っているところからのアクセスはブロックされます。

コメント