作者 主題: Re: [問題]iptables的log功能與記憶體用量  (閱讀 6999 次)

0 會員 與 1 訪客 正在閱讀本文。

Jishon

  • 榮譽博士
  • 活潑的大學生
  • ***
  • 文章數: 321
    • 檢視個人資料
引述: "cwlvkimo"

大大能教或貼一下方法嗎 ?
"fwlogwatch作每個IP當天流量統計目前只紀錄內至外forward部分"


系統: RH9, IPTABLES 1.2.8

1. 設定相關的iptables rules紀錄所有forward部分 ,請依實際需求設計
代碼: [選擇]
iptables –t nat -A POSTROUTING -s 10.160.10.0/24 -o eth0 -j MASQUERADE
iptables -N IPLOG
iptables -A FORWARD -j IPLOG
iptables -A IPLOG -j LOG  --log-level debug --log-prefix "[IPTABLES ACCEPT] : "
iptables -A IPLOG -j RETURN


2. 設定log接收主機的 /etc/syslog.conf
代碼: [選擇]
kern.=debug /path/to/log/iptables.log
或 kern.=debug @hostname  (如果想轉發給其他機器處理)


3. 修改接收主機的/etc/sysconfig/syslog
代碼: [選擇]
SYSLOGD_OPTIONS="-r -m 0"
若log接收主機是同一台此步驟可跳過

4. 修改接收主機的/etc/logrotate.d 讓log紀錄自動rotate
代碼: [選擇]
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /vaer/log/cron /path/to/log/iptables.log {
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

修改完成請重新啟動syslogd

5. 到fwlogwatch (http://cert.uni-stuttgart.de/projects/fwlogwatch/)下載fwlogwatch並安裝, 網站有提供多種版本, 以RPM為例
rpm –Uvh fwlogwatch-0.9.3-1.i386.rpm

6. 修改改/etc/fwlogwatch.config下面兩行
代碼: [選擇]
input = /path/to/log/iptables.log (log位置)
parser = n (logfile format)

若要以Real Time方式執行fwlogwatch其他部分參數請依需求修改, 若你只需要定時分析不設也無所謂只要在command mode加入執行參數即可, 請man fwlogwatch

7.原程式有附上一支sh提供批次產生web檔案我直接用它來修改,當然你可以另外寫(/usr/share/doc/fwlogwatch-0.9.3/fwlogsummary.cgi)
代碼: [選擇]

#!/bin/sh
# $Id: fwlogsummary.cgi,v 1.5 2003/03/22 15:02:27 bw Exp $

RECENT="-l 1d"  #產生一天的統計
WEBDIR="/var/www/html/fwlogwatch"
FWLOGWATCH="/usr/sbin/fwlogwatch"

if [ ! -d $WEBDIR ] ; then
  echo "Directory $WEBDIR does not exist!"
  exit
fi

if [ ! -f $FWLOGWATCH ] ; then
  echo "$FWLOGWATCH not found!"
  exit
fi

if [ -z $1 ]
then
  MESSAGES="/path/to/log/iptables.log"
else
  MESSAGES="$1"
fi

# 參數部份請man fwlogwatch
# -w:html輸出, -t:記錄起始時間, -z:連線時間, -S:不顯示來源IP, -o:輸出檔
# -D:不顯示目的IP, -d:目的Port, -s:來源Port, -n:DNS解析, -N:服務名稱解析
# -b: byte總計, -O:排序方式
$FWLOGWATCH $MESSAGES $RECENT -w -t -z -S                              -o $WEBDIR/dst.html
$FWLOGWATCH $MESSAGES $RECENT -w -t -z    -D                           -o $WEBDIR/src.html
$FWLOGWATCH $MESSAGES $RECENT -w -t -z          -d                     -o $WEBDIR/src_dst_dp.html
$FWLOGWATCH $MESSAGES $RECENT -w -t -z       -s -d    -n               -o $WEBDIR/all.html
$FWLOGWATCH $MESSAGES $RECENT -w          -D          -n    -b -O tabd -o $WEBDIR/src_sum.html
$FWLOGWATCH $MESSAGES $RECENT -w          -D    -d    -n -N -b -O tabd -o $WEBDIR/src_service_sum.html


8.若使用apache2.x請將log檔權限改為可讓apache讀取
代碼: [選擇]
chown root:apache /path/to/log/iptables.log
chmod g+r /path/to/log/iptables.log


9.自行寫個index page放到 /var/www/html/fwlogwatch目錄

10.利用cron排程執行/usr/share/doc/fwlogwatch-0.9.3/fwlogsummary.cgi產生報表輸出

建議: 如果log檔很大還是建議將log交給其他主機處理,並將名稱解析關閉
           當然iptable log主機RAM不能太小..............

另外不知怎麼把iptables log的rotate時間縮短?? 目前是跟著syslogd一星期rotate乙次, log檔案會很大,  請各為自行試試囉
Sendmail, BIND 惡補中.....