FirewallD を用いて国を指定してアクセス制限を行う

国ごとの IP アドレスリストを取得する」で得られるアドレスリストを使用して、自動で設定・更新を行うPythonスクリプトを作成しました。

このスクリプトは、ファイヤーウォール(FirewallD)を用いて指定された国のパケットを DROP (つまり接続拒否)します。

アクセス制限などにご利用下さい。

解凍

zip ファイルを解凍すると「ipDenyFierwallD.tar.gz」が得られると思います。

直接インストールする場合は、ファイルを「/tmp」にコピーして次のコマンドを実行して下さい。

すると、「/usr/local/」にファイルがインストールされます。

設定

設定ファイルは「/usr/local/etc/ipDeny/ipDeny.conf」にインストールされます。

  • deny_country
    アクセスを禁止する国のコード(二文字)をカンマで区切って指定して下さい。
  • tmp_directory
    国の IP リストを保存するディレクトリです。
  • address_file_suffix
    IP リストのファイル拡張子です。(変更は非推奨です。)
  • url_ipv4
    IPv4 形式のファイルが格納されているURLです。(変更は非推奨です。)
  • url_ipv6
    IPv6 形式のファイルが格納されているURLです。(変更は非推奨です。)
  • auto_remove_download_file
    国の IP リストの自動削除(yes/no)です。
    他のサービスの ACL(Access Control List)に利用する場合等は「no」を指定しても構いません。

ソース

ソースは「/usr/local/lib/python/ipDenyFierwallD.py」に格納されています。ご自由に改変や再配布などを行ってもらって構いません。(一応、BSDライセンス…かな?)

実行

ルート権限で実行して下さい。設定・更新が自動で行われます。

更新

一定期間ごとに更新したい場合は、「/usr/local/bin/ipDenyFierwallD」のシンボリックリンクを「/etc/cron.weekly/」などに作成して下さい。

バグなどについて

もしもバグなどを見つけた場合は、コメント頂けると幸いです。

Facebooktwitterfoursquare

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です