ロシアとの戦い
自宅鯖へロシアからのアクセスが後を絶たない。というか大杉www
殆どは掲示板へのスパム書き込み。
まぁDrupalとMovableType側でスパム対策をしているしpostfix側で不正リレー対策をしてるからいいや、と様子見状態だったのだけど、一日に何度も叩いてくる、酷いときは一時間に数10回も叩いてくるとなると、さすがに危険では無かろうか。
ということで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が有効になっている(起動している)ことが前提で)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でちゃんと設定しても漏れて叩いてくる輩もいるので、それはルーター側のフィルターで叩き落とすことに。なんで漏れ出てくるかは今のところ不明。