ThaiCERT: Thai Computer Emergency Response Team
ศูนย์ประสานงานการรักษาความปลอดภัยคอมพิวเตอร์ ประเทศไทย 
 
 
 


การสร้าง rule สำหรับไฟร์วอลล์
เรียบเรียงโดย : ภูวดล ด่านระหาญ
เผยแพร่เมื่อ : 4 ธันวาคม 2544

เป็นที่ทราบกันดีอยู่แล้วว่า ไฟร์วอลล์มีหน้าที่หลักในการกรอง (filter) ข้อมูลเฉพาะส่วนที่ได้รับอนุญาตเท่านั้น ดังนั้นการเขียนกฏหรือ rule สำหรับไฟร์วอลล์จึงเป็นเรื่องที่สำคัญอย่างยิ่ง การสร้าง rule ของไฟร์วอลล์ที่ผิดพลาดจะทำให้ไฟร์วอลล์ (ทั้งราคาแพงและใช้งานฟรี) ทั้งหลายไม่สามารถช่วยป้องกันเครือข่ายให้รอดพ้นจากการถูกบุกรุกหรือโจมตีได้อย่างแน่นอน แต่ก่อนอื่น ผู้ดูแลไฟร์วอลล์จะต้องมั่นใจว่าเครื่องไฟร์วอลล์นั้นมีความปลอดภัยในระดับโฮสต์อยู่แล้ว (host based security) เพราะถึงแม้ว่า rule ที่สร้างขึ้นจะสามารถป้องกันเครื่องอื่นๆ ภายในเครือข่ายได้ แต่ถ้าเครื่องไฟร์วอลล์เองไม่สามารถทนต่อการบุกรุกได้ก็เป็นจุดที่อันตรายไม่ยิ่งหย่อนไปกว่า rule ที่ผิดพลาดแต่อย่างใด


Firewall Host Based Security
เป็นคำแนะนำเบื้องต้นสำหรับเครื่องที่ทำหน้าที่เป็นไฟร์วอลล์รวมไปถึง router ด้วย


Building Firewall Rulebase
หลักการง่ายๆ (ที่ไม่ง่าย)ในการสร้าง rule ของไฟร์วอลล์ที่ดีคือ ความง่าย (simplicity) ซึ่งความง่ายในที่นี้หมายถึงการสร้าง rule ที่สั้นๆ อ่านง่าย ได้ใจความ ไฟร์วอลล์ที่ดีไม่ควรมี rule มากกว่า 30 rule เพราะถ้ามากกว่านี้จะทำให้เกิดความสับสนได้ง่าย และอาจจะทำให้เกิดความผิดพลาดโดยไม่รู้ตัวขึ้น นอกจากนี้ยังมีข้อดีในส่วนที่ทำให้เครื่องทำงานน้อยลงอีกด้วย

การสร้าง rule ของไฟร์วอลล์ถือได้ว่าเป็นการนำ security policy ขององค์กรมาบังคับใช้งานในทางเทคนิค โดยใช้ไฟร์วอลล์เป็นเครื่องมือให้เกิดผลตามที่ต้องการ นอกจากนี้ยังมี rule บางส่วนที่ถือได้ว่า ผู้ดูแลระบบควรเพิ่มเข้าไปใน rule ของไฟร์วอลล์ เช่น การป้องกัน ip spoofing, ป้องกันการโจมตีแบบ land attack ซึ่งรายละเอียดจะได้กล่าวถึงอีกครั้งในส่วนของ TCP/IP Filter


Rule Order
การเรียงลำดับของ rule ก็มีความสำคัญเช่นเดียวกัน เพราะไฟร์วอลล์โดยส่วนใหญ่ทำงานแบบ sequence คือ ตรวจสอบ packet กับ rule ตามลำดับ rule ที่สร้างไว้

คำแนะนำในการวางลำดับของ rule คือ ให้วาง rule ที่เป็น rule ทั่วไปไว้ด้านล่าง และให้นำ rule ที่มีความเฉพาะเจาะจงมาไว้ด้านบน เพื่อป้องกันไม่ให้ packet match กับ rule ที่เป็น rule ทั่วไปก่อน ยกตัวอย่างเช่น ให้นำ rule ที่ทำหน้าที่ block ไอพีแอดเดรสไปไว้ด้านบนเพื่อให้มั่นใจว่า ถ้ามี packet ที่มีไอพีแอดเดรสตรงตามที่ระบุไว้ packet นั้นจะถูก drop ทิ้งไปก่อนที่จะ match กับ rule อื่น


TCP/IP Filter
ผู้ดูแลไฟร์วอลล์สามารถกำหนด default policy ได้ 2 รูปแบบคือ

อย่างไรก็ตาม ไม่ว่าจะกำหนด default policy ในรูปแบบใด ผู้ดูแลไฟร์วอลล์ก็ควรทราบ TCP/IP service ที่เป็นจุดอ่อนต่างๆ ในระบบ ดังนี้

ตารางที่ 1 แสดง TCP/UDP service ที่ควรปิดกั้นที่ไฟร์วอลล์ โดยไม่ให้ใช้ทั้งจากภายในและภายนอกเครือข่าย

Port(s) (Transport) Server Port(s) (Transport) Server
1 (TCP & UDP) tcpmux 1981 (TCP) Shockrave
7 (TCP & UDP) echo 1999 (TCP) BackDoor
9 (TCP & UDP) discard 2001 (TCP) Trojan Cow
11 (TCP & UDP) systat 2023 (TCP) Ripper
13 (TCP & UDP) daytime 2049 (TCP & UDP) nfs
15 (TCP & UDP) netstat 2115 (TCP) Bugs
17 (TCP & UDP) qotd 2140 (TCP) Deep Throat
19 (TCP & UDP) chargen 2222 (TCP) Subseven21
37 (TCP & UDP) time 2301 (TCP & UDP) compaqdiag
43 (TCP & UDP) whois 2565 (TCP) Striker
67 (TCP & UDP) bootps 2583 (TCP) WinCrash
68 (TCP & UDP) bootpc 2701 (TCP & UDP) sms-rcinfo
69 (UDP) tftp 2702 (TCP & UDP) sms-remctrl
93 (TCP) supdup 2703 (TCP & UDP) sms-chat
111 (TCP & UDP) sunrpc 2704 (TCP & UDP) sms-xfer
135 (TCP & UDP) loc-srv 2801 (TCP) Phineas P.
137 (TCP & UDP) netbios-ns 4045 (TCP) lockd
138 (TCP & UDP) netbios-dgm 5800 - 5899 (TCP) winvnc web server
139 (TCP & UDP) netbios-ssn 5900 - 5999 (TCP) winvnc
177 (TCP & UDP) xdmcp 6000 - 6063 (TCP) X11 Window System
445 (TCP & UDP) microsoft-ds 6665 - 6669 (TCP) irc
512 (TCP) rexec 6711 - 6712 (TCP) Subseven
513 (TCP) rlogin 6776 (TCP) Subseven
513 (UDP) who 7000 (TCP) Subseven21
514 (TCP) rsh, rcp, rdist, rdump, rrestore 12345 - 12346 (TCP) NetBus
515 (TCP) lpr 16660 (TCP) Stacheldraht
517 (UCP) talk 27444 (UCP) Trinoo
518 (UCP) ntalk 27666 (TCP) Trinoo
540 (TCP) uucp 31335 (UCP) Trinoo
1024 (TCP) NetSpy 31337 -31338 (TCP & UDP) Back Orifice
1045 (TCP) Rasmin 32700 - 32900 (TCP & UDP) RPC services
1090 (TCP) Xtreme 32720 (TCP) Trinity V3
1170 (TCP) Psyber S.S 39168 (TCP) Trinity V3
1234 (TCP) Ultors Trojan 65000 (TCP) Stacheldraht
1243 (TCP) Backdoor-G    
1245 (TCP) VooDoo Doll    
1349 (UCP) Back Orifice DLL    
1492 (TCP) FTP99CMP    
1600 (TCP) Shivka-Burka    
1761 - 1764 (TCP & UDP) sms-helpdesk    
1807 (TCP) SpySender    

ตารางที่ 2 แสดง TCP/UDP service ที่ควรปิดกั้นไม่ให้เข้ามาจากภายนอก

Port(s) (Transport) Server
79 (TCP) finger
161 (TCP & UDP) snmp
162 (TCP & UDP) snmp trap
514 (UDP) syslog
550 (TCP & UDP) new who

ตารางที่ 3 แสดง TCP/UDP service ที่อาจเปิดให้บริการใน DMZ (ในทางปฏิบัติให้เปิดเฉพาะ service ที่มีการให้บริการจริงเท่านั้น)

Port(s) (Transport) Server
20 (TCP) ftpdata
21 (TCP) ftp
22 (TCP) ssh
23 (TCP) telnet
25 (TCP) smtp
53 (TCP & UDP) domain
80 (TCP) http
110 (TCP) pop3
119 (TCP) nntp
123 (TCP) ntp
143 (TCP) imap
179 (TCP) bgp
389 (TCP & UDP) ldap
443 (TCP) ssl
1080 (TCP) socks
3128 (TCP) squid
8000 (TCP) http (alternate)
8080 (TCP) http-alt
8888 (TCP) http (alternate)

ตารางที่ 4 แสดง ICMP message ที่ควรอนุญาตให้ออกไปจากเครือข่ายภายในได้

Message Type
Number Name
4 source quench
8 echo request (ping)
12 parameter problem

ตารางที่ 5 แสดง ICMP message ที่ควรอนุญาตให้เข้ามายังเครือข่ายภายในได้

Message Type
Number Name
0 echo reply
3 destination unreachable
4 source quench
11 time exceeded
12 parameter problem


คำแนะนำอื่นๆ สำหรับการสร้าง rule ของไฟร์วอลล์


Logging and Debugging
การเก็บข้อมูลล็อกของเครื่องไฟร์วอลล์เป็นเรื่องที่จำเป็นอย่างยิ่ง โดยเฉพาะในกรณีที่เครื่องโดน compromise ไปแล้ว จะถือว่าเป็นหลักฐานที่แสดงให้เห็นถึงรูปแบบการโจมตีได้ มีคำแนะนำสำหรับการบันทึกข้อมูลล็อกดังนี้


สรุป
คำแนะนำด้านบนนี้จะช่วยป้องกันการโจมตีบางรูปแบบได้ ถึงแม้จะไม่ครบสมบูรณ์ก็ตาม ทั้งนี้จะต้องนำไปรวมกับ security policy ขององค์กรอีกครั้ง เพื่อให้เกิดความสมบูรณ์มากที่สุด และที่สำคัญผู้ดูแลระบบจำเป็นต้องติดตามข่าวสารที่เกี่ยวข้องอยู่เสมอ เพราะในโลกของความปลอดภัยสำหรับคอมพิวเตอร์แล้ว โดยส่วนใหญ่ผู้ที่เร็วกว่ามักจะได้ใช้โอกาสจากความเร็วนั้นเสมอ ไม่ว่าจะเป็นผู้บุกรุกหรือผู้ดูแลระบบเองก็ตาม


เอกสารอ้างอิง



Home || เอกสารเผยแพร่ || Firewall

ThaiCERT Disclaimer | Copyright © 2001 ThaiCERT(NECTEC). All rights reserved.