Deny Web access from a particular country

Facebooktwittermail

中国が特段嫌いではないのですが中国からのSpamアクセスが多くて、ちょっとウザかったりします

いままでも酷いのは.htaccessにdeny from IPでその都度手動で追加してしのいでいましたが、いっそうのこと中国からのアクセスをすべて拒否してみることにしました

中国に割り当てられているIPブロックの一覧はこのファイルに記載されています

APNIC delegated internet number resources
http://ftp.apnic.net/stats/apnic/
http://ftp.apnic.net/stats/apnic/delegated-apnic-latest


国コードはCNなのですが、このdelegated-apnic-latestから抽出してCIDRにまとめてapacheで拒否できる”deny from IP”ファイルを作成、そしてhttpd.confや.htaccessに貼り付けてapacheのリロードはなかなかの手間です

頻繁に割当ブロックが変わることも無いとは思うのですが、それでも手動となると老眼SEは面倒だな~となってしまうわけです

どこかにLinuxで動作するプログラムが無いかなと探すとありました(感謝!)

うざい国からのアクセスを全て遮断
http://www.42ch.net/~shutoff/

countryfilter.pl
http://www.42ch.net/~shutoff/prog/countryfilter.pl

Perlプログラムでdelegated-apnic-latestを読み込ませてCIDRにしてipfw, iptables, Windows用のファイルを作成してくれます

Apache用が無いのでPerlは全くの初心者ですが、見よう見まねで機能を追加してみました

updated to Apache for the countryfilter.pl
http://www.rootlinks.net/Program/countryfilter.txt
提供元から転載

■ 注意事項

本ページに掲載しているフィルタ作成用シェルスクリプト・バッチファイルは全て GNU GPL Version 2 (日本語訳) に従って配布しています。このプログラムを使う(または改変する)にあたって用途や目的による制限はしませんが、併せて保証も全く行なわれないことに注意してください。

また、APNIC/ARINのデータベース自身とそこから作成したシェルスクリプトやバッチファイルはそれぞれの著作権を含んでいます。何か文句を言われたらそれに従う必要があるかもしれません。

使用方法(Linux)

  1. プログラムをダウンロード
  2. プログラムをダウンロードして拡張子.txtを.plに変更して下さい

  3. オプション指定
  4. 国コードと用途を指定します

  5. apache用中国IPブロックを抽出
  6. apache用中国と韓国IPブロックを抽出
  7. ファイルに保存
  8. apache用中国IPブロックを抽出してファイルに保存

さて、この出力されたIPをhttpd.confや.htaccessにコピー&ペーストするのですが、これをもっと簡単にできないかと工夫してみました

  1. 拒否IPファイル専用フォルダを作成
  2. httpd.confを編集
  3. アクセス制限を掛けるDirectoryディレクティブにincludeで追加します

  4. 中国IPファイルを作成
  5. Apache設定ファイル読込

上記手順をshell scriptにしてcronで週一とか月一で実行すれば自動化できます
これ以外にも拒否したいIPがある場合は/etc/httpd/DenyIP/DenyIP.incなどを作成してその都度個別に追加すれば大丈夫と思います

サーバ管理者でないと難しいですが、それでもいろいろ工夫できるのではと思います

暫くしてログを確認して403が出てくれば拒否できています

Leave a Reply