ทำเองได้ centralized log แถมวิวได้ด้วย php syslogviewer |
Written by Administrator | |
Thursday, 10 July 2008 02:35 | |
ภาคแรก ทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER
หลาย ๆ องค์กรเริ่มจะตื่นตัวกับพรบ.ว่าด้วยการกระทำผิดเกี่ยวกับคอมพิวเตอร์ พ.ศ. ๒๕๕๐ ตามมาตรา ๒๖ บัญญัติให้ผู้ให้บริการต้องเก็บข้อมูลจราจรคอมพิวเตอร์ไว้ไม่ต่ำกว่า ๙๐ วัน แต่ไม่เกิน ๑ ปีไปแล้ว วันนี้จะแนะนำวิธีง่าย ๆ ที่จะทำ centralized log เซิร์ฟเวอร์ด้วยตนเอง ด้วยซอฟต์แวร์ open sourceดูสิว่าจะสู้ผลิตภัณฑ์ต่างประเทศราคาหลายแสนได้หรือไม่ นับเป็นข่าวดีมากที่ผู้เขียนได้ค้นพบซอฟต์แวร์ที่ใช้ทำการวิว ค้นหาข้อมูล เพื่อจะได้ทำรายงานเบื้องต้นได้ใหม่ ชื่อว่า “php syslogviewer” แถมเพิ่งจะอัพเดทล่าสุดเมื่อปีกลาย แจ่มทีเดียว ใครหลายคนอาจเคยได้ยินชื่อ phpsyslog-ng มาก่อน ลืมไปได้เลยครับขี้เหร่มาก
ซอฟต์แวร์ที่ใช้งานsyslog-ng-2.0.0 phpsyslogviewer-7.2.1 speedupd-7.3.2
ผู้เขียนทดสอบโดยติดตั้งบนระบบปฏิบัติการ debian etch 4.0 รันในระบบเวอร์ชอลแมชชีน โดยซอฟต์แวร์ xen opensource ใช้เคอร์เนลเวอร์ชั่น 2.6.18-4-xen-686 นับว่ามีเสถียรภาพสูงมาก ๆ ครับ
ขั้นตอนที่ 1 เริ่มกันเลยดีกว่า หลังจากติดตั้งโอเอสเรียบร้อยให้ทำการติดตั้งซอฟต์แวร์ syslog-ng-2.0.0 โดยใช้แพ็คเกจของโอเอสเองดังนี้
# apt-get install syslog-ng
ขั้นตอนที่ 2 ดาวน์โหลดซอร์สโค๊ดจาก sourceforge ตามลิงค์ข้างล่างนี้ # wget http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/phpsyslogviewer-7.2.1.tar.bz2 # wget http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/speedupd-7.3.2.tar.bz2 ขั้นตอนที่ 3 แตกแพ็คเกจออกถ้าใครยังไม่ได้ลงโปรแกรม bzip2 ให้ทำการลงซะก่อนมิฉะนั้นจะแตกไฟล์ออกไม่ได้และทำการติดตั้งชุด lamp สำหรับเครื่องแม่ข่ายซะก่อน ขั้นตอนการติดตั้ง lamp อาจจะใช้เวลาสักนิดนึง หากใครมีประสบการณ์คงหาทางแก้ปัญหาได้จากเอกสารอื่น เนื้อหาในบทความนี้ผู้เขียนขอเล็งไปที่ซอฟต์แวร์หลัก ๆ ของระบบการจัดการข้อมูลการจราจรคอมพิวเตอร์ ตามพรบ.เป็นหลัก อาจจะทำให้มือใหม่หงุดหงิดบ้าง ดังนี้ # apt-get install bzip2 # tar xjvf phpsyslogviewer-7.2.1.tar.bz2 # cd phpsyslogviewer-7.2.1 # apt-get install mysql-client mysql-server apache2 php5 # apt-get install php5-mysql php5-ldap php5-cli libapache2-mod-php5 # apt-get install phpmyadmin ขั้นตอนที่ 4 ในโฟลเดอร์ install จะมีสคริปที่ใช้ติดตั้งตารางต่าง ๆ ให้กับฐานข้อมูล เราจะต้องทำการสร้างฐานข้อมูลเสียก่อน มิฉะนั้นจะพบกับข้อผิดพลาดและไม่สามารถรันสคริปดังกล่าวผ่านได้ # mysql -u root -p mysql > create database syslogng; mysql > exit; # mysql -u root -p syslogng <>
ขั้นตอนที่ 5 ปรบมือให้กับตัวเองเราผ่านพ้นขั้นตอนที่ต้องระวังไปขั้นหนึ่ง จากนั้นกำหนดค่าเพื่อสร้างบัญชีรายชื่อผู้ใช้และรหัสผ่านง่าย ๆ ก็ใส่ค่าข้อมูลของผู้ใช้ รหัสผ่าน ชื่อโฮสต์ และ ฐานข้อมูล คิดว่าไม่น่ายาก ดังนี้ # vi install/newuser.sql.php # php install/newuser.sql.php # php install/newuser.sql.php | mysql -u root -p syslogng
ขั้นตอนที่ 6 จัดการเวบไดเรคทอรีเพื่อให้สามารถเรียกดูข้อมูลผ่านเวบบราวเซอร์ ใครที่มีประสบการณ์สร้างเวบไซต์มาก่อน งานนี้กินเรียบครับ ทำตามขั้นตอนได้เลย # cp -R htdocs /var/www/phpsyslogviewer # vi /var/www/phpsyslogviewer/config.php # chown root:www-data /var/www/phpsyslogviewer/config.php # chmod 440 /var/www/phpsyslogviewer/config.php
ขั้นตอนที่ 7 ทดลองเปิดหน้าเวบไซต์ดูหน่อยว่าหน้าตาเป็นอย่างไร ไปที่ http://xxx.xxx.xxx.xxx/phpsyslogviewer
จะเห็นว่าหน้าตาดูดีทีเดียว
ขั้นตอนที่ 8 ติดตั้งแพ็คเกจ speedupd-7.3.2 เพื่อเร่งความเร็วให้เอนจิ้นป้อนข้อมูลสู่ฐานข้อมูล mysql ขั้นตอนนี้อาจยุ่งยากนิดหน่อย เพราะต้องทำการคอมไพล์แพ็คเกจด้วยตัวเองใหม่ แต่ไม่เกินความสามารถของเราหรอกครับ ขอย้ำว่าต้องทำนะครับขั้นตอนนี้ มิฉะนั้นใครที่เคยใช้ phpsyslog-ng จะรู้ซึ้งว่าอึดอัดเป็นอย่างไร # tar xjvf speedupd-7.3.2.tar.bz2 # cd speedup-7.3.2 # apt-get install debhelper cmake libdaemon-dev libconfuse-dev fakeroot # apt-get install build-essential libmysqlclient15-dev # dpkg-buildpackage -rfakeroot
ขั้นตอนที่ 9 หลังจากผ่านขั้นตอนที่ 8 เราจะได้แพ็คเกจตระกูล debian ชื่อว่า speedupd_7.3.0_i386.debให้ติดตั้งแพ็คเกจและกำหนดค่าให้กับไฟล์ speedupd.confดังนี้ # cd .. # dpkg -i speedupd_7.3.0_i386.deb # vi /etc/speedupd.conf # /etc/init.d/speedupd start
ขั้นตอนที่ 10 สบายใจไปอีกขั้นหนึ่งครับ ต่อไปเป็นการกำหนดค่าให้กับ syslog-ng ทำการส่งค่าไปเก็บยังฐานข้อมูลทำตามนี้เลยครับ ง่าย ๆ ผู้เขียนตัดวิธีการเก็บข้อมูลการจราจรคอมพิวเตอร์ส่วนอื่นออก เพื่อให้สามารถทำความเข้าใจได้ง่าย ๆ ครับ หากใครมีไฟล์คอนฟิคเก่าอยู่แล้วก็เพิ่มเติมเฉพาะส่วนที่ต้องการเก็บข้อมูลใน ฐานข้อมูลได้เลยครับ # cd /etc/syslog-ng # cp syslog-ng.conf syslog-ng.conf.org # vi syslog-ng.conf options { recv_time_zone (+07:00); send_time_zone (+07:00); sync (0); time_reopen (100); log_fifo_size (1000); long_hostnames (off); use_dns (no); use_fqdn (no); create_dirs (yes); chain_hostnames(yes); keep_hostname (yes); };
source s_sys { file ("/proc/kmsg" log_prefix("kernel: ")); unix-stream ("/dev/log"); internal(); udp(ip(0.0.0.0) port(514)); tcp(ip(0.0.0.0) port(514) keep-alive(yes)); }; 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)); };
filter f_kernel { facility (kern); }; filter f_messages { level(info..emerg) and not (facility(mail) or \ facility(authpriv) or facility(cron)); };
log {source(s_sys); filter(f_messages); destination(d_mysql); }; log {source(s_sys); filter(f_kernel); destination(d_mysql); };
ขั้นตอนที่ 11 สร้างสคริปเพื่อทำไปน์สำหรับส่งค่าสตรีมจากไปน์สู่ฐานข้อมูล งานนี้เป็น bash สคริปครับทำเสร็จต้องเปลี่ยนสิทธิให้รันได้ด้วยอย่าลืม ฟังดูวุ่นวายแต่ทำจริงง่ายมากครับ #vi syslog2mysql.sh #!/bin/bash if [ ! -e /var/log/mysql.pipe ] then mkfifo /var/log/mysql.pipe fi while [ -e /var/log/mysql.pipe ] do mysql -u root --password=radius syslogng < /var/log/mysql.pipe >/dev/null done
# chmod +x syslog2mysql.sh # ./syslog2mysql.sh & # /etc/init.d/syslog-ng start
ทำครบแล้วก็ปรบมือให้ตัวเองครับ ลองมาดูผลงานสิว่าเป็นไงบ้าง เข้าไปหน้าล็อกอินครับ จากนั้นป้อนรหัสผู้ใช้พร้อมรหัสผ่านที่ทำไว้ในขั้นตอนที่ 5 ครับ ถ้าหากลืม จากนั้นจะได้หน้าจอต่อไปครับ ดูต่อ อยากเห็นเรียลไทม์วิวเวอร์ครับ ลองค้นหาดูสิ ได้คำตอบตามนี้ครับ
ดูดีทีเดียวครับ เป็นไงครับ php syslogviewerสู้ซอฟต์แวร์แพง ๆ จากต่างประเทศได้ไหมอันนี้ต้องพิสูจน์ด้วยตนเองแหละครับ ในส่วนตัวของผู้เขียนทะเลาะได้กับ kiwi syslog service manager ของวินโดร์ได้เชียวครับ หรือจะใช้สำหรับมอนิเตอร์โปรแกรมจัดส่งข้อมูลการจราจรคอมพิวเตอร์จากอุปกรณ์ อื่น ๆ เช่น สวิตช์ เร้าเตอร์ หรือ อุปกรณ์แอคเซสพอยท์ในระบบก็ทำได้ดีครับ ใช้จริงก็ได้ครับ ผู้เขียนว่าคนไทยเก่งครับ สามารถสร้างเครื่องแม่ข่ายเก็บข้อมูลการจราจรคอมพิวเตอร์ ตาม พรบ.ว่าด้วยการกระทำผิดเกียวกับคอมพิวเตอร์ พ.ศ.2550 ได้ด้วยตนเองครับ ก็มันกฎหมายบ้านเรา ก็ทำมันซะเองสิครับ แค่นี้ก็รอดตัวจากมาตรา 26 ตามพรบ.คอมพิวเตอร์ปรับตั้งห้าแสนบาทแล้วครับ ที่สำคัญช่วยลดปัญหาการนำเข้าฮาร์ดแวร์ราคาแพงจากต่างประเทศได้ครับ สงสารพี่น้องเกษตรกรไทยครับไม่รู้จะขายข้าวสารกี่เกวียนจะพอจ่ายเงินภาษี ให้คนรัฐบาลซื้อ centralized log จากต่างประเทศสักตัว ภาคสอง ทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER หมายเหตุ เฉพาะเครื่องแม่ข่าย centralized log ตัวเดียวยังไม่เพียงพอต่อการคอมไพล์พรบ.ว่าด้วยการกระทำความผิดเกี่ยวกับ คอมพิวเตอร์ พ.ศ. ๒๕๕๐ หน่วยงานต้องทำอินเทอร์เน็ตเกตเวย์เพื่อทำการตรวจสอบสิทธิการเข้าใช้ งานระบบ (authentication gateway) และต้องตั้งฐานเวลาเทียบกับเวลามาตรฐานของประเทศไทย (stratum 0)ผิดพลาดไม่เกิน 10 ms ด้วย และหากหน่วยงานใดให้บริการเวป หรือ เมลล์เซิร์ฟเวอร์ต้องจัดเก็บข้อมูลการให้บริการดังกล่าวด้วย แต่ยังไงก็ตามเราก็ประหยัดเงินไปได้หนึ่งกล่องล่ะครับ ผู้เขียนขอจบบทความทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER เพียงแค่นี้ครับ หากติดขัดในขั้นตอนใด ถามมาได้ครับที่ supakitd at yahoo dot com บริษัท ไทยพรอสเพอรัสไอที จำกัด 42/1 ถ.พิทักษ์ชาติ ต.ประจวบคีรีขันธ์ อ.เมืองประจวบคีรีขันธ์ จ.ประจวบคีรีขันธ์ 77000
| |
Last Updated ( Friday, 15 August 2008 03:48 ) |