「悪いホスト」の提供


Warning: Undefined array key 1 in /usr/local/www/gatolabo/wp-content/themes/gatolabo/functions.php on line 458
インターネットブロッキング
©いらすとや.

URLhausではマルウエアのペイロードがあるURL情報を収集して「悪意のあるURL」というデータとして配布している。マルウエアのあるウェブページのURLリストをIDSやプロクシサーバに読み込ませてそこへのアクセスをブロックすることで、配下のネットワークから不用意に悪意のあるコンテンツを閲覧するのを防ぐことができる。

PhishTankではフィッシングサイトのURL情報を収集してAPIとしてそのデータを利用できる仕組みを用意している。データファイルの配布も行っているが、こちらはPhishTankにアカウントを作成してアプリケーションキーを得なければDL出来ない。先のURLhausと同じくIDSやプロクシサーバに読み込ませてそこへのアクセスをブロックすることで、配下のネットワークから不用意に悪意のあるウェブページを開いてしまうのを防ぐことができる。

しかし、個人・家庭ではIDSやプロクシサーバまでは用意していないかもしれない。

URLhausやPhishTankの提供しているデータを見てみたら、(ただのURLリストなので当たり前だが)極めて簡単にIPアドレスとホスト名だけを抽出できるようだったので、ファイアウォールとDNSキャッシュサーバの組み合わせでブロッキングできるじゃんねと思った。
なお、PhishTankのデータでDNSなら最初からOpenDNS使えば良いじゃんという意見もあるかもしれないが、ここは自前のDNSキャッシュサーバでやりたいという人もこの広い世界の何処かにはいるよね?ということで。
もちろん、URLから抜いたIPアドレスorホスト名なのでそれをブロッキングするとそのホストとの全ての通信が遮断または名前解決できない状態となる。つまり、そのホストが提供する他のコンテンツやサービスも巻き添えになる。でも、悪意のある何かしらのコンテンツを提供しているホストはその提供する全てが信用ならないので巻き添えでも良いかなと思う。

マルウエア・フィッシングサイトのURLは情報の新鮮さが命とは思うけど、あまりに頻繁データ更新させるのはどうかなと思ったので1日2回だけ更新させることに。
ということで、自動抽出するようにして「悪いインターネット」に置いてみた。

ファイアウォール(パケットフィルタリング)は例によってpfを対象とした。1行に1つのIPアドレスまたはCIDRを記述したリストをそのまま読めるので楽。リストファイルをテーブルとして扱えるし。テーブルはそれを1つの単位としてブロック・パス対象にできるので扱いが簡単。Linuxのiptablesなど他のパケットフィルター用に加工したリストも考えてはいる。

DNSキャッシュサーバはいつものようにUnboundを対象とした。インクルードするだけのファイルとして提供するので更新は簡単。

提供するファイルをダウンロードしてpf, Unboundを再起動or設定再読込させるだけという運用ができる。(最初に設定ファイルの変更も必要)

自分専用のLANや家族が使うLAN、広げてもSOHOレベルの職場のLANで、利用者全員がブロッキングを了承している条件での利用に留めて欲しい。自分専用なら何をしようが自由だろうけど、自分以外も利用する環境なら、たとえ目的が家族や社員を守るためということであっても、同意を得ずにやったりブロッキングしていることを知らせずに密かにやるのは良くないと思う。