วันพุธที่ 28 มกราคม พ.ศ. 2552

syslog-ng ส่งไฟล์ http กับ ssh ด้วย

ว่าด้วย เรื่องของ Syslog-ng กับ ports ต่างๆ ครับ

https ==> 443
smtp ==> 25
ssh ==> 22
squid ก็จะมาจาก access.log ของ squid
---------------------------------------------------------

#tcpdump -n -e port 25
#tcpdump -n -e port 443
#tcpdump -n -e port 22

เท่านี้ก็สามารถ จับ การจาราจร มาลลง syslog-ng ได้แล้วครับ


ใน rc.local นะครับ ต้องการให้ start ตอน boot
-----------------------------------------------------------
เพิ่ม
#สำหรับ เก็บ log ลง squid ครับ
tail -F /usr/local/squid/logs/access.log | logger -t squid -p user.info &
#ssh
tcpdump -n -e port 22 | logger -t ssh -p user.info &
#smtp
tcpdump -n -e port 25 | logger -t smtp -p user.info &
#https
tcpdump -n -e port 443 | logger -t https -p user.info &

เพิ่อ ให้ ตัว syslog ทำการเห้บ log ครับ


syslog-ng.conf
-----------------------------------------------------------
source src { unix-dgram("/var/run/log"); # ตรงนี้มีอย่แล้วนะครับ แก้ไขเพิ่มเติมครับ
unix-dgram("/var/run/logpriv" perm(0600));
udp();
tcp();
internal();
file("/dev/klog");
file("/var/log/auth.log");
# file("/var/log/messages");
};




# เพิ่มเข้าไป ครับ
destination d_squid {
file("/var/log/CentralizeLog-$HOST/$YEAR/$MONTH/squid.$YEAR-$MONTH-$DAY"
owner(root) group(adm) perm(665)
create_dirs(yes)
dir_perm(0775));
};


destination d_ssh {
file("/var/log/CentralizeLog-$HOST/$YEAR/$MONTH/ssh.$YEAR-$MONTH-$DAY"
owner(root) group(adm) perm(665)
create_dirs(yes)
dir_perm(0775));
};


destination d_smtp {
file("/var/log/CentralizeLog-$HOST/$YEAR/$MONTH/smtp.$YEAR-$MONTH-$DAY"
owner(root) group(adm) perm(665)
create_dirs(yes)
dir_perm(0775));
};

destination d_https {
file("/var/log/CentralizeLog-$HOST/$YEAR/$MONTH/https.$YEAR-$MONTH-$DAY"
owner(root) group(adm) perm(665)
create_dirs(yes)
dir_perm(0775));
};





#เพิ่มครับ
filter f_squid { program("squid") and facility(user); };
log { source(src); filter(f_squid); destination(d_squid); };

filter f_ssh { program("ssh") and facility(user); };
log { source(src); filter(f_ssh); destination(d_ssh); };


filter f_smtp { program("smtp") and facility(user); };
log { source(src); filter(f_smtp); destination(d_smtp); };


filter f_https { program("https") and facility(user); };
log { source(src); filter(f_https); destination(d_https); };





** /var/log/CentralizeLog-$HOST/$YEAR/$MONTH/https.$YEAR-$MONTH-$DAY <--- ตรงนี้คือที่อยู่ไฟล์ log นะครับ สามารถเปลี่ยนแปลงได้

1 ความคิดเห็น:

ชีวิต..??ใยมีสุข ปนทุกข์ กล่าวว่า...

syslog-ng with mysql

-------------------------------
create table ก่อนครับ

CREATE TABLE IF NOT EXISTS `logs` (
`host` varchar(32) DEFAULT NULL,
`facility` varchar(10) DEFAULT NULL,
`priority` varchar(10) DEFAULT NULL,
`level` varchar(10) DEFAULT NULL,
`tag` varchar(10) DEFAULT NULL,
`datetime` datetime DEFAULT NULL,
`program` varchar(15) DEFAULT NULL,
`msg` text,
`seq` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`seq`)
) ENGINE=MyISAM DEFAULT CHARSET=tis620 AUTO_INCREMENT=283732 ;


แนะนำให้ create ไว้ databases เดียวกับ radius นะครับ



# ee /script/syslog-ng2mysql.sh
เนื้อหาไฟล์ ด้านล่างครับ
#!/usr/local/bin/bash
-------------------------------------------------------------
if [ -e /var/log/mysql.pipe ]; then
while [ -e /var/log/mysql.pipe ]
do
/usr/local/bin/mysql -u root --password=jintana radius < /var/log/mysql.pipe
done
else
mkfifo /var/log/mysql.pipe
fi
--------------------------------------------------------------
เซฟครับ

#touch /var/log/mysql.pipe


เพิ่มใน rc.local

/script/syslog-ng2mysql.sh &

อย่าลืม +x ให้ syslog-ng2mysql.sh นะครับ (ไม่รู้จะมีผลมั้ย)


เพิ่ม ใน syslog-ng.conf


destination d_mysql { pipe("/var/log/mysql.pipe" template("INSERT INTO logs (host, facility, priority, level, tag, datetime, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC','$PROGRAM', '$MSG');\n") template-escape(yes)); };

log { source(src); destination(d_mysql); };


#reboot ครับ


เพิ่มเติมครับ ถ้าจะเอาลงไฟล์
#touch /var/log/smtp.log
#tcpdump -n -e port 25 > /var/log/smtp.log