|
|
|
iplog によるポートスキャンの監視
iplog を使う事によって外部からのポートスキャンを監視する事ができます。
|
|
■iplog のダウンロード
■iplog のインストール
iplog の動作条件として、libpcap がインストールされている必要があります。RPMパッケージがインストールされているか確認しておきます。
# rpm -qa | grep
libcap
libcap-1.10-20 |
|
もし、インストールされていない場合は、以下のURLからダウンロードしてきます。
⇒http://www.rpmfind.net/linux/rpm2html/search.php?query=libcap
$ wget http://~/iplog-2.2.3.tar.gz
$ cd /usr/local/src
$ tar xzvf iplog-2.2.3.tar.gz
$ cd iplog-2.2.3
$ ./configure
$ make; make install |
|
make 時に以下のようなエラーが発生したので、iplog_options.c を開いて、443行目あたりから50行分ぐらいのコメント部分をまとめて削除します。以下のような感じに編集しておけばOKです。
gcc -DHAVE_CONFIG_H
-I. -I. -I.. -g -O2 -D_REENTRANT -c iplog_options.c
iplog_options.c: In function `print_help':
" 文字での終端を欠いています
# cd iplog-2.2.3/src
# vi iplog_options.c
static void print_help(void) {
mysyslog(
IS_DEFAULT(LOG_TCP), IS_DEFAULT(LOG_UDP),
IS_DEFAULT(LOG_ICMP),
IS_DEFAULT(LOG_IP), IS_DEFAULT(LOG_DEST),
IS_DEFAULT(DNS_CACHE),
IS_DEFAULT(GET_IDENT), IS_DEFAULT(TCP_RES),
IS_DEFAULT(UDP_RES),
IS_DEFAULT(ICMP_RES), IS_DEFAULT(NO_RESOLV),
IS_DEFAULT(VERBOSE),
IS_DEFAULT(FOOL_NMAP), IS_DEFAULT(SCANS_ONLY),
IS_DEFAULT(SYN_FLOOD),
IS_DEFAULT(LOG_FRAG), IS_DEFAULT(TRACEROUTE),
IS_DEFAULT(PING_FLOOD),
IS_DEFAULT(SMURF), IS_DEFAULT(BOGUS), IS_DEFAULT(PORTSCAN),
IS_DEFAULT(UDP_SCAN), IS_DEFAULT(FIN_SCAN),
IS_DEFAULT(SYN_SCAN),
IS_DEFAULT(XMAS_SCAN), IS_DEFAULT(NULL_SCAN));
exit(0); |
|
■/etc/iplog.conf の編集
iplog.conf を新規に作成します。iplog はデフォルトでは全てのポートのログを記録するようになっている。なので、記録する必要のないポートを無視するように設定する。また、記録する必要のないネットワークからの入出力を無視するようにしておく。ログファイルは指定しなければ、デフォルトで、/var/log/messages
に吐き出されます。set log_ip では、IPアドレスも記録するかどうかを決めます。細かな設定は、man
ページを確認するか、ソースパッケージに入っている、example-iplog.conf を参照してください。
set ignore_dns ---> /etc/resolv.conf に記述されているネームサーバーのDNSトラフィック
は無視する。
# vi /etc/iplog.conf
user iplog
group nobody
logfile /var/log/iplog
pid-file /var/run/iplog/iplog.pid
facility log_daemon
priority log_info
interface eth0
set log_ip true
set ignore_dns
ignore tcp sport 25
ignore tcp dport 25
ignore udp sport 53
ignore udp dport 53
ignore tcp sport 110
ignore tcp dport 110
ignore tcp sport 80
ignore tcp dport 80
ignore tcp from 172.16.50.0/27
ignore udp from 172.16.50.0/27
ignore icmp from 172.16.50.0/27
|
|
■iplog の起動
新規にiplog ユーザを作成し、iplog の権限で動作するようにします。
# useradd -s /sbin/nologin
-d /dev/null iplog
# mkdir /var/run/iplog
# chown iplog.nobody /var/run/iplog |
|
以下のコマンドを実行します。
# /usr/local/sbin/iplog
# ps aux | grep iplog
iplog 16066 0.0 0.1 32552 860 ? Ssl
20:27 0:00 /usr/local/sbin/iplog |
|
動作確認をするには、自分で nmap などでポートスキャンしてみます。ログには以下のように出力されます。
# cat /var/log/iplog
Sep 6 20:08:59 TCP: port 1484 connection
attempt from ns3.kororo.jp:42190
Sep 6 20:08:59 TCP: port 1436 connection
attempt from ns3.kororo.jp:42190
Sep 6 20:08:59 TCP: port 325 connection
attempt from ns3.kororo.jp:42190
Sep 6 20:08:59 TCP: port 663 connection
attempt from ns3.kororo.jp:42190
Sep 6 20:08:59 TCP: port 771 connection
attempt from ns3.kororo.jp:42190
Sep 6 20:08:59 TCP: SYN scan detected [ports
1484,1436,325,663,
771,310,905,2017,738,5632,...] from ns3.kororo.jp
[port 42190]
Sep 6 20:09:01 UDP: dgram to ntp from 172.16.50.29:123
(48 data bytes) |
|
■iplog の自動起動
/etc/rc.d/init.d/iplog を作成します。
# vi /etc/rc.d/init.d/iplog
#!/bin/sh
#
# Startup script for iplog
#
# chkconfig: 345 85 15
# description: iplog
# Source function library.
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo -n "Starting iplog:"
/usr/local/sbin/iplog
echo
;;
stop)
echo -n "Shutting down iplog:"
killproc iplog
echo
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0 |
|
サービスに追加します。
# chmod +x /etc/rc.d/init.d/iplog
# chkconfig --add iplog
# chkconfig --level 35 iplog on |
|
■ログのローテーション
ログのローテーションを行っておきます。
# vi /etc/logrotate.d/iplog
/var/log/iplog {
weekly
rotate 4
missingok
postrotate
/bin/killall
-HUP `cat /var/run/iplog.pid 2>/dev/null`
2> /dev/null
endscript
} |
|
|
|
|
|
|