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
© Copyright 2024 ExpyDoc