labunix's blog

labunixのラボUnix

Fortigate-80CでEICARテスト、rsyskogのommailモジュールでメール送信

■Fortigate-80CでEICARテスト、rsyskogのommailモジュールでメール送信
 環境は以下。

 Fortigate-80Cでポート転送(NAT)を設定してみる。
 http://labunix.hateblo.jp/entry/20150222/1424613472

■まずはWeb。直接「EICAR_TEST_FILLE」のメッセージが出る。

$ w3m -no-proxy -dump http://192.168.1.251/eicar.txt
High Security Alert!!

You are not permitted to download the file "eicar.txt" because it is infected
with the virus "EICAR_TEST_FILE".

URL = 192.168.1.251/eicar.txt

File quarantined as: .

http://www.fortinet.com/ve?vn=EICAR_TEST_FILE

■SNMPトラップ
 「EICAR_TEST_FILLE」のメッセージトラップがメールされる。
 但し、どのルールにヒットしたかは分からない。

 Fortigateのsnmp/snmptrap/alert mailをdebian Wheezyで受信する。
 http://labunix.hateblo.jp/entry/20150225/1424799099

172.31.31.251
UDP: [172.31.31.251]:162->[172.31.31.254]
iso.3.6.1.2.1.1.3.0 0:0:47:19.61
iso.3.6.1.6.3.1.1.4.1.0 iso.3.6.1.4.1.12356.101.2.0.601
iso.3.6.1.4.1.12356.100.1.1.1.0 "FGT80CXXXXXXXXXX"
iso.3.6.1.2.1.1.5.0 "FGT-UTM"
iso.3.6.1.4.1.12356.101.8.3.1.0 "EICAR_TEST_FILE"

■syslogのlevelはnotice

 Fortigate-80CのログをDebian Wheezyのrsyslogに転送してみる。
 http://labunix.hateblo.jp/entry/20150226/1424960541

$ sudo tail -3 /var/log/Fortigate-80C.log | \
    sed s/"devid=[A-Z0-9]* "/"devid=FGT80CXXXXXXXXXX "/g | \
    grep EICAR | \
    sed s/" srcip=\| [a-z0-9]*id=\| app=\| action=\| service=\| [a-z0-9]*sum=\| trandisp="/"\n&"/g
Mar  1 22:17:28 172.31.31.251 date=2015-03-01 time=22:17:28 devname=FGT-UTM
 devid=FGT80CXXXXXXXXXX
 logid=0000000013 type=traffic subtype=forward level=notice vd=root
 srcip=192.168.1.253 srcport=44379 srcintf="wan1" dstip=192.168.1.251 dstport=80 dstintf="internal"
 sessionid=767 status=close
 policyid=2 dstcountry="Reserved" srccountry="Reserved"
 trandisp=snat+dnat tranip=172.31.31.254 tranport=80 transip=172.31.31.251 transport=44379
 service=HTTP proto=6 duration=11 sentbyte=562 rcvdbyte=1459 sentpkt=6 rcvdpkt=5 utmaction=blocked utmevent=virus
 virusid=2172 virus="EICAR_TEST_FILE" filename="eicar.txt" hostname="192.168.1.251"
 analyticscksum="131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267" crscore=3238002738 craction=2

■アラートEMail設定が「Nortification」以上ならメール通知が来る。
 以下のようなbase64エンコードされた本文がメール通知される。
 中身は単なるsyslogなので、結局syslogの読み方には慣れておく必要がある。

$ echo 'TWFyICAxIDIyOjM2OjA0IDE3Mi4zMS4zMS4yNTEgZGF0ZT0yMDE1LTAzLTAxIHRpbWU9MjI6MzY6
MDQgZGV2bmFtZT1GR1QtVVRNIGRldmlkPUZHVDgwQ1hYWFhYWFhYWFggbG9naWQ9MDAwMDAwMDAx
MyB0eXBlPXRyYWZmaWMgc3VidHlwZT1mb3J3YXJkIGxldmVsPW5vdGljZSB2ZD1yb290IHNyY2lw
PTE5Mi4xNjguMS4yNTMgc3JjcG9ydD00NDQxOCBzcmNpbnRmPSJ3YW4xIiBkc3RpcD0xOTIuMTY4
LjEuMjUxIGRzdHBvcnQ9ODAgZHN0aW50Zj0iaW50ZXJuYWwiIHNlc3Npb25pZD05MzEgc3RhdHVz
PWNsb3NlIHBvbGljeWlkPTIgZHN0Y291bnRyeT0iUmVzZXJ2ZWQiIHNyY2NvdW50cnk9IlJlc2Vy
dmVkIiB0cmFuZGlzcD1zbmF0K2RuYXQgdHJhbmlwPTE3Mi4zMS4zMS4yNTQgdHJhbnBvcnQ9ODAg
dHJhbnNpcD0xNzIuMzEuMzEuMjUxIHRyYW5zcG9ydD00NDQxOCBzZXJ2aWNlPUhUVFAgcHJvdG89
NiBkdXJhdGlvbj0xMSBzZW50Ynl0ZT01NjIgcmN2ZGJ5dGU9MTQ1OSBzZW50cGt0PTYgcmN2ZHBr
dD01IHV0bWFjdGlvbj1ibG9ja2VkIHV0bWV2ZW50PXZpcnVzIHZpcnVzaWQ9MjE3MiB2aXJ1cz0i
RUlDQVJfVEVTVF9GSUxFIiBmaWxlbmFtZT0iZWljYXIudHh0IiBob3N0bmFtZT0iMTkyLjE2OC4x
LjI1MSIgYW5hbHl0aWNzY2tzdW09IjEzMWY5NWM1MWNjODE5NDY1ZmExNzk3ZjZjY2FjZjlkNDk0
YWFhZmY0NmZhM2VhYzczYWU2M2ZmYmRmZDgyNjciIGNyc2NvcmU9MzIzODAwMjczOCBjcmFjdGlv
bj0yCg==
' | tr -d '\n' | base64 -d | \
  sed s/" srcip=\| [a-z0-9]*id=\| app=\| action=\| service=\| [a-z0-9]*sum=\| trandisp="/"\n&"/g
Mar  1 22:36:04 172.31.31.251 date=2015-03-01 time=22:36:04 devname=FGT-UTM
 devid=FGT80CXXXXXXXXXX
 logid=0000000013 type=traffic subtype=forward level=notice vd=root
 srcip=192.168.1.253 srcport=44418 srcintf="wan1" dstip=192.168.1.251 dstport=80 dstintf="internal"
 sessionid=931 status=close
 policyid=2 dstcountry="Reserved" srccountry="Reserved"
 trandisp=snat+dnat tranip=172.31.31.254 tranport=80 transip=172.31.31.251 transport=44418
 service=HTTP proto=6 duration=11 sentbyte=562 rcvdbyte=1459 sentpkt=6 rcvdpkt=5 utmaction=blocked utmevent=virus
 virusid=2172 virus="EICAR_TEST_FILE" filename="eicar.txt" hostname="192.168.1.251"
 analyticscksum="131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267" crscore=3238002738 craction=2

■メールの場合
 本文に直接EICARを貼り付け。

$ telnet 192.168.1.251 25
Trying 192.168.1.251...
Connected to 192.168.1.251.
Escape character is ^].
220 myhome.local ESMTP Postfix (Debian/GNU)
ehlo localhost
250-myhome.local
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:labunix
250 2.1.0 Ok
rcpt to:labunix@localhost
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: Eicar Test
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
.
quit
250 2.0.0 Ok: queued as A1814293114
221 2.0.0 Bye
Connection closed by foreign host.

■「X-*」系のヘッダに追記されることを期待したが、
 結果は本文が書き換わっただけ。
 添付ファイルではないのでファイル名は空欄。

From labunix@myhome.local  Sun Mar  1 22:46:45 2015
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on
myhome.local
X-Spam-Level: **
X-Spam-Status: No, score=2.1 required=5.0 tests=ALL_TRUSTED,MISSING_DATE,
MISSING_HEADERS,MISSING_MID,NO_DNS_FOR_FROM autolearn=no version=3.3.2
X-Original-To: labunix@localhost
X-Virus-Scanned: Debian amavisd-new at myhome.local
X-Amavis-Alert: BAD HEADER SECTION, Improper use of control character (char 0D
hex): Subject: Eicar Test\rContent-Type: t[...]
Subject: Eicar TestContent-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Connection: Close

Dangerous Attachment has been Removed.  The file "" has been removed because of a virus.
  It was infected with the "EICAR_TEST_FILE" virus.
  File quarantined as: ""."http://www.fortinet.com/ve?vid=2172"

■Webと同様のSNMPトラップ。

172.31.31.251
UDP: [172.31.31.251]:162->[172.31.31.254]
iso.3.6.1.2.1.1.3.0 0:1:16:46.42
iso.3.6.1.6.3.1.1.4.1.0 iso.3.6.1.4.1.12356.101.2.0.601
iso.3.6.1.4.1.12356.100.1.1.1.0 "FGT80CXXXXXXXXXX"
iso.3.6.1.2.1.1.5.0 "FGT-UTM"
iso.3.6.1.4.1.12356.101.8.3.1.0 "EICAR_TEST_FILE"

■syslogを見ると、「level=notice」
 notice以上のログレベルだと大量のメールが来るし、
 SNMPトラップではVirus検知した詳細が分からない。
 「alert emailを送信するカテゴリ」にすれば良いけど、
 その場合はログレベルベースのalert emailは送れなくなる。

$ sudo tail -f /var/log/Fortigate-80C.log | \
    sed s/"devid=[A-Z0-9]* "/"devid=FGT80CXXXXXXXXXX "/g | \
    sed s/" srcip=\| [a-z0-9]*id=\| app=\| action=\| service=\| [a-z0-9]*sum=\| trandisp"/"\n&"/g
Mar  1 22:46:46 172.31.31.251 date=2015-03-01 time=22:46:46 devname=FGT-UTM
 devid=FGT80CXXXXXXXXXX
 logid=0000000013 type=traffic subtype=forward level=notice vd=root
 srcip=192.168.1.253 srcport=42215 srcintf="wan1" dstip=192.168.1.251 dstport=25 dstintf="internal"
 sessionid=966 status=close
 policyid=3 dstcountry="Reserved" srccountry="Reserved"
 trandisp=snat+dnat tranip=172.31.31.254 tranport=25 transip=172.31.31.251 transport=42215
 service=SMTP proto=6 duration=47 sentbyte=1311 rcvdbyte=1217 sentpkt=17 rcvdpkt=17 utmaction=blocked utmevent=virus mailcount=1 spamcount=0
 virusid=2172 virus="EICAR_TEST_FILE"

■rsyslogのommailプラグインを使用してメールする。
 Debianのrsyslogには、ommailモジュールがあるので、
 「rsyslog入門」を参考に設定する。

$ dpkg -L rsyslog | grep mail
/usr/lib/rsyslog/ommail.so

 #logstudy 01 rsyslog入門
 http://www.slideshare.net/ttkzw/logstudy01-rsyslog-primer

■モジュールのロードは以下。

$ grep -A 10 "ommail\$" /etc/rsyslog.conf
$ModLoad ommail

$ActionMailSMTPServer 172.31.31.254                           # mail-server-{ip,address}
$ActionMailFrom root@localhost                                # mail-from-address
$ActionMailTo root@localhost                                  # mail-to-addresss
$template mail_subject,"#Virus Alert#,%TIMESTAMP%,%hostname%" # mail-Subject-data
$template mail_body,"%msg%"                                   # mail-Body-data
$ActionMailSubject mail_subject                               # template-to-var
$ActionExecOnlyOnceEveryInterval  -1                          # now(-1) or 0-3600sec
#$ActionExecOnlyOnceEveryInterval 60


■ルールは以下。
 if文で「fromhost-ip」を条件に追加しても良いけど、
 ログの取りこぼしリスクを考えると難しくしない方がベター。

$ grep "ommail:" /etc/rsyslog.conf
:msg, contains, "virusid"		 :ommail:;mail_body

■rsyslog再起動時にエラーがないこと。

$ sudo /etc/init.d/rsyslog restart;sudo tail -20 /var/log/syslog | grep rsyslog
[ ok ] Stopping enhanced syslogd: rsyslogd.
[ ok ] Starting enhanced syslogd: rsyslogd.
Mar  1 23:53:42 myhome rsyslogd: [origin software="rsyslogd" swVersion="5.8.11" x-pid="17789" x-info="http://www.rsyslog.com"] start

■以下のようなrsyslogの出力するログと一致するメールが来るので、
 分かりやすくなった。

Subject: #Virus Alert#,Mar  2 00:15:20,172.31.31.251
X-Mailer: rsyslog-immail

 time=00:15:20 devname=FGT-UTM
 devid=FGT80CXXXXXXXXXX
 logid=0000000013 type=traffic subtype=forward level=notice vd=root
 srcip=192.168.1.253 srcport=44462 srcintf="wan1" dstip=192.168.1.251 dstport=80 dstintf="internal"
 sessionid=1410 status=close
 policyid=2 dstcountry="Reserved" srccountry="Reserved"
 trandisp=snat+dnat tranip=172.31.31.254 tranport=80 transip=172.31.31.251 transport=44462
 service=HTTP proto=6 duration=11 sentbyte=562 rcvdbyte=1459 sentpkt=6 rcvdpkt=5 utmaction=blocked utmevent=virus
 virusid=2172 virus="EICAR_TEST_FILE" filename="eicar.txt" hostname="192.168.1.251"
 analyticscksum="131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267" crscore=3238002738 craction=2