Router Security Configuration Guide

            เอกสารฉบับนี้เป็นการอธิบายโดยสรุปถึงคำแนะนำในการปรับแต่งค่าการทำงาน router เพื่อให้ได้รับความปลอดภัยจากการใช้งาน มุ่งเน้นให้ผู้อ่านสามารถนำไปใช้เพื่อเพิ่มระดับความความปลอดภัยในการทำงานของ router โดยอ้างอิงจากชุดคำสั่งของ Cisco อย่างไรก็ตาม ผู้อ่านสามารถนำหลักเกณฑ์เหล่านี้ไปประยุกต์ใช้กับ router อื่นๆ ได้ เนื่องจากรายละเอียดภายในเอกสารนี้ถือเป็นคำแนะนำที่ดีในการปรับแต่งค่าความปลอดภัยให้กับ router
คำแนะนำโดยทั่วไป
  1. ควรสร้างนโยบายความปลอดภัยของ router และปรับแต่งให้เหมาะสมอยู่เสมอ นโยบายดังกล่าวนี้ควรจะระบุว่าผู้ใดบ้างได้รับอนุญาตให้เข้าใช้งาน router และผู้ใดบ้างได้รับอนุญาตให้ปรับแต่งแก้ไขและอัพเดตการทำงานของ router รวมทั้งเก็บบันทึกค่าการเข้าใช้งานและการปรับแต่งค่าทั้งหมดที่เกิดขึ้นจริงกับ router
  2. ให้คำอธิบายและเก็บบันทึกไฟล์ที่ใช้กำหนดค่าการทำงานของ router การกระทำดังกล่าวนี้อาจจะดูเหมือนเป็นสิ่งง่ายเมื่อเปรียบเทียบกับความปลอดภัยที่จะได้รับ นอกจากนั้น ควรเก็บสำเนาค่าการทำงานของ router ทั้งหมดที่เหมือนกับค่าการทำงานจริงที่ใช้งานไว้ตลอดเวลา (หากมีการแก้ไขค่าการทำงานที่ router ก็จะต้องแก้ไขค่าที่เก็บสำเนาไว้ด้วย) การกระทำดังกล่าวนี้จะช่วยให้สามารถตรวจสอบความเปลี่ยนแปลงที่เกิดขึ้นเมื่อถูกบุกรุก หรือใช้กู้คืนค่าดังกล่าวมาใช้งานเมื่อเกิดความเสียหายได้
  3. สร้าง Access List เพื่อควบคุมการผ่านเข้าออกเครือข่าย อนุญาตให้เฉพาะโพรโตคอลและบริการที่ผู้ใช้งานเครือข่ายจำเป็นต้องใช้เท่านั้น นอกเหนือจากนั้นจะไม่อนุญาตให้ผ่านเครือข่ายทั้งหมด
  4. ใช้งาน IOS เวอร์ชันล่าสุดที่เป็นไปได้อยู่เสมอ โดยสอบถามข้อมูลเวอร์ชันที่เหมาะสมได้จากผู้จำหน่ายหรือจากเว็บไซต์ของผู้ผลิตโดยตรง
  5. ทดสอบความปลอดภัยโดยทั่วไปของ router อยู่เสมอ โดยเฉพาะอย่างยิ่งเมื่อมีการเปลี่ยนแปลงค่าการทำงานที่สำคัญของ router
คำแนะนำเฉพาะเรื่อง : Router Access
  1. ปิดความสามารถในการทำงานเป็นเซิร์ฟเวอร์ที่ไม่จำเป็นต้องใช้ของ 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
  1. ปิดการให้บริการที่ไม่จำเป็นต้องใช้ของ router บริการเหล่านี้ใช้เพื่อการอนุญาตให้ส่งแพ็กเก็ตหลายชนิดผ่าน router หรือส่งแพ็กเก็ตชนิดพิเศษบางชนิด หรือใช้เพื่อการปรับแต่งค่าการทำงานของ router จากภายนอก โดยทั่วไป บริการของ router ที่ควรถูกปิดไม่ให้ใช้งานและคำสั่งที่เกี่ยวข้องในการยกเลิกการทำงาน ได้แก่
• CDP
- no cdp run
• Remote config
- no service config
• Source routing
- no ip source-route
  1. สามารถทำให้อินเทอร์เฟซของ router มีความปลอดภัยมากขึ้นได้โดยการใช้คำสั่งดังต่อไปนี้กำหนดไว้ที่ทุกอินเทอร์เฟซ ซึ่งจะต้องทำที่โหมดของการกำหนดค่าให้อินเทอร์เฟซ
• Unused interfaces
- shutdown
• No Smurf attacks
- no ip directed-broadcast
• Ad-hoc routing
- no ip proxy-arp
  1. สามารถทำให้การติดต่อกับ 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
  1. ค่ารหัสผ่านควรถูกตั้งไว้ให้มีความปลอดภัยมากที่สุดเท่าที่จะทำได้ ได้แก่ การตั้งค่ารหัสผ่านแบบ 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
  1. ไม่ควรเปิดเผยรายละเอียดของค่าการทำงาน router และไฟล์ที่ใช้ในการกำหนดค่าให้ผู้ที่ไม่ได้รับอนุญาตทราบโดยเด็ดขาด
คำแนะนำเฉพาะเรื่อง : Access Lists
  1. การสร้าง 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
  1. กำหนดหมายเลขพอร์ตที่ต้องการควบคุมสำหรับแต่ละ 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 รวมทั้งเก็บค่าลงในล็อก
  1. อนุญาตให้เฉพาะแอดเดรสของเครือข่ายภายในส่งข้อมูลเข้าสู่ 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
  1. ไม่ควรให้แพ็กเก็ตที่มาจากภายนอก (จากเครือข่ายที่ไม่น่าเชื่อถือ) ซึ่งอาจจะเป็นแพ็กเก็ตที่มีการปลอมแปลงหรือส่งมาเพื่อโจมตีเครือข่าย สามารถทำได้โดยการแบ่งส่วนของเครือข่ายทั้งหมดตามแต่ละอินเทอร์เฟซของ router และออกแบบว่าจะเลือกให้มีการส่งผ่านข้อมูลที่มาจากเครือข่ายภายนอกและเครือข่ายที่ไม่น่าเชื่อถือจากที่ใดได้บ้าง
  2. แพ็กเก็ตที่ส่งมาจากภายนอกโดยมีแอดเดรสต้นทางเหมือนกับแอดเดรสของเครือข่ายภายในใดๆ (เครือข่ายที่เชื่อถือ) จัดว่าเป็นแพ็กเก็ตที่ส่งเข้ามาเพื่อโจมตีระบบโดยวิธีการ TCP sequence number guessing หรือวิธีอื่นๆ ในทำนองเดียวกัน จึงไม่ควรให้ผ่านเข้ามาในเครือข่าย ป้องกันได้โดยการสร้าง access list ขึ้นมาใช้งานที่แต่ละอินเทอร์เฟซที่ต้องติดต่อกับเครือข่ายที่ไม่น่าเชื่อถือ
  3. สกัดกั้นแพ็กเก็ตชนิด 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]
  4. หากเครือข่ายไม่จำเป็นต้องใช้ IP multicast ก็ควรจะกั้นแพ็กเก็ตชนิด multicast ด้วย
  5. สกัดกั้นแพ็กเก็ตชนิด broadcast (ข้อควรคำนึงถึงคือ การปิดแพ็กเก็ตชนิด broadcast อาจจะทำให้บริการ DHCP และ BOOTP ไม่สามารถใช้งานได้ด้วย อย่างไรก็ตาม บริการทั้งสองอันนี้ไม่ควรนำมาใช้ที่อินเทอร์เฟซที่ต่อกับเครือข่ายภายนอกอยู่แล้ว)
  6. การโจมตีเครือข่ายจากภายนอกจำนวนมากใช้วิธีการส่ง 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
  1. สกัดกั้นแพ็กเก็ตที่มีแอดเดรสต้นทางและปลายทางเหมือนกันไม่ให้เข้ามาในเครือข่าย (เพราะอาจจะเป็นการบุกรุกโดยวิธีการที่เรียกว่า '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
  1. กำหนดค่า 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
  1. นำความสามารถของ 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
  1. กำหนดค่าการทำงานของ 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
  1. หากมีการใช้งาน 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://www.thaicert.nectec.or.th/paper/basic/Router_guide.php (ถ้าเข้าไม่ได้ ลองจาก Cache ของ Google ดูนะครับ)
Share on Google Plus

About Volk-69

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment

0 comments:

Post a Comment