複数のdeny_hostや国単位で遮断するために、ferdorasrv.comさんの所の
スクリプトを修正して使用させていただきます。
特定国からのアクセス拒否ルールの自動更新をスクリプト(otherfilter_check.sh)で毎日一回実行するため、/etc/cron.dailyに保存します。
また、aquarius.fwを/etc/rc.dに置くため、下記のように修正させていただきました。
なお、このスクリプトはiptableを起動するまえに一度実行しておく必要があります。
この例は中国(CN)と韓国(KR)を遮断する例です。
IPアドレスチェック情報取得(otherfilter_check.sh)
-------------------- ここから ----------------------------------------------
#!/bin/bash
# IPアドレス情報チェックを行うCountry CodeをCOUNTRYLISTにスペース区切りで指定
COUNTRYLIST='CN KR'
cd /tmp
# APNIC(http://www.apnic.net/)より最新のIPアドレス情報をダウンロード
# ※ローカルより新しい場合のみダウンロード
wget -q -N http://ftp.apnic.net/stats/apnic/delegated-apnic-latest
# IPアドレス情報更新チェック
switch=0
for country in $COUNTRYLIST
do
grep "apnic|$country|ipv4|" delegated-apnic-latest > $country.new
diff -q $country $country.new > /dev/null 2>&1
if [ $? -ne 0 ]; then
switch=1
/bin/mv $country.new $country
else
rm -f $country.new
fi
done
cd
# IPアドレス情報が更新されている場合のみiptables設定スクリプトを実行(ルール最新化)
[ $switch -eq 1 ] && /etc/rc.d/aquarius.fw> /dev/null
------------------- ここまで ----------------------------------------------
ipアドレス情報チェックスクリプトに実行権限をあたえる。
# chmod +x /etc/cron.daily/otherfilter_check.sh
スクリプトを実行する。
# /etc/cron.daily/otherfilter_check.sh
私はaquarius.fwを/etc/rc.dディレクトリの下におき、同じディレクトリのrc.localに/etc/rc.d/aquarius.fwを書いて起動時に動作するようにしています。
# mv ./aquarius.fw /etc/rc.d/
# echo '/etc/rc.d/aquarius.fw' >> /etc/rc.d/rc.local
deny_hostやspam_hostというテキストファイルを同様に/etc/rc.d/に作り、遮断するipアドレスを書いて起きます。
spam_hostはこちらからも相手からのアクセスも遮断。
deny_hostはこちらからのアクセスは許可、相手からのアクセスは遮断。
deny_hostやspam_hostの例
200.0.0.0/8
201.0.0.0/8
aquarius.fwの修正
aquarius.fwの全スクリプトはこちらをご覧下さい。
2006/10/14:スクリプトの間違いがありましたので訂正しました。
2006/12/06:説明に間違いがあったので訂正しました。
誤) # echo '/etc/rc.d/rc.local/aquarius.fw' >> /etc/rc.d/rc.local
正) # echo '/etc/rc.d/aquarius.fw' >> /etc/rc.d/rc.local
昼夜逆転さま、指摘ありがとうございます。
2006/12/08:双方向アクセス禁止スクリプトを追加しました。