最近大量のSPAMがコメントに投稿されるようになってしまったので、対策用のシェルスクリプトを作成しました.

あまりアクセス数がないこのブログですが、実は処理できていないコメントが1000件近くあります.

この大部分がSPAM.文面をみると、あきらかに怪しいもの+変なサイトへのリンクばかり.

しかも、殆どが外国語で書かれたもの.

基本的に拒否しているので問題はないのですが、あまりにコメントが溜まりすぎてうんざりしています.

 

そこで、特定の国からのアクセスを遮断するシェルを作成しました.

 

1.ソース

XX の箇所にはブロックしたい国のコードをいれてください.

国別コードにはISO 3166-1 alpha-2が利用されています.国ごとのコード値はWikipediaを参照してください.(2文字コードが利用されています)

複数ブロックする場合は、grep -e XX -e YY -e ZZ のように指定してください.

 

2.使い方

上記のシェルをcountryBlocker.shという名前で作成し、サーバのパスwwwに置きます.

実行できるように権限をつけます.(下では所有者にのみ実行権限をつけています.)

詳しくは3.解説に記載していますが、元々.htaccessで制御している場合が多いかと思いますので、リネームして退避させておきます.

リネーム後の名前は必ず.htaccessSourceにしてください.

リネーム後の名前でファイルを探し、アクセス制限のリストと結合しています.

 

定期的にIPのリストは更新されるようなので、cron登録します.

上記は毎日0時にyouruserアカウントで実行する例.

ユーザアカウント名, シェルのパスは適宜変更してください.

 

3..解説

こちらのサイトが何と、国別のIPアドレスリストを公開しています.(勝手に使っているので、問題があれば連絡ください.)

http://nami.jp/ipv4bycc/

国別のIPアドレスリストは、

cidr.txt.gz

このリストを取得し、加工して.htaccessに追記しています.

もともと.htaccessを利用していた場合を想定し、.htaccessSource と最新のリストを結合したものを.htaccessに出力しています.

そのため静的な部分は事前に.htaccessSourceに記載しておくことで、動的なリストと分離して管理できます.

Leave a Reply

Your email address will not be published. Required fields are marked *