tripwire เป็นโปรแกรมที่เหมือนกับโปรแกรม...

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..