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

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

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

Sunday, June 26, 2011

การตั้งค่า Thin-Client WebVPN บน Cisco IOS Router

Configure Thin-Client WebVPN (SSL-VPN) on Cisco IOS Router

Title copy

          สวัสดีกันอีกครั้งครับ หลังจากบทความที่ผ่านมา ได้ทำการแนะนำให้รู้จักกับการตั้งค่า 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 ก็มีดังนี้ครับ

  1. ทำการตั้งค่าพื้นฐานของอุปกรณ์ เช่น hostname, domain-name, ntp เป็นต้น
  2. ทำการตั้งค่าอินเทอร์เฟสของเราเตอร์ให้เรียบร้อย เช่นการกำหนด ip address การตั้งค่า nat เป็นต้น
  3. ทำการตั้งค่า AAA เพื่อการพิสูจน์ตัวตนผู้ใช้
  4. ทำการตั้งค่า WebVPN Gateway เพื่อใช้เป็น gateway ในการเชื่อมต่อของผู้ใช้ WebVPN
  5. ทำการตั้งค่า WebVPN Context เพื่อกำหนดรายละเอียดต่าง ๆ ในการใช้งาน WebVPN
  6. ทำการสร้าง Port-forward list ขึ้นมา เพื่อกำหนดถึง Application ที่ต้องการ
  7. นำ Port-forward list ที่สร้างขึ้นมาไปประกาศใช้งานใน Policy Group
  8. ตรวจสอบการทำงานและการตั้งค่า

thin-client ssl-vpn topology

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)

8-6-2554 19-02-44

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

ตัวอย่าง
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 อีกครั้ง ก็จะพบกับหน้าเวปเพจ ดังรูปด้านล่างครับ

17-6-2554 10-22-11

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 เข้าใช้งาน ก็จะพบกับหน้าเวปเพจ ดังรูปด้านล่างครับ

17-6-2554 11-18-21

          และเมื่อคลิ้กที่ Start ในส่วนของ Thin Client Application ก็จะพบกับ หน้าต่างดังรูปด้านล่างครับ

17-6-2554 17-36-58

          ในส่วนของการใช้งาน สมมุติว่าผู้ใช้ต้องการที่จะ Telnet มายัง Core Switch ก็จะต้องทำการ Telnet มายัง 127.0.0.1(loopback) ผ่าน port 2300 ครับ ก็จะสามารถ Telnet มายัง Core Switch ที่มีหมายเลข IP Address เป็น 10.10.10.2 ได้เลยครับผม

17-6-2554 17-43-14

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 ที่ได้แนะนำไปเมื่อบทความที่ผ่านมา มารวมเข้ากับการตั้งค่าในบทความนี้ ก็จะได้เวปเพจดังรูปด้านล่างนี้ครับ ^_^

17-6-2554 18-16-43

3 comments :

  1. ผมจะตามให้กำลังใจครับ ปรบมือดังๆเลย

    ReplyDelete
  2. ขอบคุณ สำหรับความรู้ครับ

    ReplyDelete
  3. Thanks for sharing this informative blog about computer programs.I agree with all of the points keep up the good work.

    Thin Clients & Zero Clients

    ReplyDelete