Hugo

不正アクセス対策

2006年01月16日 12:07:40


今年に入りSSHをねらった不正アクセスが増えてきました。そこでファイヤーウォール(iptables)の設定とswatchによる監視と、不審者を自動で登録しアクセスを拒否する対策をしました。

桃曽根 歳の神より

まず、gentooなのでこのへんを参照しカーネルを再構築します。
swatchのバージョンはapp-admin/swatch-3.1これ!
iptablesのバージョンはnet-firewall/iptables-1.3.4これ!
カーネル再構築後は再起動し自分の環境に合わせてiptablesを設定しておく!

さて、まずこんなシェルを作っておく場所は/etc/swatch/ipselect.shに。
/var/log/auth.logのDid not receive identification string fromとかFailed password for invalid userとかのログをswatchが監視し、下記のシェルに情報をわたしたらシェルがIPアドレスを抜き出してiptablesのアクセス拒否文を発行する。

#!/bin/sh

#---------------------------------------------
# CREATE: MoMoSo-NET.COM. H.COYAMA
# DATE  : 2006-01-14
# iptables IP Address check tool Ver.0.01
#---------------------------------------------

IPTMPFILE="/etc/swatch/iptables.tmp" #一時ファイル
IPLOGFILE="/var/log/iptables.log"    #ログファイル
TIME=`/bin/date`

/
bin/echo $* > $IPTMPFILE

NEW_IP
=`/bin/sed 's/port [0-9]* ssh2//g' $IPTMPFILE | \
        /bin/sed 's/[A-Z][a-z]* //g' | \
        /bin/sed 's/[0-9]* [0-9]*:[0-9]*:[0-9]* //g' | \
        /bin/sed 's/gentooez8 sshd\[[0-9]*\]://g' | \ #このへんはてきとうに
        /bin/sed 's/[a-z]*//g' | \
        /bin/sed 's/ //g'
`
/
bin/rm -r $IPTMPFILE
/sbin/iptables -A INPUT -s $NEW_IP -j DROP
/bin/echo -"$TIME /sbin/iptables -A INPUT -s $NEW_IP -j DROP" >> $IPLOGFILE 


つぎに、swatchの定義ファイルを作成。場所は/etc/swatch/.swatchrc
watchfor = /Did not receive identification string from/
        
bell=2
        exec 
"/etc/swatch/ipselect.sh $_"

watchfor = /Failed password for invalid user/
        
exec "/etc/swatch/ipselect.sh $_"

watchfor = /Illegal user/
        
exec "/etc/swatch/ipselect.sh $_


rcファイルはこんな感じ。ちょっとヤッツケっぽいがかんべんして!場所は/etc/init.d/swatchd

#!/sbin/runscript
# Copyright 2004-2006 Husakazu Coyama MoMoSo-NET.COM.
# Ver.0.03
# 2006-01-07 起動及び停止方法の変更
# Ver.0.02
# 記憶にない
# Ver.0.01
# テスト版


SWATCHD_PIDFILE="/var/run/swatchd.pid"

depend() {
need net
}

checkconfig() {
if [ ! -e /etc/swatch/.swatchrc ] ; then
eerror "You need an /etc/swatch/.swatchrc file first"
return 1
fi
}

start() {
checkconfig || return 1
[ -e "${SWATCHD_PIDFILE}" ] && rm -f ${SWATCHD_PIDFILE} &>/dev/null
ebegin "Starting Simple Watcher"
/usr/bin/swatch --config-file /etc/swatch/.swatchrc --tail-file=/var/log/auth.log --daemon
/bin/pidof swatch > ${SWATCHD_PIDFILE}
eend $?
}

stop() {
ebegin "Stopping Simple Watcher"
SWATCHD_PID=`/bin/cat ${SWATCHD_PIDFILE} | /bin/awk '{print $1}'`
/bin/kill -9 "${SWATCHD_PID}"
/bin/rm -f "${SWATCHD_PIDFILE}"
eend $?
}

最後に
rc-update -a iptables default
rc-update -a iptables swatchd default
再起動してあとは掛かるのを待つだけ。

今回使ったスクリプトはMoMoSo-NET.COM Downloadからどうぞ!

コメント

コメントはありません

コメント送信

このアイテムは閲覧専用です。コメントの投稿、投票はできません。