Ubuntu 8.04 ติดตั้งระบบตรวจและรายงานการบุกรุกคอมฯทริพไวร์
บันทึกของผมอันนี้ต้องออกตัวก่อนว่าไม่ใช่ฐานะผู้เชี่ยวชาญระบบความปลอดภัยคอมพิวเตอร์แต่เป็นผู้ใช้งานคอมพิวเตอร์ที่ติดตั้งโปรแกรมทริพไวร์บนอูบูนทู804
ผมเคยอ่านเพาเวอร์พอยท์จากinformation security center ถ้าผมจำไม่ผิดเป็นของมหาวิทยาลัยเยลสหรัฐอเมริกา(ตอนนี้ต้องการจะเอามาอ้างอิงกลับค้นหาไม่เจอ) เป็นการนำเสนอที่พูดถึงว่ามีอะไรบ้างที่เป็นข้อสังเกตสำหรับผู้ใช้คอมพิวเตอร์ว่าคอมพิวเตอร์ถูกละเมิดสิทธิ์บุกรุกเข้ามา(hacked) และไฟล์อะไรบ้างที่มักจะถูกhacked และแนะนำคือการติดตั้งโปรแกรมช่วยต่างๆเช่นtripwire, rpm, aide, ls, pkgck, logcheck, sar และbastilleรวมทั้งการbackup
ผมได้ลองติดตั้งทริพไวร์(tripwire) ดูพบว่าเว็บไซต์เขียนแนะนำดีนั้นเขียนโดยMarco Fioretti เขาเขียนได้ครอบคลุมดีมากเข้าใจไม่ยากมีที่คลาดเคลื่อนเพียงเล็กน้อยซึ่งสามารถค้นหาและแก้ให้ถูกได้ง่ายผมจึงแนะนำถ้าสนใจจะอ่านเพิ่ม [อ้างอิง1] ส่วนรายการ[อ้างอิง2] โดยร.อ.นพปฎลกุลจรรยาภิวัฒน์(2544) ปรับปรุงโดยคุณชวลิตทินกรสูติบุตร(2546) ก็อาจจะเก่าไปนิดหนึ่งผมไม่สามารถใช้คำสั่งทำตามได้ทีเดียวแต่ก็ดีที่ทำให้เข้าใจการทำงานของโปรแกรมยิ่งขึ้นส่วนอ้างอิง[3] ก็ได้คำสั่งเขียนลงtext file ส่วนอื่นๆที่ไม่ได้อ้างอิงคือที่อยู่ในคู่มือ(พิมพ์man tripwire จริงๆทุกอย่างมีเขียนไว้ในคู่มือแล้ว)
tripwire เป็นโปรแกรมที่เหมือนกับโปรแกรมaide ที่ใช้รายงานสภาพของไฟล์เฉพาะไฟล์ที่กำหนดไว้(แต่ไม่ป้องกันการบุกรุก) เรียกว่าระบบIDS (Intrusion Detection System)
tripwire จะทำงานเริ่มจากการเก็บข้อมูลchecksums, ขนาดไฟล์, และข้อมูลอื่นๆไว้ในฐานข้อมูลเมื่อเรียกใช้โปรแกรมtripwire ครั้งต่อไปโปรแกรมจะตรวจสอบดูว่าทุกไฟล์ที่มีอยู่เหมือนเดิมตามข้อมูลที่เก็บไว้ในฐานข้อมูลไหมแล้วเขียนเป็นรายงานออกมา
การจะได้ประโยชน์จากโปรแกรมนี้
1. จะต้องอดทนใส่ใจและปรับปรุงไฟล์ที่ควบคุมโปรแกรมอยู่เสมอดูไดอะแกรมอ้างอิง[2]
2. โปรแกรมควรติดตั้งทันทีหลังการติดตั้งระบบก่อนที่จะเริ่มใช้งานและต่อกับอินเตอร์เน็ต(เพราะถ้ามีผู้บุกรุกเข้ามาก่อนหน้านั้นแล้วแล้วเปลี่ยนแปลงไฟล์เพื่อทำให้ประตุหลังบ้านไว้เมื่อนั้นระบบก็ไม่รู้แล้วว่าสิ่งนั้นเปลี่ยนแปลงไปแล้วประตูหลังบ้านจึงถูกเปิดตลอดโดยไม่มีการแก้ไข)
มีสองไฟล์ที่สำคัญที่ควบคุมโปรแกรม
1. twcfg.txt ที่กำหนดนิยามตัวแปรและการตั้งคอนฟิกกูเรชันต่างๆ
2. twpol.txt กำหนดpolicy ซึ่งจะกำหนดว่าวัตถุใดบ้างที่ต้องติดตามและถ้าวัตถุหายหรือเปลี่ยนแปลงไปจะทำอย่างไร
ขั้นตอน/คำสั่ง
1. sudo apt-get install tripwire
โปรแกรมที่โหลดมาได้และติดตั้งปัจจุบันนี้เป็นเวอร์ชัน2.3 (มีเวอร์ชัน2.4 แล้วซึ่งเข้าใจว่าเป็นautoconfiguration)
ในระหว่างการติดตั้งจะปรากฏหน้าต่างTripwire Configuration อ่านเสร็จกดลูกศรขวาปุ่มโอเคเป็นสีแดงกดเอ็นเทอร์
หน้าต่างที่สองปรากฏถามว่าจะให้สร้างไฟล์(conf file และpolicy file ไหม) ซึ่งจะต้องใส่กลุ่มคำที่เป็นรหัสผ่านเรียกpassphrase จำนวนสองชุด(site key และlocal key) ซึ่งในช่วงเวลาระหว่างการสร้างไฟล์คีย์ทั้งสอง หลังการป้อนรหัสอาจเป็นโอกาสให้ผู้บุกรุกขโมยไปได้--ช่างประจวบเหมาะ(ถ้าคิดว่าโอกาสจะเกิดสูงก็อาจตอบNo ในช่วงนี้คือติดตั้งโปรแกรมโดยไม่สร้างคีย์แล้วไปสร้างคีย์เองด้วยคำสั่งtwadmin คีย์ที่สร้างแล้วแล้วนี้ถ้าต้องการเปลี่ยนก็ใช้คำสั่งtwadmin เช่นกัน)
ตอบyes
(หน้าต่างทั้งสองจะปรากฏซำ้อีกครั้งกดok และyes ตามลำดับ)
2. find /etc/tripwire
ผมใช้คำสั่งนี้ตรวจดูว่ามีไฟล์อะไรสร้างขึ้นบ้าง
อย่างน้อยต้องมีไฟล์เก็บรหัส2ไฟล์(site.key & local.key) มีคอนฟิกกูเรชันไฟล์ไฟล์policy และtext files สำหรับคอนฟิกกูเรชันไฟล์ไฟล์policy ดังนี้
/etc/tripwire
/etc/tripwire/site.key
/etc/tripwire/twpol.txt
/etc/tripwire/tw.cfg
/etc/tripwire/youruser-desktop-local.key
/etc/tripwire/twcfg.txt
/etc/tripwire/tw.pol
3. ขั้นต่อไป ใช้คำสั่งในฐานะเจ้าของคอมพิวเตอร์ (owner) คือ root ใช้คำสั่ง sudo su
4. เริ่มด้วยการทำสำเนา text files เก็บไว้กันพลาด ด้วย
# cp -p /etc/tripwire/twcfg.txt /etc/tripwire/twcfg.txt.orig
# cp -p /etc/tripwire/twpol.txt /etc/tripwire/twpol.txt.orig
-p คือตัวเลือก ที่ให้สำเนา โดยคงความเหมือนเดิมของไฟล์ต้นฉบับ (mode, สภาพความเป็นเจ้าของ และ timestamps)
ถ้าทุกอย่างถูกต้อง ก็จะพบสำเนาที่สร้างในโฟลเดอร์
5. สร้าง encrypted conf file
# twadmin --create-cfgfile --cfgfile twcfg.enc --site-keyfile /etc/tripwire/site.key /etc/tripwire/twcfg.txt
กดเอ็นเทอร์จะถามกลุ่มรหัสผ่าน (site-key) ดังนี้
Please enter your site passphrase:
เมื่อป้อนรหัสแล้ว ในที่สุดจะรายงานการเขียนไฟล์เสร็จดังนี้
Wrote configuration file: /home/your-user-name/twcfg.enc
6. สร้าง encrypted policy file
# twadmin --create-polfile --cfgfile twcfg.enc --polfile twpol.enc --site-keyfile /etc/tripwire/site.key /etc/tripwire/twpol.txt
Please enter your site passphrase:
Wrote policy file: /home/your-user-name/twpol.enc
ในขั้นที่ 6 สังเกตว่า การเข้ารหัสไฟล์policy ต้องใช้ไฟลืคอนฟิกกูเรชันที่เข้ารหัสแล้วด้วย
โปรแกรมจะใช้ ไฟล์ที่เข้ารหัส (encrypted) แทนการใช้ text file ธรรมดา เนื่องจากตรวจดูความเสียหายผิดปกติง่ายกว่า
7. สร้าง ฐานข้อมูล
# tripwire -m i --cfgfile twcfg.enc --polfile twpol.enc --site-keyfile /etc/tripwire/site.key --local-keyfile /etc/tripwire/your-user-name-desktop-local.key
Please enter your local passphrase:
จะปรากฏข้อความต่อไปนี้ ที่คอนโซล
Parsing policy file: /home/your-user-name/twpol.enc
Generating the database...
*** Processing Unix File System ***
### Warning: File system error.
### Filename: /var/lib/tripwire/your--desktop.twd
### No such file or directory
### Continuing...
...
...
...
### Warning: File system error.
### Filename: /proc/7410/task/7410/fdinfo/4
### No such file or directory
### Continuing...
จะปรากฏคำเตือนมากมาย (ซึ่งจริงๆ สามารถใช้ ตัวเลือกในคำสั่งที่ให้ไม่ต้องแสดงคำเตือน เปิด man tripwire) แต่ในที่สุดจะได้
Wrote database file: /var/lib/tripwire/your-user-name--desktop.twd
The database was successfully generated.
8. ตรวจ ความคงอยู่ (ครบปกติดังเดิม)ของไฟล์ คือขั้นตอน check integrity ด้วย
tripwire –check
หรือ
tripwire -m c
จากนั้นอ่านรายงานที่แสดงในคอนโซล มีอะไรเปลี่ยนแปลง เพิ่มขึ้น หายไป มีระบบไฟล์ผิดพลาดอย่างไร ซึ่งในตอนแรกอาจมีสิ่งผิดปกติมากมาย (warning) อันนี้เป็นเพราะในไฟล์ policy ที่กำหนดมาจากโปรแกรมนั้น กำหนดให้ตรวจสอบติดตามหลายไฟล์ ซึ่งอาจมีไฟล์จำนวนมากที่ยังไม่ได้ติดตั้ง หรืออาจจะไม่ติดตั้งเลยตลอดเวลาการใช้งานของผู้ใช้ ดังนั้นต้อง comment out ในไฟล์ policy ด้วยการใช้ # ที่หน้าบรรทัดที่ไม่ต้องการให้โปรแกรมตรวจสอบ
อาจต้องทำขั้นตอนนี้ซ้ำไปมาจนกว่า การแจ้งเตือนที่ไม่เหมาะสมหมดไป
9. หลังจากแก้ไขไฟล์ policy ที่เป็น text file ไปแล้ว ก็สร้างไฟล์ไบนารีของ policy file ขึ้นมาใหม่ (encrypted policy file) ใช้คำสั่งในข้อ 6
10. ปรับ policy ของโปรแกรมให้เป็นปัจจุบัน (ขั้นตอน update policy)
คำสั่ง
tripwire -m p /etc/tripwire/twpol.txt
ถ้าปรากฏว่า คำสั่งนี้ โปรแกรมทำไม่ได้ (ไม่มีการเปลี่ยนทั้ง policy และ database) ดังผลลัพธ์ต่อไปนี้
.
.
.
======== Step 2: Updating the database with new objects.
======== Step 3: Pruning unneeded objects from the database.
Policy update failed; policy and database files were not altered.
อาจต้องปรับลดระดับความปลอดภัยข้อมูล (security mode) ให้ต่ำ โดยกำหนดด้วย ตัวเลือก -Z low
(ถ้าไม่กำหนด ถ้าคุณสมบัติของไฟล์ในระบบไฟล์ไม่เหมือนกับของไฟล์ในฐานข้อมูล จะเตือนและออกจากโปรแกรมโดยไม่แก้ไขเปลี่ยนแปลง) ดังนี้
tripwire -m p -Z low /etc/tripwire/twpol.txt
จะแสดงผลดังนี้
...
...
### Continuing...
### Warning: Policy Update Removed Object.
### An object has been removed since the database was last updated.
### Object name: /proc/7410/cmdline
### Continuing...
======== Step 2: Updating the database with new objects.
======== Step 3: Pruning unneeded objects from the database.
Wrote policy file: /etc/tripwire/tw.pol
Wrote database file: /var/lib/tripwire/your-user-name-desktop.twd
จากสองบรรทัดสุดท้ายจะเห็นว่า มีการเขียนไฟล์ policy และ database ใหม่แล้ว
11. ตรวจ ความคงอยู่ของไฟล์อีกครั้ง (คำสั่งดูข้อ 8)
ผลที่แสดงที่คอนโซล ช่วงแรกจะแจ้งเตือนต่างๆ
ส่วนหนึ่งแสดงดังต่อไปนี้
.
.
.
### Warning: File system error.
### Filename: /proc/7496/task/7496/fdinfo/3
### No such file or directory
### Continuing...
Wrote report file: /var/lib/tripwire/report/your-user-name-desktop-20080603-094614.twr
สังเกตว่า บรรทัดข้างบนจะบอกว่า ไฟล์รายงานอยู่ที่ใด
จากนั้นจะเป็นรายงาน ขึ้นต้นดังนี้
Tripwire(R) 2.3.0 Integrity Check Report
Report generated by: root
Report created on: Tue 03 Jun 2008 09:46:14 AM ICT
Database last updated on: Tue 03 Jun 2008 09:39:37 AM ICT
...
...
...
12. ถ้าต้องการจะเขียนรายงานลง text file (non-encrypted)ใช้คำสั่ง
# twprint --print-report --cfgfile twcfg.enc --twrfile /var/lib/tripwire/report/your-user-name-desktop-20080603-094614.twr >> /home/your-user-name/your-report/03June08.tx
ซึ่งกรณีตัวอย่างนี้ จะต้องมีโฟลเดอร์ “your-report” อยู่ใน path ที่กำหนด
13. สามารถส่งรายงานทางอีเมล์ โดยแก้ตัวแปร REPORTFILE ในไฟล์คอนฟิกกูเรชัน
14. ต้องเช็คความคงตัวของไฟล์บ่อยมากน้อยเพียงใด ขึ้นกับ ระบบมีความสำคัญมากน้อยเพียงใด คอมพิวเตอร์จะมีโอกาสเจอผู้บุกรุกภายนอกบ่อยขนาดไหน ถ้าเป็นคอมพิวเตอร์ในหน่วยงานที่อยู่หลัง firewall อาจจะทำเพียงสัปดาห์ละครั้ง
15. กรุณาเขียนข้อคิดเห็นเพิ่มเติม เพื่อเติมเต็ม ขอบคุณครับ
Again, many thanks to Marco Fioretti in reference [1] for the nice tutorial. As a Thai version of his work, I feel that it might not be well-explained as much as his article.
อ้างอิง
1. http://www.linuxjournal.com/article/8758
2. http://thaicert.nectec.or.th/paper/ids/tripwire.php
3. ubuntuforum..