ยินดีต้อนรับสู่ show running-config ครับ
Sunday, August 24, 2014
ทำความรู้จักกับ Cisco EVN กันครับ
EVN (Easy Virtual Network) เป็นการแบ่งแยกขอบเขตของเครือข่ายในระดับ Layer 3 เหมือนกันกับ VRF Lite ซึ่งอันที่จริงแล้ว EVN ก็เป็นการนำ VRF Lite มาปรับปรุงให้สามารถทำการตั้งค่าได้ง่ายขึ้น และเพิ่มความสามารถในการจัดการบางอย่างเข้ามานั่นเอง โดยรายละเอียดของ EVN จะมีอะไรบ้าง ขอเชิญติดตามได้ในบทความนี้เลยครับ
Tuesday, August 19, 2014
การใช้งาน Routing-context บน Cisco IOS
ในวันนี้ขอเสนอบทความสั้น ๆ โดยเป็นบทความที่มีเนื้อหาต่อเนื่องมาจากบทความเรื่อง VRF Lite คืออะไร? นะครับ โดยปกติแล้วเมื่อเราทำการตั้งค่า VRF เพื่อแบ่งแยกขอบเขตของระบบเครือข่ายแล้ว เมื่อต้องการตรวจสอบการทำงานของอุปกรณ์ด้วยการใช้คำสั่งบน EXEC mode เคยรู้สึกเหมือนกับผมบ้างมั้ยครับ ว่าใช้งานยากและไม่สะดวกเอาเสียเลย เนื่องจากจะต้องทำการเพิ่มคำสั่ง "vrf" ตามด้วยชื่อของ VRF ไปด้วยในทุก ๆ คำสั่งที่ใช้งานบน EXEC mode ในวันนี้ผมจึงจะมาแนะนำให้รู้จักกับคุณสมบัติ routing-context ที่จะช่วยให้สามารถทำการตรวจสอบการทำงานของแต่ละ VRF ด้วยการใช้คำสั่งบน EXEC mode ได้อย่างสะดวกมากยิ่งขึ้นกันครับ
Wednesday, August 13, 2014
การตั้งค่า Inter-VRF Routing กับ VRF Lite
Friday, August 1, 2014
VRF Lite คืออะไร ?
ในปัจจุบันโลกของเราได้ก้าวสู่ยุคของ virtualization กันมากขึ้น ไม่ว่าอุปกรณ์อะไรก็จะมีการทำ virtual ไปซะหมด ตั้งแต่ Server ที่มีการใช้งาน VMware หรืออุปกรณ์อย่างเช่น Firewall ที่มีการทำ Virtual Context หรือ Virtual Device ต่าง ๆ หรือบนสวิตซ์ก็จะมีการใช้งาน VLAN ที่เป็นการแบ่งขอบเขตของเครือข่าย LAN ในระดับ Layer 2 ดังนั้นอุปกรณ์ในระดับ Layer 3 อย่างเช่น เราเตอร์หรือสวิตซ์ Layer 3 ก็น่าที่จะมีการแบ่งแยกเครือข่ายในระดับ Layer 3 เหมือนกันถูกมั้ยครับ ดังนั้นวันนี้ผมจึงจะมาแนะนำให้ได้รู้จักกับ VRF Lite ซึ่งเป็นคุณสมบัติในการสร้างระบบเครือข่ายเสมือนในระดับ Layer 3 นั่นเองครับ
Saturday, July 9, 2011
การตั้งค่า SSL VPN Client WebVPN บน Cisco IOS Router
Configure SSL VPN Client WebVPN on Cisco IOS Router
สวัสดีกันอีกครั้งครับเพื่อน ๆ ในวันนี้ผมจะขอแนะนำการตั้งค่า WebVPN บน Cisco IOS Router อีกรูปแบบหนึ่งกันครับ นั่นก็คือการตั้งค่า SSL VPN Client (SVC) WebVPN นั่นเองครับ หลังจากที่ได้แนะนำการตั้งค่า WebVPN ในแบบ Clientless และแบบ Thin-Client กันมาบ้างแล้วในบทความก่อนหน้านี้ครับ
WebVPN หรือ SSL-VPN นั้น จะทำให้ผู้ใช้สามารถเชื่อมต่อมาสู่ WebVPN Server เพื่อเข้ามาใช้งานทรัพยากรภายในองค์กร ได้จากทุก ๆ ที่ ที่สามารถเชื่อมต่อสู่อินเทอร์เน็ตได้ อีกทั้งยังมีการรักษาความปลอดภัย โดยการเข้ารหัสข้อมูลด้วยการใช้ SSL หรือ TLS Protocol โดยที่เครื่องของผู้ใช้ไม่ต้องทำการติดตั้ง ซอฟท์แวร์พิเศษใด ๆ เพิ่มเติม เพียงแค่มีการใช้งาน Web Browser ใด ๆ ก็ได้ในการเชื่อมต่อ ก็สามารถที่จะเชื่อมต่อเพื่อเข้ามาใช้งานทรัพยากรต่าง ๆ ภายในองค์กรได้แล้วครับ
จากบทความที่ผ่าน ๆ มา จะเป็นการแนะนำการตั้งค่า WebVPN ในแบบ Clientless และ Thin-clinet ซึ่งจะสามารถใช้งานได้กับ Application บางประเภทเท่านั้น (Clientless จะใช้ได้กับ Web Application ส่วน Thin-Client จะใช้ได้กับ Static TCP Port Application เท่านั้น) แต่ในวันนี้ ผมจะขอแนะนำให้เพื่อน ๆ ได้รู้จักกับการใช้งาน WebVPN อีกรูปแบบหนึ่ง ซึ่งสามารถที่จะใช้งานได้กับ Application ทุก ๆ ประเภท ไม่ว่าจะใช้ TCP หรือ UDP Port เสมือนว่าใช้งานอยู่บนเครือข่ายเดียวกัน หรือจะเหมือนกับการใช้งาน Client to Site IPSec VPN เลยครับ
โดยในการใช้งาน SSL VPN Client WebVPN นี้ บนเครื่องของผู้ใช้จะต้องทำการติดตั้งซอฟต์แวร์เพิ่มเติม โดยจะทำการดาวน์โหลดมาโดยอัตโนมัติเมื่อเริ่มทำการเชื่อมต่อ ซึ่งซอฟต์แวร์นี้จะใช้สำหรับการสร้างการเชื่อมต่อและการรักษาความปลอดภัยให้กับข้อมูลที่ทำการรับส่งกันครับ
ในส่วนของการตั้งค่า SSL VPN Client WebVPN นั้น ก็จะมีขั้นตอนที่คล้าย ๆ กับ การตั้งค่า WebVPN Clientless ครับ โดยจะแตกต่างก็เพียงแต่จะมีการตั้งค่า SVC เพิ่มเติมขึ้นมาเพียงนิดหน่อยเท่านั้นครับ ซึ่งในการใช้งานจริงนั้น เราก็สามารถที่จะใช้งาน WebVPN ทั้งสามรูปแบบ ไปพร้อม ๆ กันได้เลยครับผม
สำหรับขั้นตอนในการตั้งค่า SVC WebVPN ก็มีดังนี้ครับ
- ทำการตั้งค่าพื้นฐานของอุปกรณ์ เช่น hostname, domain-name, ntp เป็นต้น
- ทำการตั้งค่าอินเทอร์เฟสของเราเตอร์ให้เรียบร้อย เช่นการกำหนด ip address การตั้งค่า nat การกำหนด routing การสร้าง address pool สำหรับผู้ใช้ที่เชื่อมต่อเข้ามา
- ทำการตั้งค่า AAA เพื่อการพิสูจน์ตัวตนผู้ใช้
- ทำการตั้งค่า WebVPN Gateway เพื่อใช้เป็น gateway ในการเชื่อมต่อของผู้ใช้ WebVPN
- ทำการตั้งค่า WebVPN Context เพื่อกำหนดรายละเอียดต่าง ๆ ในการใช้งาน WebVPN
- ทำการดาวน์โหลดและติดตั้ง SVC
- ทำการตั้งค่า SVC
- (ทางเลือก)การปรับแต่งค่า SVC
- ตรวจสอบการทำงานและการตั้งค่า
1.การตั้งค่าพื้นฐาน
ขั้นตอนแรกนี้จะเป็นการตั้งค่าพื้นฐานต่าง ๆ ของเราเตอร์ ที่จำเป็นต่อการใช้งาน WebVPN อย่างเช่น hostname, domain-name, ntp เป็นต้น เนื่องจากจะต้องนำค่าเหล่านี้ไปใช้ประกอบในใบ Certificate ที่จะนำไปใช้สำหรับการเข้ารหัสข้อมูล
ตัวอย่าง
Router(config)#hostname Running-config
Running-config(config)#ip domain-name blogspot.com
Running-config(config)#ntp server 203.185.69.59
Running-config(config)#clock timezone ICT 7
2.การตั้งค่าอินเทอร์เฟสของเราเตอร์
เป็นการตั้งค่าอินเทอร์เฟสของเราเตอร์ให้เรียบร้อยก่อนครับ โดยค่าที่จะต้องทำการกำหนดลงไปก็เช่น ip address, การตั้งค่า nat รวมไปถึงการตั้งค่า routing และการสร้าง Address Pool เพื่อจ่ายให้กับผู้ใช้ที่ทำการเชื่อมต่อเข้ามาครับ
ตัวอย่าง
Running-config(config)#interface FastEthernet 0/0
Running-config(config-if)#description # inside #
Running-config(config-if)#ip address 10.10.10.1 255.255.255.0
Running-config(config-if)#no shut
Running-config(config-if)#exit
Running-config(config)#interface FastEthernet 0/1
Running-config(config-if)#description # outside #
Running-config(config-if)#ip address 175.88.92.129 255.255.255.248
Running-config(config-if)#no shut
Running-config(config-if)#exit
Running-config(config)#ip route 0.0.0.0 0.0.0.0 175.88.92.130
Running-config(config)#ip local pool ssl-client-pool 10.10.11.10 10.10.11.20
จากตัวอย่างด้านบน มีการสร้าง Address pool ที่มีชื่อว่า ssl-client-pool โดยกำหนดให้ใช้ IP Address ตั้งแต่ 10.10.11.10 ถึง 10.10.11.20 ในการแจกให้กับผู้ที่เชื่อมต่อเข้ามาใช้งาน SVC WebVPN ครับ
3.การตั้งค่า AAA
จากนั้นจะเป็นขั้นตอนของการตั้งค่า AAA เพื่อใช้ในการพิสูจน์ตัวตนของผู้ใช้ที่ทำการติดต่อมายัง WebVPN Server นี้ โดยจะเป็นการสร้าง Authentication list และสร้าง username ที่ต้องการ สำหรับเพื่อน ๆ ยังไม่ทราบว่า AAA คืออะไร ก็ขอให้ติดตามบทความ : ทำความรู้จักกับ AAA model ก่อนนะครับ
ตัวอย่าง
Running-config(config)#aaa new-model
Running-config(config)#aaa authentication login ssl-vpn local
Running-config(config)#username engineer privilege 0 secret 12345
4.การตั้งค่า WebVPN Gateway
เมื่อทำการตั้งค่ารายละเอียดต่าง ๆ ที่เกี่ยวข้องกับการทำงานของ WebVPN เรียบร้อยแล้ว เราก็จะมาเริ่มทำการตั้งค่า WebVPN กันซะทีนะครับ นั่นก็คือการสร้าง WebVPN Gateway ซึ่งจริง ๆ แล้วเราจะต้องทำการสร้าง RSA Keys ก่อน แต่ในขั้นตอนนี้ เมื่อเราทำการสร้าง WebVPN Gateway ตัวอุปกรณ์ก็จะสร้าง RSA Keys ขึ้นมาให้โดยอัตโนมัติเลยครับ ผมก็เลยขอข้ามขั้นตอนการสร้าง RSA Keys ไปนะครับ(หรือสำหรับเพื่อน ๆ ที่ต้องการใช้ Certificate จาก CA Server อื่น ๆ ก็สามารถใช้ได้ครับผม)
สำหรับ WebVPN Gateway นี้ จะเป็นการกำหนดรายละเอียด ว่าเราจะให้ผู้ใช้ที่ทำการเชื่อมต่อเข้ามายัง ip address และ port อะไร โดยเปรียบเสมือนเป็น proxy ระหว่างเครื่องของผู้ใช้ที่เชื่อมต่อเข้ามา กับทรัพยากรภายในเครือข่าย โดยเราสามารถสร้าง WebVPN Gateway ได้ด้วยการใช้คำสั่ง "webvpn gateway <name>" ใน global configuration mode ครับ
ตัวอย่าง
Running-config(config)#webvpn gateway ssl-gw-01
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
Running-config(config-webvpn-gateway)#
*Jul 6 18:09:26.481: %SSH-5-ENABLED: SSH 1.99 has been enabled
*Jul 6 18:09:26.721: %PKI-4-NOAUTOSAVE: Configuration was modified. Issue "write memory" to save new certificate
จากตัวอย่างด้านบน เป็นการสร้าง WebVPN Gateway ที่มีชื่อว่า "ssl-gw-01" โดยเมื่อเราทำการสร้าง WebVPN Gateway แล้ว ถ้าบนตัวอุปกรณ์ของเรายังไม่มี หรือไม่ได้กำหนด RSA Keys เอาไว้ ตัวเราเตอร์ก็จะทำการสร้าง RSA Keys ขนาด 1024 bit ขึ้นมาให้โดยอัตโนมัติครับ
และเมื่อทำการสร้าง WebVPN Gateway แล้ว เราก็จะต้องมาทำการกำหนดรายละเอียดต่าง ๆ ของ WebVPN Gateway ของเรากันครับ
ตัวอย่าง
Running-config(config)#webvpn gateway ssl-gw-01
Running-config(config-webvpn-gateway)#ip interface FastEthernet 0/1 port 443
Running-config(config-webvpn-gateway)#http-redirect port 80
Running-config(config-webvpn-gateway)#inservice
Running-config(config-webvpn-gateway)#exit
จากตัวอย่างด้านบน เป็นการกำหนดค่า WebVPN Gateway โดยกำหนดให้ใช้ IP Address ของอินเทอร์เฟส FastEthernet 0/1 (175.88.92.129) Port 443 (https) ในการเชื่อมต่อสู่ WebVPN โดยมีการกำหนดให้ทำการ redirect ถ้ามีผู้ใช้เรียกใช้งานผ่าน port 80 (http) มาด้วย จากนั้นจึงเปิดใช้งานด้วยการใช้คำสั่ง "inservice" ครับ
5.การตั้งค่า WebVPN Context
หลังจากที่ทำการตั้งค่า WebVPN Gateway เรียบร้อยแล้ว ในขั้นตอนต่อมาจะเป็นการตั้งค่า WebVPN Context ที่จะใช้สำหรับกำหนดเนื้อหาภายในหน้าเวปเพจ SSL-VPN ของเรา โดยเราสามารถสร้าง WebVPN Context ได้ด้วยการใช้คำสั่ง "webvpn context <name>" ใน global configuration mode ครับ
ตัวอย่าง
Running-config(config)#webvpn context ssl-con-01
Running-config(config-webvpn-context)#gateway ssl-gw-01
Running-config(config-webvpn-context)#aaa authentication list ssl-vpn
Running-config(config-webvpn-context)#inservice
Running-config(config-webvpn-context)#exit
จากตัวอย่างด้านบน เป็นการตั้งค่า WebVPN Context ที่ใช้ชื่อว่า "ssl-con-01" โดยกำหนดให้ใช้งาน Context นี้กับ gateway ที่มีชื่อว่า "ssl-gw-01" (ที่เราทำการสร้างไว้เมื่อขั้นตอนที่ผ่านมา) จากนั้นก็ทำการเปิดการทำงานของ Context นี้ ด้วยการใช้คำสั่ง "inservice"
และเมื่อทำตามตัวอย่างด้านบนเรียบร้อยแล้ว เพื่อน ๆ สามารถใช้ Web Browser ทดลองเข้าใช้งาน WebVPN จากเครื่องของผู้ใช้ได้ โดยกำหนด URL ตามหมายเลข IP Address ที่ได้กำหนดไว้ในขั้นตอนที่ผ่านมา (จากตัวอย่างนี้คือ https://175.88.92.129)
ทั้งนี้ เราสามารถทำการปรับเปลี่ยนค่าต่าง ๆ เพื่อกำหนดรูปแบบ หน้าเวปเพจตามที่ต้องการได้ครับ ซึ่งในส่วนนี้ ก็แล้วแต่เพื่อน ๆ เลยครับว่าต้องการให้หน้าเวปเพจของเรานั้นมีรูปแบบใด หรือจะทดลองตามตัวอย่างการตั้งค่าของผมก็ได้นะครับ
ตัวอย่าง
Running-config(config)#webvpn context ssl-con-01
Running-config(config-webvpn-context)#title "Running-config"
Running-config(config-webvpn-context)#login-message "Welcome To<P>Running-config<br>SSL-VPN"
Running-config(config-webvpn-context)#login-photo file login_photo.jpg
Running-config(config-webvpn-context)#logo file Running-config67x40.gif
Running-config(config-webvpn-context)#color #B9D3EE
Running-config(config-webvpn-context)#secondary-color #3063A5
Running-config(config-webvpn-context)#title-color #283A90
Running-config(config-webvpn-context)#exit
หลังจากทำการกำหนดค่าตามตัวอย่างด้านบนเรียบร้อยแล้ว เมื่อทดลองใช้ Web Browser เชื่อมต่อมายัง WebVPN Server อีกครั้ง ก็จะพบกับหน้าเวปเพจ ดังรูปด้านล่างครับ
6.การดาวน์โหลดและติดตั้ง SVC
หลังจากที่เราทำการตั้งค่า WebVPN Context เสร็จเรียบร้อยแล้ว ในขั้นตอนต่อมาก็จะเริ่มทำการตั้งค่าที่เกี่ยวข้องกับ SSL VPN Client กันนะครับ โดยก่อนอื่น เราจะต้องมี software SSL VPN Client ก่อน ซึ่งสามารถดาวน์โหลดได้ที่ เวปไซต์ cisco.com นะครับ โดยเมื่อทำการดาวน์โหลดมาแล้ว ก็จัดการ copy ไฟล์ ไปยังตัวอุปกรณ์กันเลยครับ ซึ่งในตัวอย่างนี้ ผมก็ใช้วิธีการ TFTP ในการส่งไฟล์ที่ว่าไปยัง เราเตอร์นะครับ
ตัวอย่าง
Running-config#copy tftp: flash:
Address or name of remote host []? 10.10.10.10
Source filename []? sslclient-win-1.1.4.179.pkg
Destination filename [sslclient-win-1.1.4.179.pkg]?
Accessing tftp://10.10.10.10/sslclient-win-1.1.4.179.pkg...
Loading sslclient-win-1.1.4.179.pkg from 10.10.10.10 (via FastEthernet0/1): !!
[OK - 418765 bytes]
418765 bytes copied in 2.280 secs (183669 bytes/sec)
เมื่อทำการ copy ไปเก็บไว้บนตัวเราเตอร์เรียบร้อยแล้ว ในขั้นตอนต่อมา ก็จะเป็นการติดตั้ง SSL VPN Client บนตัวเราเตอร์นะครับ ซึ่งสามารถทำได้ด้วยการใช้คำสั่ง "webvpn install svc <file>" ครับ
ตัวอย่าง
Running-config(config)#webvpn install svc flash:/sslclient-win-1.1.4.179.pkg
SSLVPN Package SSL-VPN-Client (seq:1): installed successfully
7.การตั้งค่า SVC
หลังจากที่ทำการติดตั้ง SVC กันไปแล้วในขั้นตอนที่ผ่านมา ในขั้นตอนนี้ก็จะเป็นการตั้งค่า SSL VPN Client กันนะครับ ก็จะเป็นการกำหนดรายละเอียดต่าง ๆ ที่เราจะใช้งานนะครับ เช่น หมายเลข IP Address ที่จะใช้ในการแจกให้กับผู้ใช้ที่ทำการเชื่อมต่อเข้ามา เป็นต้นครับ โดยเราจะต้องไปทำการตั้งค่า SVC กันใน Policy Group นะครับ
ตัวอย่าง
Running-config(config)#webvpn context ssl-con-01
Running-config(config-webvpn-context)#policy group ssl-policy-01
Running-config(config-webvpn-group)#svc address-pool ssl-client-pool
Running-config(config-webvpn-group)#svc dns-server primary 203.144.207.29
Running-config(config-webvpn-group)#functions svc-enabled
Running-config(config-webvpn-group)#exit
Running-config(config-webvpn-context)#default-group-policy ssl-policy-01
Running-config(config-webvpn-context)#exit
จากตัวอย่างด้านบน เป็นการสร้าง Policy Group ที่มีชื่อว่า "ssl-policy-01" โดยกำหนดให้ WebVPN Context ที่มีชื่อว่า "ssl-con-01" ใช้งาน Policy Group นี้ เป็น Default Policy โดยภายใน Policy Group นี้ มีการกำหนดให้ใช้ Address Pool ที่มีชื่อว่า "ssl-client-pool" (ที่ทำการตั้งค่าในขั้นตอนก่อนหน้า) เป็น Pool ที่จะใช้ในการจ่าย IP Address ให้กับผู้ใช้ และกำหนดให้ใช้งาน dns server เป็น 203.144.207.29 จากนั้นก็ทำการเปิดการทำงานของ SVC ด้วยการใช้คำสั่ง "functions svc-enabled" ครับ
หลังจากทำการกำหนดค่าตามตัวอย่างด้านบนเรียบร้อยแล้ว เมื่อทดลองใช้ Web Browser ในการ login เข้าใช้งาน WebVPN และทำการคลิ้ก Start ที่ Tunnel Connection (SVC) ก็จะมีการดาวน์โหลด Software มาโดยอัตโนมัติ และก็จะสามารถเชื่อมต่อเข้าใช้งาน SVC ได้ โดยจะมีสถานะการทำงานของ SVC ตามรูปด้านล่างครับ เพียงเท่านี้ ก็จะสามารถใช้งาน SVC WebVPN ได้แล้วครับผม
8.การปรับแต่งค่า SVC
ที่จริงแล้ว เมื่อเสร็จสิ้นขั้นตอนที่ผ่านมา ก็จะสามารถใช้งาน SSL VPN Client ได้แล้ว แต่ถ้าหากใช้การตั้งค่าตามขั้นตอนที่ผ่านมา เมื่อเครื่องของผู้ใช้ทำการเชื่อมต่อเข้าใช้งาน SVC จะทำให้เครื่องของผู้ใช้ ไม่สามารถที่จะเชื่อมต่อไปยังที่อื่น ๆ ได้ นอกเหนือจากเครือข่ายภายในฝั่ง WebVPN Server เนื่องจากเรายังไม่ได้มีการตั้งค่า Split Tunnel เอาไว้ ซึ่งเราสามารถทำการตั้งค่า Split Tunnel ได้ เพื่อให้ผู้ใช้ที่ทำการเชื่อมต่อเข้ามา จะยังสามารถเชื่อมต่อไปยังที่อื่น ๆ เช่น อินเทอร์เน็ต ได้พร้อม ๆ กับการเชื่อมต่อสู่ WebVPN Server
ตัวอย่าง
Running-config(config)#webvpn context ssl-con-01
Running-config(config-webvpn-context)#policy group ssl-policy-01
Running-config(config-webvpn-group)#svc split include 10.10.10.0 255.255.255.0
Running-config(config-webvpn-group)#exit
จากตัวอย่างด้านบน เป็นการตั้งค่า WebVPN Split Tunnel โดยกำหนดให้เครื่องของผู้ใช้ที่ทำการเชื่อมต่อเข้ามาส่งข้อมูลไปยัง WebVPN Server เฉพาะข้อมูลที่มี Destination อยู่ใน Subnet 10.10.10.0/24 เท่านั้น ทำให้สามารถใช้งานอินเทอร์เน็ตไปพร้อม ๆ กับการใช้งาน SVC ได้
หลังจากทำการกำหนดค่าตามตัวอย่างด้านบนเรียบร้อยแล้ว เมื่อทำการเชื่อมต่อเข้าใช้งาน SVC อีกครั้ง ก็จะพบว่ามีสถานะ ดังรูปครับ
และในการใช้งาน SVC ถ้าหากว่าไม่ต้องการให้เครื่องของผู้ใช้ทำการดาวน์โหลด Software ไปติดตั้งใหม่ทุกครั้งที่เริ่มการเชื่อมต่อใหม่ เราก็สามารถกำหนดให้เก็บการตั้งค่าไว้บนเครื่องของผู้ใช้ได้ ด้วยการใช้คำสั่ง "svc keep-client-installed" ทำให้เมื่อผู้ใช้ทำการเชื่อมต่อเข้ามาใหม่ ก็ไม่ต้องดาวน์โหลด Software มาติดตั้งใหม่อีกครั้ง สามารถเริ่มการเชื่อมต่อได้เลย ทั้งนี้การใช้งานคุณสมบัตินี้ ก็ขึ้นอยู่กับนโยบายในการรักษาความปลอดภัยของแต่ละองค์กร เช่น บางองค์กรก็อาจจะไม่ต้องการให้ทำการติดตั้ง SVC ไว้บนเครื่องของผู้ใช้ เป็นต้น
ตัวอย่าง
Running-config(config)#webvpn context ssl-con-01
Running-config(config-webvpn-context)#policy group ssl-policy-01
Running-config(config-webvpn-group)#svc keep-client-installed
Running-config(config-webvpn-group)#exit
9.การตรวจสอบการทำงาน
เราสามารถใช้คำสั่ง ดังต่อไปนี้ในการตรวจสอบการทำงานของ SSL VPN Client WebVPN ได้
- show webvpn context
- show webvpn gateway
- show webvpn session context all
- show webvpn policy group <policy name> context all
ตัวอย่าง
Running-config#show webvpn context
Codes: AS - Admin Status, OS - Operation Status
VHost - Virtual Host
Context Name Gateway Domain/VHost VRF AS OS
------------ ------- ------------ ------- ---- --------
ssl-con-01 ssl-gw-0 - - up up
Running-config#show webvpn gateway
Gateway Name Admin Operation
------------ ----- ---------
ssl-gw-01 up up
Running-config#show webvpn gateway ssl-gw-01
Admin Status: up
Operation Status: up
Error and Event Logging: Disabled
IP: 175.88.92.129, port: 443
HTTP Redirect port: 80
SSL Trustpoint: TP-self-signed-2505547417
FVRF Name not configured
Running-config#show webvpn session context all
WebVPN context name: ssl-con-01
Client_Login_Name Client_IP_Address No_of_Connections Created Last_Used
engineer 113.42.56.124 2 00:03:20 00:01:42
Running-config#show webvpn policy group ssl-policy-01 context all
WEBVPN: group policy = ssl-policy-01 ; context = ssl-con-01
idle timeout = 2100 sec
session timeout = Disabled
functions =
svc-enabled
citrix disabled
address pool name = "ssl-client-pool"
dpd client timeout = 300 sec
dpd gateway timeout = 300 sec
keepalive interval = 30 sec
SSLVPN Full Tunnel mtu size = 1406 bytes
keep sslvpn client installed = enabled
rekey interval = 3600 sec
rekey method =
lease duration = 43200 sec
split include = 10.10.10.0 255.255.255.0
DNS primary server = 203.144.207.29
เพียงเท่านี้ก็เสร็จเรียบร้อยแล้วครับ สำหรับ SSL VPN Client WebVPN โดยเราสามารถที่จะใช้งานทั้ง Clientless, Thin-Client ไปควบคู่กับ SSL VPN Client WebVPN ก็ได้นะครับ เช่นจากรูป ผมได้นำการตั้งค่า WebVPN ทั้งสองรูปแบบที่ได้เคยแนะนำไป มารวมเข้ากับการตั้งค่าในบทความนี้ ก็จะได้เวปเพจดังรูปด้านล่างนี้ครับ ^_^
Sunday, June 26, 2011
การตั้งค่า Thin-Client WebVPN บน Cisco IOS Router
Configure Thin-Client WebVPN (SSL-VPN) on Cisco IOS Router
สวัสดีกันอีกครั้งครับ หลังจากบทความที่ผ่านมา ได้ทำการแนะนำให้รู้จักกับการตั้งค่า Clientless WebVPN หรือ SSL-VPN กันไปแล้วในบทความ : การตั้งค่า Clientless WebVPN(SSL-VPN) บน Cisco IOS Router มาในวันนี้ ผมก็ขอที่จะแนะนำให้เพื่อน ๆ ได้รู้จักกับ WebVPN หรือ SSL-VPN อีกรูปแบบหนึ่งกันนะครับ นั่นก็คือ Thin-Client WebVPN นั่นเองครับ
การตั้งค่า WebVPN หรือ SSL-VPN นี้สามารถทำได้บน Cisco Router IOS Software Release 12.4(6)T เป็นต้นมานะครับ และสำหรับเพื่อน ๆ ที่ยังไม่รู้จักกับ WebVPN ผมก็ขอแนะนำให้ติดตามบทความ มาทำความรู้จักกับ Cisco WebVPN (SSL VPN) กันเถอะ ก่อนนะครับ แต่สำหรับเพื่อน ๆ ที่พอจะรู้จักการทำงานมาบ้างแล้ว เราก็มาดูเทคนิคการตั้งค่ากันเลยดีกว่านะครับ
WebVPN หรือ SSL-VPN นั้น จะทำให้ผู้ใช้สามารถเชื่อมต่อมาสู่ WebVPN Server เพื่อเข้ามาใช้งานทรัพยากรภายในองค์กร ได้จากทุก ๆ ที่ ที่สามารถเชื่อมต่อสู่อินเทอร์เน็ตได้ อีกทั้งยังมีการรักษาความปลอดภัย โดยการเข้ารหัสข้อมูลด้วยการใช้ SSL หรือ TLS Protocol โดยที่เครื่องของผู้ใช้ไม่ต้องทำการติดตั้ง ซอฟท์แวร์พิเศษใด ๆ เพิ่มเติม เพียงแค่มีการใช้งาน Web Browser ใด ๆ ก็ได้ในการเชื่อมต่อ
จากบทความที่ผ่านมา จะเป็นการแนะนำการตั้งค่าและการใช้งาน Clientless WebVPN ซึ่งสามารถใช้งานได้เฉพาะ Application ในรูปแบบ Web Application เท่านั้น จะไม่สามารถใช้งาน Application อื่น ๆ ที่นอกเหนือจากรูปแบบ Web Based ได้ แต่ในวันนี้ ผมจะขอแนะนำให้เพื่อน ๆ ได้รู้จักกับ WebVPN อีกประเภทหนึ่ง ที่สามารถนำไปใช้งานได้กับ Application ที่ใช้งานแบบ TCP Static Port Number อย่างเช่น Telnet (23), SSH (22), POP3 (110), IMAP4 (143), SMTP (25) หรืออื่น ๆ ได้ นั่นก็คือ Thin-Client WebVPN (Port-forwarding) นั่นเองครับ
การใช้งาน Thin-Client WebVPN (Port-forwarding) นั้น บนเครื่องของผู้ใช้จะต้องทำการดาวน์โหลด Java-based applet มาเพื่อติดตั้งลงบนเครื่อง(การดาวน์โหลดจะทำโดยอัตโนมัติเมื่อเริ่มเชื่อมต่อ) เพื่อที่จะให้สามารถเชื่อมต่อไปใช้งาน Application ในรูปแบบ Static Port Number ได้ โดยจะรองรับเฉพาะ Application ที่ทำงานผ่านโปรโตคอล TCP เท่านั้น จะไม่รองรับการใช้งานกับ Application ที่ทำงานผ่านโปรโตคอล UDP และไม่สามารถรองรับ Application ที่ทำงานในรูปแบบ Dynamic Port Number อย่างเช่น FTP ได้
ในส่วนของการตั้งค่า Thin-Client WebVPN (Port-forwarding) นั้น จะมีขั้นตอนที่เหมือนกับการตั้งค่า Clientless WebVPN โดยจะแตกต่างก็เพียงแต่จะมีการตั้งค่า port-forward เพิ่มขึ้นมาเพียงส่วนเดียว ซึ่งในการใช้งานจริงนั้นเราก็สามารถใช้งานได้ทั้ง Clientless และ Thin-Clinet WebVPN ไปพร้อม ๆ กันได้
สำหรับขั้นตอนในการตั้งค่า Thin-Client WebVPN (Port-forwarding) บน Cisco IOS Router ก็มีดังนี้ครับ
- ทำการตั้งค่าพื้นฐานของอุปกรณ์ เช่น hostname, domain-name, ntp เป็นต้น
- ทำการตั้งค่าอินเทอร์เฟสของเราเตอร์ให้เรียบร้อย เช่นการกำหนด ip address การตั้งค่า nat เป็นต้น
- ทำการตั้งค่า AAA เพื่อการพิสูจน์ตัวตนผู้ใช้
- ทำการตั้งค่า WebVPN Gateway เพื่อใช้เป็น gateway ในการเชื่อมต่อของผู้ใช้ WebVPN
- ทำการตั้งค่า WebVPN Context เพื่อกำหนดรายละเอียดต่าง ๆ ในการใช้งาน WebVPN
- ทำการสร้าง Port-forward list ขึ้นมา เพื่อกำหนดถึง Application ที่ต้องการ
- นำ Port-forward list ที่สร้างขึ้นมาไปประกาศใช้งานใน Policy Group
- ตรวจสอบการทำงานและการตั้งค่า
1.การตั้งค่าพื้นฐาน
ขั้นตอนแรกนี้จะเป็นการตั้งค่าพื้นฐานต่าง ๆ ของเราเตอร์ ที่จำเป็นต่อการใช้งาน WebVPN อย่างเช่น hostname, domain-name, ntp เป็นต้น เนื่องจากจะต้องนำค่าเหล่านี้ไปใช้ประกอบในใบ Certificate ที่จะนำไปใช้สำหรับการเข้ารหัสข้อมูล
ตัวอย่าง
Router(config)#hostname Running-config
Running-config(config)#ip domain-name blogspot.com
Running-config(config)#ntp server 203.185.69.60
Running-config(config)#clock timezone ICT 7
2.การตั้งค่าอินเทอร์เฟสของเราเตอร์
ในส่วนนี้ถ้าเป็นเราเตอร์ที่มีการใช้งานอยู่แล้วก็สามารถข้ามไปเลยก็ได้ครับ แต่สำหรับเพื่อน ๆ ที่ยังไม่ได้ทำหรือกำลังทดลองทำ Lab ก็ต้องทำการตั้งค่าอินเทอร์เฟสของเราเตอร์ให้เรียบร้อยก่อนครับ โดยค่าที่จะต้องทำการกำหนดลงไปก็เช่น ip address, การตั้งค่า nat เป็นต้นครับ
ตัวอย่าง
Running-config(config)#int fa0/0
Running-config(config-if)#description # inside interface #
Running-config(config-if)#ip add 10.10.10.1 255.255.255.0
Running-config(config-if)#no shut
Running-config(config-if)#exit
Running-config(config)#int fa0/1
Running-config(config-if)#description # outside interface #
Running-config(config-if)#ip add 175.88.92.129 255.255.255.255
Running-config(config-if)#no shut
Running-config(config-if)#exit
3.การตั้งค่า AAA
จากนั้นจะเป็นขั้นตอนของการตั้งค่า AAA เพื่อใช้ในการพิสูจน์ตัวตนของผู้ใช้ที่ทำการติดต่อมายัง WebVPN Server นี้ โดยจะเป็นการสร้าง Authentication list และสร้าง username ที่ต้องการ สำหรับเพื่อน ๆ ยังไม่ทราบว่า AAA คืออะไร ก็ขอให้ติดตามบทความ : ทำความรู้จักกับ AAA model ก่อนนะครับ
ตัวอย่าง
Running-config(config)#aaa new-model
Running-config(config)#aaa authentication login ssl-vpn local-case
Running-config(config)#username engineer privilege 0 secret 12345
4.การตั้งค่า WebVPN Gateway
เมื่อทำการตั้งค่ารายละเอียดต่าง ๆ ที่เกี่ยวข้องกับการทำงานของ WebVPN เรียบร้อยแล้ว เราก็จะมาเริ่มทำการตั้งค่า WebVPN กันซะทีนะครับ นั่นก็คือการสร้าง WebVPN Gateway ซึ่งจริง ๆ แล้วเราจะต้องทำการสร้าง RSA Keys ก่อน แต่ในขั้นตอนนี้ เมื่อเราทำการสร้าง WebVPN Gateway ตัวอุปกรณ์ก็จะสร้าง RSA Keys ขึ้นมาให้โดยอัตโนมัติเลยครับ ผมก็เลยขอข้ามขั้นตอนการสร้าง RSA Keys ไปนะครับ(หรือสำหรับเพื่อน ๆ ที่ต้องการใช้ Certificate จาก CA Server อื่น ๆ ก็สามารถใช้ได้ครับผม)
สำหรับ WebVPN Gateway นี้ จะเป็นการกำหนดรายละเอียด ว่าเราจะให้ผู้ใช้ที่ทำการเชื่อมต่อเข้ามายัง ip address และ port อะไร โดยเปรียบเสมือนเป็น proxy ระหว่างเครื่องของผู้ใช้ที่เชื่อมต่อเข้ามา กับทรัพยากรภายในเครือข่าย โดยเราสามารถสร้าง WebVPN Gateway ได้ด้วยการใช้คำสั่ง "webvpn gateway <name>" ใน global configuration mode ครับ
ตัวอย่าง
Running-config(config)#webvpn gateway ssl-gw-01
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
Running-config(config-webvpn-gateway)#
*Jun 17 03:11:10.725: %SSH-5-ENABLED: SSH 1.99 has been enabled
*Jun 17 03:11:10.965: %PKI-4-NOAUTOSAVE: Configuration was modified. Issue "write memory" to save new certificate
จากตัวอย่างด้านบน เป็นการสร้าง WebVPN Gateway ที่มีชื่อว่า "ssl-gw-01" โดยเมื่อเราทำการสร้าง WebVPN Gateway แล้ว ถ้าบนตัวอุปกรณ์ของเรายังไม่มี หรือไม่ได้กำหนด RSA Keys เอาไว้ ตัวเราเตอร์ก็จะทำการสร้าง RSA Keys ขนาด 1024 bit ขึ้นมาให้โดยอัตโนมัติครับ
และเมื่อทำการสร้าง WebVPN Gateway แล้ว เราก็จะต้องมาทำการกำหนดรายละเอียดต่าง ๆ ของ WebVPN Gateway ของเรากันครับ
ตัวอย่าง
Running-config(config)#webvpn gateway ssl-gw-01
Running-config(config-webvpn-gateway)#hostname Running-config
Running-config(config-webvpn-gateway)#ip address 175.88.92.129 port 443
Running-config(config-webvpn-gateway)#http-redirect port 80
Running-config(config-webvpn-gateway)#inservice
Running-config(config-webvpn-gateway)#exit
จากตัวอย่างด้านบน เป็นการกำหนดค่า WebVPN Gateway โดยกำหนดให้ใช้ hostname เป็น "Running-config" และให้ใช้ IP Address 175.88.92.129 Port 443 (https) ในการเชื่อมต่อสู่ WebVPN โดยมีการกำหนดให้ทำการ redirect ถ้ามีผู้ใช้เรียกใช้งานผ่าน port 80 (http) มาด้วย จากนั้นจึงเปิดใช้งานด้วยการใช้คำสั่ง "inservice"
5.การตั้งค่า WebVPN Context
หลังจากที่ทำการตั้งค่า WebVPN Gateway เรียบร้อยแล้ว ในขั้นตอนต่อมาจะเป็นการตั้งค่า WebVPN Context ที่จะใช้สำหรับกำหนดเนื้อหาภายในหน้าเวปเพจ SSL-VPN ของเรา โดยเราสามารถสร้าง WebVPN Context ได้ด้วยการใช้คำสั่ง "webvpn context <name>" ใน global configuration mode ครับ
ตัวอย่าง
Running-config(config)#webvpn context ssl-con-01
Running-config(config-webvpn-context)#gateway ssl-gw-01
Running-config(config-webvpn-context)#inservice
Running-config(config-webvpn-context)#exit
จากตัวอย่างด้านบน เป็นการตั้งค่า WebVPN Context ที่ใช้ชื่อว่า "ssl-con-01" โดยกำหนดให้ใช้งาน Context นี้กับ gateway ที่มีชื่อว่า "ssl-gw-01" (ที่เราทำการสร้างไว้เมื่อขั้นตอนที่ผ่านมา) จากนั้นก็ทำการเปิดการทำงานของ Context นี้ ด้วยการใช้คำสั่ง "inservice"
และเมื่อทำตามตัวอย่างด้านบนเรียบร้อยแล้ว เพื่อน ๆ สามารถใช้ Web Browser ทดลองเข้าใช้งาน WebVPN จากเครื่องของผู้ใช้ได้ โดยกำหนด URL ตามหมายเลข IP Address ที่ได้กำหนดไว้ในขั้นตอนที่ผ่านมา (จากตัวอย่างนี้คือ https://175.88.92.129)
ทั้งนี้ เราสามารถทำการปรับเปลี่ยนค่าต่าง ๆ เพื่อกำหนดรูปแบบ หน้าเวปเพจตามที่ต้องการได้ครับ ซึ่งในส่วนนี้ ก็แล้วแต่เพื่อน ๆ เลยครับว่าต้องการให้หน้าเวปเพจของเรานั้นมีรูปแบบใด หรือจะทดลองตามตัวอย่างการตั้งค่าของผมก็ได้นะครับ
ตัวอย่าง
Running-config(config)#webvpn context ssl-con-01
Running-config(config-webvpn-context)#title "Running-config"
Running-config(config-webvpn-context)#login-message "Welcome To<P>Running-config<br>SSL-VPN"
Running-config(config-webvpn-context)#login-photo file login_photo.jpg
Running-config(config-webvpn-context)#logo file Running-config67x40.gif
Running-config(config-webvpn-context)#color #B9D3EE
Running-config(config-webvpn-context)#secondary-color #3063A5
Running-config(config-webvpn-context)#title-color #283A90
Running-config(config-webvpn-context)#exit
หลังจากทำการกำหนดค่าตามตัวอย่างด้านบนเรียบร้อยแล้ว เมื่อทดลองใช้ Web Browser เชื่อมต่อมายัง WebVPN Server อีกครั้ง ก็จะพบกับหน้าเวปเพจ ดังรูปด้านล่างครับ
6.การตั้งค่า Port-forward list
ในขั้นตอนที่ผ่าน ๆ มา จะเป็นการตั้งค่าที่มีขั้นตอนเหมือนกันกับ Clientless WebVPN แต่ในขั้นตอนนี้ จะเป็นขั้นตอนที่แตกต่างจากการตั้งค่า Clientless WebVPN ครับ โดยเราจะต้องทำการสร้าง Port-forward list ที่จะใช้ในการระบุถึง Application และหมายเลข IP Address ของอุปกรณ์ที่เราต้องการจะให้บริการแก่ผู้ใช้ครับ โดยในการสร้าง Port-forward list นี้ ก็สามารถทำได้ด้วยการใช้คำสั่ง "port-forward" ใน WebVPN Context Configuration mode ครับผม
ตัวอย่าง
Running-config(config)#webvpn context ssl-con-01
Running-config(config-webvpn-context)#port-forward ssl-pf-01
Running-config(config-webvpn-port-fwd)#local-port 2300 remote-server "10.10.10.2" remote-port 23 description "Telnet To Core Switch"
Running-config(config-webvpn-port-fwd)#local-port 2200 remote-server "10.10.10.2" remote-port 22 description "SSH To Core Switch"
Running-config(config-webvpn-port-fwd)#local-port 2500 remote-server "10.10.10.5" remote-port 25 description "SMTP Server"
Running-config(config-webvpn-port-fwd)#local-port 1100 remote-server "10.10.10.5" remote-port 110 description "POP3 Server"
Running-config(config-webvpn-port-fwd)#exit
จากตัวอย่างด้านบน เป็นการตั้งค่า Port-forward list ที่มีชื่อว่า "ssl-pf-01" โดยมีการกำหนดรายการ Application เอาไว้ โดยตัวเราเตอร์จะทำหน้าที่เสมือนเป็น Proxy ระหว่างเครื่องของผู้ใช้ที่ทำการเชื่อมต่อเข้ามา กับอุปกรณ์ภายในเครือข่าย ซึ่งจากตัวอย่างด้านบนจะขอยกตัวอย่างมาเพียงรายการเดียวนะครับ เช่น "local-port 2300 remote-server "10.10.10.2" remote-port 23 description "Telnet To Core Switch"" ก็จะหมายถึงตัวเราเตอร์จะทำการเปิด port 2300 ไว้ โดยเมื่อมีการเชื่อมต่อมายัง port 2300 นี้ ตัวเราเตอร์จะทำการส่งต่อข้อมูลนั้น ๆ ไปยังอุปกรณ์ที่มีหมายเลข IP Address เป็น 10.10.10.2 port 23 เป็นต้น
7.การนำ Port-forward list ไปใช้งานบน Policy Group
เมื่อเราทำการตั้งค่า Port-forward list เรียบร้อยแล้ว ในตอนนี้จะยังไม่สามารถใช้งานได้นะครับ โดยเราจะต้องนำ Port-forward list ที่เราสร้างขึ้นมาในขั้นตอนที่ผ่านมา ไปประกาศใช้งานบน Policy Group ก่อนครับ
ตัวอย่าง
Running-config(config)#webvpn context ssl-con-01
Running-config(config-webvpn-context)#policy group ssl-policy-01
Running-config(config-webvpn-group)#port-forward ssl-pf-01
Running-config(config-webvpn-group)#exit
Running-config(config-webvpn-context)#default-group-policy ssl-policy-01
Running-config(config-webvpn-context)#exit
จากตัวอย่างด้านบน เป็นการสร้าง Policy Group ที่มีชื่อว่า "ssl-policy-01" โดยกำหนดให้ใช้งาน Port-forward list ที่มีชื่อว่า "ssl-pf-01" หลังจากนั้น ก็จะต้องไปทำการกำหนดให้ Context นี้ ใช้งาน Policy Group ที่เราสร้างขึ้นมาเป็น default-group-policy ด้วยครับผม
หลังจากทำการกำหนดค่าตามตัวอย่างด้านบนเรียบร้อยแล้ว เมื่อทดลองใช้ Web Browser เชื่อมต่อมายัง WebVPN Server อีกครั้ง และทำการ login เข้าใช้งาน ก็จะพบกับหน้าเวปเพจ ดังรูปด้านล่างครับ
และเมื่อคลิ้กที่ Start ในส่วนของ Thin Client Application ก็จะพบกับ หน้าต่างดังรูปด้านล่างครับ
ในส่วนของการใช้งาน สมมุติว่าผู้ใช้ต้องการที่จะ Telnet มายัง Core Switch ก็จะต้องทำการ Telnet มายัง 127.0.0.1(loopback) ผ่าน port 2300 ครับ ก็จะสามารถ Telnet มายัง Core Switch ที่มีหมายเลข IP Address เป็น 10.10.10.2 ได้เลยครับผม
8.การตรวจสอบการทำงาน
เราสามารถทำการตรวจสอบการทำงานของ Thin-Client WebVPN ได้ โดยคำสั่งที่ใช้ในการตรวจสอบจะเหมือนกันกับการตรวจสอบการทำงานของ Clientless WebVPN ครับ โดยคำสั่งที่ใช้ในการตรวจสอบการทำงาน ก็เช่น
- show webvpn gateway
- show webvpn context <context-name>
- show webvpn policy group <policy-name> context all
- show webvpn session context all
เพียงเท่านี้ก็เสร็จเรียบร้อยแล้วครับ สำหรับ Thin-Client WebVPN (SSL-VPN) โดยเราสามารถที่จะใช้งาน Clientless WebVPN ไปควบคู่กับ Thin-Client WebVPN ก็ได้นะครับ เช่นจากรูป ผมได้นำการตั้งค่า Clientless WebVPN ที่ได้แนะนำไปเมื่อบทความที่ผ่านมา มารวมเข้ากับการตั้งค่าในบทความนี้ ก็จะได้เวปเพจดังรูปด้านล่างนี้ครับ ^_^
Saturday, June 11, 2011
การตั้งค่า Clientless WebVPN(SSL-VPN) บน Cisco IOS Router
Configure Clientless WebVPN (SSL-VPN) on Cisco IOS Router
สวัสดีครับเพื่อน ๆ ในวันนี้ ผมก็จะมาแนะนำเรื่องราวที่เกี่ยวกับ WebVPN หรือ SSL-VPN ที่ได้เคยพูดถึงไว้บ้างแล้วจากบทความก่อนหน้านี้นะครับ แต่ในบทความก่อนหน้านี้เรายังไม่ได้พูดถึงเทคนิคการตั้งค่ากันเลยใช่มั้ยครับ มาในวันนี้ผมจึงขอแนะนำเทคนิคการตั้งค่า WebVPN แบบพื้นฐานที่สุดกันก่อนครับ นั่นก็คือ การตั้งค่า WebVPN หรือ SSL-VPN แบบ Clientless บน Cisco IOS Router นั่นเองครับ
WebVPN หรือ SSL-VPN นั้น จะทำให้ผู้ใช้สามารถเชื่อมต่อมาสู่ WebVPN Server เพื่อเข้ามาใช้งานทรัพยากรภายในองค์กรได้จากทุก ๆ ที่ ที่สามารถเชื่อมต่อสู่อินเทอร์เน็ตได้ อีกทั้งยังมีการรักษาความปลอดภัย โดยการเข้ารหัสข้อมูลด้วยการใช้ SSL หรือ TLS Protocol โดยที่เครื่องของผู้ใช้ไม่ต้องทำการติดตั้ง ซอฟท์แวร์พิเศษใด ๆ เพิ่มเติม เพียงแค่มีการใช้งาน Web Browser ใด ๆ ก็ได้ในการเชื่อมต่อ แต่ในการใช้งาน Clientless WebVPN นั้น จะสามารถใช้งานได้เฉพาะ Application ในรูปแบบ Web Application เท่านั้น ไม่สามารถใช้งาน Application อื่น ๆ ที่นอกเหนือจากนี้ เช่น Telnet หรือ Application อื่น ๆ ที่ไม่มีการใช้งานในรูปแบบ Web Based ได้
ภาพแสดงการใช้ Wireshark ดักจับ Packet ที่ใช้งาน SSL-VPN จะพบว่ามีการเข้ารหัสข้อมูลเอาไว้
การใช้งาน Clientless WebVPN มีข้อดี ดังนี้
- ผู้ใช้สามารถเชื่อมต่อเพื่อใช้งานทรัพยากรต่าง ๆ ในรูปแบบ Web Based จากที่ใดก็ตามที่สามารถเชื่อมต่อสู่อินเทอร์เน็ตได้
- ผู้ใช้ไม่จำเป็นที่จะต้องทำการติดตั้งซอฟท์แวร์พิเศษใด ๆ เพิ่มเติม เพียงแค่ใช้งาน Web Browser ทั่วไปในการเชื่อมต่อ
- รองรับการใช้งาน Web Application ทั้งแบบ HTML และ JavaScript เช่นการใช้งาน webmail เป็นต้น
- รองรับการใช้งานใน Application ต่าง ๆ ดังนี้ Intranet, Citrix, Windows file Shared(CIFS)
- รองรับการใช้งานร่วมกับ Web Browser ที่หลากหลาย
เอาล่ะครับ ยังไงเรามาเริ่มดูตัวอย่างการตั้งค่ากันเลยดีกว่านะครับ โดยขั้นตอนในการตั้งค่า WebVPN หรือ SSL-VPN ในแบบ Clientless บน Cisco IOS Router ก็มีดังนี้ครับ
- ทำการตั้งค่าพื้นฐานของอุปกรณ์ เช่น hostname, domain-name, ntp เป็นต้น
- ทำการตั้งค่าอินเทอร์เฟสของเราเตอร์ให้เรียบร้อย เช่นการกำหนด ip address การตั้งค่า nat เป็นต้น
- ทำการตั้งค่า AAA เพื่อการพิสูจน์ตัวตนผู้ใช้
- ทำการตั้งค่า WebVPN Gateway เพื่อใช้เป็น gateway ในการเชื่อมต่อของผู้ใช้ WebVPN
- ทำการตั้งค่า WebVPN Context เพื่อกำหนดรายละเอียดต่าง ๆ ในการใช้งาน WebVPN
- (ทางเลือก)ทำการตั้งค่า WebVPN Policy Group เพื่อกำหนดรูปแบบและนโยบายในการใช้งาน WebVPN
- ตรวจสอบการทำงานและการตั้งค่า
ขั้นตอนแรก ก็จะเป็นการกำหนดค่า configuration ทั่วไป ของเราเตอร์นะครับ เช่น hostname, domain-name, ntp server และการตั้งวันและเวลาให้ตรงครับ ที่จำเป็นที่จะต้องตั้งค่าเหล่านี้ให้ถูกต้อง ก็เนื่องมาจาก ในการใช้งาน SSL-VPN จะต้องมีการใช้ Certificate ในการเข้ารหัสข้อมูล ที่ไอ้เจ้า Certificate ที่ว่านี้ ก็จะมีข้อมูล วัน-เวลา รวมทั้งชื่ออุปกรณ์อยู่ด้วย ซึ่งถ้าไม่ถูกต้อง ก็อาจจะทำให้การใช้งาน SSL-VPN มีปัญหาได้ครับ
ตัวอย่าง
Router(config)#hostname Running-config
Running-config(config)#ip domain-name blogspot.com
Running-config(config)#ntp server 203.185.69.60
Running-config(config)#clock timezone ICT 7
จากนั้น ก็จะเป็นการตั้งค่าอินเทอร์เฟสที่ใช้งานครับ เช่นการกำหนด ip address ให้กับแต่ละอินเทอร์เฟส หรือการกำหนดค่า nat เป็นต้นครับ โดยถ้าเพื่อน ๆ มีการตั้งค่าในส่วนนี้บนอุปกรณ์ของเพื่อน ๆ แล้ว ก็สามารถข้ามขั้นตอนนี้ไปก็ได้ครับ
ตัวอย่าง Running-config(config)#int fa0/1
Running-config(config)#int fa0/0
Running-config(config-if)#description # Inside Interface #
Running-config(config-if)#ip add 10.10.10.1 255.255.255.0
Running-config(config-if)#no shut
Running-config(config-if)#exit
Running-config(config-if)#description # Outside Interface #
Running-config(config-if)#ip add 175.88.92.129 255.255.255.248
Running-config(config-if)#no shut
Running-config(config-if)#exit
จากนั้น จะเป็นการตั้งค่า AAA ครับ ซึ่งจะใช้ในการพิสูจน์ตัวตนของผู้ใช้ โดยถ้าเพื่อน ๆ ยังไม่รู้จักว่า AAA คืออะไร ก็เชิญติดตามบทความ:ทำความรู้จักกับ AAA model ได้เลยครับ
ตัวอย่าง
Running-config(config)#aaa new-model
Running-config(config)#aaa authentication login ssl-vpn local-case
Running-config(config)#username sale privilege 0 password 12345
จากนั้นก็จะเป็นการตั้งค่า WebVPN Gateway ครับ ซึ่งจะเป็นการกำหนดรายละเอียด ว่าเราจะให้ผู้ใช้ที่ต้องการเชื่อมต่อมายัง WebVPN นี้ เชื่อมต่อมาใน ip address และ port ใดครับ โดย WebVPN Gateway นี้จะเป็นเสมือนเป็น proxy สำหรับการเชื่อมต่อแต่ละครั้ง เพื่อเป็นการปกป้องทรัพยากรขององค์กร โดยใช้การรักษาความปลอดภัยด้วยการเข้ารหัสด้วย SSL ระหว่าง WebVPN Gateway และ Web Browser บนเครื่องของผู้ใช้ โดยเราสามารถใช้คำสั่ง "webvpn gateway" ได้ใน Global configuration mode เพื่อทำการสร้าง WebVPN Gateway ได้ครับ
ตัวอย่าง Running-config(config-webvpn-gateway)#
Running-config(config)#webvpn gateway SSL-VPN-GW1
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
*Jun 8 11:48:51.129: %SSH-5-ENABLED: SSH 1.99 has been enabled
*Jun 8 11:48:51.389: %PKI-4-NOAUTOSAVE: Configuration was modified. Issue "write memory" to save new certificate
จากตัวอย่างด้านบน เป็นการสร้าง WebVPN Gateway ที่มีชื่อว่า "SSL-VPN-GW1" โดยเมื่อเราใช้คำสั่ง "webvpn gateway SSL-VPN-GW1" แล้ว ถ้าบนเราเตอร์ยังไม่มี Certificate อยู่ ตัวเราเตอร์จะทำการสร้าง Certificate ขนาด 1024 bit ขึ้นมาโดยอัตโนมัติ โดย Certificate นี้จะเก็บอยู่บนตัวอุปกรณ์ ซึ่งเราสามารถใช้ Certificate นี้ในการสร้าง SSL-VPN หรือเราจะใช้ Certificate จาก CA Server อื่น ๆ ก็ได้ เช่นกัน
เมื่อทำการสร้าง Certificate แล้ว ในขั้นต่อมาก็จะเป็นการกำหนดรายละเอียดต่าง ๆ ให้กับ WebVPN Gateway ของเรา ซึ่งค่าที่เราจะต้องทำการกำหนดลงไป ก็เช่น IP Address และหมายเลข Port ที่จะใช้งานสำหรับให้ผู้ใช้ทำการเชื่อมต่อมายัง SSL-VPN Gateway หรือการกำหนดการ redirect (ผู้ใช้สามารถเรียกใช้งานผ่าน port 80 ซึ่งเป็นค่าโดย default ของ http ได้ และ WebVPN Gateway จะทำการ redirect ไปยัง port ที่ใช้งานให้โดยอัตโนมัติ)เป็นต้น จากนั้นก็จะต้องเปิดการทำงานของ WebVPN Gateway นี้ ด้วยการใช้คำสั่ง "inservice" ครับ
Running-config(config-webvpn-gateway)#hostname Running-config
Running-config(config-webvpn-gateway)#ip address 175.88.92.129 port 443
Running-config(config-webvpn-gateway)#http-redirect port 80
Running-config(config-webvpn-gateway)#inservice
หลังจากที่ทำการสร้าง WebVPN Gateway เสร็จเรียบร้อยแล้ว ในขั้นตอนต่อมา ก็จะเป็นการตั้งค่า WebVPN Context ซึ่งใช้ในการกำหนดรายละเอียดต่าง ๆ บนหน้า เวปเพจ ที่ผู้ใช้เข้ามาใช้งาน โดยเราสามารถสร้าง WebVPN Context นี้ได้ ด้วยการใช้คำสั่ง "webvpn context" ใน webvpn gateway configuration mode
ตัวอย่าง
Running-config(config)#webvpn context SSL-VPN-CON01
Running-config(config-webvpn-context)#gateway SSL-VPN-GW1
Running-config(config-webvpn-context)#aaa authentication list ssl-vpn
Running-config(config-webvpn-context)#inservice
Running-config(config-webvpn-context)#exit
จากตัวอย่างด้านบน เป็นการสร้าง WebVPN Context ที่มีชื่อว่า "SSL-VPN-CON01" โดยกำหนดให้ใช้ WebVPN Context นี้ กับ WebVPN Gateway ที่มีชื่อว่า "SSL-VPN-GW1" โดยเมื่อผู้ใช้ต้องการเรียกใช้งานผ่านหน้า Web Browser ก็จะต้องทำการกำหนดใน URL ว่า "https://<ip address>" ก็จะสามารถเชื่อมต่อสู่ Context นี้ได้ ซึ่งในส่วนนี้ ถ้าเราต้องการแยกการใช้งานบน Gateway นี้ออกเป็นหลาย ๆ Context เราก็สามารถใช้คำสั่ง "domain" ตามหลัง Gateway ที่ต้องการได้
ตัวอย่าง(ทางเลือก)
Running-config(config)#webvpn context SSL-VPN-CON01
Running-config(config-webvpn-context)#gateway SSL-VPN-GW1 domain engineer
และถ้าใช้งานตามตัวอย่างด้านบน เมื่อเวลาผู้ใช้เรียกใช้งานผ่านหน้า Web Browser ก็จะต้องทำการกำหนดใน URL ว่า https://<ip address>/engineer จึงจะสามารถเข้าใช้งานใน Context นี้ได้
เมื่อทำการกำหนด WebVPN Gateway ให้กับ WebVPN Context นี้เรียบร้อยแล้ว ในขั้นต่อไปเราก็จะต้องทำการกำหนด AAA list ที่เราจะใช้งานในการพิสูจน์ตัวตนของผู้ใช้ ซึ่งจากตัวอย่างด้านบน เราก็จะใช้งาน AAA Authentication list ที่มีชื่อว่า "ssl-vpn" ครับ และจากนั้นเราก็จะต้องทำการเปิดการทำงานของ Context นี้ ด้วยการใช้คำสั่ง "inservice" ด้วยครับ
เมื่อเราทำการกำหนดค่า WebVPN Gateway และ WebVPN Context เรียบร้อยแล้ว เมื่อทดลองใช้งานจากเครื่องผู้ใช้ โดยทำการเปิด Web Browser มาเชื่อมต่อที่ "https://<ip address>" ก็จะพบหน้าตาตามรูปด้านล่างนี้ครับ
ทั้งนี้ เราสามารถทำการปรับเปลี่ยนค่าต่าง ๆ เพื่อกำหนดรูปแบบ หน้าเวปเพจตามที่ต้องการได้ครับ ซึ่งในส่วนนี้ ก็แล้วแต่เพื่อน ๆ เลยครับว่าต้องการให้หน้าเวปเพจของเรานั้นมีรูปแบบใด หรือจะทดลองตามตัวอย่างการตั้งค่าของผมก็ได้นะครับ
ตัวอย่าง
Running-config(config)#webvpn context SSL-VPN-CON01
Running-config(config-webvpn-context)#title "Running-config"
Running-config(config-webvpn-context)#login-message "Welcome To<P>Running-config<br>SSL-VPN"
Running-config(config-webvpn-context)#login-photo file login_photo.jpg
Running-config(config-webvpn-context)#logo file Running-config67x40.gif
Running-config(config-webvpn-context)#color #B9D3EE
Running-config(config-webvpn-context)#secondary-color #3063A5
Running-config(config-webvpn-context)#title-color #283A90
Running-config(config-webvpn-context)#exit
หลังจากทำการกำหนดค่าตามตัวอย่างด้านบนเรียบร้อยแล้ว เมื่อทดลองใช้ Web Browser เชื่อมต่อมายัง WebVPN Server อีกครั้ง ก็จะพบกับหน้าเวปเพจ ดังรูปด้านล่างครับ
และเมื่อทำการ login โดยทำการใส่ username และ password ที่ถูกต้องลงไปแล้ว ก็จะพบหน้าตาเวปเพจ ดังรูปด้านล่างนี้ครับ
ซึ่งในตอนนี้ เราก็สามารถที่จะใช้งาน WebVPN ในการเข้าใช้ Web Application ได้แล้วครับ โดยสามารถทำการใส่ Address ของ Web Application ที่ต้องการในช่อง URL ได้เลยครับ
และเรายังสามารถอำนวยความสะดวกในการใช้งานให้กับผู้ใช้ได้ ด้วยการสร้าง Bookmark เพื่อให้ผู้ใช้สามารถเข้าใช้งาน Web Application ได้ง่ายขึ้น เพียงแค่คลิ้กตาม Link ที่เราทำการกำหนดค่าเอาไว้ ไม่ต้องจำ Address ของ Web Application เสมอไป โดยเราจะต้องทำการสร้าง “URL List” และ “Policy Group” ก่อนนะครับ จึงจะสามารถใช้งาน Bookmark ได้
ตัวอย่าง Running-config(config)#webvpn context SSL-VPN-CON01
Running-config(config)#webvpn context SSL-VPN-CON01
Running-config(config-webvpn-context)#url-list “Running-config”
Running-config(config-webvpn-url)#heading "Running-Config System"
Running-config(config-webvpn-url)#url-text "Tax Calculator" url-value http://www.ktam.co.th/th/vat.php
Running-config(config-webvpn-url)#exit
Running-config(config-webvpn-context)#policy group SSL-POLICY01
Running-config(config-webvpn-group)#url-list "Running-config"
Running-config(config-webvpn-group)#exit
Running-config(config-webvpn-context)#default-group-policy SSL-POLICY01
Running-config(config-webvpn-context)#exit
จากตัวอย่างด้านบน เป็นการสร้าง URL-List ที่มีชื่อว่า "Running-config" โดยมีการกำหนด URL ไปยัง Web Application ที่ใช้ในการคำนวนภาษีเงินได้นะครับ (ในส่วนนี้ขอยกตัวอย่างโปรแกรมคำนวนภาษีของเวป ktam มานะครับ) และเมื่อเราทำการสร้าง URL-List แล้ว เราก็จะต้องทำการสร้าง Policy Group ด้วย โดยจากตัวอย่างด้านบนนี้ ก็มีการสร้าง Policy Group ที่มีชื่อว่า "SSL-POLICY01" โดยทำการกำหนดให้ Policy นี้ใช้งาน url-list ที่เราสร้างขึ้นมาก่อนหน้านี้ จากนั้นจึงไปทำการกำหนดค่า default-group-policy ของ Context ให้ใช้งาน Policy ที่เราสร้างขึ้นมาครับ
หลังจากที่ทำตามตัวอย่างด้านบนเรียบร้อยแล้ว เมื่อทดสอบเข้าหน้าเวปจะพบว่าสามารถใช้งาน Bookmask ได้แล้วตามภาพด้านล่างนี้นะครับ
และเมื่อคลิ้กไปที่ Link ที่เราทำการกำหนดเอาไว้ ก็จะเข้าสู่หน้า Web Application ที่เราทำการกำหนดไว้ครับ
เรายังสามารถทำการปรับแต่งค่าอื่น ๆ ใน Policy Group ได้อีกนะครับ เช่น การใส่ Banner, การปิดการใช้งาน URL Bar(เพื่อป้องกันไม่ให้ใช้ URL Bar ให้ใช้เฉพาะ Bookmark ที่กำหนดเท่านั้น), การตั้งค่า timeout ต่าง ๆ เป็นต้น
ตัวอย่าง
Running-config(config)#webvpn context SSL-VPN-CON01
Running-config(config-webvpn-context)#policy group SSL-POLICY01
Running-config(config-webvpn-group)#banner "Welcome To Running-config System"
Running-config(config-webvpn-group)#hide-url-bar
Running-config(config-webvpn-group)#timeout idle 1200
Running-config(config-webvpn-group)#timeout session 3600
Running-config(config-webvpn-group)#exit
หลังจากทำการตั้งค่าตามตัวอย่างด้านบนนี้แล้ว เมื่อทำการ login เข้าใช้งาน ก็จะพบกับ Banner ดังรูปด้านล่างนี้ครับ
และเมื่อ login เข้ามาแล้ว ก็จะพบว่าหน้าเวปเพจนั้นจะไม่มี URL Bar แล้วครับผม
ในตอนนี้ เราก็สามารถที่จะใช้งาน Web Application กันได้แล้วนะครับ ถ้าเพื่อน ๆ ต้องการใช้ WebVPN ในการใช้งาน Web Application เพียงอย่างเดียว ก็ไม่ต้องทำการตั้งค่าใด ๆ เพิ่มเติมแล้ว แต่ถ้าเพื่อน ๆ ต้องการที่จะใช้งาน Window File Shared (CIFS) หรือ Citrix ด้วย ก็จะต้องทำการตั้งค่าตามตัวอย่างด้านล่างนี้เพิ่มเติมนะครับ
ในการเปิดการใช้งาน CIFS นี้ จะทำให้ผู้ใช้จากภายนอก สามารถทำการเข้าใช้งาน Window File Shared บนเครื่องคอมพิวเตอร์ภายในเครือข่ายภายในได้ โดยใช้งานผ่านหน้า Web Browser ทำให้สามารถรับ - ส่งไฟล์มายัง File Server ภายในองค์กร จากที่ใด ๆ ก็ตาม ที่สามารถเชื่อมต่อสู่อินเทอร์เน็ตได้
ในการตั้งค่า CIFS นั้น ก็จะต้องทำการกำหนด NetBIOS List บนเราเตอร์ก่อน เนื่องจากในการใช้งาน Window File Shared นั้นจะใช้งานผ่าน NetBIOS ด้วยครับ ซึ่งเราสามารถตั้งค่าได้ตาม ตัวอย่างด้านล่างนี้ครับ
ตัวอย่าง
Running-config(config)#webvpn context SSL-VPN-CON01
Running-config(config-webvpn-context)#nbns-list "NBIOS Server"
Running-config(config-webvpn-nbnslist)#nbns-server 10.10.10.10
Running-config(config-webvpn-nbnslist)#exit
จากตัวอย่างด้านบน เป็นการสร้าง NetBIOS List ที่มีชื่อว่า "NBIOS Server" โดยเราจะต้องกำหนด NetBIOS Server เอาไว้ ซึ่งสามารถใช้เครื่องภายในองค์กรเครื่องใดก็ได้ที่มีการเปิดใช้งาน NetBIOS เอาไว้ครับ
และเมื่อทำการตั้งค่า NetBIOS List แล้ว ในขั้นตอนต่อมา เราก็จะต้องไปทำการกำหนดใน Policy Group กันต่อครับ เพื่อทำการเปิดใช้งาน CIFS ครับผม
ตัวอย่าง
Running-config(config)#webvpn context SSL-VPN-CON01
Running-config(config-webvpn-context)#policy group SSL-POLICY01
Running-config(config-webvpn-group)#nbns-list "NBIOS Server"
Running-config(config-webvpn-group)#functions file-access
Running-config(config-webvpn-group)#functions file-browse
Running-config(config-webvpn-group)#functions file-entry
Running-config(config-webvpn-group)#exit
จากตัวอย่างด้านบน เป็นการกำหนดค่าใน Policy Group เพิ่มเติม โดยทำการกำหนดให้ใช้ NetBIOS List ที่มีชื่อว่า "NBIOS Server" และทำการเปิดการทำงานของ CIFS ด้วยการใช้คำสั่ง "function file-access" และ "function file-browser" ครับ และถ้าเราต้องการให้มีช่องสำหรับใส่ Address สำหรับ File Server เราก็สามารถใช้คำสั่ง "function file-entry" ในการเปิดการทำงานได้ ตามตัวอย่างด้านบนครับ
หลังจากทำการตั้งค่าตามตัวอย่างด้านบนแล้ว เมื่อเข้าสู่หน้าเวปเพจก็จะพบหน้าตาตามตัวอย่างด้านล่างนี้ครับ
เราสามารถเข้าใช้งาน Window File Server ที่มีการ Shared File เอาไว้ได้ ด้วยการใส่ Address เข้าไปในช่อง “Network File:” เราก็จะสามารถเข้าไปใช้งาน File Server ได้ตามรูปด้านล่างนี้เลยครับ
และถ้าเราต้องการกำหนด Bookmark สำหรับ File Shared และปิดการใช้งานช่องสำหรับใส่ Address สำหรับ File Server เราก็สามารถทำได้ ด้วยการสร้าง CIFS URL List และนำไปเปิดใช้งานใน Policy Group จากนั้นจึงทำการปิดการทำงาน file-entry ตามตัวอย่างด้านล่างนี้ครับ
ตัวอย่าง
Running-config(config)#webvpn context SSL-VPN-CON01
Running-config(config-webvpn-context)#cifs-url-list "File Share"
Running-config(config-webvpn-cifs-url)#heading "File Sharing"
Running-config(config-webvpn-cifs-url)#url-text "File Server 01" url-value "10.10.10.10"
Running-config(config-webvpn-cifs-url)#url-text "File Server 02" url-value "10.10.10.30"
Running-config(config-webvpn-cifs-url)#exit
Running-config(config-webvpn-context)#policy group SSL-POLICY01
Running-config(config-webvpn-group)#cifs-url-list "File Share"
Running-config(config-webvpn-group)#no functions file-entry
Running-config(config-webvpn-group)#exit
และถ้ามีการใช้งาน Citrix บนระบบของเพื่อน ๆ ก็สามารถ เปิดการทำงานของ Citrix ได้ใน Policy Group นี้เช่นกันครับ
ตัวอย่าง
Running-config(config)#webvpn context SSL-VPN-CON01
Running-config(config-webvpn-context)#policy group SSL-POLICY01
Running-config(config-webvpn-group)#citrix enabled
Running-config(config-webvpn-group)#exit
หลังจากทำการกำหนดค่าตามตัวอย่างด้านเรียบร้อยแล้ว เมื่อ login เข้าสู่หน้าเวปเพจก็จะพบหน้าตาตามรูปด้านล่างนี้เลยครับ
เพียงเท่านี้ ก็จะสามารถสร้าง URL List สำหรับ Window File Shared ได้แล้วครับ สำหรับการใช้งานต่าง ๆ นั้น ก็ขอให้เพื่อน ๆ นำไปปรับใช้กันตามสะดวกนะครับ สำหรับตัวอย่างการตั้งค่าในวันนี้ก็ขอจบลงแต่เพียงเท่านี้ ในขั้นตอนต่อไป ก็จะแนะนำคำสั่ง ที่ใช้ในการตรวจสอบการทำงานกันนะครับ
คำสั่งที่ใช้ในการตรวจสอบการทำงาน
- show webvpn gateway
- show webvpn context <context-name>
- show webvpn policy group <policy-name> context all
- show webvpn session context all
ตัวอย่าง
Running-config#show webvpn gateway
Gateway Name Admin Operation
------------ ----- ---------
SSL-VPN-GW1 up up
Running-config#show webvpn context SSL-VPN-CON01
Admin Status: up
Operation Status: up
Error and Event Logging: Disabled
CSD Status: Disabled
Certificate authentication type: All attributes (like CRL) are verified
AAA Authentication List: ssl-vpn
AAA Authorizationtion List not configured
AAA Authentication Domain not configured
Default Group Policy: SSL-POLICY01
Associated WebVPN Gateway: SSL-VPN-GW1
Domain Name and Virtual Host not configured
Maximum Users Allowed: 1000 (default)
NAT Address not configured
VRF Name not configured
Virtual Template not configured
Running-config#show webvpn policy group SSL-POLICY01 context all
WEBVPN: group policy = SSL-POLICY01 ; context = SSL-VPN-CON01
banner = "Welcome To Running-config System"
url list name = "Running-config"
cifs url list name = "File Share"
idle timeout = 1200 sec
session timeout = 3600 sec
nbns list name = "NBIOS Server"
functions =
hide-urlbar
file-access
file-browse
citrix enabled
dpd client timeout = 300 sec
dpd gateway timeout = 300 sec
keepalive interval = 30 sec
SSLVPN Full Tunnel mtu size = 1406 bytes
keep sslvpn client installed = disabled
rekey interval = 3600 sec
rekey method =
lease duration = 3600 sec
Running-config#show webvpn session context all
WebVPN context name: SSL-VPN-CON01
Client_Login_Name Client_IP_Address No_of_Conn Created Last_Used
sale 110.77.176.79 2 00:04:50 00:04:49
engineer 109.62.125.81 6 00:04:01 00:03:39
Wednesday, June 1, 2011
มาทำความรู้จักกับ Cisco WebVPN (SSL VPN) กันเถอะ
ในสมัยก่อน การติดต่อสื่อสารระหว่างเครือข่ายส่วนตัวที่อยู่ห่างไกลกันนั้น จะต้องใช้บริการอย่างเช่น leased-line หรือ frame relay ที่มีราคาที่ค่อนข้างสูง แต่ในปัจจุบันนี้ ได้มีการใช้งาน VPN ซึ่งมีความสามารถในการเชื่อมต่อเครือข่ายส่วนตัวเข้าด้วยกันผ่านเครือข่ายสาธารณะได้ โดยมีค่าใช้จ่ายที่น้อยกว่าการใช้งาน leased-line พร้อมทั้งมีการรักษาความปลอดภัยในการส่งข้อมูล โดยการเข้ารหัสข้อมูลที่ทำการส่งออกไป ซึ่งโปรโตคอลที่นำมาใช้ในการเข้ารหัสข้อมูลนี้ก็มีหลากหลายรูปแบบ ยกตัวอย่างเช่น IPSec ที่เคยได้แนะนำให้เพื่อน ๆ ได้ทำความรู้จักกันไปบ้างแล้วในบทความเก่า ๆ แต่ในวันนี้ ผมจะขอแนะนำให้เพื่อน ๆ ได้รู้จักกับ VPN อีกประเภทหนึ่ง ที่ใช้ SSL (Secure Socket Layer) ในการรักษาความปลอดภัยของขัอมูล นั่นก็คือการใช้งาน WebVPN นั่นเองครับ
สำหรับอุปกรณ์ที่รองรับกับการนำมาใช้งานเป็น WebVPN Server นั้น สามารถใช้ได้ทั้ง Cisco IOS Router หรือจะใช้ Cisco ASA Firewall ก็ได้ โดยจะมีรูปแบบการใช้งานที่เหมือนกัน แต่จะแตกต่างกันในรายละเอียดในการตั้งค่า ซึ่งจะกล่าวถึงในบทความต่อ ๆ ไปนะครับ
Cisco WebVPN มีรูปแบบการใช้งานอยู่ 3 รูปแบบ ดังนี้
- Clientless
- Thin-client (Port-forwarding Java applet)
- Tunnel mode (SVC)
Clientless Mode
ผู้สามารถเชื่อมต่อเข้าสู่ WebVPN Server เพื่อใช้งานทรัพยากรภายในเครือข่ายได้ด้วยการใช้งาน Web Browser โดยไม่ต้องทำการติดตั้งซอฟต์แวร์พิเศษใด ๆ เพิ่มเติม แต่จะสามารถใช้งานทรัพยากรของเครือข่ายภายใน ได้ในรูปแบบของ Web Application เท่านั้น เช่น การใช้งานเวปไซต์ภายใน intranet หรือการใช้ CIFS ผ่านหน้าเวปไซต์ เป็นต้น เป็นการเชื่อมต่อเข้าใช้งานในระดับ Application Layer ซึ่งรองรับการใช้งานเฉพาะบาง Application เท่านั้น ไม่สามารถใช้งานทรัพยากรของเครือข่ายภายในได้ทุก ๆ อย่าง
ข้อดีของการใช้งาน Clientless Mode
- ผู้ใช้สามารถเชื่อมต่อเพื่อใช้งานทรัพยากรต่าง ๆ ในรูปแบบ Web Based จากที่ใดก็ได้ที่สามารถเชื่อมต่อสู่อินเทอร์เน็ตได้
- ผู้ใช้ไม่จำเป็นที่จะต้องลงซอฟต์แวร์พิเศษใด ๆ เพิ่มเติม เพียงแค่ใช้งาน Web Browser ทั่วไปก็ได้
- รองรับการใช้งาน Web Application ทั้งแบบ HTML และ JavaScript
- รองรับการใช้งานในรูปแบบ ดังนี้ Intranet, Citrix, Windows file share(Common Internet File System(CIFS))
- รองรับการใช้งานร่วมกับ Web Browser ที่หลากหลาย
Thin-Client Mode (Port-forwarding)
ในโหมดนี้ จะสามารถใช้ Web Browser ในการเชื่อมต่อเข้ามา เพื่อใช้งาน Application ในรูปแบบ TCP-Based ได้ ต่างจาก Clientless Mode ที่สามารถใช้งานได้เฉพาะ Web Application เท่านั้น โดย Application ที่รองรับจะต้องใช้งาน TCP Well-known port ที่ใช้ Static Port เท่านั้น (ไม่รองรับการใช้งานกับ Application ที่ใช้ Dynamic port) โดยทั่วไป Application ที่ใช้งานโหมดนี้จะเป็นพวก e-mail เช่น POP3, SMTP, IMAP หรือจำพวก Application ที่ใช้งาน Static port เช่น Telnet, SSH, SNMP เป็นต้น
การทำงานในโหมดนี้ เครื่องของผู้ใช้จะต้องทำการดาวน์โหลด Java Applet โดยการคลิ้กลิ้งค์ที่มีอยู่บนหน้าเวปเพจ เพื่อนำมาใช้งานเสมือนเป็น TCP Proxy บนเครื่องของผู้ใช้ เพือให้ผู้ใช้สามารถใช้งานตาม Application ที่ได้กำหนดไว้ได้
ข้อดีของการใช้งาน Thin-Client Mode
- ผู้ใช้สามารถใช้งาน Application ที่อยู่นอกเหนือจากรูปแบบ Web Based ได้ ยกตัวอย่างเช่น
POP, SMTP, IMAP e-mail - Instant messaging
- Calendar
- Client-initiated TCP-based applications อย่างเช่น Telnet
ข้อจำกัดในการใช้งาน Thin-Client Mode
- ผู้ใช้จะต้องอนุญาตและทำการติดตั้ง Java Applet
- ไม่สามารถใช้งานกับ Application ที่มีการใช้งานแบบ Dynamic Port ได้ เช่น FTP
- ในบาง Application ต้องการสิทธิการใช้งานในระดับ Administrator เพื่อการใช้งานที่ต่อเนื่อง
Tunnel Mode (SVC)
ในโหมดนี้ ผู้ใช้จะทำการสร้าง SSL Tunnel เข้ามายัง WebVPN Server โดยจะเป็นการเชื่อมต่อในระดับ Network Layer ซึ่งจะต่างกับ Clientless Mode ที่จะเป็นการเชื่อมต่อในระดับ Application Layer เท่านั้น ทำให้ Tunnel Mode นี้ รองรับการใช้งาน Application ได้ทุก ๆ อย่าง ที่ทำงานในรูปแบบ IP-Based เหมือนกับการใช้งาน IPSec VPN โดยเมื่อผู้ใช้ทำการเชื่อมต่อเข้ามาใช้งาน จะเสมือนว่ากำลังใช้งานอยู่บนเครือข่ายเดียวกันกับเครือข่ายภายในขององค์กร จะสามารถใช้งาน Application ได้ทุกอย่าง เหมือนกับเครื่องที่ติดตั้งใช้งานอยู่ภายในองค์กร ซึ่งเราสามารถที่จะทำการกำหนดสิทธิการใช้งานของผู้ใช้ที่ทำการเชื่อมต่อผ่าน WebVPN เข้ามาได้ ด้วยการตั้งค่า Group Policy เพื่อควบคุมการใช้งานต่าง ๆ ของผู้ใช้ได้
การที่จะใช้งาน WebVPN ในโหมดนี้ บนเครื่องคอมพิวเตอร์ของผู้ใช้จะต้องทำการดาวน์โหลด Cisco SVC(SSL VPN Client) ซึ่งเป็น Application ที่ใช้สำหรับสร้าง SSL Tunnel ไปยัง WebVPN Server ที่มีขนาดประมาณ 250 KB ไปติดตั้งในเครื่องคอมพิวเตอร์ของผู้ใช้ เพื่อให้สามารถทำการเชื่อมต่อเข้ามายัง WebVPN Server ได้ และโดยปกติ Cisco SVC จะถูกถอนการติดตั้งออกไปเมื่อ ยกเลิกหรือหยุดการเชื่อมต่อ
ในวันนี้ผมก็ขอแนะนำให้เพื่อน ๆ ได้รู้จักกับ Cisco WebVPN (SSL VPN) เพียงเท่านี้ก่อนนะครับ ในโอกาสหน้าจะมาแนะนำการตั้งค่า WebVPN ในรูปแบบต่าง ๆ บนอุปกรณ์ Cisco กันต่อไปครับ… ^_^
Sunday, April 3, 2011
การตั้งค่า Site to Site IPSec VPN แบบ Pre-Shared Key Authentication บน Cisco ASA Firewall
configuration site to site ipsec vpn pre-shared key authentication on cisco asa firewall
สวัสดีครับเพื่อน ๆ หลังจากที่ได้เคยแนะนำการตั้งค่า IPSec VPN บน Cisco IOS Router กันไปบ้างแล้ว ในวันนี้ผมจะขอแนะนำการตั้งค่า IPSec VPN บนอุปกรณ์ Cisco ASA Firewall กันบ้างนะครับ โดย IPSec VPN ที่จะมาแนะนำให้เพื่อน ๆ ในวันนี้นั้นก็คือ IPSec VPN แบบ Site to Site โดยใช้ Pre-shared Authentication นะครับ ยังไงก็เชิญติดตามบทความนี้ได้เลยครับ
ในตัวอย่างการตั้งค่าในวันนี้นั้น เป็นการตั้งค่า IPSec VPN แบบ Site to Site โดยใช้การพิสูจน์ตัวตนของอุปกรณ์ที่ใช้ในการทำ VPN แบบ Pre-shared Key โดย Pre-shared Key นี้ก็เป็นเสมือน password ที่เราทำการกำหนดไว้ในขั้นตอนการตั้งค่า IPSec VPN นะครับ ซึ่งเป็นการตั้งค่าแบบที่ง่ายและนิยมใช้งานมากที่สุด เหมาะสำหรับนำไปใช้กับเครือข่ายที่มีขนาดไม่ใหญ่มากครับ และสำหรับเพื่อน ๆ ที่ยังไม่รู้จักกับ IPSec VPN ก็ลองอ่านบทความ ทำความรู้จักกับ IPSec VPN (ภาคทฤษฎี) ก่อนนะครับ
ขั้นตอนในการตั้งค่า Site to Site IPSec VPN โดยใช้ Pre-shared Authentication บน Cisco ASA Firewall
- ตรวจสอบการเชื่อมต่อของระบบเครือข่าย ว่าสามารถทำการติดต่อสื่อสารระหว่างอุปกรณ์ที่จะใช้ในการทำ IPSec VPN ได้อย่างปกติ
- ทำการออกแบบรูปแบบและรายละเอียดที่จะใช้ในการการรักษาความปลอดภัยของข้อมูล เช่น โปรโตคอลที่จะใช้ในการเข้ารหัส, Hash Algorithm ที่จะใช้งาน เป็นต้น
- ทำการเปิดการทำงานของ ISAKMP บนอินเทอร์เฟสที่ใช้ติดต่อสื่อสารกับอุปกรณ์ IPSec VPN ฝั่งตรงข้าม
- ตั้งค่า ISAKMP Policy Set เพื่อใช้ในการสร้าง ISAKMP SA โดยจะต้องทำการกำหนดค่าให้ตรงกันระหว่างอุปกรณ์ที่ใช้ในการทำ IPSec VPN ซึ่งจะมีค่าที่ต้องทำการกำหนด ดังต่อไปนี้
- Authentication กำหนดวิธีการที่จะใช้ในการพิสูจน์ตัวตน ซึ่งเราจะใช้ Pre-shared Key
- Encryption เลือก algorithm ที่จะใช้ในการเข้ารหัสข้อมูล โดยตัวเลือกที่เรียงตามระดับการรักษาความปลอดภัย มีดังนี้ DES, 3DES, AES
- Hash เลือก algorithm ที่จะใช้ในการตรวจสอบความถูกต้องของข้อมูล โดยจะมีตัวเลือกเรียงตามระดับความปลอดภัย ดังนี้ MD5, SHA
- DH Group เลือกขนาดของจำนวนเฉพาะที่จะนำมาใช้ในการแลกเปลี่ยน Key ระหว่างอุปกรณ์ โดยจะมีตัวเลือก เรียงตามระดับการรักษาความปลอดภัย ดังนี้ group 1(768 bit), group 2 (1024 bit), group 5 (1536 bit) และ group 7 (Eliptical Curve field size:163 bit)
- Life Time ทำการกำหนดช่างเวลาที่จะใช้ ISAKMP SA นี้ โดยเมือหมดช่วงเวลานี้ลงไป จะต้องทำการสร้าง ISAKMP SA ใหม่ขึ้นมาทดแทน
- หมายเหตุ ในการเลือกใช้งาน algorithm ในรูปแบบต่าง ๆ ถ้าเลือกที่จะใช้งานระดับการรักษาความปลอดภัยที่สูงจนเกินไป ก็อาจจะส่งผลให้ทำงานได้ช้าลง จึงควรที่จะเลือกระดับการรักษาความปลอดภัยที่เหมาะสมกับการใช้งานของแต่ละองค์กรเอง ว่าต้องการระดับความปลอดภัยที่สูง หรือต้องการใช้งานได้รวดเร็ว
- ทำการสร้าง Tunnel-group หรือรายการของแต่ละ Connection (หรือแต่ละ Peer) สำหรับกำหนดรูปแบบการใช้งาน IPSec VPN ของแต่ละ Connection
- ทำการกำหนด Pre-Shared Key ที่ใช้ในการพิสูจน์ตัวตนของอุปกรณ์ที่ใช้ในการทำ IPSec VPN
- ทำการสร้าง Access-list ที่จะใช้สำหรับคัดเลือกทราฟิกที่ต้องการให้ใช้งาน IPSec VPN และทำการสร้าง Access-list เพื่อใช้สำหรับการยกเว้นไม่ให้ทราฟิกที่จะใช้งาน IPSec VPN นั้นทำการ NAT
- ทำการตั้งค่า NAT เพื่อการใช้งานที่สะดวกในการใช้งาน จึงควรที่จะทำการยกเว้นไม่ให้ทำการ NAT ทราฟิกที่จะใช้งานบน IPSec VPN เพื่อที่เครื่องผู้ใช้ในแต่ละฝั่งจะได้สามารถติดต่อกันผ่าน IP Address ของอีกฝ่ายตรง ๆ ได้เลย แต่สำหรับทราฟิกอื่น ๆ ที่ไม่ได้ใช้งาน IPSec VPN เช่นการใช้งาน web server ของผู้ให้บริการต่าง ๆ ก็อาจจะให้ทำการ NAT เป็นปกติ
- ตั้งค่า IPSec transform Set เพื่อนำมาสร้าง IPSec SA โดยจะต้องทำการกำหนดค่าให้ตรงกันระหว่างอุปกรณ์ที่ใช้ในการทำ IPSec VPN ซึ่งจะมีค่าที่ต้องทำการกำหนด ดังต่อไปนี้
- Encryption ทำการเลือก algorithm ที่จะนำมาใช้ในการเข้ารหัสข้อมูลที่จะส่งไปใน IPSec Tunnel โดยทั่วไปจะมีตัวเลือกเรียงตามระดับการรักษาความปลอดภัย ดังนี้ esp-des, esp-3des, esp-aes เป็นต้น
- Authentication ทำการเลือก algorithm ที่จะนำมาใช้ในการตรวจสอบความถูกต้องของข้อมูลว่าไม่มีการเปลี่ยนแปลง โดยทั่วไปจะมีตัวเลือกเรียงตามระดับการรักษาความปลอดภัย ดังนี้ esp-md5-hmac, esp-sha-hmac
- Mode(ทางเลือก) โดย defautl บนอุปกรณ์ Cisco ASA Firewall จะใช้งาน Tunnel mode แต่สามารถที่จะเปลี่ยนไปใช้ Transport Mode ได้ ด้วยการใช้คำสั่ง "crypto ipsec transform-set <name> mode transport"
- ทำการสร้าง Crypto Map ซึ่งโดยทั่วไปจะทำการกำหนดรายละเอียดต่าง ๆ ดังนี้
- ระบุหมายเลข IP Address ของ Peer หรืออุปกรณ์ที่ใช้ในการทำ IPSec VPN ฝั่งตรงข้าม
- ระบุ IPSec Transform Set ที่จะนำมาใช้งาน
- ระบุ Access-list ที่ได้สร้างขึ้นมาเพื่อคัดเลือกทราฟิกที่อนุญาตให้ใช้งาน IPSec VPN
- นำ Crypto Maps ที่สร้างขึ้นมาไปประกาศใช้งานบนอินเทอร์เฟสที่ใช้ติดต่อสื่อสารกับอุปกรณ์ IPSec VPN ฝั่งตรงข้าม
- ตรวจสอบการทำงาน
สำหรับตัวอย่างการตั้งค่าในวันนี้ จะเป็นการทำ Site to Site IPSec VPN โดยมีรายละเอียดตามรูปด้านล่างเลยครับ คือจะมีระบบเครือข่ายของสำนักงานใหญ่(Headquarter) และสำนักงานสาขา(Branch) โดยในแต่ละสำนักงาน ก็มีการเชื่อมต่อไปยังเครือข่ายอินเทอร์เน็ตโดยตรง และมีความต้องการที่จะใช้งาน IPSec VPN เพื่อให้สามารถทำการติดต่อสื่อสารระหว่างเครือข่ายภายในของแต่ละสำนักงานได้ โดยใช้ Cisco ASA Firewall ในการทำเป็น IPSec VPN Server ครับ
ในขั้นตอนแรกนั้นก็จะเป็นการทดสอบการเชื่อมต่อระหว่างอุปกรณ์ที่ใช้ในการทำ IPSec VPN นะครับ เพื่อให้แน่ใจว่าอุปกรณ์ทั้งสองสามารถติดต่อสื่อสารกันได้ จากนั้นก็จะเป็นการออกแบบและรวบรวมรายละเอียดที่จะใช้ในการตั้งค่า เพื่อรักษาความปลอดภัยของข้อมูลที่ใช้ IPSec VPN นะครับ โดยรายละเอียดก็เช่น โปรโตคอลที่จะใช้ในการรักษาความปลอดภัยต่าง ๆ หรือหมายเลข IP Address ของอุปกรณ์ต่าง ๆ เป็นต้นครับ
ตัวอย่าง
Headquarter
Wan IP Address : 100.0.0.1
Local Subnet : 172.16.10.0/24
Branch
Wan IP Address : 11.0.0.1
Local Subnet : 172.16.20.0/24
ISAKMP SA
Encryption : AES
Hash : SHA
DH-Group : 5 (1536 bit)
lifetime : 24 Hours
Authentication : Pre-shared-key (cisco123)
IPSec SA
Encryption : 3DES
Hash : MD5
จากนั้นก็ให้ทำการเปิดการทำงานของ ISAKMP บนอินเทอร์เฟสที่จะใช้ในการติดต่อสื่อสารไปยังอุปกรณ์ IPSec VPN ฝั่งตรงข้ามนะครับ ซึ่งตามตัวอย่างด้านล่างนี้จะใช้อินเทอร์เฟสที่มีชื่อว่า "outside" ครับ (ต้องไปทำการตั้งค่า nameif บน physical interface ก่อน) จากนั้นจึงทำการตั้งค่า ISAKMP Policy Set ตามที่ได้ออกแบบไว้ในขั้นตอนที่ผ่านมาบนอุปกรณ์ทั้งสองฝั่ง เพื่อที่จะนำมาใช้ในการสร้าง ISAKMP SA ระหว่างอุปกรณ์ครับ
ตัวอย่าง
Headquarter
Headquarter(config)# crypto isakmp enable outside
Headquarter(config)# crypto isakmp policy 10
Headquarter(config-isakmp-policy)# encryption aes
Headquarter(config-isakmp-policy)# hash sha
Headquarter(config-isakmp-policy)# authentication pre-share
Headquarter(config-isakmp-policy)# group 5
Headquarter(config-isakmp-policy)# lifetime 86400
Headquarter(config-isakmp-policy)# exit
Branch
Branch(config)# crypto isakmp enable outside
Branch(config)# crypto isakmp policy 100
Branch(config-isakmp-policy)# encryption aes
Branch(config-isakmp-policy)# hash sha
Branch(config-isakmp-policy)# authentication pre-share
Branch(config-isakmp-policy)# group 5
Branch(config-isakmp-policy)# lifetime 86400
Branch(config-isakmp-policy)# exit
ซึ่งการตั้งค่า ISAKMP Policy Set นี้ จะต้องทำการตั้งค่าบนอุปกรณ์ทั้งสองฝั่งให้มีค่าที่ตรงกัน (ยกเว้นค่า lifetime ที่ไม่ต้องตรงกันก็ได้) เพื่อที่จะสามารถทำการสร้าง ISAKMP SA ได้นั่นเองครับ
ในขั้นตอนต่อมาจะเป็นการกำหนดรูปแบบ IPSec VPN ที่จะใช้งาน ว่าจะใช้เป็น Site-to-Site, Client-to-Site หรือ Web VPN ซึ่งในตัวอย่างวันนี้นั้น จะทำการตั้งค่า Site-to-Site IPSec VPN นะครับ โดยจะต้องไปทำการสร้าง Tunnel-group เพื่อที่จะกำหนดรูปแบบการใช้งานของแต่ละ Connection ด้วยการใช้คำสั่ง "tunnel-group <name> type <ipsec-type>" ครับ
และจากนั้นก็จะเป็นการกำหนด Pre-shared-key ที่จะใช้ในการพิสูจน์ตัวตนของอุปกรณ์ที่ใช้ในการทำ IPSec VPN ซึ่งจะมีการใช้คำสั่งที่แตกต่างกับบน Cisco IOS Router โดยจะต้องไปทำการกำหนดค่า pre-shared-key ใน ipsec-attributes ของแต่ละ Tunnel-group ครับ
ตัวอย่าง
Headquarter
Headquarter(config)# tunnel-group 11.0.0.1 type ipsec-l2l
Headquarter(config)# tunnel-group 11.0.0.1 ipsec-attributes
Headquarter(config-tunnel-ipsec)# pre-shared-key cisco123
Headquarter(config-tunnel-ipsec)# exit
Branch
Branch(config)# tunnel-group 100.0.0.1 type ipsec-l2l
Branch(config)# tunnel-group 100.0.0.1 ipsec-attributes
Branch(config-tunnel-ipsec)# pre-shared-key cisco123
Branch(config-tunnel-ipsec)# exit
จากตัวอย่างด้านบน เป็นการสร้าง Tunnel-group โดยในฝั่ง Headquarter จะใช้ชื่อว่า “11.0.0.1” ส่วนในฝั่ง Branch จะใช้ชื่อว่า “100.0.0.1” นะครับ(ตั้งชื่อตาม IP Address ของอุปกรณ์ฝั่งตรงข้าม เพื่อสะดวกในการใช้งาน) โดยระบุชนิดของ Tunnel เป็น IPSec Site-to-Site (ipsec-l2l) และจากนั้นก็ทำการกำหนด pre-shared-key ที่จะใช้ในการพิสูจน์ตัวตนระหว่างอุปกรณ์เป็น "cisco123" ครับ
เมื่อทำการกำหนด pre-shared-key เสร็จเรียบร้อยแล้ว ในขั้นตอนต่อมาจะเป็นการคัดเลือกทราฟิกที่อนุญาตที่ต้องการให้ใช้งาน IPSec VPN ครับ ซึ่งจะต้องนำ Access-list มาใช้ในการคัดเลือกทราฟิกที่ต้องการนะครับ โดยในตัวอย่างนี้นั้นจะอนุญาตให้สามารถทำการติดต่อสื่อสารระหว่างทุก ๆ เครื่องของเครือข่ายภายในทั้งสองฝั่งได้ครับ
ตัวอย่าง
Headquarter
Headquarter(config)# access-list hq-to-br permit ip 172.16.10.0 255.255.255.0 172.16.20.0.0 255.255.255.0
Branch
Branch(config)# access-list br-to-hq permit ip 172.16.20.0 255.255.255.0 172.16.10.0 255.255.255.0
จากนั้นก็จะเป็นการตั้งค่าไม่ให้ทราฟิกที่ใช้งาน IPSec VPN นั้นถูกทำการ NAT ออกไปนะครับ เพื่อความสะดวกในการติดต่อสื่อสารระหว่างเครือข่ายภายในทั้งสองฝั่ง จะได้สามารถติดต่อสื่อสารผ่าน IP Address ของแต่ละเครื่องตรง ๆ ได้เลยครับ ซึ่งตัวอย่างการตั้งค่าในวันนี้นั้นจะมีทั้งการตั้งค่าใน ASA Version 8.2 ลงไป และ ASA Version 8.3 เป็นต้นมา โดยเพื่อน ๆ ใช้งาน ASA ใน Version ใด ก็เลือกดูตัวอย่างการตั้งค่าใน Version นั้น ๆ ได้เลยครับ
ตัวอย่าง
สำหรับ ASA Version 8.2 ลงไป
Headquarter
Headquarter(config)# access-list no-nat permit ip 172.16.10.0 255.255.255.0 172.16.20.0 255.255.255.0
Headquarter(config)# nat (inside) 0 access-list no-nat
Branch
Branch(config)# access-list no-nat permit ip 172.16.20.0 255.255.255.0 172.16.10.0 255.255.255.0
Branch(config)# nat (inside) 0 access-list no-nat
สำหรับ ASA Version 8.3 เป็นต้นมา
Headquarter
Headquarter(config)# object network hq-network
Headquarter(config-network-object)# subnet 172.16.10.0 255.255.255.0
Headquarter(config-network-object)# exit
Headquarter(config)# object network br-network
Headquarter(config-network-object)# subnet 172.16.20.0 255.255.255.0
Headquarter(config-network-object)# exit
Headquarter(config)# nat (inside,outside) 1 source static hq-network hq-network destination static br-network br-network
Branch
Branch(config)# object network hq-network
Branch(config-network-object)# subnet 172.16.10.0 255.255.255.0
Branch(config-network-object)# exit
Branch(config)# object network br-network
Branch(config-network-object)# subnet 172.16.20.0 255.255.255.0
Branch(config-network-object)# exit
Branch(config)# nat (inside,outside) 1 source static br-network br-network destination static hq-network hq-network
จากนั้นจะเป็นการตั้งค่า IPSec Transform Set โดยใช้ค่าที่ได้ทำการกำหนดไว้ ในขั้นตอนแรก เพื่อที่จะนำมาใช้ในการสร้าง IPSec SA เพื่อใช้ในการรักษาความปลอดภัยของข้อมูลที่เครื่องผู้ใช้ทำการส่งออกไป ซึ่งจะต้องทำการตั้งค่าบนอุปกรณ์ทั้งสองฝั่งให้มีค่าที่ตรงกันครับ
ตัวอย่าง
Headquarter
Headquarter(config)# crypto ipsec transform-set set-01 esp-3des esp-md5-hma
Branch
Branch(config)# crypto ipsec transform-set set-01 esp-3des esp-md5-hma
จากตัวอย่างด้านบน เป็นการตั้งค่า IPSec Transform ที่มีชื่อว่า "set-01" โดยใช้การเข้ารหัสข้อมูลแบบ 3DES และใช้ Hash Algorithm แบบ MD5 ตามที่ได้ออกแบบเอาไว้นะครับ
เมื่อทำการตั้งค่า IPSec Transform Set เสร็จเรียบร้อยแล้ว จากนั้นก็จะเป็นการสร้าง crypto map เพื่อทำการรวบรวมการกำหนดค่าต่าง ๆ ที่จะใช้งานเข้าไว้ด้วยกัน ซึ่งค่าต่าง ๆ ที่ควรกำหนดนั้น ได้แก่ access-list ที่ระบุทราฟิกที่อนุญาตให้ใช้งาน IPSec VPN Tunnel, หมายเลข IP Address ของอุปกรณ์ที่ใช้ในการทำ IPSec VPN ฝั่งตรงข้าม และ IPSec Transform Set ที่จะใช้งานในการรักษาความปลอดภัยของข้อมูลนะครับ และเมื่อทำการสร้าง crypto map เรียบร้อยแล้ว ก็ถึงขั้นตอนสุดท้าย นั่นก็คือ การนำ crypto map ที่สร้างขึ้นมานี้ ไปประกาศใช้งานบนอินเทอร์เฟสที่ใช้เชื่อมต่อไปยังอุปกรณ์ฝั่งตรงข้ามนะครับ
ตัวอย่าง
Headquarter
Headquarter(config)# crypto map l2l-hq 200 match address hq-to-br
Headquarter(config)# crypto map l2l-hq 200 set peer 11.0.0.1
Headquarter(config)# crypto map l2l-hq 200 set transform-set set-01
Headquarter(config)# crypto map l2l-hq interface outside
Branch
Branch(config)# crypto map l2l-br 200 match address br-to-hq
Branch(config)# crypto map l2l-br 200 set peer 100.0.0.1
Branch(config)# crypto map l2l-br 200 set transform-set set-01
Branch(config)# crypto map l2l-br interface outside
จากตัวอย่างด้านบน เป็นการตั้งค่า crypto map โดยในฝั่ง headquarter จะใช้ชื่อว่า l2l-hq และในฝั่ง Branch จะใช้ชื่อว่า l2l-br ครับ โดยกำหนดค่า priority เท่ากับ 200 และทำการกำหนดค่ารายละเอียดอื่น ๆ ตามรายละเอียดที่ได้สร้างขึ้นในขั้นตอนที่ผ่าน ๆ มาครับ และจากนั้นก็นำ crypto map ทั้งสองไปประกาศใช้งานในอินเทอร์เฟสที่ใช้เชื่อมต่อไปยังอุปกรณ์ฝั่งตรงข้าม ซึ่งจากตัวอย่างนี้ก็คืออินเทอร์เฟสที่มีชื่อว่า "outside" นั่นเองครับ
เพียงเท่านี้ก็เสร็จสิ้นการตั้งค่า Site to Site IPSec VPN แบบใช้ Pre-shared Key บน Cisco ASA Firewall แล้วครับ ต่อมาก็จะเป็นการแนะนำคำสั่งที่ใช้ในการตรวจสอบการทำงานกันนะครับ คำสั่งหลัก ๆ ที่ใช้ในการตรวจสอบการทำงานของ IPSec VPN ก็ได้แก่
- show crypto isakmp sa เป็นการตรวจสอบ isakmp sa ว่าอยู่ในสถานะใด
- show crypto ipsec sa เป็นการตรวจสอบการทำงานของ ipsec sa รวมถึงสถิติการใช้งานต่าง ๆ



