ファイアウォール構築(iptables)
http://centossrv.com/iptables.shtml
iptablesで中韓アクセスを全拒否するよう、上記サイトページを参考にしてるんですが
サーバからrootユーザで下記のようなエラーメールが届くようになりました。
> JP 101.1.64.0/18
~~~省略~~~
> TW 59.102.128.0/17
> TW 116.241.0.0/16
/root/iptables.sh not executed.
上記サイトページには
>※CRONより/root/iptables.sh not executed.という内容のメールが届いた場合の対処
>なんらかの理由で、http://nami.jp/ipv4bycc/から取得した最新のIPアドレスリストと、前回取得したIPアドレスリストとの差分が10件を超えたため
>iptables設定スクリプトを実行しなかったことを示す。
>サーバーを長時間停止していた等、前回取得したIPアドレスリストとの差分が10件を超える理由が明確な場合には
>「/etc/cron.daily /iplist_check.sh 0」と実行することにより強制的にiptables設定スクリプトを実行する。
サーバは動かしっぱなしでしたが、上記の/etc/cron.daily /iplist_check.sh 0対策で直ったっぽい。
これで直らないようなら、スクリプトで差分数のエラー判定を10から20へ書き換えるとか、差分チェック自体を消してしまおう。
==============================================
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# 新旧IPLIST差分チェック件数(0を指定するとチェックしない)
# ※新旧IPLIST差分がSABUN_CHKで指定した件数を越える場合はiptables設定スクリプトを実行しない
# ※新旧IPLIST差分チェック理由はhttp://centossrv.com/bbshtml/webpatio/1592.shtmlを参照
SABUN_CHK=10 #差分チェックで10
[ $# -ne 0 ] && SABUN_CHK=${1}
# チェック国コード
COUNTRY_CODE=’JP CN KR TW’
# iptables設定スクリプトパス
IPTABLES=/root/iptables.sh
# iptables設定スクリプト外部関数取り込み
. /root/iptables_functions
# IPアドレスリスト最新化
rm -f IPLIST.new
IPLISTGET
for country in $COUNTRY_CODE
do
if [ -f /tmp/cidr.txt ]; then
grep ^$country /tmp/cidr.txt >> IPLIST.new
else
grep ^$country /tmp/IPLIST >> IPLIST.new
fi
done
[ ! -f /tmp/IPLIST ] && cp IPLIST.new /tmp/IPLIST
# IPアドレスリスト更新チェック
diff -q /tmp/IPLIST IPLIST.new > /dev/null 2>&1
if [ $? -ne 0 ]; then
if [ ${SABUN_CHK} -ne 0 ]; then
if [ $(diff /tmp/IPLIST IPLIST.new | egrep ‘<|>‘ | wc -l) -gt ${SABUN_CHK} ]; then #差分が10以上(変数:SABUN_CHK)かどうかをチェック
(
diff /tmp/IPLIST IPLIST.new
echo
echo “$IPTABLES not executed.”
) | mail -s ‘IPLIST UPDATE’ root
rm -f IPLIST.new
exit
fi
fi
/bin/mv IPLIST.new /tmp/IPLIST
$IPTABLES > /dev/null
else
rm -f IPLIST.new
fi