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 ที่ได้แนะนำไปเมื่อบทความที่ผ่านมา มารวมเข้ากับการตั้งค่าในบทความนี้ ก็จะได้เวปเพจดังรูปด้านล่างนี้ครับ ^_^
ผมจะตามให้กำลังใจครับ ปรบมือดังๆเลย
ReplyDeleteขอบคุณ สำหรับความรู้ครับ
ReplyDeleteThanks for sharing this informative blog about computer programs.I agree with all of the points keep up the good work.
ReplyDeleteThin Clients & Zero Clients