วันเสาร์ที่ 17 ตุลาคม พ.ศ. 2552

คำแนะนำในการปรับแต่งค่าความปลอดภัยของ Router

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

คำแนะนำโดยทั่วไป

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


ให้คำอธิบายและเก็บบันทึกไฟล์ที่ใช้กำหนดค่าการทำ งานของ router การกระทำดังกล่าวนี้อาจจะดูเหมือนเป็นสิ่งง่ายเมื่อเปรียบเทียบกับความ ปลอดภัยที่จะได้รับ นอกจากนั้น ควรเก็บสำเนาค่าการทำงานของ router ทั้งหมดที่เหมือนกับค่าการทำงานจริงที่ใช้งานไว้ตลอดเวลา (หากมีการแก้ไขค่าการทำงานที่ router ก็จะต้องแก้ไขค่าที่เก็บสำเนาไว้ด้วย) การกระทำดังกล่าวนี้จะช่วยให้สามารถตรวจสอบความเปลี่ยนแปลงที่เกิดขึ้นเมื่อ ถูกบุกรุก หรือใช้กู้คืนค่าดังกล่าวมาใช้งานเมื่อเกิดความเสียหายได้


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


ใช้งาน IOS เวอร์ชันล่าสุดที่เป็นไปได้อยู่เสมอ โดยสอบถามข้อมูลเวอร์ชันที่เหมาะสมได้จากผู้จำหน่ายหรือจากเว็บไซต์ของผู้ผลิตโดยตรง


ทดสอบความปลอดภัยโดยทั่วไปของ router อยู่เสมอ โดยเฉพาะอย่างยิ่งเมื่อมีการเปลี่ยนแปลงค่าการทำงานที่สำคัญของ router
คำแนะนำเฉพาะเรื่อง : Router Access

ปิด ความสามารถในการทำงานเป็นเซิร์ฟเวอร์ที่ไม่จำเป็นต้องใช้ของ router ซึ่งจะช่วยให้มีพื้นที่ของหน่วยความจำและโพรเซสเซอร์ของ router เพิ่มขึ้น ทำได้โดยการใช้คำสั่ง show proc ที่ router แล้วสั่งปิดบริการทั้งหมดที่แน่ใจว่าไม่จำเป็นต้องใช้งาน โดยทั่วไป การทำงานเป็นเซิร์ฟเวอร์บางอย่างของ router ที่ควรถูกปิดไม่ให้ใช้งานและคำสั่งที่เกี่ยวข้องในการยกเลิกการทำงาน ได้แก่

• Small services
(echo, discard, chargen, etc.)
- no service tcp-small-servers
- no service udp-small-servers

• BOOTP
- no ip bootp server

• Finger
- no service finger


• HTTP
- no ip http server


• Identd
- no ip identd (เฉพาะบางเวอร์ชันของ IOS)


• SNMP
- no snmp-server



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

• CDP - no cdp run

• Remote config - no service config


• Source routing - no ip source-route




สามารถ ทำให้อินเทอร์เฟซของ router มีความปลอดภัยมากขึ้นได้โดยการใช้คำสั่งดังต่อไปนี้กำหนดไว้ที่ทุกอิน เทอร์เฟซ ซึ่งจะต้องทำที่โหมดของการกำหนดค่าให้อินเทอร์เฟซ

• Unused interfaces - shutdown

• No Smurf attacks - no ip directed-broadcast


• Ad-hoc routing - no ip proxy-arp




สามารถ ทำให้การติดต่อกับ console line, auxiliary line และ virtual terminal line ของ router มีความปลอดภัยมากขึ้นได้โดยการใช้คำสั่งดังต่อไปนี้กำหนดไว้ที่ console line และ virtual terminal line (ดังตัวอย่างด้านล่าง) ส่วน auxiliary line หากไม่มีการใช้งานควรถูกปิด (โดยการกำหนดค่าตามตัวอย่างด้านล่างเช่นกัน)

• Console Line - line con 0
exec-timeout 5 0
login
transport input telnet

• Auxiliary Line - line aux 0
no exec
exec-timeout 0 10
transport input telnet

• VTY lines - line vty 0 4
exec-timeout 5 0
login
transport input telnet



ค่า รหัสผ่านควรถูกตั้งไว้ให้มีความปลอดภัยมากที่สุดเท่าที่จะทำได้ ได้แก่ การตั้งค่ารหัสผ่านแบบ Enable Secret ซึ่งทำให้รหัสผ่านถูกเข้ารหัสเพื่อเก็บไว้ด้วยอัลกอริทึม MD-5 นอกจากนี้ ควรตั้งรหัสผ่านไว้สำหรับ console line, auxiliary line และ virtual terminal line ด้วย โดยค่ารหัสผ่านที่ตั้งให้กับแต่ละ line นี้ควรได้รับการปกป้องในเบื้องต้นโดยการเรียกใช้คำสั่ง service password-encryption เพื่อให้เกิดการเข้ารหัสสำหรับรหัสผ่านทั้งหมด แสดงรายละเอียดดังตัวอย่างด้านล่าง

• Enable secret - enable secret 0 2manyRt3s

• Console Line - line con 0
password Soda-4-jimmY

• Auxiliary Line - line aux 0
password Popcorn-4-sara

• VTY Lines - line vty 0 4
password Dots-4-grorg3

• Basic protection - service password-encryption



ไม่ควรเปิดเผยรายละเอียดของค่าการทำงาน router และไฟล์ที่ใช้ในการกำหนดค่าให้ผู้ที่ไม่ได้รับอนุญาตทราบโดยเด็ดขาด
คำแนะนำเฉพาะเรื่อง : Access Lists

การส ร้าง access-list ขึ้นใหม่แต่ละครั้งควรจะเริ่มต้นด้วยคำสั่ง no access-list nnn ก่อนเสมอ เพื่อกำจัดค่าเดิมใดๆ ที่อาจมีการใช้งาน access-list ที่ nnn ให้หมด
East (config) # no access-list 51
East (config) # access-list 51 permit host 14.2.9.6
East (config) # access-list 51 deny any log

กำหนด หมายเลขพอร์ตที่ต้องการควบคุมสำหรับแต่ละ access list ซึ่งจะช่วยเพิ่มประสิทธิภาพการทำงานของ IOS ให้ไม่จำเป็นต้องตรวจสอบ header ทั้งหมดของแพ็กเก็ตโดยไม่จำเป็น และเพื่อให้แน่ใจว่าข้อมูลการใช้งานที่เก็บในล็อกมีข้อมูลหมายเลขพอร์ตที่ ถูกต้อง โดยการกำหนดหมายเลขพอร์ตในช่วงที่ต้องการเป็นอาร์กิวเมนต์หนึ่งของ access list ที่สร้างขึ้น ดังตัวอย่าง
no access-list 106
access-list 106 deny udp any range 1 65535 any range 1 65535 log
access-list 106 deny tcp any range 1 65535 any range 1 65535 log
access-list 106 deny ip any any log

คำ สั่งในบรรทัดสุดท้ายใส่เพื่อให้แน่ใจว่า router จะปฏิเสธแพ็กเก็ตที่ใช้งานโพรโตคอลอื่นๆ นอกเหนือจาก TCP และ UDP รวมทั้งเก็บค่าลงในล็อก

อนุญาตให้เฉพาะแอดเดรสของเครือข่ายภายในส่ง ข้อมูลเข้าสู่ router ผ่านทางอินเทอร์เฟซภายใน โดยการบังคับที่ access list รวมทั้งการปิดไม่ให้แอดเดรสที่ไม่ถูกต้องออกจากเครือข่ายที่อินเทอร์เฟซที่ เชื่อมต่อกับเครือข่ายภายนอก เพื่อป้องกันผู้บุกรุกไม่ให้ใช้ router เป็นเครื่องมือในการโจมตีที่อื่น วิธีการนี้อาจจะไม่สามารถนำไปใช้งานได้จริงกับเครือข่ายที่มีความซับซ้อน
East (config) # no access-list 101
East (config) # access-list 101 permit ip 10.1.1.0 0.0.0.255 any
East (config) # access-list 101 deny udp any range 1 65535 any log
East (config) # access-list 101 deny tcp any range 1 65535 any log
East (config) # access-list 101 deny ip any any log
East (config) # interface eth 1
East (config-if) # ip access-group 101 in
East (config-if) # exit
East (config) # interface eth 0
East (config-if) # ip access-group 101 out

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


แพ็กเก็ตที่ส่งมาจากภาย นอกโดยมีแอดเดรสต้นทางเหมือนกับแอดเดรสของเครือข่ายภายในใดๆ (เครือข่ายที่เชื่อถือ) จัดว่าเป็นแพ็กเก็ตที่ส่งเข้ามาเพื่อโจมตีระบบโดยวิธีการ TCP sequence number guessing หรือวิธีอื่นๆ ในทำนองเดียวกัน จึงไม่ควรให้ผ่านเข้ามาในเครือข่าย ป้องกันได้โดยการสร้าง access list ขึ้นมาใช้งานที่แต่ละอินเทอร์เฟซที่ต้องติดต่อกับเครือข่ายที่ไม่น่าเชื่อ ถือ


สกัดกั้นแพ็กเก็ตชนิด loopback (มาจากเครือข่าย 127.0.0.0) เนื่องจากแพ็กเก็ตเหล่านี้ไม่มีทางเกิดขึ้นได้จริง นอกจากนั้น ให้กั้นแพ็กเก็ตที่มาจาก IP address ที่ถูกสำรองไว้ (ได้แก่ 10.0.0.0, 172.16.0.0 - 172.31.0.0 และ 192.168.0.0) [ตาม RFC 1918]


หากเครือข่ายไม่จำเป็นต้องใช้ IP multicast ก็ควรจะกั้นแพ็กเก็ตชนิด multicast ด้วย


สกัด กั้นแพ็กเก็ตชนิด broadcast (ข้อควรคำนึงถึงคือ การปิดแพ็กเก็ตชนิด broadcast อาจจะทำให้บริการ DHCP และ BOOTP ไม่สามารถใช้งานได้ด้วย อย่างไรก็ตาม บริการทั้งสองอันนี้ไม่ควรนำมาใช้ที่อินเทอร์เฟซที่ต่อกับเครือข่ายภาย นอกอยู่แล้ว)


การโจมตีเครือข่ายจากภายนอกจำนวนมากใช้วิธีการส่ง ICMP redirect จึงควรปิดบริการนี้ (วิธีการที่ดีกว่านี้แต่มีความยุ่งยากมากขึ้นคือการอนุญาตให้แพ็กเก็ตชนิด ICMP ที่จำเป็นเพียงบางชนิดผ่านเข้าออก)
ตัวอย่างที่แสดงดังต่อไปนี้ เป็นวิธีการหนึ่งที่จะนำเอาคำแนะนำด้านบนไปใช้งานจริง

North (config) # no access-list 107
North (config) # ! block internal addresses
North (config) # access-list 107 deny ip 14.2.0.0 0.0.255.255 any log
North (config) # access-list 107 deny ip 14.1.0.0 0.0.255.255 any log
North (config) # ! block loopback/reserved addresses
North (config) # access-list 107 deny ip 127.0.0.0 0.255.255.255 any log
North (config) # access-list 107 deny ip 10.0.0.0 0.255.255.255 any log
North (config) # access-list 107 deny ip 172.16.0.0 0.15.255.255 any log
North (config) # access-list 107 deny ip 192.168.0.0 0.0.255.255 any log
North (config) # ! block multicast (if not used)
North (config) # access-list 107 deny ip 224.0.0.0 0.0.255.255 any
North (config) # ! block broadcast
North (config) # access-list 107 deny ip host 0.0.0.0 any log
North (config) # ! block ICMP redirects
North (config) # access-list 107 deny icmp any any redirect log
North (config) # interface eth 0/0
North (config-if) # ip access-group 107 in

สกัด กั้นแพ็กเก็ตที่มีแอดเดรสต้นทางและปลายทางเหมือนกันไม่ให้เข้ามาในเครือข่าย (เพราะอาจจะเป็นการบุกรุกโดยวิธีการที่เรียกว่า 'Land' เข้ามาตัวที่ router) ทำได้โดยการสร้าง access list ขึ้นมาใช้จำกัดข้อมูลที่จะเข้ามาที่แต่ละอินเทอร์เฟซ โดยวิธีการดังที่แสดงในตัวอย่างด้านล่าง
no access-list 102
access-list 102 deny ip host 10.2.6.250 host 10.2.6.250 log
access-list 102 permit ip any any

interface Eth 0/0
ip address 10.2.6.250 255.255.255.0
ip access-group 102 in

กำหนดค่า access list สำหรับใช้งานที่ virtual terminal line เพื่อควบคุมการเข้าถึง router ผ่านทางการ telnet ตามตัวอย่าง
South (config) # line vty 0 4
South (config-line) # access-class 92 in
South (config-line) # exit
South (config) # no access-list 92
South (config) # access-list 92 permit 10.1.1.1
South (config) # access-list 92 permit 10.1.1.2

คำแนะนำเฉพาะเรื่อง : Logging & Debugging

นำ ความสามารถของ router ในการเก็บบันทึกค่าการทำงานมาใช้งาน เพื่อใช้เก็บบันทึกค่าความผิดพลาดที่เกิดขึ้นและส่งแพ็กเก็ตไปยังเครื่องที่ ใช้ในการเก็บ syslog ภายในเครือข่าย (ต้องเป็นเครือข่ายที่มีการเชื่อถือ) โดยจะต้องแน่ใจถึงเส้นทางที่ส่งข้อมูลไม่ผ่าน เครือข่ายที่ไม่น่าเชื่อถือ มีวิธีการดังต่อไปนี้
Central (config) # logging on
Central (config) # logging 10.1.1.200
Central (config) # logging buffered
Central (config) # logging console critical
Central (config) # logging trap debugging
Central (config) # logging facility local1

กำหนด ค่าการทำงานของ router โดยให้เก็บค่าเวลาลงในบันทึกการทำงานลงในล็อกด้วย โดยการตั้งค่าเวลาจากเครื่องเซิร์ฟเวอร์ NTP ที่แตกต่างกันอย่างน้อย 2 เครื่อง เพื่อให้ค่าที่ได้มีความถูกต้อง ซึ่งจะช่วยให้ผู้ดูแลระบบติดตามเหตุการณ์การบุกรุกเครือข่ายได้สะดวกแม่นยำ มีวิธีการดังตัวอย่างด้านล่าง
service timestamps log datetime localtime show-timezone
clock timezone EST -5
clock summer-time EDT recurring
ntp source Ethernet 0/1
ntp server 192.5.41.40
ntp server 192.5.41.41

หาก มีการใช้งาน SNMP ใช้เลือกใช้ SNMP community string ที่ยากต่อการเดา คำสั่งที่ได้แสดงไว้ดังตัวอย่างด้านล่างแสดงให้เห็นถึงวิธีการในการลบค่า community string ที่ router กำหนดไว้ขณะเริ่มต้น และควรกำหนดให้ community string เป็นแบบอ่านอย่างเดียว
East (config) # no snmp community public
East (config) # no snmp community private
East (config) # snmp community BTR-18+never

Checklist ความปลอดภัย
Checklist ความปลอดภัยต่อไปนี้ออกแบบขึ้นมาเพื่อเป็นเครื่องช่วยในการตรวจสอบความ ปลอดภัยในการกำหนดค่าการทำงานให้กับ router และช่วยทบทวนถึงรายละเอียดความปลอดภัยทั้งหมดที่เกี่ยวข้อง

มีการเขียน ตรวจสอบรับรอง และประกาศใช้งานนโยบายความปลอดภัยของ router
ตรวจสอบเวอร์ชันของ IOS ที่ใช้งานกับ router ว่ามีความทันสมัย
ค่าการทำงานของ router ที่ใช้งานมีความถูกต้องชัดเจน มีการแบ็กอัพ และถูกจำกัดการเข้าถึง
รายละเอียดของค่าการทำงานของ router มีการกำหนดไว้อย่างชัดเจน มีคำอธิบายที่ครบถ้วน
มีการกำหนด และดูแลรายชื่อผู้ใช้ router และรหัสผ่าน
นำรหัสผ่านที่ยากต่อการเดามาใช้งาน และจำกัดผู้ที่ทราบค่ารหัสผ่าน (ถ้ายังไม่เป็นตามนี้ ควรเปลี่ยนรหัสผ่านโดยด่วน)
จำกัดการเข้าถึง router โดยบังคับที่ Console, Aux และ VTY
ยกเลิกบริการของเครือข่ายที่ไม่จำเป็นต้องใช้งาน
ปิดอินเทอร์เฟซที่ไม่มีการใช้งาน
ยกเลิกบริการที่มีความเสี่ยงที่อินเทอร์เฟซ
ระบุชัดเจนถึงพอร์ตและโพรโตคอลที่จำเป็นต้องใช้งานในเครือข่าย พร้อมทั้งทำการตรวจสอบ
ใช้ access list จำกัดความหนาแน่นในการใช้งานเครือข่าย โดยกำหนดจากพอร์ตและโพรโตคอลที่ใช้
ใช้ access list เพื่อสกัดกั้นการใช้แอดเดรสที่สำรองไว้หรือแอดเดรสที่ไม่เหมาะสม
ใช้งานการตั้งค่าการเลือกเส้นทางแบบ static หากจำเป็น
โพรโตคอลที่ใช้ในการเลือกเส้นทางจะต้องถูกกำหนดให้ถูกต้องตามวิธีการที่ใช้
นำการบันทึกค่าการทำงานลงในล็อกมาใช้งาน และระบุเครื่องที่ใช้ในการรับและเก็บล็อกซึ่งจะต้องได้รับการตั้งค่าให้ถูกต้อง
ค่าเวลาของ router จะต้องมีความถูกต้องเที่ยงตรง และควรได้รับการจัดการโดย NTP
บันทึกค่าการทำงานลงในล็อก โดยกำหนดให้รวมข้อมูลของเวลาที่เกิดเหตุการณ์ไว้ด้วย
ตรวจสอบ พิจารณาและเก็บบันทึกการทำงานที่เกิดขึ้นในล็อกคามความเหมาะสม ตามที่ระะบุไว้ในนโยบาย
ยกเลิกการใช้งาน SNMP หรือใช้งานโดยทำการตั้งค่า community string ให้ยากต่อการเดา

เรียบเรียงโดย : มนัชยา ชมธวัช

http://smf.ruk-com.in.th/index.php?topic=9805.0

ไม่มีความคิดเห็น:

แสดงความคิดเห็น