|
|
|||||||
การสร้าง 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. |