ダウンロード

Swatchで不正アクセス遮断
2012年1月 AACS
slide1
slide1
Swatchで不正アクセス遮断
 SWATCHで各システムのログファイルを監視し、特定のパターン
にマッチした場合iptablesと連係しアクセスを遮断させます。
 iptablesにてアクセスをブロックするまでの回数や、動的IP対策と
してアクセス制限を行う時間は任意で設定が可能
slide2
slide2
Swatchのインストール(1/2)
 swatchに必要なperlモジュールをインストール
 必要なのが下記モジュール
 Bit::Vector
 Date::Calc
 File::Tail
 Time::HiRes
 TimeDate ←TaimDateに関してはDate::Parseのインストールで
 cpan(perlのモジュール集合体)で下記モジュールをインストールします。
 # cpan ← cpan起動
 cpan> install Bit::Vector ← 途中色々と聞かれるが「Enter」
 cpan> install Date::Calc
 cpan> install File::Tail
 cpan> install Time::HiRes
 cpan> install Date::Parse
 時間を要します
 cpan> exit ← 終了
slide3
slide3
Swatchのインストール (2/2)
 swatchの最新版はこちらで確認 →
http://sourceforge.net/projects/swatch/
 # wget http://downloads.sourceforge.net/swatch/swatch3.2.3.tar.gz ← SWATCHをダウンロード
 # tar fvxz swatch-3.2.3.tar.gz ← 展開
 # cd swatch-3.2.3 ← 移動
 # perl Makefile.PL
 # make
 # make test
 # make install ← インストール
 # rm -rf swatch-3.2.3.tar.gz ← DLファイル削除
 # apt-get install jwhois ← whoisコマンドのインストール
 (不正IP連絡時にwhois情報をメール通知するので必要)
slide4
slide4
アクセス遮断スクリプトの作成 (1)
不正アクセスの累計回数が、スクリプトで指定した回数に
達した場合、iptablesにて24時間アクセスを遮断する
/usr/bin/swatch.sh ← スクリプト作成
slide5
slide5
アクセス遮断スクリプトの作成(2)
#!/bin/bash
PATH=/bin:/sbin:/usr/bin
LANG=C
# IPブロック時メール送信先(送信しない場合はコメントアウト)
mail=root
# 不正アクセスをブロックするまでの回数
max=3
# ログを標準入力から取得
read LOG
# ログからIPアドレスを抽出
IPADDR=`echo $LOG|cut -d " " -f $1`
echo "$IPADDR"|grep "^[0-9]*¥." > /dev/null 2>&1
if [ $? -eq 0 ]; then
IPADDR=`echo "$IPADDR"|sed -e 's/¥([0-9]*¥.[0-9]*¥.[0-9]*¥.[09]*¥).*/¥1/p' -e d`
else
IPADDR=`echo "$IPADDR"|sed -e 's/.*[^0-9]¥([0-9]*¥.[0-9]*¥.[09]*¥.[0-9]*¥).*/¥1/p' -e d`
fi
slide6
slide6
アクセス遮断スクリプトの作成(3)
# IPアドレス分割
addr1=`echo $IPADDR|cut -d . -f 1`
addr2=`echo $IPADDR|cut -d . -f 2`
addr3=`echo $IPADDR|cut -d . -f 3`
addr4=`echo $IPADDR|cut -d . -f 4`
# IPアドレスがプライベートIPアドレスの場合は動作させない
if [ "$IPADDR" = "127.0.0.1" ]; then
exit
elif [ $addr1 -eq 10 ]; then
exit
elif [ $addr1 -eq 172 ] && [ $addr2 -ge 16 ] && [ $addr2 -le 31 ]; then
exit
elif [ $addr1 -eq 192 ] && [ $addr2 -eq 168 ]; then
exit
fi
# 不正IPアドレス別にログファイル作成
echo $LOG >> /var/log/swatch/$IPADDR
# 不正IPアドレス別ログファイルから累積不正アクセス数取得
cnt=`cat /var/log/swatch/$IPADDR | wc -l
slide7
slide7
アクセス遮断スクリプトの作成(4)
# 該当IPアドレスが指定した累積不正アクセス数に達した時と
# 引数でBlockと指定された場合アクセス規制
if [ "$cnt" -ge "$max" ] || [ $# -eq 2 -a "$2" = "Block" ]; then
# 該当IPアドレスからのアクセスを拒否するルールを挿入
iptables -I INPUT -s $IPADDR -j DROP
# 上記ルールを24時間後に削除するスケジュールを登録
echo "iptables -D INPUT -s $IPADDR -j DROP > /dev/null 2>&1" | ¥
at now+24hour > /dev/null 2>&1
# アクセス規制IPアドレス情報をメール通知
[ "$mail" != "" ] && (cat /var/log/swatch/$IPADDR ; ¥
echo ; whois $IPADDR) | ¥
mail -s "IP Block!" $mail
# ブロック済不正IPアドレス別ログファイル削除
rm -f /var/log/swatch/$IPADDR
echo "`date` $IPADDR $cnt Block!"
else
echo "`date` $IPADDR $cnt"
fi
slide8
slide8
アクセス遮断スクリプトの作成(5)
# chmod 700 /usr/bin/swatch.sh ← スクリプトに実行権限を与えます
slide9
slide9