labunix's blog

labunixのラボUnix

iptablesのログから設定に反映する

■DROP/ACCEPTの判断の材料に、firewallのログを取得する。

$ sudo cat sfw_report.sh
#!/bin/bash

if [ `id -u` -ne "0" ] ;then
  echo "Sorry,Not Permit User"
  exit 1
fi

grep "IN=" /var/log/syslog | \
  sed s/".*IN="/"IN="/g | sed s/" "/"\n"/g | \
  grep -v "^LEN\|^TOS\|^PREC\|^TTL\|^ID\|^MAC\|^DF" | \
  grep -v "^\$" | xargs echo -n | sed s/" "/","/g | \
  sed s/"IN="/"\n&"/g | sed s/",\$"/"\n"/g \
        >> /var/log/sfwlog
echo "" >> /var/log/sfwlog
sort /var/log/sfwlog | uniq -c | grep "," | sort -k 1 -n -r | \
  mail -s "sfw report mail" root


■例えば、vmnet8のゲストOSのiptablesで引っかかったDNS、NetBIOSのログが以下のようにmailで届く。

    638 IN=eth0,OUT=,SRC=192.168.132.1,DST=192.168.132.255,PROTO=UDP,SPT=137,DPT=137
    119 IN=eth0,OUT=,SRC=192.168.132.1,DST=192.168.132.255,PROTO=UDP,SPT=138,DPT=138
     22 IN=,OUT=eth0,SRC=192.168.132.168,DST=192.168.132.2,PROTO=UDP,SPT=36752,DPT=53
     11 IN=,OUT=eth0,SRC=192.168.132.168,DST=192.168.132.2,PROTO=UDP,SPT=56656,DPT=53

■上記メールをそのまま反映した許可の設定を追加する場合
 
iptables -A INPUT -i eth0 -s 192.168.132.1 -d 192.168.132.255 -p udp --sport 137 --dport 137 -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.132.1 -d 192.168.132.255 -p udp --sport 138 --dport 138 -j ACCEPT
iptables -A OUTPUT -o eth0 -s 192.168.132.168 -d 192.168.132.2 -p udp --dport 53 -j ACCEPT