ยกเครดิตให้ คุณยิมครับ ที่ช่วยผมทำจนสำเร็จ ดังนี้
ตั้งค่าให้ FreeBSD 7.0 ส่ง log files
log# cd /usr/ports/sysutils/syslog-ng
log# make & make install
แก้ไขไฟล์ /etc/rc.conf ดังนี้
log# pico /etc/rc.conf
แล้วพิมพ์คำสั่งดังนี้
syslogd_enable="NO"
syslog_ng_enable="YES"
log# kill ‘cat /var/run/syslog.pid’
คัดลอกไฟล์ syslog-ng.conf.sample เป็นไฟล์ syslog-ng.conf ดังนี้
log# cp /usr/local/etc/syslog-ng/syslog-ng.conf.sample /usr/local/etc/syslog-ng/syslogng.conf
สั่งให้ syslog-ng ทำงาน ด้วยคําสั่ง
log# /usr/local/etc/rc.d/syslog-ng start
สร้างฐานข้อมูลชื่อว่า syslog และนำเข้าตาราง log ดังนี้
log # mysql –u root -p’พิมพ์รหัส root mysql’
Mysql> create database syslog;
Mysql> use syslog;
Mysql> แล้วพิมพ์คำสั่งสร้างตารางต่อไปนี้
CREATE TABLE `log` (
`host` varchar(32) collate tis620_bin default NULL,
`facility` varchar(10) collate tis620_bin default NULL,
`priority` varchar(10) collate tis620_bin default NULL,
`level` varchar(10) collate tis620_bin default NULL,
`tag` varchar(10) collate tis620_bin default NULL,
`datetime` datetime default NULL,
`program` varchar(15) collate tis620_bin default NULL,
`msg` text collate tis620_bin,
`seq` bigint(20) unsigned NOT NULL auto_increment,
PRIMARY KEY (`seq`),
KEY `host` (`host`),
KEY `program` (`program`),
KEY `datetime` (`datetime`),
KEY `priority` (`priority`),
KEY `facility` (`facility`)
) ENGINE=InnoDB DEFAULT CHARSET=tis620 COLLATE=tis620_bin;
วิธีการทำให้ syslog-ng เก็บ log ลง mysql
ตามพระราชบัญญัติว่าด้วยการกระทำความผิดทางคอมพิวเตอร์ พ.ศ. 2550 ได้ให้ทุกองค์กร ทุกหน่วยงาน ทั้งภาครัฐและเอกชน ได้ จัดเก็บ log files การใช้งานต่าง ๆ ของผู้ใช้งานอินเตอร์เน็ตอย่างน้อย 90 วัน และจัดทำระบบแสดงตัวตนผู้ใช้งานอินเตอร์เน็ต
คุณธนกร (yim) ได้เขียนบทความนี้เผยแพร่ที่เว็บบร์ด ThaiBSD ว่าหลังจากติดตั้ง syslog-ng แล้ว ให้แก้ไขไฟล์ config ต่าง ๆ ของ syslog-ng ดังต่อไปนี้
log# pico /usr/local/etc/syslog-ng/syslog-ng.conf แล้วเพิ่มคำสั่งต่อไปนี้ เข้าไปนำไฟล์ /usr/local/etc/syslog-ng/syslog-ng.conf ตรงบรรทัด # sources
source src { unix-dgram("/var/run/log");
unix-dgram("/var/run/logpriv" perm(0600));
#udp();
internal();
file("/dev/klog"); };
#
# destinations
#
##################################################
destination ipfw { file("/var/log/ipfw/ipfw.log"); };
filter f_ipfw { program("ipfw"); };
log { source(src); destination(d_mysql); };
destination d_mysql {
pipe("/var/log/mysql.pipe"
template("INSERT INTO log
(host, facility, priority, level, tag, datetime, program, msg,seq)
VALUES ( '$HOST', '$FACILITY', '$PRIORITY',
'$LEVEL', '$TAG','$YEAR-$MONTH-$DAY
$HOUR:$MIN:$SEC','$PROGRAM', '$MSG',null );\n\n") template-escape(yes));
};
###############################################################
log# pico /etc/syslog.conf พิมพ์คำสั่งต่อไปนี้ เพิ่มเข้าไปท้ายไฟล์
!ipfw
*.* /var/log/ipfw/ipfw.log
log# pico /usr/local/etc/syslog-ng/syslog2mysql.sh แล้วพิมพ์คำสั่งต่อไปนี้
#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
if [ ! -e /var/log/mysql.pipe ]
then
mkfifo /var/log/mysql.pipe
fi
while [ -e /var/log/mysql.pipe ]
do
/usr/local/bin/mysql -uroot -pพิมพ์รหัส rootmysql syslog < /var/log/mysql.pipe > /var/log/sql.log
done
log# pico /etc/rc.local พิมพ์คำสั่งเพิ่มเข้าไป ดังนี้
/usr/local/sbin/chilli &
ipfw add 65200 allow log all from any to any // พิมพ์คำสั่งเพิ่มบรรทัดนี้
/bin/sh /usr/local/etc/syslog-ng/syslog2mysql.sh & // พิมพ์คำสั่งเพิ่มบรรทัดนี้
ipfw add pass tcp from any to any 3990 via setup
/usr/local/sbin/RunCache &
ipfw add 1700 fwd 10.0.0.1 tcp from any to 10.0.0.0/24 80
ipfw add 1800 fwd 10.0.0.1,8080 tcp from 10.0.0.0/24 to any 80
ขั้นต่อไปดาวโหลดโปรแกรมแสดง syslog ที่เว็บไซต์ http://www.kroonis.org/log.rar
หลังจากดาวโหลดไฟล์โปรแกรมแสดง log ได้แล้ว ให้แตกไฟล์จะได้โพลเดอร์ syslog ให้อับโหลดโพลเดอร์ syslog ไปไว้ที่ห้อง /usr/local/www/apache22/data/ จากนั้นแก้ไขการติดต่อกับฐานข้อมูล ดังนี้
log# pico /usr/local/www/apache22/data/syslog/Connections/dbconnect.php
แล้วแก้ไขการเชื่อมต่อกับฐานข้อมูล syslog ดังนี้
$hostname_syslog = "127.0.0.1";
$database_syslog = "syslog";
$username_syslog = "root";
$password_syslog= "พิมพ์รหัส rootmysql"; // แก้ไขรหัสของ rootmysql
log# shutdown -r now สั่ง reboot server เพื่อให้โปรแกรม syslog-ng ทำงาน
ตรวจสอบ syslong-ng ส่ง log files ไปเก็บไว้ที่ฐานข้อมูล syslog ได้หรือยัง ให้เรียกโปรแกรม phpMyAdmin ขึ้นมาใช้งาน
เปิดดู log files ผ่านเว็บ Admin โดยพิมพ์ที่ช่อง Address ว่า
10.0.0.1/syslog แล้วกดปุ่ม Enter ก็จะพบรายการ log ที่ syslog-ng ส่งไปเก็บไว้ที่ mysql
พ.ร.บ. ว่าด้วยการกระทำความผิดทางคอมพิวเตอร์ พ.ศ. ระบุว่าให้จัดเก็บ Log File ให้ครบ 90 วัน และบอกให้ได้ว่า ใคร ทำอะไร ที่ไหน อย่างไร ใช้ port ไหน
ถ้าทำได้ตามนี้ ก็รองรับ พ.ร.บ. แล้วครับ
-------------------------------------------------------------
ถ้าท่านใด ทำได้แล้ว นำมาแบ่งปันด้วยนะครับ .... อยากให้ syslog-ng เก็บข้อมูลจาก squid ไปยัง mysql ด้วยครับ ถ้าทำได้แล้ว บอกต่อด้วยนะครั ขอบคุณมากครับ