FireHOLで公開されているブラックリストからの接続をipset+iptablesでブロックする

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

次のサイトで、ネット上で攻撃してくるようなIPアドレスを、ブラックリストとして公開していることを知りました。

FireHOLで公開されているIPブラックリストを楽に適用する話 – 技術部門のBlog

ブラックリストは、firehol_level2 by FireHOL, attacks IPs list, at FireHOL IP Lists で公開されていて、サイトの左側の local copy の箇所のリンクから取得できます。
(リンク先は https://iplists.firehol.org/files/firehol_level2.netset ですね)

このリストは行数が16000件位ありますが、これを使って、ブラックリストに載っている箇所からのアクセスをipset+iptablesでブロックするようにします。
なお、以降の説明ではCentOS用になります。

スポンサーリンク

準備

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

yum install ipset ipset-libs ipset-service

ipsetのセットをセット名FIREHOL_LEVEL2 で作成します。

ipset create -exist FIREHOL_LEVEL2 hash:net

今回の作業用のディレクトリを作成し、次の内容で set_firehol_level2.sh を作成します。
2023.5.3 修正

mv firehol_level2.netset firehol_level2.netset.old 2>/dev/null
curl -o firehol_level2.netset -z firehol_level2.netset.old https://iplists.firehol.org/files/firehol_level2.netset
if [ -f firehol_level2.netset ]; then
	ipset f FIREHOL_LEVEL2
	grep -v "^#" firehol_level2.netset | while read line;do ipset add FIREHOL_LEVEL2 $line; done < /dev/stdin
	ipset save > /etc/sysconfig/ipset
fi

set_firehol_level2.sh を実行します。

sh set_firehol_level2.sh

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

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

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

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

iptables-save > /etc/sysconfig/iptables

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

運用

FireHOLのブラックリストは、頻繁に(1時間に数回)更新されているようです。
適宜、先の「準備」で作成した set_firehol_level2.sh を実行して、 ipsetのセット FIREHOL_LEVEL2 の内容を更新してください。

sh set_firehol_level2.sh

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

参考

ipsetとiptablesでSSHを日本国内からの接続に限定する (CentOS 7) | 稲葉サーバーデザイン
FireHOLで公開されているIPブラックリストを楽に適用する話 – 技術部門のBlog
ipsetを使ってスマートにiptablesを設定する | ギークを目指して
ブラックリストに載っている悪質なIPアドレスからのアクセスを遮断する方法 – かひわし4v1.memo
CentOS 6で国からのIPをブロックする方法

コメント

タイトルとURLをコピーしました