ยินดีต้อนรับสู่ show running-config ครับ

บล็อก show running-config นี้สร้างไว้เพื่อเป็นแหล่งรวบรวมเทคนิคการตั้งค่าอุปกรณ์เครือข่าย Cisco ไม่ว่าจะเป็น Cisco IOS Router, Cisco Catalyst Swtich, Cisco ASA Firewall, Cisco Mars เป็นต้น รวมทั้งอาจจะมีเทคนิคการตั้งค่าอุปกรณ์ในยี่ห้ออื่น ๆ บ้างเล็กน้อยครับ

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

Sunday, April 17, 2011

การรักษาความปลอดภัยของเราเตอร์ ด้วยการใช้ Auto Secure

Configure Auto Secure to Enhances Security on Cisco IOS Router

Auto Secure

          เพื่อน ๆ เคยสงสัยหรือเคยได้รับคำถามประเภทที่ว่า "เซอร์วิสหรือคุณสมบัติใดของเราเตอร์ที่ควรจะปิดการทำงานเอาไว้ เพื่อป้องกันการโจมตีบนเราเตอร์?" กันบ้างมั้ยครับ ในวันนี้ผมจะมาแนะนำคุณสมบัติหนึ่งของ Cisco IOS Router ที่จะมาตอบคำถามที่ว่ากันนะครับ ซึ่งก็คือการใช้คำสั่ง AutoSecure บน Cisco IOS Router ของเรานั่นเองครับ

          ด้วยการใช้งานคำสั่ง AutoSecure บน CLI เพียงคำสั่งเดียว จะเป็นการเพิ่มระดับการรักษาความปลอดภัยให้กับเราเตอร์ โดยมันจะไปทำการปิดการทำงานที่อาจจะถูกใช้ในการโจมตี และจะไปทำการเปิดการทำงานที่จะช่วยในการรักษาความปลอดภัยต่าง ๆ ให้โดยอัตโนมัติ

          คำสั่ง AutoSecure นี้สามารถใช้งานได้ตั้งแต่ Cisco IOS Release 12.3(8)T เป็นต้นมา โดยทาง Cisco ได้แนะนำว่า ก่อนที่จะใช้งานคำสั่งนี้ ควรจะทำการ Backup Configuration ในปัจจุบันไว้ก่อน เนื่องจากการใช้งานคำสั่งนี้ จะมีการปิดและเปิดการทำงานต่าง ๆ บนเราเตอร์ของเรา โดยเมื่อใช้คำสั่งนี้แล้ว จะพบว่ามีคำสั่งเพิ่มเติมขึ้นมาพอสมควร โดยคำสั่งเหล่านี้จะมีรายละเอียดแสดงขึ้นมาก่อนที่อุปกรณ์จะนำไปใช้กับค่า Running-Config เพื่อให้เราทำการตรวจสอบก่อนนำไปใช้งานจริงนะครับ

การใช้งาน AutoSecure จะช่วยป้องกันการโจมตีเราเตอร์ของเราด้วยวิธีการ ดังนี้

  • เพิ่มระดับความปลอดภัยให้กับ Management Plane
  • เพิ่มระดับความปลอดภัยให้กับ Forwarding Plane

การใช้งาน AutoSecure จะเพิ่มระดับความปลอดภัยให้กับ Management Plane ดังนี้

  • ปิดการทำงานที่อาจจะเป็นช่องโหว่ต่อการโจมตีเราเตอร์ต่าง ๆ ดังนี้
    • Finger
    • PAD (Packet Assembler and Disassembler)
    • Small Servers
    • Bootp Server
    • HTTP Server
    • Identification Service
    • CDP
    • NTP
    • Source Routing
  • ปิดการทำงานต่าง ๆ เหล่านี้ บนอินเทอร์เฟสของเราเตอร์
    • ICMP redirects
    • ICMP unreachables
    • ICMP mask reply messages
    • Proxy Arp
    • Directed Broadcast
    • Maintenance Operations Protocol (MOP) service
  • เปิดการทำงานที่ช่วยในการรักษาความปลอดภัยเราเตอร์ ดังนี้
    • service password-encryption
    • service tcp-keepalives-in และ service tcp-keepalives-out
    • AAA Model รวมถึง username และ password
    • login และ password
    • banner
    • SSH
  • เปิดการทำงานที่เกี่ยวข้องกับการเก็บ Syslog ดังนี้
    • เปิดใช้ Sequence numbers และ time stamps สำหรับ log message และการ debug ทั้งหมด
    • สร้าง log message เก็บประวัติการ login เข้าใช้งาน
    • เปิดการทำงาน logging console ในระดับ critical
    • เปิดการทำงาน logging buffered
    • เปิดการทำงาน logging trap ในระดับ debugging

การใช้งาน AutoSecure จะเพิ่มระดับความปลอดภัยให้กับ Forwarding Plane ดังนี้

  • เปิดการทำงานของ CEF (Cisco Express Forwarding) เนื่องจากเราเตอร์ที่ใช้งาน CEF จะสามารถทำงานได้ดีกว่าเราเตอร์ที่ใช้งาน cache ในรูปแบบเดิม เมื่อถูกโจมตีด้วย SYN Attacks
  • เปิดการทำงานของ TCP intercept
  • เปิดการทำงานของ uRPF (Unicast Reverse Path Forwarding) เพื่อช่วยป้องกัน Spoofed IP Source Address
  • เปิดการทำงานของ CBAC Firewall

          เอาล่ะครับ เรามาดูตัวอย่างการตั้งค่ากันเลยดีกว่านะครับ สำหรับขั้นตอนการตั้งค่านั้น ก็เพียงแต่ใช้คำสั่ง "auto secure" ใน privilage mode จากนั้น ก็จะมีเสมือนเป็น wizard มาถามข้อมูลต่าง ๆ จากเราเรื่อย ๆ จนกว่าจะเสร็จขั้นตอนทั้งหมด โดยเมื่อใช้คำสั่ง "auto secure" ไปแล้ว ก็จะปรากฏหน้าตาตามตัวอย่างด้านล่างนี้ขึ้นมาครับ

ตัวอย่าง
Router#auto secure
                --- AutoSecure Configuration ---

*** AutoSecure configuration enhances the security of
the router, but it will not make it absolutely resistant
to all security attacks ***

AutoSecure will modify the configuration of your device.
All configuration changes will be shown. For a detailed
explanation of how the configuration changes enhance security
and any possible side effects, please refer to Cisco.com for
Autosecure documentation.
At any prompt you may enter '?' for help.
Use ctrl-c to abort this session at any prompt.

Gathering information about the router for AutoSecure

Is this router connected to internet? [no]:

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

          ถ้าตอบ yes ไปแล้ว ในขั้นต่อมา เราก็จะต้องใส่ข้อมูลของจำนวนและอินเทอร์เฟสที่ใช้ในการเชื่อมต่อสู่อินเทอร์เน็ตครับ ถ้าดูจากตัวอย่างด้านล่าง ก็จะมีการใช้งาน FastEthernet0/0 เพียงอินเทอร์เฟสเดียว ในการเชื่อมต่อสู่อินเทอร์เน็ตครับ

ตัวอย่าง
Is this router connected to internet? [no]: yes
Enter the number of interfaces facing the internet [1]: 1

Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            unassigned      YES unset  administratively down down   
FastEthernet0/1            unassigned      YES unset  administratively down down   
Enter the interface name that is facing the internet: FastEthernet0/0

          จากนั้น จะเป็นการรักษาความปลอดภัยให้กับ Management plane โดยจะมีการปิดและเปิด Service ต่าง ๆ ตามที่แสดงขึ้นมา ดังตัวอย่างด้านล่างนี้ครับ

ตัวอย่าง
Securing Management plane services...

Disabling service finger
Disabling service pad
Disabling udp & tcp small servers
Enabling service password encryption
Enabling service tcp-keepalives-in
Enabling service tcp-keepalives-out
Disabling the cdp protocol

Disabling the bootp server
Disabling the http server
Disabling the finger service
Disabling source routing
Disabling gratuitous arp

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

ตัวอย่าง
Here is a sample Security Banner to be shown
at every access to device. Modify it to suit your
enterprise requirements.

Authorized Access only
  This system is the property of So-&-So-Enterprise.
  UNAUTHORIZED ACCESS TO THIS DEVICE IS PROHIBITED.
  You must have explicit permission to access this
  device. All activities performed on this device
  are logged. Any violations of access policy will result
  in disciplinary action.

Enter the security banner {Put the banner between
k and k, where k is any character}:
$
##############################################
#                                            #
#        Running-config.blogspot.com         # 
#                                            #
##############################################
$

          จากนั้น ถ้าบนเราเตอร์ของเรายังไม่มีการใช้งาน enable secret และ enable password ก็จะต้องทำการตั้งค่าลงไปครับ ซึ่ง enable secret และ enable password ที่จะตั้งค่าลงไปนี้จะซ้ำกันไม่ได้นะครับ

ตัวอย่าง
Enable secret is either not configured or
is the same as enable password
Enter the new enable secret:
Confirm the enable secret :
Enter the new enable password:
Confirm the enable password:

          จากนั้นก็จะเป็นการตั้งค่าผู้ใช้ บนเราเตอร์ครับ ซึ่งก็คือการตั้งค่า username และ aaa new-model นั่นเองครับ ก็ให้ทำการกำหนด username และ password ลงไปให้เรียบร้อยครับ

ตัวอย่าง
Configuration of local user database
Enter the username: admin
Enter the password:
Confirm the password:
Configuring AAA local authentication
Configuring Console, Aux and VTY lines for
local authentication, exec-timeout, and transport

          ต่อมาจะเป็นการตั้งค่า ที่เกี่ยวข้องกับการ login เข้าใช้งานเราเตอร์ของเราครับ เป็นการป้องกันการโจมตีเราเตอร์จากการโจมตีแบบ Dictionary Attack หรือ Brute-force Attack ที่ใช้การสุ่มคำมาทำการ login เข้าใช้งานได้ครับ โดยในตัวอย่างด้านล่างนี้เป็นการตั้งค่าให้ทำการ blocking ไม่ให้ผู้โจมตีสามารถทำการ login ได้ 10 นาที(600 วินาที) ถ้ามีการ login ผิด เกิน 3 ครั้งภายใน 60 วินาทีครับ

ตัวอย่าง
Securing device against Login Attacks
Configure the following parameters

Blocking Period when Login Attack detected: 600

Maximum Login failures with the device: 3

Maximum time period for crossing the failed login attempts: 60

          ต่อมา เราเตอร์จะถามว่าต้องการเปิดใช้งาน ssh หรือไม่ครับ ถ้าจะเปิดใช้ก็ให้ตอบ yes ถ้าไม่ต้องการเปิดใช้งานก็ให้ตอบ no ไปครับ แต่ถ้าตอบ yes ไปแล้ว ก็จะต้องทำการตั้งค่า hostname (ในกรณีที่ใช้ hostname เป็นค่า default อยู่) และต้องทำการตั้งค่า domain-name ด้วยครับ

ตัวอย่าง
Configure SSH server? [yes]: yes
Enter the hostname: Running-config
Enter the domain-name: blogspot.com

          จากนั้นเราเตอร์จะทำการปิดและเปิด service ต่าง ๆ ตามที่ปรากฏ บนอินเทอร์เฟสของเราเตอร์

ตัวอย่าง
Configuring interface specific AutoSecure services
Disabling the following ip services on all interfaces:

no ip redirects
no ip proxy-arp
no ip unreachables
no ip directed-broadcast
no ip mask-reply
Disabling mop on Ethernet interfaces

Securing Forwarding plane services...

Enabling CEF (This might impact the memory requirements for your platform)
Enabling unicast rpf on all interfaces connected
to internet

          จากนั้น เราเตอร์จะถามว่าต้องการเปิดใช้งาน CBAC Firewall หรือไม่ ถ้าต้องการเปิดใช้งานก็ตอบ yes หรือถ้าไม่ต้องการเปิดใช้ก็ตอบ no นะครับ

ตัวอย่าง
Configure CBAC Firewall feature? [yes/no]: no

          ขั้นต่อมา เราเตอร์จะถามว่าต้องการเปิดใช้งานคุณสมบัติ tcp intercept หรือไม่ ถ้าต้องการเปิดใช้งานก็ตอบ yes หรือถ้าไม่ต้องการเปิดใช้ก็ตอบ no ครับ

ตัวอย่าง
Tcp intercept feature is used prevent tcp syn attack
on the servers in the network. Create autosec_tcp_intercept_list
to form the list of servers to which the tcp traffic is to
be observed

Enable tcp intercept feature? [yes/no]: yes

          เมื่อเสร็จขั้นตอนที่ผ่านมา ในขั้นตอนสุดท้ายก่อนที่จะนำค่า configuration ไปใช้งานจริง ๆ จะมีการแสดงถึงคำสั่งที่มีการเปลี่ยนแปลง เมื่อใช้งานคุณสมบัติ auto secure นี้ แสดงขึ้นมา พร้อมกับถามยืนยันว่าต้องการนำไปใช้งานกับ running-config หรือไม่ ซึ่งถ้ายังไม่ต้องการนำไปใช้งานกับ running-config ก็ให้ตอบ no แต่ถ้าต้องการนำไปใช้งานเลย ก็ให้ตอบ yes นะครับ

ตัวอย่าง
This is the configuration generated:

no service finger
no service pad
no service udp-small-servers
no service tcp-small-servers
service password-encryption
service tcp-keepalives-in
service tcp-keepalives-out
no cdp run
no ip bootp server
no ip http server
no ip finger
no ip source-route
no ip gratuitous-arps
no ip identd
banner motd ^C
##############################################
#                                            #
#        Running-config.blogspot.com         #
#                                            #
##############################################

^C
security passwords min-length 6
security authentication failure rate 10 log
enable secret 5 $1$1Aym$zKz2UMbKnlwHJZJ.HH8zD1
enable password 7 105E080A16001D1908
username admin password 7 1304131F0202557878
aaa new-model
aaa authentication login local_auth local
line con 0
login authentication local_auth
exec-timeout 5 0
transport output telnet
line aux 0
login authentication local_auth
exec-timeout 10 0
transport output telnet
line vty 0 4
login authentication local_auth
transport input telnet
login block-for 600 attempts 3 within 60
hostname Running-config
ip domain-name blogspot.com
crypto key generate rsa general-keys modulus 1024
ip ssh time-out 60
ip ssh authentication-retries 2
line vty 0 4
transport input ssh telnet
service timestamps debug datetime msec localtime show-timezone
service timestamps log datetime msec localtime show-timezone
logging facility local2
logging trap debugging
service sequence-numbers
logging console critical
logging buffered
interface FastEthernet0/0
no ip redirects
no ip proxy-arp
no ip unreachables
no ip directed-broadcast
no ip mask-reply
no mop enabled
interface FastEthernet0/1
no ip redirects
no ip proxy-arp
no ip unreachables
no ip directed-broadcast
no ip mask-reply
no mop enabled
ip cef   
access-list 100 permit udp any any eq bootpc
interface FastEthernet0/0
ip verify unicast source reachable-via rx allow-default 100
ip tcp intercept list autosec_tcp_intercept_list
ip tcp intercept drop-mode random
ip tcp intercept watch-timeout 15
ip tcp intercept connection-timeout 3600
ip tcp intercept max-incomplete low 450
ip tcp intercept max-incomplete high 550
!
end

Apply this configuration to running-config? [yes]:

          โดยถ้าเราตอบ yes ไปแล้ว ก็จะนำค่าต่าง ๆ ที่เราได้ทำการกำหนดไว้ ไปใช้งานกับ running-config ในทันทีครับ

ตัวอย่าง
Apply this configuration to running-config? [yes]: yes

Applying the config generated to running-config
The name for the keys will be: Running-config.blogspot.com

% The key modulus size is 1024 bits
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK]

*Mar  1 00:06:35.215: %SSH-5-ENABLED: SSH 1.99 has been enabledcommand accepted, interfaces with mls configured might cause inconsistent behavior
command accepted, interfaces with mls configured might cause inconsistent behavior
command accepted, interfaces with mls configured might cause inconsistent behavior
command accepted, interfaces with mls configured might cause inconsistent behavior
command accepted, interfaces with mls configured might cause inconsistent behavior
command accepted, interfaces with mls configured might cause inconsistent behavior

          เพียงเท่านี้ ก็จะช่วยในการเพิ่มระดับการรักษาความปลอดภัยให้กับเราเตอร์ของเพื่อน ๆ กันได้แล้วนะครับ แต่ในการนำไปใช้งานจริง กับอุปกรณ์นั้น แนะนำว่าให้ทำการ backup ค่า configuration เดิมเก็บเอาไว้ก่อนจะดีที่สุดครับ และสำหรับใครที่อยากจะทดลองทำดู ก็สามารถใช้งานโปรแกรมอย่างเช่น packet tracer ในการ simulator ดูก็ได้ครับผม

1 comment :

  1. สุดๆอีกแล้ว ทำงานที่ไหนครับพี่ อยากทราบมากๆ

    ReplyDelete