自身にポートスキャンが行われた際に検知させたり、ログに出力させたりしたいと思ったので、何かいい方法ないかなぁ…と調べていたところ、psadというツールがあるようなので、ちょっと試してみることにした。で、インストールにはUbuntuを利用するのが楽そうなので、まずはUbuntu 16.04 LTSで試してみることにする。
1.psadのインストール
まずは、以下のコマンドでpsadをインストールする。
sudo apt-get install psad
インストール中、Postfixのメールサーバ形式について選択する画面が表示されるので、適当に選択、設定する。
2.psad・iptablesの設定
psadを利用するにあたり、iptablesでログを出力するような設定を行う。
sudo iptables -A INPUT -j LOG
sudo iptables -A FORWARD -j LOG
sudo iptables -L
blacknon@BS-PUB-UBUNTU-01:~$ sudo iptables -A INPUT -j LOG
blacknon@BS-PUB-UBUNTU-01:~$ sudo iptables -A FORWARD -j LOG
blacknon@BS-PUB-UBUNTU-01:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning
Chain FORWARD (policy ACCEPT)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
rsyslogdの設定ファイルを編集しサービスを再起動してやる。
sudo sh -c 'echo "kern.info\t|/var/lib/psad/psadfifo" >> /etc/rsyslog.conf'
sudo /etc/init.d/rsyslog restart
次に、psadの設定ファイルである「/etc/psad/psad.conf」を編集する。
とりあえず、以下に記述した項目名と値を定義してやればいいだろう。
EMAIL_ADDRESSES メールアドレス; # アラートメールを飛ばすアドレス
HOSTNAME ホスト名; # ホスト名
HOME_NET 192.168.XXX.0/24 # 一つしかインターフェイスがない場合は「NOT_USED」でよい。
EXTERNAL_NET any;
SYSLOG_DAEMON rsyslogd; # rsyslogdに書き換え
IPT_SYSLOG_FILE /var/log/syslog; # Ubuntuのメインのログに書き換え
ENABLE_AUTO_IDS Y; # デフォルトでは無効化されている
AUTO_IDS_DANGER_LEVEL 1; # デフォルトでは5(テストのため、とりあえず1にしてる)
設定完了後、psadサービスを起動させる。
sudo /etc/init.d/psad restart
sudo psad --sig-update
3.ポートスキャンを実行する
psadの設定が完了したら、別のマシンからポートスキャンを実行する。
おそらく、結果を取得できないはずだ。
nmap 対象サーバ
[root@BS-PUB-CENT7-01 ~]# nmap XXX.XXX.XXX.XXX
Starting Nmap 6.40 ( http://nmap.org ) at 2016-08-18 08:50 JST
Nmap scan report for XXX.XXX.XXX.XXX
Host is up (0.00049s latency).
All 1000 scanned ports on XXX.XXX.XXX.XXX are filtered
MAC Address: 62:35:64:XX:XX:XX (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 27.62 seconds
別マシンからのnmap実行後、psadをインストールしたマシンで以下のコマンドを実行すると、検知したスキャンのレポートが出力される。
sudo psad -S
blacknon@BS-PUB-UBUNTU-01:~$ sudo psad -S
[-] psad: pid file /var/run/psad/psadwatchd.pid does not exist for psadwatchd on BS-PUB-UBUNTU-01.BLACKNON.LOCAL
[+] psad (pid: 22868) %CPU: 0.1 %MEM: 1.0
Running since: Thu Aug 18 08:45:13 2016
Command line arguments: [none specified]
Alert email address(es): root@localhost
[+] Version: psad v2.2.3
[+] Top 50 signature matches:
"MISC xfs communication attempt" (tcp), Count: 2, Unique sources: 1, Sid: 1987
"MISC MS Terminal Server communication attempt" (tcp), Count: 2, Unique sources: 1, Sid: 100077
"MISC VNC communication attempt" (tcp), Count: 2, Unique sources: 1, Sid: 100202
"BACKDOOR netbus Connection Cttempt" (tcp), Count: 2, Unique sources: 1, Sid: 100028
"DOS DB2 dos communication attempt" (tcp), Count: 2, Unique sources: 1, Sid: 1641
"DOS iParty DOS attempt" (tcp), Count: 2, Unique sources: 1, Sid: 1605
"BACKDOOR Doly 2.0 Connection attempt" (tcp), Count: 2, Unique sources: 1, Sid: 119
"POLICY vncviewer Java applet communication attempt" (tcp), Count: 2, Unique sources: 1, Sid: 1846
"MISC Radmin Default install options attempt" (tcp), Count: 2, Unique sources: 1, Sid: 100204
"P2P napster communication attempt" (tcp), Count: 2, Unique sources: 1, Sid: 100090
"POLICY HP JetDirect LCD communication attempt" (tcp), Count: 2, Unique sources: 1, Sid: 510
"P2P BitTorrent communication attempt" (tcp), Count: 2, Unique sources: 1, Sid: 2181
"MISC Microsoft PPTP communication attempt" (tcp), Count: 2, Unique sources: 1, Sid: 100082
"BACKDOOR DoomJuice file upload attempt" (tcp), Count: 1, Unique sources: 1, Sid: 2375
"P2P eDonkey transfer attempt" (tcp), Count: 1, Unique sources: 1, Sid: 2586
[+] Top 25 attackers:
172.28.XXX.YYY DL: 3, Packets: 576, Sig count: 28
172.28.XXX.ZZZ DL: 1, Packets: 8, Sig count: 0
[+] Top 20 scanned ports:
tcp 2068 2 packets
tcp 1721 2 packets
tcp 139 2 packets
tcp 1043 2 packets
tcp 20221 2 packets
tcp 1049 2 packets
tcp 51493 2 packets
tcp 10621 2 packets
tcp 6 2 packets
tcp 4003 2 packets
tcp 2605 2 packets
tcp 1187 2 packets
tcp 5900 2 packets
tcp 7999 2 packets
tcp 2045 2 packets
tcp 19315 2 packets
tcp 711 2 packets
tcp 65000 2 packets
tcp 32778 2 packets
tcp 8087 2 packets
udp 67 297 packets
udp 138 4 packets
udp 47269 2 packets
udp 43368 2 packets
udp 50860 2 packets
udp 44927 1 packets
udp 34611 1 packets
[+] iptables log prefix counters:
[NONE]
iptables auto-blocked IPs:
172.28.XXX.YYY (3050 seconds remaining)
172.28.XXX.ZZZ (3107 seconds remaining)
Total protocol packet counters:
tcp: 576 pkts
udp: 309 pkts
[+] IP Status Detail:
SRC: 172.28.XXX.YYY, DL: 3, Dsts: 1, Pkts: 576, Total protocols: 1, Unique sigs: 8, Email alerts: 2, Local IP
DST: 172.28.XXX.XXX, Local IP
Scanned ports: TCP 3-65389, Pkts: 576, Chain: INPUT, Intf: eth0
Total scanned IP protocols: 1, Chain: INPUT, Intf: eth0
Signature match: "BACKDOOR Doly 2.0 Connection attempt"
TCP, Chain: INPUT, Count: 2, DP: 6789, SYN, Sid: 119
Signature match: "POLICY vncviewer Java applet communication attempt"
TCP, Chain: INPUT, Count: 2, DP: 5801, SYN, Sid: 1846
Signature match: "P2P eDonkey transfer attempt"
TCP, Chain: INPUT, Count: 1, DP: 4242, SYN, Sid: 2586
Signature match: "MISC Radmin Default install options attempt"
TCP, Chain: INPUT, Count: 2, DP: 4899, SYN, Sid: 100204
Signature match: "BACKDOOR DoomJuice file upload attempt"
TCP, Chain: INPUT, Count: 1, DP: 3128, SYN, Sid: 2375
Signature match: "MISC xfs communication attempt"
TCP, Chain: INPUT, Count: 2, DP: 7100, SYN, Sid: 1987
Signature match: "DOS iParty DOS attempt"
TCP, Chain: INPUT, Count: 2, DP: 6004, SYN, Sid: 1605
Signature match: "DOS DB2 dos communication attempt"
TCP, Chain: INPUT, Count: 2, DP: 6789, SYN, Sid: 1641
SRC: 172.28.XXX.ZZZ, DL: 1, Dsts: 1, Pkts: 8, Total protocols: 1, Unique sigs: 0, Email alerts: 2, Local IP
DST: 172.28.XXX.XXX, Local IP
Scanned ports: UDP 34611-50860, Pkts: 8, Chain: INPUT, Intf: eth0
Total scanned IP protocols: 1, Chain: INPUT, Intf: eth0
Total scan sources: 2
Total scan destinations: 1
[+] These results are available in: /var/log/psad/status.out
細かい設定もできるようなので、色々と試してみるのもよさそうだ。