วันเสาร์ที่ 16 สิงหาคม พ.ศ. 2551

การเก็บ log

การเก็บ log ต้องแบ่งเป็น 2 ส่วน

1. traffic log

2. data log

traffic log จะเป็น log จาก internal ไปยัง external หมายความว่า user ในหน่วยงานเราไปทำอะไรที่ไหนเราต้องมีการจัดเก็บ log ครับ

data log จะเป็น log ของเครื่อง server ภายในหน่วยงานเราที่เราเปิด public ให้คนภายนอกเข้าถึงได้ เช่น mail server , ftp server , web server เพราะเครื่องพวกนี้มีโอกาสที่จะเกิดการกระทำความผิด เช่น มีคนมา post รูปภาพไม่เหมาะสม , ส่ง mail หมิ่นประมาท , อีกหลายกรณี

การจัดเก็บ

data log แค่เอาตัวโปรแกรม agent ที่ใช้ในการยิง log ไฟล์ ไป install ที่เครื่อง server ต่างๆแล้วทำการ point destination ในการจัดเก็บ log file ไปยังเครื่อง centralized log server เป็นอันใช้ได้ครับ ดังนั้น software ที่ต้องติดตั้งที่เครื่อง server ของเราก็ คือ syslog หรือ syslog-ng(syslog new generation) แต่ถ้าเป็น syslog จะมีมาให้กับ ubuntu หรือ linux ค่ายอื่นๆอยู่แล้วนะครับไม่ต้องติดตั้งเพิ่ม แต่ผมแนะนำให้ใช้เป็น syslog-ng มากกว่านะครับ เพราะ syslog-ng สามารถ filter log ได้ว่าต้องการจะจัดเก็บ log อะไรบ้าง , เก็บแค่ไหน , กรองเอาเฉพาะ log ที่ alert เรื่องใด แถมยังสามารถจัดเก็บได้ทั้งแบบ tcp และ udp ซึ่งจะต่างกับ syslog ที่เก็บได้แต่ udp พอร์ต 514 นะครับ

traffic log กรณีเป็นปัญหาหน่อยนะครับ เพราะต้อง implement เยอะมาก(ต้องทำระบบ login)

1. proxy ของโปรโตคอลต่างๆ เช่น squid (web proxy) , frox(ftp proxy) , imspector(im proxy)
* แต่ถ้าจะ implement ตัว imspector ต้องระวังปัญหาเรื่องละเมิดสิทธิส่วนบุคคลนะครับ เพราะมันจัดเก็บข้อความของ user ที่กำลัง chat กันลงไปใน log ด้วยครับ ไม่ได้เก็บแต่ข้อมูลการ connect ถ้าไม่อยากมีปัญหาให้ใช้ iptables ในการ monitor ตัว IM เอง วิธีไปหาเอาจาก net ละกันครับ คงไม่สอน ณ ที่นี้อาจจะยาวไปหน่อย

ประโยชน์: จัดเก็บข้อมูลได้ว่า ใคร ไปทำอะไร ที่ไหน เมื่อไหร่ (แต่ใครใน log ของ proxy ดันระบุเป็น ip address ที่ปลอมได้ง่ายมากถึงมากที่สุด)

2. สืบเนื่องจากข้อ 1 นะครับ ในเมื่อ ip address ไม่มีความน่าเชื่อถือในการระบุตัวตนผู้กระทำความผิด ดังนั้น เราต้องทำระบบ authentication แบบ hotspot ให้ user ในระบบ log in ก่อนเข้าใช้งาน internet ครับ ด้วยเหตุนี้เองทาง admin ต้อง implement ระบบ authentication นะครับ โดย log ของระบบ authentication มันจะเก็บในรูปแบบ

ip address username ที่ login เวลาที่ใช้งาน

ดัง นั้นเมื่อเราเอา log จากข้อ 2 ไป map กับ log จากข้อ 1 เราก็จะทราบผู้กระทำความผิดครับ(จริงๆไปอ่าน พรบ. ให้ละเอียดจะเห็นว่า พรบ.ระบุว่าเราต้องระบุตัวตนผู้ใช้งานได้นะครับ แต่คนมักคิดว่า proxy อย่างเดียวก็พอ :P)

3. ต่อมา เรื่องที่สำคัญมากจนไม่อาจข้ามไปได้ คือ time server ครับ เพราะนึกเล่นๆนะครับ พนักงานเจ้าหน้าที่มาขอ log เราโดยแจ้งมาว่า ip address ของหน่วยงานเรากระทำความผิดเมื่อวันที่ 25 สิงหาคม ช่วงเช้าๆ แต่เวลาในเครื่อง log เราดันเป็นวันที่ 11 มกราคม 2499 ยังงี้ท่านอาจซวยได้นะครับ เพราะไม่ยอม sync เวลาให้ตรงกับเครื่อง time server ดังนั้นเราต้องติดตั้งโปรแกรม ntp ที่เครื่องจัดเก็บ log และเครื่อง server ต่างๆนะครับ

ถาม: ต้อง sync เวลาเครื่อง server ของเราทุกเครื่องไปยังเครื่อง time server ที่เป็น stratum0 บน internet เลยหรือเปล่าครับ

ตอบ: ไม่ครับ ทำงั้นเดี๋ยวเวลามันจะ delay เกิน 10 ms เพราะต้อง วิ่งไป sync กับเครื่อง time server บน net หมดยังงี้ไม่ไหว ให้แก้ไขโดยตั้งเครื่อง server ในหน่วยงานมา 1 เครื่องเอาไป sync เวลาไปยัง time server ที่เป็น stratum 0 (หรืออาจจะ sync ไปยังเครื่องของ กรมอุทกศาสตร์ , สถาบันมาตรวิทยา ที่เป็น stratum1 ก็ได้ครับ ถือว่าหยวนๆ) แล้วเราค่อยให้เครื่อง server เครื่องอื่นๆ sync time กับเครื่อง internal time server อีกทีนึงเวลาจะได้ ไม่ delay



Centralized log
เครื่องนี้ควรจะต้องมี harddisk ใหญ่หน่อยนะครับเอาไว้จัดเก็บ log

software:

1. syslog-ng ---> เอาไว้รับ log จากเครื่อง server (ตาม พรบ. ถือว่าเป็น data archive)

2. openssl ---> เอาไว้ encrypt log ไม่ให้ใครเข้ามาแก้ไข (ตาม พรบ. คือป้องกันการแก้ไข)

3. md5 ---> เอาไว้ hashing ตาม พรบ.


สรุป: ต้องใช้ software ดังนี้

1. squid(web proxy)

2. frox(ftp proxy)

3. iptables(ตั้งค่าให้เก็บ log IM ซึ่งหารายละเอียดเองนะครับว่าทำไง)

4. radius server(เก็บ user account ในระบบ)

5. ระบบ authentication (มีเพียบเลย ซึ่ง 1 ในหลายๆตัวและเป็นที่นิยมใช้งาน คือ chillispot)

6. syslog-ng (เอาไว้ทำ centralized log server และเอาไว้ติดตั้งที่เครื่องลูกเพื่อยิง log)
*เอ้อ! ลืมไป ถ้าเป็นเครื่อง windows ใช้ snare หรือ kiwi syslog ในการทำ syslog server และ syslog agent ได้นะครับ

7. ntp เอาไว้ sync เวลา

เอาแค่นี้ก่อนนะครับ ลง detail มากกว่านี้จะเยอะไป ลองไปศึกษาดูก่อนค่อยว่ากันอีกที

โชคดีครับ

คลังบทความของบล็อก