กาลครั้งหนึ่ง ไม่นานเท่าไร ผมได้มีโอกาศ เข้ารับการอบรมเกี่ยวกับการเก็บ log ไว้ที่เครื่องเก็บ log server ซึ่ง server เป็น ระบบปฏิบัติการ linux เก็บ log โดยโปรแกรม syslog-ng โดยท่านอาจารย์บุญลือ อยู่คง จากนั้น ก็ได้ศึกษาต่อ เพื่อจะทำให้ server ทำการเก็บ log ไฟล์ได้มากขึ้น (เพราะเนื้อที่ HDD ของ Server มีจำกัด) จึงได้สร้าง bash Script เพื่อทำการ zip ไฟล์ log ในแต่ละวัน และทำการ md5sum ไว้เพื่อใช้ตรวจสอบการแก้ไขไฟล์ และลบไฟล์ที่เก็บไว้เกิน 3 เดือนทิ้ง โค๊ดก็เลยได้หน้าตาออกมาดังนี้
#!/bin/bash
# SERVERNAME=$1
NOWDATE=`date +%Y-%m-%d%n%H:%M:%S`
echo $NOWDATE
DAY=`date +%d -d yesterday`
MONTH=`date +%m -d yesterday`
YEAR=`date +%Y -d yesterday`
YEAR4=`date +%Y -d -4month`
MONTH4=`date +%m -d -4month`
# search directory
for file in /var/log/*
do
if [ -d $file/$YEAR/$MONTH ]
then
echo "search $file/$YEAR/$MONTH >>"
for sname in squid www ftp samba ssh radius server mail ldap im dhcp imap pop3 smtp postfix msn router switch firewall vpnbox
do
nm="."
#echo "$file/$YEAR/$MONTH/$sname$nm$YEAR-$MONTH-$DAY"
if [ -e $file/$YEAR/$MONTH/$sname$nm$YEAR-$MONTH-$DAY ]
then
# # zip file yesterday in all host
echo "zip $file/$YEAR/$MONTH/$sname$nm$YEAR-$MONTH-$DAY"
cd $file/$YEAR/$MONTH/
tar -czf "$sname$nm$YEAR-$MONTH-$DAY.tar.gz" "$sname$nm$YEAR-$MONTH-$DAY"
# # auto remove yesterday file
rm -f $sname$nm$YEAR-$MONTH-$DAY
# # checksumfile
md5sum $sname$nm$YEAR-$MONTH-$DAY.tar.gz > $sname$nm$YEAR-$MONTH-$DAY.tar.gz.md5sum
# check command use md5sum -c $sname$nm$YEAR-$MONTH-$DAY.tar.gz.md5sum
fi
done
#
# 4 month remove log
#
if [ -d $file/$YEAR4/$MONTH4/ ]
then
# comment this line if save more 4 month
rm -dfR $file/$YEAR4/$MONTH4/
echo "$NOWDATE auto remove $file/$YEAR4/$MONTH4/ success."
fi
fi
done
ตั้งชื่อไฟล์ว่า ziplog นำไปเก็บไว้ที่ /etc/cron.daily/ziplog
ทำการเปลี่ยนคุณสมบัติให้ excute ได้ โดย chmod 755 /etc/cron.daily/ziplog
และสิ่งที่พึ่งทำสำเร็จคือ การส่ง log จาก ISA Server ไปเก็บไว้ที่ log server โดยใช้โปรแกรมเสริม
Snare Epilog for Windows ซึ่งเครื่อง ISA จะต้องเก็บ log เป็น w3c (โดยปรกติ เก็บเป็น mdf )และที่เครื่อง server ต้องทำการแก้ไขไฟล์ /etc/syslog-ng/syslog-ng.conf นิดหน่อย คือ เพิ่มโค๊ดต่อท้ายไฟล์เข้าไป ดังนี้
#
# Log ISAWebLog
#
filter f_isa { program("ISAWebLog"); };
destination d_isa {
file("/var/log/$HOST/$YEAR/$MONTH/isa.$YEAR-$MONTH-$DAY"
owner(root) group(adm) perm(665)
create_dirs(yes) dir_perm(0775));
};
log { source(s_client); filter(f_isa); destination(d_isa); };
ก็เป็นอันเรียบร้อย (แต่ไม่แน่ใจว่า จะส่ง log ไปทุกบรรทัดหรือเปล่า ผู้ใดรู้ ก็ช่วยเสริมที)
ในที่นี้เป็นการส่งเฉพาะ web proxy log ของ ISA หากต้องการเก็บ firewall log ของ ISA ก็ทำในลักษณะเดียวกันครับ
สุดท้ายนี้ก็ขอให้ข้อความที่เขียนมาข้างต้น เป็นประโยชน์ต่อใครสักคน :)
เพิ่มเติมอีกนิด
ไฟล์ /etc/cron.daily/ziplog
เพิ่ม isa เข้าไปในบรรทัด
for sname in squid www ftp samba ssh radius server mail ldap im dhcp imap pop3 smtp postfix msn router switch firewall vpnbox isa