RSS | ATOM
IPTables log analyzerを使う(3)
(2)までで終わらせようと思ったのだが、風邪をひいてしまって集中できない(--;;
あとは設定だけなので、比較的簡単だと思うが、力つきるかも(笑)

今回のSPAM対策として、iptablesでパケットを破棄してしまう設定にしてしまったが、ここ数週間の感触では、かなりのSPAM削減になっていると思われる
iptablesを通したあとにもSPAMチェック用のPCを通すのだが、そちらのログを見る限り、今まで1日に数百通のSPAMが来ていたものが、1日数通になっている・・・
(以前に書いた3国を止めただけなのだが・・・(笑))

何か、最近は色々なログを眺めているのが好きになってきたなぁ・・・
◎iptablesの設定
iptablesのパケットフィルタールールを設定し、出力フォーマットを指定しますが、前に説明した「SPAM対策」をそのまま使いたいのであれば、以下のようにします。
iptables -N KRFILTER
iptables -N KRFILTERED

sh ALL.sh.txt

iptables -A KRFILTER -j ACCEPT

iptables -A KRFILTERED -j LOG --log-tcp-options --log-ip-options --log-prefix '[IPTABLES DROP]:'
iptables -A KRFILTERED -j DROP

iptables -A INPUT -p tcp -m state --state NEW -j KRFILTER


◎feed_db.plの修正
/usr/local/iptables/scripts/内には以下のスクリプトが入っている
・feed_db-shorewall.pl
・feed_db-suse.php
・feed_db.pl
・iptablelog
feed_db.plの修正
# vi /usr/local/iptables/scripts/feed_db.pl

### C O N F I G S E C T I O N ###

my $dsn = 'DBI:mysql:iptables:localhost';
my $db_user_name = 'iptables_admin';
my $db_password = '1111';
my $log_file = '/var/log/messages';
my $pid_file = "/var/run/iptablelog.pid";

### E N D O F C O N F I G S E C T I O N ###

# get the short name of months according to the locale
# thanks to Bill Garrett
以下の5行をコメントアウト
#my(%m);          
#my($month_nb);     
#for $month_nb (0..11) {  
# $m{strftime("%b", 0, 0, 0, 1, $month_nb, 96)}=sprintf("%02d",$month_nb+1);    
#} 
月表示を数字に置き換えるために以下の1行を追加                 
my(%m)=("Jan"=>"01","Feb"=>"02","Mar"=>"03","Apr"=>"04","May"=>"05",
"Jun"=>"06","Jul"=>"07","Aug"=>"08","Sep"=>"09","Oct"=>"10","Nov"=>"11",
"Dec"=>"12");




◎iptables log analyzer起動スクリプト
# vi /etc/rc.d/init.d/iptablelog
#!/bin/sh
#
# Startup script for the iptables logfile analyzer
#
# chkconfig: - 99 01
# description: The iptables logfile analyzer is a tool for analying logfile of iptables.
# processname: iptablelog
# config: nothing
# Source function library.
. /etc/rc.d/init.d/functions

PATH=/usr/local/bin:/bin:/usr/bin

start() {
if [ -z $(ps ax|grep feed_db.pl|grep -v grep|awk '{ print $1 }') ] ; then
echo -n $"Starting iptablelog"
csh -cf '/usr/local/bin/feed_db.pl &' 2>&1 > /dev/null
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/iptablelog
else
echo "iptablelog is already started"
fi
}

stop() {
if [ ! -z $(ps ax|grep feed_db.pl|grep -v grep|awk '{ print $1 }') ] ; then
echo -n $"Stopping iptablelog"
kill $(ps ax|grep feed_db.pl|grep -v grep|awk '{ print $1 }')
until [ -z $(ps ax|grep feed_db.pl|grep -v grep|awk '{ print $1 }') ]; do :; done
echo
rm -f /var/lock/subsys/iptablelog
else
echo "iptablelog is not running"
fi
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
if [ ! -z $(ps ax|grep feed_db.pl|grep -v grep|awk '{ print $1 }') ] ; then
echo -n "iptablelog (pid"
echo -n " `ps ax|grep feed_db.pl|grep -v grep|awk '{ print $1 }'`"
echo ") is running..."
else
echo "iptablelog is stoped"
fi
;;
*)
echo $"Usage: iptablelog {start|stop|restart|status}"
exit 1
esac

exit 0



・パーミッション変更
# chmod +x /etc/rc.d/init.d/iptablelog

・IPTables log analyzer起動
# /etc/rc.d/init.d/iptablelog start
(ここで/usr/local/bin/feed_db.plが見つからないとエラーになる場合は)
# cp /usr/local/iptables/scripts/feed_db.pl /usr/local/bin/

・起動スクリプトをchkconfigへ登録
# /sbin/chkconfig --add iptablelog

・IPTables log analyzer自動起動
# /sbin/chkconfig iptablelog on

・自動起動設定の確認
# /sbin/chkconfig --list iptablelog
iptablelog 0:off 1:off 2:on 3:on 4:on 5:on 6:off

長くなってしまった・・・
(4)に続く
author:ino, category:IPTables log analyzer, 20:01
comments(0), trackbacks(0), pookmark
Comment









Trackback
url: http://linux.d-tecs.com/trackback/138239