ホーム » コンピュータ » FireWall用のブラックリスト自動生成

サーバ⚙

最近の投稿

アーカイブ

カテゴリー

FireWall用のブラックリスト自動生成

自宅サーバでは、FireWall を動かしているけど、アクセス履歴を見ると色々と怪しい接続が気になる。ある程度は LOG を確認して、FireWall の拒否リストを整理していたけど、自動化してみた。

FireWall では、主要なのは iptables で管理し、巨大な拒否リストになりそうなものは、ipset で拒否リストを作り、iptables から、その ipset を参照するようにしている。

GEOIPDENY により国ごと拒否

  • 国ごと拒否リスト make-geoip-deny.pl
    RIR の IPアドレス範囲と国ドメインのデータベースをダウンロードして、拒否リストを生成。かなり巨大なリストが作られる。
((更新状況を確認))
[root]# ./make-geoip-deny.pl -d | head
/usr/bin/wget -q -O - 'ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest'
/usr/bin/wget -q -O - 'ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-extended-latest'
/usr/bin/wget -q -O - 'ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-extended-latest'
/usr/bin/wget -q -O - 'ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-extended-latest'
/usr/bin/wget -q -O - 'ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-extended-latest'
ipset count before : 65658
ipset count merge : 26038
ipset count after : 39526

((FireWallの更新))
[root]# systemctl stop ferm && systemctl start ferm

25か国の接続を拒否しているけど、単純に RIR の情報だと 65658件のアドレスブロック。25か国のアドレスブロックで隣接しているアドレスブロックをマージして、26038件に減らせた。しかし、サブネットマスクに指定できるアドレスブロックに変換して、最終的に 39526 行の拒否リストが出来上がっている。

RIRのデータのダウンロードに時間がかかり30秒ほどかかるし、国に割り振られる IPv4 アドレスなんて変化も少ないので、気が向いた時に更新かな。

SMTPDENY と SSHDENY

  • SMTPの拒否リスト make-smtp-deny.pl
    SASL login を試す攻撃が多いので、/var/log/mail.log の履歴から、拒否リストを生成。
  • SSHの拒否リスト make-ssh-deny.pl
    ssh は、/etc/hosts.allow で、自分が使うネットワーク以外は接続を拒否して ssh 自身は既に守っているけど、接続を試すような相手はヤバイので ssh 以外すべての接続を拒否させる。/var/log/messages の履歴から生成。

怪しい接続をしてくる IP アドレスを抽出し、クラス C でグループ化して、数十回の接続履歴のあるものを抜粋して、拒否リストを生成している。それぞれ 30 行ほどの拒否リストとなった。

この拒否リストは、生成も1秒程度で生成できるので、cron.weekly にて更新。

 

検索 🔎

  My Google     Yahoo

便利サイト