Download as pdf or txt
Download as pdf or txt
You are on page 1of 39

การติดตั้ง Centralized Log Server

โดย พีน่ ้ องกรรมกรไอที บ้ านสู งชั้ น


ความต้องการเพ็คเก็จที่ใช้ในการทางาน
1. Apache web Server
2. Mysql Databases
3. Syslog-ng
4. php-syslog-ng


ระย
กรณี ดงั ต่อไปนี้ได้สมมุติวา่ ได้ติดตั้ง Apache Web Server และ Mysql Database ไปเรี ยบร้อยแล้ว
มิ น ที
า้ พ
1.ทาการติดตั้ง Syslog-ng ด้วยสาสั่งดังต่อไปนี้
ไอ
้าเจ
กร

sudo apt-get install syslog-ng


รม

จะปรากฏข้อความคล้ายๆดังต่อไปนี้
กร
3ร

Reading package lists... Done


Building dependency tree
นั ้ 1

Reading state information... Done


งู ช

The following packages will be REMOVED:


นส

klogd sysklogd ubuntu-minimal


บา้

The following NEW packages will be installed:


syslog-ng
0 upgraded, 1 newly installed, 3 to remove and 4 not upgraded.
Need to get 209kB of archives.
After this operation, 188kB of additional disk space will be used.
Do you want to continue [Y/n]? Y //เลือก Y เพือ่ ทาการยืนยันถึงการติดตั้ง
Get:1 http://th.archive.ubuntu.com hardy/universe syslog-ng 2.0.9-1ubuntu1 [209kB]
Fetched 209kB in 0s (1724kB/s)
(Reading database ... 124401 files and directories currently installed.)
Removing ubuntu-minimal ...
Removing klogd ...
* Stopping kernel log daemon...
...done.
Removing sysklogd ...
* Stopping system log daemon...
...done.
Selecting previously deselected package syslog-ng.
(Reading database ... 124377 files and directories currently installed.)
Unpacking syslog-ng (from .../syslog-ng_2.0.9-1ubuntu1_i386.deb) ...
Setting up syslog-ng (2.0.9-1ubuntu1) ...
* Starting system logging syslog-ng
...done.


ระย
มิ น ที
า้ พ
ไอ

2 ทาการทดสอบการทางานของ Syslog-ng โดยคาสั่งดังต่อไปนี้


้าเจ
กร

sudo /etc/init.d/syslog-ng restart


รม

และตามด้วย
กร
3ร

sudo logger -i -t logtest -- "logtest"


นั ้ 1

ทาการตรวจสอบการเขียน log ของ Syslog-ng ด้วยคาสั่งดังต่อไปนี้


sudo tail /var/log/syslog
งู ช
นส

ผลที่ได้จะปรากฏคล้ายๆ ดังต่อไปนี้
Nov 15 01:13:42 mail syslog-ng[9278]: Termination requested via signal, terminating;
บา้

Nov 15 01:13:42 mail syslog-ng[9278]: syslog-ng shutting down; version='2.0.9'


Nov 15 01:13:42 mail syslog-ng[9299]: syslog-ng starting up; version='2.0.9'
Nov 15 01:13:45 mail logtest[9302]: logtest
ถ้าผลที่ได้ออกประมาณนี้ แสดงว่า Syslog-ng สามารถทางานได้แล้ว
3. ขั้นตอนในการปรับแต่งเพื่อให้ syslog-ng รองรับ log จากเครื่ องอื่น โดยทัว่ ไปนั้น เครื่ องที่จะทางานเป็ น
Centralize log Server นั้นจะใช้งานพอร์ ตมาตรฐานคือ udp 514(สาหรับ syslogd) แต่สาหรับ Syslog-ng สามารถ
ทางานได้ท้ งั udp/tcp 514 และยังสามารถปรับแต่งให้ทางานที่พอร์ ตอื่นได้อีก โดยปกติ syslog-ng จะไม่รองรับการ
ทางานเป็ นCentralize log Server จะต้องมีการปรับแต่งเพิ่มเติม ดังนี้
โดยไฟล์ที่จะเข้าไปทาการแก้ไขคือ “syslog-ng.conf” ซึ่ งโดยทัว่ ไปจะอยูท่ ี่ “/etc/syslog-ng/syslog-
ng.conf” ในที่น้ ีจะทาการเปิ ดพอร์ ตในการทางานทั้ง tcp/udp 514

source s_all {
# message generated by Syslog-NG
internal();
# standard Linux log source (this is the default place for the syslog()
# function to send logs to)
unix-stream("/dev/log");
# messages from the kernel
file("/proc/kmsg" log_prefix("kernel: "));
# use the following line if you want to receive remote UDP logging messages
# (this is equivalent to the "-r" syslogd flag)


ระย
# udp();
มิ น ที
};
า้ พ
ไอ

# ที่ทาการเพิ่มขึ้นมา
้าเจ
กร

source tcp_message_open {
รม
กร

tcp(ip("0.0.0.0") port(514));
3ร

};
นั ้ 1

# ที่ทาการเพิ่มขึ้นมา
งู ช

source udp_message_open{
นส

udp(ip("0.0.0.0") port(514));
บา้

};

เพิ่มเติม กรณี ใช้ n e og f e po log จาก n e

อธิบาย เป็ นการสร้าง source สาหรับใช้ในการรับข้อมูล ที่ชื่อ “ cp_me ge_open”, ”udp_me ge_open” โดย
ชื่อเหล่านี้สามารถแก้ไขได้ตามความเหมาะสม โดยที่ได้ทาการเปิ ด พอร์ ตทั้ง TCP/UDP เนื่องจาก ต้องการให้
สามารถรองรับการทางานกับ syslogd(ซึ่งจะใช้งาน UDP 514) ซึ่ งเป็ นเครื่ องมือแบบเก่าที่ถูก build in ลงใน
Linux/Unix ทุก distribute สาหรับ syslog-ng สามารถรองรับการทางานได้ท้ งั TCP/UDP
หลังจากที่ได้มีการเพิ่มเข้าไปแล้วให้ทาการ restart syslog-ng
sudo /etc/init.d/syslog-ng restart
อีกครั้งแล้วทาการตรวจสอบการทางานของพอร์ ตที่เปิ ดขึ้น
comsec@mail:~$ netstat -an |grep 514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN //พอร์ตที่เปิ ดขึ้นมา
udp 0 0 0.0.0.0:514 0.0.0.0:* //พอร์ตที่เปิ ดขึ้นมา
udp 0 0 192.168.200.2:45918 192.168.200.1:514 ESTABLISHED //มีการเชื่อมต่อ

ถ้าปรากฏผลออกมา ประมาณนี้แสดงว่า syslog-ng รองรับการทางานเป็ น Centralize log server แล้ว

ในการทดสอบจะทาการทดสอบ จากระบบ Window โดย window จะทาการส่ ง log มายัง ubuntu server
โดย Window (192.168.200.1), Ubuntu Centralize log Server (192.168.200.2)
โดย ระบบปฏิบตั ิการ วินโดว์ จะต้องทาการติดตั้งโปรแกรมที่ชื่อ NTSyslog โดยมีวธิ ี การติดตั้งดังต่อไปนี้


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร
3ร
นั ้ 1
งู ช
นส
บา้
บา้
นส กร
งู ช รม
นั ้ 1 กร
3ร ไอ
มิ น ที
้าเจ
า้ พ
ระย

บา้
นส กร
งู ช รม
นั ้ 1 กร
3ร ไอ
มิ น ที
้าเจ
า้ พ
ระย

ถ้า Service อยูใ่ นสถานะหยุดการทางาน (STOP) ให้ทาการเริ่ มการทางาน (START)


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร
3ร
นั ้ 1

ทาการกาหนดเครื่ องที่รับล็อกจากเครื่ องวินโดว์ ก็คือ Centralized log server นั้นเองในที่น้ ีคือ 192.168.200.2
งู ช
นส
บา้
เป็ นหน้าที่ใช้ในการกาหนด Facility ในการส่ งล็อก


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร
3ร
นั ้ 1
งู ช
นส
บา้
การติดตั้ง Snare (ปรับปรุ ง เมื่อ 5 สิ งหาคม 2553)
ในการส่ ง log file ไปยังเครื่ อง syslog-ng นั้น เราสามารถใช้งานได้อีกโปรแกรม คือ Snare โดยมาขั้นตอน
การติดตั้งและปรับแต่ง (ในการติดตั้งและปรับแต่งนี้ ได้ทาโดยใช้ Windows 7 เป็ นตัวลูกข่ายที่จะส่ ง logไปให้
เครื่ องแม่ข่าย) ดังนี้
เข้าไปที่ เวบ n e http://www.intersectalliance.com/ ซึ่งจะมีให้เลือก โดยไปที่ download ไฟล์ โดยมี
ให้เลือก สาหรับตระกูลของระบบปฏิบตั ิการ ซึ่งสามารสนับสนุนได้หลากหลายระบบปฏิบตั ิการ ในที่น้ ี
ทางผูท้ าการทดสอบได้ทาการติดตั้งคือ SnareSetupVista-1.1.5-MultiArch
วิธีการติดตั้งมีดงั นี้
1. ให้ทาการเรี ยกตัว โปรแกรมขึ้นมาเพื่อทาการติดตั้ง โดยจะแสดงหน้าจอดังนี้


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร
3ร
นั ้ 1
งู ช
นส

2. เลือก Next เพื่อทาการติดตั้ง


บา้
3. เลือก Next เพื่อดาเนิ นการต่อ
กรณี ไม่ตอ้ งการติดตั้ง ตามค่าเริ่ มต้นของโปรแกรมสามารถแก้ไขได้โดยการเลือก ว่าจะ
นาไปติดตั้งที่ไหน อย่างไร โดยการ กดปุ่ ม Browse… แล้วเลือกที่จดั เก็บสาหรับติดตั้ง
โปรแกรม ต่อไป


ระย
มิ น ที
4. เลือก Next เพื่อดาเนิ นการติดตั้งต่อไป
า้ พ
ไอ

กรณี ตอ้ งการแก้ไขชื่อ หรื อ ที่จดั เก็บโปรแกรม บน Start Menu สามารถเปลี่ยนแปลงได้


้าเจ
กร

โดยไป กาหนด ได้ที่ B own…


รม
กร
3ร
นั ้ 1
งู ช
นส
บา้
5. ขั้นตอนต่อไปนี้ เราสามารถเลือกได้ ทั้ง Yes / No โดยต้องเลือกอย่างใดอย่างหนึ่ง โดย
โปรแกรมจะสอบถามว่า ต้องการ ให้ทาการตรวจสอบค่าการปรับแต่งหรื อไม่ และให้เลือก
e


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร

6. ชั้นตอนนี้ เป็ นส่ วนของการติดตั้งค่ากรณี เข้าใช้งาน Snare โดยใช้ รหัสผ่านเข้าใช้งานมาเป็ น


รม

ตัวกาหนด ซึ่ งสามารถเลือกอย่างใดอย่างหนึ่งเท่านั้น และ ทาการกด Next เพื่อดาเนินการ


กร
3ร

ติดตั้งต่อไป
นั ้ 1
งู ช
นส
บา้
7. กด Install เพื่อดาเนินการติดตั้ง


8. กด Next เพื่อ
ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร
3ร
นั ้ 1
งู ช
นส
บา้

9. กด Finish จบการติดตั้ง snare

วิธีการปรับแต่ งเพือ่ ให้ snare ส่ งข้ อมูลไป ยัง syslog-ng (กรณีของ windows )

1. Start  All Programs  InterSect Alliance  Snare For Windows หรื อ เปิ ด web brownser
ขึ้นมา แล้วใส่ ข้อความ ดังนี้ URL : localhost:6161
2. เลือกที่ Network Configuration


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร
3ร
นั ้ 1
งู ช
นส
บา้

3. เข้าไปแก้ไข ตรงตาแหน่ง ดังนี้


e n on n e e e dd e ... syslog-ng
Destination Port จาก 6161 ใช้ค่าเดิม
และทาการ Change Configuration
เมื่อทาการ ปรับแต่งเรี ยบร้อย ให้เลือกปรับแต่ง ที่ส่วน Objective Configuration
4. การปรับแต่งในส่ วนของ ec e onf gu on
syslog-ng นั้นมีอะไร ได้บา้ ง ซึ่ งสามารถเพิ่มเข้าไปได้ โดย กดที่ปุ่ม dd


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร
3ร
นั ้ 1
งู ช
นส

5. เมื่อทาการปรับแต่งเสร็ จแล้ว ให้ทาการ บันทึกค่าโดยการ กด Change Configuration


บา้

6. แล้วทาการทดสอบด้วยการเข้าไปดู ที่ syslog-ng

จากขึ้นตอนข้างต้น วินโดว์จะทาการส่ งล็อคต่างๆไปยังเครื่ อง log server ในขั้นตอนต่อมาจะทาการปรับแต่ง


syslog-ng เพื่อรองรับเฉพาะ เครื่ องวินโดว์ที่มีไอพีเป็ น 192.168.200.1 แล้วจะทาการสร้างล็อกไฟล์สาหรับเครื่ อง
วินโดว์น้ ี โดยเฉพาะ โดยทาการเพิม่ รายละเอียดดังต่อไปนี้ ในแฟ้ ม “syslog-ng.conf”

destination d_192.168.200.1{
file("/var/log/server/event_192.168.200.1.log");
};
filter f_192.168.200.1{
host("192.168.200.1");
};

log {
source(udp_message_open);
filter(f_192.168.200.1);
destination(d_192.168.200.1);
};

อธิบาย


ระย
ในการประกาศที่ destination <Variable name> จะเป็ นการประกาศว่าตัวแปรที่ชื่อ “d_192.168.200.1”
มิ น ที
า้ พ
ต้องการให้ไปเก็บหรื อส่ งล็อคไปที่ใด ในที่น้ ีกาหนดเป็ น ไฟล์ในตาแหน่ง
ไอ
้าเจ
กร

“/var/log/server/event_192.168.200.1.log” ถ้าไม่มีมนั จะสร้างขึ้นมาให้เอง


รม

ในการประกาศที่ filter <variable name > จะเป็ นการประกาศว่าตัวแปรที่ชื่อ “f_192.168.200.1” ต้องการ


กร
3ร

ฟิ วเตอร์เฉพาะโฮสที่มีไอพีเป็ น “192.168.200.1” เป็ นการกาหนดว่าเฉพาะล็อคที่เป็ นหรื อที่มาจากเครื่ องที่กาหนด


เท่านั้นถึงจะมีการเขียนลงสู่ ล็อค
นั ้ 1

ในการประกาศ log จะเป็ นการนาเอาข้อกาหนดที่เป็ นทั้ง destination,filter,source เพื่อนามาสร้างล็อคไฟล์


งู ช

ตามที่กาหนด มีขอ้ สังเกตว่าถ้าไม่มีการใช้งานตัวแปรนี้กฎทั้งหมดจะไม่ถูกนาไปใช้งาน


นส
บา้

ให้ทาการ restart syslog-ng อีกครั้ง แล้วให้ทาการตรวจสอบตาแหน่งของการเก็บล็อคไฟล์ที่ “/var/log/server/”


โดยในตอนแรกที่ยงั ไม่มีล็อคเข้ามาจะไม่ปรากฏไฟล์ “event_192.168.200.1.log” นี้เลย เมื่อใดก็ตามที่มีล็อคเข้ามา
ไฟล์น้ ีก็จะปรากฏขึ้นมาซึ่ งสามารถตรวจสอบการทางานโดยใช้คาสัง่ “tail –f
/var/log/server/event_192.168.200.1.log” สมมุติวา่ เครื่ องวินโดว์ได้ติดตั้ง mysql Server ให้ทาการ stop แล้วทา
การ start ขึ้นมาอีกครั้ง จะมีล็อดมาปรากฏขึ้นคล้ายๆ ดังนี้
Jun 4 27:22: 10 192.168.200.1 NT: <MySQL;W100;> Server variable data_file_path of plugin InnoDB
was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag
For more information, see Help and Support Center at http://www.mysql.com.
Jun 4 22:27:10 192.168.200.1 NT: <MySQL;W100;> Server variable data_home_dir of plugin InnoDB
was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag
For more information, see Help and Support Center at http://www.mysql.com.
Jun 4 22:27:10 192.168.200.1 NT: <MySQL;W100;> Server variable flush_method of plugin InnoDB was
forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag For
more information, see Help and Support Center at http://www.mysql.com.
Jun 4 22:27:10 192.168.200.1 NT: <MySQL;W100;> Server variable log_arch_dir of plugin InnoDB was
forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag For
more information, see Help and Support Center at http://www.mysql.com.
Jun 4 22:27:10 192.168.200.1 NT: <MySQL;W100;> Server variable log_group_home_dir of plugin
InnoDB was forced to be read-only: string variable without update_func and
PLUGIN_VAR_MEMALLOC flag For more information, see Help and Support Center at
http://www.mysql.com.


ระย
Jun 4 22:27:12 192.168.200.1 NT: <MySQL;I100;> C:\MySQL\MySQL Server 5.1\bin\mysqld-nt: ready
มิ น ที
า้ พ
ไอ

for connections. Version: '5.1.19-beta-community-nt-debug' socket: '' port: 3306 MySQL Community
้าเจ
กร

Server (GPL) For more information, see Help and Support Center at http://www.mysql.com.
รม

Jun 4 22:27:24 192.168.200.1 NT: <MySQL;I100;> C:\MySQL\MySQL Server 5.1\bin\mysqld-nt:


กร
3ร

Normal shutdown For more information, see Help and Support Center at http://www.mysql.com.
นั ้ 1

Jun 4 22:27:27 192.168.200.1 NT: <MySQL;I100;> C:\MySQL\MySQL Server 5.1\bin\mysqld-nt:


งู ช

Shutdown complete For more information, see Help and Support Center at http://www.mysql.com.
นส

เป็ นอันกระบวนการรับล็อคจากวินโดว์ประสบความสาเร็ จ โดยข้อมูลทั้งหมดจะถูกเก็บลงสู่ ไฟล์ที่เรากาหนด


บา้

วิธีการในการเก็บล็อกไฟล์ต่างๆ เราควรทาการแยกเก็บในแต่ละอุปกรณ์แยกเป็ นไฟล์ที่แตกต่างกัน เช่น ไฟล์ A


เก็บล็อกที่มาจากเซอร์ เวอร์ A ซึ่ งจะทาให้ง่ายต่อการตรวจสอบตามอุปกรณ์

สาหรับในกรณี ที่เราต้องการให้ให้เก็บลงฐานข้อมูลด้วยแล้วสามารถแสดงผลเป็ นเว็บเพื่อติดตามล็อก


ต่าง ๆ ผ่านทางเว็บบราว์เซอร์ ได้ ในที่น้ ี เราจะใช้ความสามารถของ php-syslog-ng ซึ่งเป็ น open source ที่พฒั นา
ด้วยภาษา PHP

ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร

สามารถ download ได้จาก http://code.google.com/p/php-syslog-ng/


รม
กร
3ร

ทาการแตกไฟล์ดว้ ยคาสัง่
comsec@mail:~$ file php-syslog-ng-2.9.8.tgz
นั ้ 1

php-syslog-ng-2.9.8.tgz: gzip compressed data, from Unix, last modified: Sun May 11 02:43:05 2008
งู ช

comsec@mail:~$ sudo gunzip php-syslog-ng-2.9.8.tgz


นส

comsec@mail:~$ tar xvf php-syslog-ng-2.9.8.tar


บา้

php-syslog-ng/html/
….

php-syslog-ng/html/install/php-syslog-ng/upgrades/2.9.6_to_2.9.7.patch
php-syslog-ng/upgrades/2.9.7_to_2.9.8.patch

ไฟล์ config ที่จาเป็ นต่อการปรับแต่ง syslog-ng ก็จะมีอยูแ่ ล้วในไดเร็ คทรอรี่ น้ ี โดยโครงสร้างของไฟล์ php-
syslog-ng จะประกอบด้วยดังต่อไปนี้
Php-syslog-ng
|--upgrades ใช้ในการ upgrade จาก version ที่ตากว่า
|--html ใช้เป็ น code ในการแสดงที่หน้าบราวเซอร์ รวมทั้ง โครงสร้างฐานข้อมูลที่ใช้ในการเก็บ
logs
|--scripts ใช้เป็ นที่เก็บ script ต่างรวมทั้งไฟล์ config syslog-ng ด้วย

ในขั้นตอนแรกจะต้องทาการ Config database ให้พร้อมรับข้อมูลมาเก็บไว้ในฐานข้อมูลด้วยวิธีการดังนี้

comsec@mail:~$ cd php-syslog-ng/html/install/sql/
comsec@mail:~/php-syslog-ng/html/install/sql$ ls
cemdb.sql.gz
dbsetup.sql เป็ นโครงสร้าง Database ที่ใช้ในการเก็บข้อมูล


ระย
drop_table.sql
มิ น ที
า้ พ
sample_data.sql เป็ นตัวอย่างข้อมูลที่จะเก็บลงใน Database
ไอ
้าเจ
กร
รม

ทาการสร้าง Database ที่ชื่อ syslogdb


กร
3ร
นั ้ 1

comsec@mail:~/php-syslog-ng/html/install/sql$ mysqladmin -u root -p create syslogdb


Enter password: ทาการกรอกรหัสผ่านของ root
งู ช
นส

ทาการ Import script เข้าสู่ Database ที่ชื่อ syslogdb


บา้

comsec@mail:~/php-syslog-ng/html/install/sql$ mysql -u root -p syslogdb < dbsetup.sql


Enter password: ทาการกรอกรหัสผ่านของ root

ทาการ Import script ตัวอย่างข้อมูลบางส่ วนเข้าสู่ Database ที่ชื่อ syslogdb

comsec@mail:~/php-syslog-ng/html/install/sql$ mysql -u root -p syslogdb < sample_data.sql


Enter password: ทาการกรอกรหัสผ่านของ root
ทาการทดสอบด้วยการ Login เข้าสู่ mysql ด้วยคาสั่ง
comsec@mail:~/php-syslog-ng/html/install/sql$ mysql -u root -p
Enter password: ทาการกรอกรหัสผ่านของ root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 177648
Server version: 5.0.51a-3ubuntu5.1 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;

+--------------------+
| Database |


ระย
+--------------------+
มิ น ที
า้ พ
ไอ

| information_schema |
้าเจ
กร

| cacti |
รม

| mysql |
กร
3ร

| syslogdb |
นั ้ 1

+--------------------+
4 rows in set (0.11 sec)
งู ช
นส

mysql> use syslogdb


บา้

Reading table information for completion of table and column names


You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+--------------------+
| Tables_in_syslogdb |
+--------------------+
| actions |
| cemdb |
| logs |
| search_cache |
| user_access |
| users |
+--------------------+
6 rows in set (0.00 sec)
mysql> select count(*) from logs;
+----------+
| count(*) |
+----------+
| 3|
+----------+


ระย
1 row in set (0.00 sec)
มิ น ที
า้ พ
ทาการกาหนด ผูม้ ีสิทธิ์ เข้าใช้งาน Database ที่ชื่อ syslogdb
ไอ
้าเจ
กร

User:: syslogadmin
รม

Pass:: syslogadminpassword
กร
3ร
นั ้ 1

mysql> grant all on syslogdb.* to “syslogadmin”@”localhost” identified by "syslogadminpassword";


Query OK, 0 rows affected (0.16 sec)
งู ช
นส

mysql> flush privileges; ทาการ Refresh การเปลี่ยนแปลงที่เกิดขึ้น


Query OK, 0 rows affected (0.04 sec)
บา้

มาถึงขึ้นตอนนี้ Mysql ก็พร้อมแล้วสาหรับรองรับการเก็บ log แล้ว

ขั้นตอนถัดมาก็คือ ทาการปรับแต่ง syslog-ng ให้เขียน log ลงสู่ Database ซึ่งจะมี script config ของ syslog-ng
รองรับไว้อยูแ่ ล้วเราสามารนาใช้งานได้ทนั ที่ แต่เนื่องจากเราได้ทาการ config ไปบางส่ วนแล้ว เราจะเอาเฉพาะ
บางส่ วนที่จะถูกนามาใช้งานในที่น้ ีเท่านั้น

comsec@mail:~$ cd php-syslog-ng/scripts/
comsec@mail:~/php-syslog-ng/scripts$ nano syslog-ng.conf
ทาการ copy เฉพาะส่ วนดังนี้
source s_everything { internal(); pipe("/proc/kmsg"); unix-stream("/dev/log"); udp(); };

destination d_mysql {
program("/usr/bin/mysql -usyslogadmin -psyslogadmin syslog"
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(s_everything);
มิ น ที
า้ พ
destination(d_mysql);
ไอ
้าเจ
กร

};
รม
กร
3ร

แล้วนาไปว่างใน ไฟล์ syslog-ng.conf ดังนี้


นั ้ 1

source udp_message_open{
งู ช

udp(ip("0.0.0.0") port(514));
นส

};
บา้

source s_everything { internal(); pipe("/proc/kmsg"); unix-stream("/dev/log"); udp(); };

destination d_mysql {
program("/usr/bin/mysql -usyslogadmin -psyslogadminpassword syslogdb"
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(s_everything);
destination(d_mysql);
};

######
# destinations

# some standard log files

ในส่ วนที่ highlight นั้นให้ทาการแก้เป็ น user,password,database ตามลาดับ คือ


usersyslogadmin


ระย
passwordsyslogadminpassword
มิ น ที
า้ พ
database name syslogdb
ไอ
้าเจ
กร
รม

การบันทึก แล้วทาการทดสอบการทางานของ syslog-ng ด้วยการสั่งให้ syslog-ng ทาการ Restart การทางานอีก


กร

ครั้ง
3ร
นั ้ 1

comsec@mail:~/php-syslog-ng/scripts$ sudo /etc/init.d/syslog-ng restart


งู ช

* Stopping system logging syslog-ng


นส

...done.
บา้

* Starting system logging syslog-ng


...done.

ทาการตรวจสอบ พอร์ ตในการทางานด้วยคาสั่ง


comsec@mail:~/php-syslog-ng/scripts$ sudo netstat -an |grep 514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:514 0.0.0.0:*
แสดงว่า syslog-ng พร้อมรองรับการทางานแล้ว ถ้าเกิดความผิดพลาดขึ้นให้ทาการ ตรวจสอบ ไฟล์
syslog-ng.conf อีกครั้งหนึ่ง

ทาการตรวจสอบโดยการ login เข้าใช้งาน MySQL อีกครั้ง ดั้งนี้


comsec@mail:~/php-syslog-ng/scripts$ mysql -u root -p
Enter password: ทาการกรอกรหัสผ่านของ root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 310904
Server version: 5.0.51a-3ubuntu5.1 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use syslogdb;


ระย
Reading table information for completion of table and column names
มิ น ที
า้ พ
You can turn off this feature to get a quicker startup with -A
ไอ
้าเจ
กร
รม

Database changed
กร
3ร

mysql> select count(*) from logs;


นั ้ 1

+----------+
| count(*) |
งู ช
นส

+----------+
| 18 |
บา้

+----------+
1 row in set (0.00 sec)

จากขั้นตอนนี้ทิ้งเวลาไว้สักพักหนึ่งแล้ว query อีกครั้ง จะปรากฏจานวน Log ที่เพิ่มขึ้นมา

mysql> select count(*) from logs;


+----------+
| count(*) |
+----------+
| 28 |
+----------+
1 row in set (0.00 sec)

mysql>

ณ ตอนนี้ เราก็สามารถนา log มาเก็บลงสู่ Databases ได้แล้ว ขั้นตอนต่อไปจะเป็ นการ config เพื่อ สร้างหน้า web
interface เพื่อทาการตรวจสอบ log ผ่าน หน้า browser ได้

ทาการแก้ไขไฟล์ config ของ apache

โดยตาแหน่งของ Directory ที่จะทาการติดตั้ง ดังนี้ /home/comsec/php-syslog-ng/html/


ระย
comsec@mail:~/php-syslog-ng/html$ sudo nano /etc/apache2/sites-available/default
มิ น ที
า้ พ
ไอ
้าเจ
กร

ทาการเพิ่ม ค่าเหล่านี้ไปที่ทา้ ยไฟล์


รม
กร
3ร

Alias /syslog-ng/ "/home/comsec/php-syslog-ng/html/"


<Directory "/home/comsec/php-syslog-ng/html">
นั ้ 1

AllowOverride None
งู ช

Options None
นส

Order allow,deny
บา้

Allow from all


</Directory>

ทาการ restart apache ด้วยคาสั่ง

comsec@mail:~/php-syslog-ng/html$ sudo /etc/init.d/apache2 restart


* Restarting web server apache2
...done.
ทาการเปลี่ยนสิ ทธิ์ ในการเข้าใช้งาน ด้วยคาสั่ง

comsec@mail:~/php-syslog-ng/html/install$ sudo chown www-data:www-data -R /home/comsec/php-


syslog-ng/html

ทาการ เข้าใช้งานทางหน้า browser ตามที่ได้กาหนดไว้ <ip>/syslog-ng/install/index.php ซึ่ งในที่น้ ีก็คิอ


http://192.168.111.130/syslog-ng/install/index.php
เป็ นของการตรวจสอบสิ่ งแวดล้อมที่จาเป็ นต่อการทางานของ php-syslog-ng สภาวะที่เหมาะสมต่อการทางานก็คือ
ต้องเป็ นสี เขียวทั้งหมด เราสามารถปรับแต่งได้เพื่อเหมาะสมต่อการทางาน


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร
3ร
นั ้ 1
งู ช
นส
บา้
บา้
หน้าของการยอมรับเงื่อนไขในการใช้งาน

นส กร
งู ช รม
นั ้ 1 กร
3ร ไอ
มิ น ที
้าเจ
า้ พ
ระย

ส่ วนของการปรับแต่งให้ php-syslog-ng สามารถเชื่อมต่อกับ MYSQL ได้จะต้องใช้งานตัวแปรที่จาเป็ นคือ
ไอพีของเครื่ องที่ติดตั้ง MySQL โดย default จะเป็ น localhost
MySQL username/MySQL password จะเป็ นรหัสของ user บน Mysql ที่มีสิทธิ์ในการสร้าง
Databases,tables โดยทัว่ ไปจะกาหนดเป็ น user ที่เป็ น root
MySQL Database Name จะเป็ นชื่อของ database ที่จะใช้ในการเก็บข้อมูล ในที่น้ ีเราใช้เป็ น syslogdb
MySQL Port เป็ น พอร์ตที่ mysql ใช้ในการสร้างการเชื่อมต่อโดยทัว่ ไปจะเป็ น 3306
Syslog User name/password เป็ น user ที่ใช้ในการเข้าใช้งาน ฐานข้อมูลแบบอ่านข้อมูลได้อย่างเดียว
Syslog Admin name/password เป็ น user ที่ใช้ในการเข้าใช้งาน ฐานข้อมูลแบบสามารถเขียนได้
Install the sample unless
Drop existing Table ทาการลบตารางก่อนที่จะมีการติดตั้งฐานข้อมูล syslog
Back Old Table จะทาการBackup ตารางเก่าก่อนที่จะมีการติดตั้งฐานข้อมูล syslog
Install Sample Data หลังจากติดตั้งฐานข้อมูลและตารางของ syslog แล้วจะมีการลงตัวอย่าง
ข้อมูลในตาราง


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร
3ร
นั ้ 1
งู ช
นส
บา้
ตั้งชื่อของ php-syslog-ng ที่สอดคล้องกับ site ที่ทางาน


ระย
หน้าแสดงตาแหน่งของไฟล์ php-syslog-ng โดย
มิ น ที
า้ พ
URL จะเป็ นการแสดงตาแหน่งที่จะต้องเรี ยกผ่าน URL
ไอ
้าเจ
Install Path จะเป็ นตาแหน่งจริ งๆที่ได้ทาการติดตั้งลงบน ระบบ
กร
รม

Site URL จะใช้ในการแสดงในกรณี ที่ทาทาการติดตั้งอยูใ่ น ไดเรคเทอรี ยอ่ ย ในกรณี น้ ี จะเป็ น /syslog-ng


กร

Your E-MAIL ชื่ออีเมล์ของผูท้ ี่ดูแลระบบ


3ร

Admin Password เป็ นรหัสผ่านของ บัญชีผใู้ ช้งาน Admin ซึ่งจะใช้ในการ login ในครั้งแรก
นั ้ 1
งู ช
นส
บา้
หน้าแสดงเตือนให้ใช้งาน User/password ด้านล่างนี้ในการเข้าใช้งานระบบในสิ ทธิ์ Admin


ระย
มิ น ที
า้ พ
ไอ

ทาการ login เข้าใช้งานด้วยบัญชีผใู้ ช้งาน admin / password


้าเจ
กร
รม
กร
3ร
นั ้ 1
งู ช
นส
บา้
หน้ าแรก การเข้าใช้งาน


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม

เมื่อเลือก “ E R H” ก็จะปรากฏข้อมูลของตัว Server ไหลเข้ามาอยูต่ ลอดเวลา


กร
3ร
นั ้ 1
งู ช
นส
บา้
จุดประสงค์ในการทา Syslog-ng เก็บข้อมูล Database นั้นเพื่อให้สามารถทารายงานและค้นหาข้อมูลย้อนหลังได้
เป็ นเวลาเท่าที่เราต้องการโดยมี php-syslog-ng เป็ น front-end เพื่อทาการตรวจสอบผ่านเว็บได้ ถ้ามีความสามารถ
สู งหน่อยก็สามารถพัฒนาโปรแกรมที่สามารถทางานได้มากกว่านี้โดยใช้งาน Database ที่มีอยูไ่ ด้

โมเดลในการใช้ งาน Sylog-ng ทางานเป็ น Centralized Log Serverc แบ่งตาม Service คือ
 Syslogd(โดย default มีอยูบ่ นทุก Unix/Linux/Network-Device)-------------Syslog-ng
 Window---------------------------------------------------------Syslog-ng

โดยในกรณี WindowSyslog-ngได้ทาการ แสดงให้ดูเป็ นตัวอย่างไปแล้ว โดยกรณี ที่จะทาการทดสอบต่อไปคือ


จาก Syslogd,Network-Device ไปยัง Syslog-ng

สาหรับกรณี Syslogd(192.168.200.4)Syslog-ng(192.168.200.2)


ระย
Syslogd จะทางานบน CentOS
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม

UDP:514
Syslogd
กร

Syslog-ng
3ร

CentOS
Ubuntu Server
นั ้ 1
งู ช

/etc/syslog.conf /etc/syslog-ng/syslog-ng.conf
นส

โดยการทางานจะต้องมีการ Config Service Syslogd ของ CentOS ให้รองรับการส่ ง log ไปยัง Syslog-ng Server
บา้

โดยตาแหน่งของไฟล์ config ได้แสดงดังรู ปด้านบนแล้ว


ทางด้าน Syslogd จะมีการ config ดังนี้

[root@localhost ~]# nano /etc/syslog.conf


# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console

# Log anything (except mail) of level info or higher.


# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages

# The authpriv file has restricted access.


authpriv.* /var/log/secure

# Log all the mail messages in one place.


mail.* -/var/log/maillog

# Log cron stuff


cron.* /var/log/cron


ระย
# Everybody gets emergency messages
มิ น ที
*.emerg *
า้ พ
ไอ
้าเจ
กร

# Save news errors of level crit and higher in a special file.


รม
กร

uucp,news.crit /var/log/spooler
3ร
นั ้ 1

# Save boot messages also to boot.log


งู ช

local7.* /var/log/boot.log
นส

# Send all log to Centralize log Server


บา้

*.* @192.168.200.2 // จะทาการส่ งทุกๆ facility ไปยัง log server


โดยรู ปแบบของการส่ ง log นั้น จะใช้เครื่ องหมาย “@” ตามด้วยไอพี หรื อ ชื่อของเครื่ อง เช่น
*.* @192.168.200.2
*.* @centrallog.itlabours.com

ทาการ Restart Syslogd ด้วยคาสั่ง

[root@localhost ~]# /etc/init.d/syslog restart


Shutting down kernel logger: [ OK ]
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
Starting kernel logger: [ OK ]

เป็ นอันว่าการ config ทาง ฝั่ง Syslogd เสร็ จแล้ว

เนื่องจากจุดประสงค์ในการรับ log ของเรานั้นจะรับเฉพาะเครื่ องที่เรากาหนดไว้เท่านั้นเป็ นการป้ องกันการ ส่ ง log


มาจากเครื่ องที่ไมได้รับอนุ ญาต จึงต้องมีข้ นั ตอนที่ซบั ซ้อนมากขึ้น และต้องการเก็บ log ออกเป็ น สองส่ วนคือ text
file และ เก็บลง Databases ด้วย

ทางฝั่ง Syslog-ng จะมีการปรับแต่งเพิ่มเติมดังนี้ โดยการ config จะอ้างอิงการ Config มาตั้งแต่แรก ถ้าสงสัยให้ทา


การอ่านเนื้ อหาข้างต้นอีกครั้ง
ทาการเพิ่ม ค่าเหล่านี้ลงใน file config ของ syslog-ng


ระย
comsec@mail:~$ sudo nana /etc/syslog-ng/syslog-ng.conf
มิ น ที
destination d_192.168.200.4{
า้ พ
ไอ
้าเจ
file("/var/log/server/event_192.168.200.4.log");
กร
รม

};
กร

filter f_192.168.200.4{
3ร

host("192.168.200.4");
นั ้ 1

};
งู ช

log{
นส

source(udp_message_open);
บา้

filter(f_192.168.200.4);
destination(d_192.168.200.4);
destination(d_mysql);
};

ทาการ Restart Syslog-ng ด้วยคาสัง่

comsec@mail:~$ sudo /etc/init.d/syslog-ng restart


* Stopping system logging syslog-ng
...done.
* Starting system logging syslog-ng
...done.

เป็ นอันว่าทางฝั่ง syslog-ng สามารถรองรับการส่ ง log มาที่เครื่ อง Central log Server แล้ว

เราสามารถทดสอบได้โดยเข้าไปที่เครื่ อง syslogd แล้วใช้คาสั่งดังนี้

[root@localhost ~]# logger test from 192.168.200.4

แล้วทาการตรวจสอบที่ หน้าเว็บของ php-syslog-ng จะได้หน้าดังนี้


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร
3ร
นั ้ 1
งู ช
นส
บา้

เป็ นอันว่าเสร็ จสมบูรณ์


สาหรับกรณี Syslog-ng(192.168.200.3)Syslog-ng(192.168.200.2)

UDP:514
Syslog-ng
Syslog-ng
Ubuntu
Ubuntu Server

/etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf

โดยการทางานจะต้องมีการ Config Service Syslog-ng ของ Ubuntu ให้รองรับการส่ ง log ไปยัง Syslog-ng Server
โดยตาแหน่งของไฟล์ config ได้แสดงดังรู ปด้านบนแล้ว
ทางด้าน Syslog-ng จะมีการเพิ่ม config ดังนี้


mongkon@snmpagent:~$ sudo vim /etc/syslog-ng/syslog-ng.conf
ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร

destination udp_log_server{ //จะส่ ง Log ไปทีไ่ หน


รม

udp("192.168.200.2");
กร
3ร

};
นั ้ 1

log {
งู ช

source(s_all);
นส

destination(udp_log_server); //ทาการส่ ง log ไปยัง destination


};
บา้

จะเป็ นการทาให้ log ทั้งหมดถูส่งไปยัง Log Server ตามไอพีที่เรากาหนด


หลังจากนั้นให้ทาการ Restart Syslog-ng ด้วยคาสั่ง

mongkon@snmpagent:~$ sudo /etc/init.d/syslog-ng restart


Stopping system logging: syslog-ng.
Starting system logging: syslog-ng.
เนื่องจากจุดประสงค์ในการรับ log ของเรานั้นจะรับเฉพาะเครื่ องที่เรากาหนดไว้เท่านั้นเป็ นการป้ องกันการ ส่ ง log
มาจากเครื่ องที่ไมได้รับอนุ ญาต จึงต้องมีข้ นั ตอนที่ซบั ซ้อนมากขึ้น และต้องการเก็บ log ออกเป็ น สองส่ วนคือ text
file และ เก็บลง Databases ด้วย
ทางฝั่ง Syslog-ng จะมีการปรับแต่งเพิ่มเติมดังนี้ โดยการ config จะอ้างอิงการ Config มาตั้งแต่แรก ถ้าสงสัยให้ทา
การอ่านเนื้ อหาข้างต้นอีกครั้ง
ทาการเพิม่ ค่าเหล่านี้ลงใน file config ของ syslog-ng

filter f_192.168.200.3{
host("192.168.200.3");
};
destination d_192.168.200.3{
file("/var/log/server/event_192.168.200.3.log");
};

log {


ระย
source(udp_message_open);
มิ น ที
า้ พ
filter(f_192.168.200.3);
ไอ
้าเจ
กร

destination(d_192.168.200.3);
รม

destination(d_mysql);
กร
3ร

};
นั ้ 1

ทาการ Restart Syslog-ng ด้วยคาสั่ง


งู ช
นส

comsec@mail:~$ sudo /etc/init.d/syslog-ng restart


บา้

* Stopping system logging syslog-ng


...done.
* Starting system logging syslog-ng
...done.

เป็ นอันว่าทางฝั่ง syslog-ng สามารถรองรับการส่ ง log มาที่เครื่ อง Central log Server แล้ว

เราสามารถทดสอบได้โดยเข้าไปที่เครื่ อง syslogd แล้วใช้คาสั่งดังนี้


mongkon@snmpagent:~$ logger test from 192.168.200.3

แล้วทาการตรวจสอบที่ หน้าเว็บของ php-syslog-ng จะได้หน้าดังนี้


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร
3ร
นั ้ 1
งู ช

หรื อสามารถตรวจสอบจาก command บนเครื่ อง Centralize log server


นส
บา้

sudo tcpdump udp -nn -i eth0 and dst 192.168.200.2

ตัวอย่างกรณี ที่ตอ้ งการรับ log จาก ตัวอุปกรณ์ Network Router ซึ่งถึงเป็ น Syslogd ตัวหนึ่ง

เราจะทาการ config ให้ router ทาการส่ ง log มายัง log Server ด้วยคาสั่งดังต่อไปนี้
R5#config terminal
Enter configuration commands, one per line. End with CNTL/Z.
R5(config)#logging 192.168.200.2
R5(config)#end

เนื่องจากจุดประสงค์ในการรับ log ของเรานั้นจะรับเฉพาะเครื่ องที่เรากาหนดไว้เท่านั้นเป็ นการป้ องกันการ ส่ ง log


มาจากเครื่ องที่ไมได้รับอนุ ญาต จึงต้องมีข้ นั ตอนที่ซบั ซ้อนมากขึ้น และต้องการเก็บ log ออกเป็ น สองส่ วนคือ text
file และ เก็บลง Databases ด้วย

ทางฝั่ง Syslog-ng จะมีการปรับแต่งเพิ่มเติมดังนี้ โดยการ config จะอ้างอิงการ Config มาตั้งแต่แรก ถ้าสงสัยให้ทา


การอ่านเนื้ อหาข้างต้นอีกครั้ง
ทาการเพิ่ม ค่าเหล่านี้ลงใน file config ของ syslog-ng


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร

destination d_R5-192.168.200.254{
3ร

file("/var/log/server/event_R5-192.168.200.254.log");
นั ้ 1

};
งู ช

filter f_R5-192.168.200.254{
นส

host("192.168.200.254");
บา้

};
log{
source(udp_message_open);
filter(f_R5-192.168.200.254);
destination(d_R5-192.168.200.254);
destination(d_mysql);
};

ทาการ Restart Syslog-ng ด้วยคาสั่ง


comsec@mail:~$ sudo /etc/init.d/syslog-ng restart
* Stopping system logging syslog-ng
...done.
* Starting system logging syslog-ng
...done.

เป็ นอันว่าทางฝั่ง syslog-ng สามารถรองรับการส่ ง log มาที่เครื่ อง Central log Server แล้ว
แล้วทาการตรวจสอบที่ หน้าเว็บของ php-syslog-ng จะได้หน้าดังนี้


ระย
มิ น ที
า้ พ
ไอ
้าเจ
กร
รม
กร
3ร
นั ้ 1
งู ช
นส
บา้

เป็ นอันว่าจบกระบวนการ ปรับแต่ง Syslog-ng + mysql5 + php5 + php-syslog-ng เพื่อทางานรองรับเป็ นการ


ทางานเป็ น Centralized Log Server

You might also like