酒飲んで、車いじって、トロンボーン吹いて、寝る。そんな生活に憬れる今日この頃。
日記の更新は気の向くまま、つれづれなるままに・・・

ロシアとの戦い

自宅鯖へロシアからのアクセスが後を絶たない。というか大杉www
殆どは掲示板へのスパム書き込み。
まぁDrupalMovableType側でスパム対策をしているしpostfix側で不正リレー対策をしてるからいいや、と様子見状態だったのだけど、一日に何度も叩いてくる、酷いときは一時間に数10回も叩いてくるとなると、さすがに危険では無かろうか。


ということでiptablesにてパケットを蹴落とすことにする。

#aptitude install iptables

でインストール。
あとは設定だが細かいところはググってGO!。肝心なのはロシアからのアクセスを蹴落とすこと。つまりはロシアが所有しているIPアドレスが判ればよい。
いろいろと調べるとこんなところに遭遇。
うざい国からのアクセスを全て遮断
http://www.42ch.net/~shutoff/
ここを参照してシェルスクリプトを作成する。IPv4アドレスの国別割り当てリストファイルは以下のところからDLする。

ARIN
ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest
RIPE,NCC
ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-latest
APNIC
ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest
LACNIC
ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest
AfriNIC
ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest

中国、韓国はAPNIC、ロシアとかウクライナとかの東欧諸国はRIPEから抽出することになるので
これらのリストファイルをDLした後

perl countryfilter.pl iptables KR,CN,KP,RU < delegated-apnic-latest > filter_apnic.sh
perl countryfilter.pl iptables KR,CN,KP,RU < delegated-ripencc-latest > filter_ripencc.sh

とかしてiptables用のシェルスクリプトを作成する


これらを実行すれば(もちろんiptablesが有効になっている(起動している)ことが前提で)OK。
私の場合は面倒くさがりなので、複数のリストファイルから作成されたスクリプトからIP別にDROPする箇所を抜き出して一つのファイルにまとめておきました。




起動時に毎回自動で読み込ませるためには、debianにおいては/etc/network/if-pre-up.d/にコピーするかシンボリックリンクを作成すればよいことになっている。



そこで、この出来上がったファイルの冒頭にiptablesの初期設定に関する記述を加えておく。

#---- ここは修正 ------
IPTABLES=/sbin/iptables
FILTERNAME=INPUT
TARGET=DROP
#----------------------

#---- ここからは追加 ------
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

$IPTABLES -A $FILTERNAME -p icmp -j ACCEPT
$IPTABLES -A $FILTERNAME -i lo -j ACCEPT

$IPTABLES -A $FILTERNAME -p tcp --dport 80 -j ACCEPT
$IPTABLES -A $FILTERNAME -p tcp --dport 110 -j ACCEPT
$IPTABLES -A $FILTERNAME -p tcp --dport 25 -j ACCEPT
$IPTABLES -A $FILTERNAME -p tcp --dport 587 -j ACCEPT
$IPTABLES -A $FILTERNAME -p tcp --dport 53 -j ACCEPT
$IPTABLES -A $FILTERNAME -p udp --dport 53 -j ACCEPT
$IPTABLES -A $FILTERNAME -p tcp --dport 22 -j ACCEPT
$IPTABLES -A $FILTERNAME -p tcp --dport 10000 -j ACCEPT
$IPTABLES -A $FILTERNAME -m state --state ESTABLISHED,RELATED -j ACCEPT
#----------ここまで---------

# Database version 20080530
$IPTABLES -A $FILTERNAME -s 58.14.0.0/15 -j $TARGET
・・・・・以下続く


で、出来上がったファイルの属性を変更

$chmod 755 filter_apnic.sh
$chmod 755 filter_ripencc.sh

これをroot権限で実行すれば完了。






で、その結果なんですが・・・ロシアからの攻撃が激減(^^)vついでに中国や韓国からのアタックも激減。ちょっと安心しますね。
ただ、iptablesでちゃんと設定しても漏れて叩いてくる輩もいるので、それはルーター側のフィルターで叩き落とすことに。なんで漏れ出てくるかは今のところ不明。