การติดตั้ง Snort แบบง่าย
กล่าวนำ
Snort เป็นเครื่องมือที่ใช้ตรวจจับการบุกรุกทางเครือข่าย (network intrusion detection) โดย Martin Roesch (http://www.snort.org) การทำงานของ Snort จะใช้ไลบรารี (library) พื้นฐานชื่อ libpcab ซึ่งใช้กันโดยทั่วไปในบรรดา network sniffer และ network analyzer ทั้งหลาย สำหรับ Snort นั้นสามารถทำ protocol analysis, content searching/matching, ตรวจจับการบุกรุกและ probe เช่น buffer overflow, stealth port scan, CGI attack, SMB probe, OS Fingerprint และอื่นๆ
นอกจากนี้ยังมีคุณสมบัติในการทำ real-time alerting อีกด้วย นอกเหนือจากการเก็บล็อกไปที่ syslog หรือเก็บแยกไฟล์ต่างหาก และยังสามารถ alert ผ่าน winpopup ผ่านทาง Samba's client ได้อีกด้วย(ต้อง compile ด้วย option --enable-smbalerts)
System Prerequisites
สามารถคอมไพล์ (compile) และรันได้บน
- Sparc : SunOS 4.1x, Solaris, Linux, OpenBSD
- x86 : Linux, OpenBSD, NetBSD, Solaris, FreeBSD, Win32
- M68k/PPC : Linux, OpenBSD, NetBSD, Mac OS X Server
- Alpha : Linux, FreeBSD, Tru64
- Snort สามารถคอมไพล์ได้บน Linux, HP-UX, AIX, IRIX
Software Prerequisites
- Libpcab library (ftp://ftp.ee.lbl.gov/libpcap.tar.Z)
- C Compiler ซึ่งปกติจะมีติดตั้งให้ในทุก OS อยู่แล้ว หรืออาจจะพิจารณาใช้ GNU C (ftp://ftp.gnu.org/gnu/gcc/)
- Utility ที่ใช้สำหรับขยายไฟล์ เช่น GZIP (ftp://ftp.gnu.org/gnu/gzip/)
- MD5 cryptographic checksum program เพื่อใช้เช็คว่า source code ที่ได้มานั้นไม่ได้ถูกแก้ไขไปก่อนหน้านี้โดยผู้ไม่ประสงค์ดี (อ่านรายละเอียดได้ที่นี่)
Download
- ดาวน์โหลด Snort เวอร์ชันล่าสุดได้จาก http://www.snort.org/
- ตัวอย่างในเอกสารฉบับนี้ คอมไพล์และติดตั้งโดยใช้ Version 1.8-RELEASE (Build 43) ติดตั้งบน Linux
Install
ขยายไฟล์ที่ดาวน์โหลดมา
#tar xzf snort-x.x.x.tar.gz -C /usr/local
ย้ายไดเร็คทอรีไปยังเป้าหมายที่ขยายไป จากนั้นใช้คำสั่ง
#./configure (ใช้ ./configure --help เพื่อดู option ทั้งหมด)
#make
#make install
โดยปกติ Snort จะเก็บข้อมูลล็อกอยู่ในรูปของล็อกไฟล์คล้ายๆ กับ syslog แต่เราสามารถสั่งให้ Snort เก็บข้อมูลที่ต้องการไว้ใน database เช่น MySQL, PosgrestSQL หรือ MSSQL ได้ เพื่อให้สามารถดึงข้อมูลมาตรวจสอบได้สะดวกยิ่งขึ้นผ่านทางปลั๊กอิน(plug-ins) เช่น ACID ทั้งนี้จะมีตัวอย่างการคอมไพล์เพื่อให้ใช้งานกับ MySQL อีกครั้งในบทความฉบับต่อไป
Create Directory for Snort Log Files
สร้างไดเร็คทอรีเพื่อเก็บล็อกไฟล์ของ Snort ทั้งหมดแยกต่างหาก และควรป้องกันไม่ให้บุคคลอื่น access เข้ามาที่ไดเร็คทอรีนั้นๆ โดยปกติแล้วจะสร้างไว้ที่ /var/log/snort
#mkdir /var/log/snort
#chmod 700 /var/log/snort
ทดสอบโปรแกรม
ทดลองรันคำสั่ง snort -? เพื่อแสดง help ของ Snort ทั้งหมด
สร้างไฟล์ configuration และ rules
จริงๆ แล้ว ขั้นตอนนี้จะไม่ถือว่าเป็นการสร้างเป็นเพียงการประกอบข้อมูลที่ Snort ให้เรามาแล้วนั้น นำมาจัดให้เป็นระเบียบเรียบร้อยเท่านั้นเอง ซึ่งอาจจะไม่จำเป็น ในที่นี้จะสร้างโฟลเดอร์ขึ้นมาที่ /etc/snort เพื่อใช้เก็บ configuration และ rules files ของ Snort ไว้ต่างหาก
#mkdir /etc/snort
จากนั้นให้ก้อปปี้ข้อมูล configuration และ rules files จาก source ของ Snort
#cd /usr/local/src/snort
#cp snort.conf /etc/snort
#cp *.rules /etc.snort
#cp classification.config /etc/snort
แก้ไข /etc/snort/snort.conf
เราจะใช้ไฟล์ snort.conf เป็นไฟล์หลักในการรัน Snort โดยจำเป็นต้องแก้ไขข้อมูลในบางส่วนดังต่อไปนี้ (vi snort.conf)
- แก้ไข HOME_NET ให้เป็น network address ของเครือข่ายที่ต้องการ monitor เช่น var HOME_NET 10.10.10.0/24
- แก้ไขค่า network ip address อื่นให้ตรงกับความต้องการ เช่น SMTP , SQL_SERVERS
- ค่าที่ควรแก้ไขคือ VAR DNS_SERVERS แก้ให้เป็น DNS Server ที่ใช้ภายในหน่วยงาน เพื่อป้องกัน fault alarm
- สำหรับ parameter อื่นๆ นั้น ท่านสามารถหาข้อมูลเพิ่มเติมได้ที่ www.snort.org พร้อมกับคู่มือการเขียน rule (โดยปกติแล้ว ไม่มีความจำเป็นต้องเขียน rule เอง เพียงแต่หมั่นติดตามข่าว rule ใหม่ๆ ที่ www.snort.org เท่านั้นเอง)
รัน Snort (daemon)
ทดลองรัน /usr/local/bin/snort -c /etc/snort/snort.conf ถ้าไม่มี error ใดๆ แสดงว่าสามารถใช้งานได้ เพียงแต่การใช้งานจริงนั้นจะรันใน daemon mode โดยจะใช้คำสั่งดังนี้
#/usr/local/bin/snort -D -c /etc/snort/snort.conf
สำหรับ options ของ Snort นั้นมีค่อนข้างเยอะ รายละเอียดโปรดติดตามใน www.snort.org
ถ้าต้องการให้ Snort รันใน daemon mode ทุกครั้งที่บูตเครื่องขึ้นมาก็ให้แก้ไขไฟล์ /etc/rc.local แล้วใส่คำสั่งด้านบน เพื่อให้ Snort ทำงานเมื่อมีการบูตเครื่องใหม่
Log
ก่อนอื่นเราจะมาทำความเข้าใจระบบของ Snort ก่อน ใน rule หนึ่งๆ ของ Snort นั้นจะมี action ให้เลือก 3 ชนิดคือ log, alert, pass ถ้าเลือกเป็น log ข้อมูลจะถูกเก็บลงล็อกไฟล์ (ถ้าไม่ระบุเป็นพิเศษ จะเก็บไว้ที่ /var/log/snort) และถ้าเลือกเป็น alert และรันใน daemon mode ข้อมูลนั้นๆ จะถูก alert ผ่านทางช่องทาง alert ที่กำหนดไว้ เช่น ผ่านทาง syslog หรือ winpopup แต่โดยปกติแล้ว จะถูกเก็บไว้ที่ /var/log/snort/alert และกรณีสุดท้ายถ้าเลือกเป็น pass นั้น packet นั้นจะถูก drop ทิ้งไป
กรณีของเรานั้นรันใน daemon mode และไม่ได้ระบุ path ใดๆ เป็นพิเศษ ดังนั้น ผู้ดูแลระบบจะต้องทำการตรวจสอบ log ที่ /var/log/snort/alert อยู่เสมอ รวมทั้ง log file อื่นๆ ที่อยู่ในโฟลเดอร์เดียวกัน เช่น portscan.log อีกด้วย
ทิ้งท้าย
ภายหลังการติดตั้งและรัน Snort แล้ว ผู้ดูแลระบบจะพบปัญหาในเรื่อง log ซึ่งอาจจะมีเยอะในแต่ละวัน ดังนั้นผู้ดูแลระบบเองควรนำซอฟแวร์ตัวอื่นที่เป็นโปรแกรมเสริมของ Snort มาช่วยในการจัดการ log file และสามารถนำโปรแกรมเสริมอื่นๆ เช่น SnortSnarf มาช่วย ซึ่งจะทำให้ผู้ดูแลระบบสามารถตรวจสอบข้อมูล log ผ่านทาง web browser ได้
สำหรับ rule ต่างๆ นั้น สามารถตรวจสอบ rule ที่ปรับปรุงให้ทันสมัยได้ตลอดที่เว็บไซต์ www.snort.org ซึ่งผู้จัดทำจะประกาศ rule ใหม่ๆ ไว้ที่หน้าแรกของเว็บไซต์เสมอ เช่น rule ในการตรวจจับ Code Red เป็นต้น
นอกจากนี้ยังมี ACID ซึ่งถือได้ว่าเป็นโปรแกรมเสริมที่ได้รับความนิยมมากอีกตัวหนึ่ง แต่การติดตั้ง ACID ให้ทำงานได้นั้น จะต้องคอมไพล์ Snort ให้รู้จักกับ database ที่ต้องการนำ log ไปเก็บไว้ การติดตั้งโดยวิธีที่แสดงไปด้านบนนั้น ไม่สามารถนำมาใช้ร่วมกับ ACID ได้ ซึ่งรายละเอียดทาง ThaiCERT จะนำเสนอในโอกาสต่อไป
รายละเอียดของ Snort นั้นมีค่อนข้างเยอะ ไม่สามารถนำรวบรวมให้จบภายในเอกสารฉบับนี้ได้ นอกจากนี้ยังมี plug-in เสริมอีกมากมายที่เป็นประโยชน์สำหรับผู้ดูแลระบบ ซึ่งจะต้องพิจารณาติดตั้งให้เหมาะสมกับระบบของท่านเอง
ที่มา : http://www.snort.org
เรียบเรียงโดย : ภูวดล ด่านระหาญ

0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home