kunggiggs
นายวัชรินทร์ คุึณาธิปพงษ์

IPSec เบื้องต้น


IPSec ตัวช่วยเพิ่มความปลอดภัยให้กับโปรโตคอล IP

 

Internet Protocol security (IPSec) คือ ชุดโปรโตคอลเพิ่มเติมของโปรโตคอล IP เพื่อให้การติดต่อสื่อสารมีความปลอดภัยมากขึ้น โดยสิ่งที่เพิ่มเติมที่ทำให้มีความปลอดภัยนั่นคือ มีการทำ authentication และการ encryption ในข้อมูล IP packet ที่รับส่งกัน

ชุดโปรโตคอล IPSec นี้รวมถึงโปรโตคอลที่ใช้ในการทำ authentication ระหว่างกันเพื่อสร้าง session ที่ใช้ในการติดต่อสื่อสารและ โปรโตคอลที่ใช้เจรจา key ที่ใช้เข้ารหัสข้อมูลระหว่างการติอต่อสื่อสารของ session เราสามารถใช้ IPSec ป้องกันข้อมูลในการติดต่อสื่อสารได้ทั้งระหว่าง host กับ host (computer user or server) ระหว่าง security gateway กับ security gateway (router or firewall) หรือระหว่าง security gateway และ host โดย IPSec สามารถนำไปประยุกต์ใช้งานได้หลากหลายมาก เนื่องจากมันทำงานใน layer ที่ต่ำ (internet layer ใน TCP/IP model) ทำให้ Application ต่างๆ ไม่ต้องทำสิ่งใดเพิ่มเติมเพื่อให้ทำงานร่วมกับ IPSec ได้ ไม่เหมือนกับโปรโตคอลด้านความปลอดภัยตัวอื่น เช่น TLS/SSL ที่จะต้องออกแบบ Application ให้ทำงานร่วมกันกับมันได้

IPSec ประกอบด้วยโปรโตคอล ที่ทำหน้าที่หลักต่างๆกันดังนี้

·        Internet Key Exchange (IKE) เป็นโปรโตคอลที่ใช้สำหรับการจัดตั้ง Security Association (SA) ที่ใช้เป็นช่องทางการสื่อสารระหว่างกัน และเป็นโปรโตคอลที่ใช้เจรจาว่าจะใช้โปรโตคอลใดและ algorithm ใด ทีจะใช้สร้าง key สำหรับ encrypt ข้อมูลและทำ authentication ระหว่างกัน

·        Authentication Header (AH) เป็นโปรโตคอลที่ทำหน้าที่รักษาความถูกต้องสมบูรณ์ (integrity) ของข้อมูล เพื่อเป็นการยืนยันว่าข้อมูลที่ได้รับนั้นไม่ได้ถูกแก้ไขระหว่างทาง โดยการใช้ Hash Message Authentication Code (HMAC) ที่สร้างจาก algorithm เช่น MD5 หรือ SHA เป็นต้น

·        Encapsulation Security Payload (ESP) เป็นโปรโตคอลที่ทำหน้าที่ในการรักษาความลับ(Confidentiality) ข้อมูลโดยการเข้ารหัส โดยใช้ algorithm เช่น DES, 3DES หรือ AES เป็นต้น

IPSec ทำงานอยู่ใน 2 mode ดังนี้

1.       Transport mode ใน mode นี้ IPSec จะทำการ encrypt หรือ authenticate เฉพาะในส่วนข้อมูล (payload) ของ IP packet ที่จะส่ง แต่ไม่ทำในส่วนของ Header(หรือ IP Header) ของ IP packet

2.       Tunnel mode ใน mode นี้จะทำการ encrypt หรือ authenticate ทั้ง IP packet (payload และ header) และสร้าง IP Header ขึ้นมาใหม่

ตัวอย่าง การตั้งค่า Router Cisco เพื่อใช้งาน IPSec

การตั้งค่า Router เพื่อใช้งาน IPSec มีขั้นตอนหลักๆ ดังนี้

·        ตั้งค่า ISAKMP

·        ตั้งค่า IPSec

ตั้งค่า ISAKMP

ทำความเข้าใจกันก่อนว่า IKE (ISAKMP/Oakley) คือ โปรโตคอลลูกผสมที่นำบางส่วนของโปรโตคอล Oakley และ ISAKMP แต่ใน Cisco IOS software โปรโตคอล IKE และ ISAKMP จะใช้สื่อความหมายถึงสิ่งเดียวกัน ดังนั้นการตั้งค่า ISAKMP ก็คือการตั้งค่า IKE โดยโปรโตคอล IKE นี้จะทำงานในช่วงการจัดตั้ง SA สำหรับ IPSec และมันต้องมี policy ที่ใช้ในการเจรจาเพื่อสร้าง SA ระหว่าง router กันด้วย

การตั้งค่า ISAKMP มีด้วยกันอยู 2 วิธีดังนี้

1.       ใช้วิธี pre-shared keys ซึ่งตั้งค่าได้ง่ายและสะดวก (ตัวอย่างจะใช้วิธีนี้)

2.       ใช้วิธี CA เหมาะกับรองรับการขยายตัวในการใช้งาน

หมายเหตุ โปรโตคอล IKE ทำงานบน UDP 500, IPSec ทำงานบน IP protocol 50 และ 51 โดย port เหล่านี้จะต้องไม่ถูกปิดกั้นระหว่าง router ด้วยกัน

  วิธี Pre-Shared Keys

การใช้วิธีนี้จะต้องตั้งค่าตามขั้นตอนดังนี้

·        ตั้งค่า ISAKMP Protection Suite(s)

·        ตั้งค่า ISAKMP key               

     ตั้งค่า ISAKMP Protection Suite(s)

คำสั่งนี้เป็นการสร้าง object ของ ISAKMP policy

                RouterName(config)#crypto isakmp policy 1

            RouterName(config-isakmp)#

คำสั่ง group ใช้เพื่อบอกขนาดจำนวน bit ของ modulus ที่ใช้ในวิธีการคำนวณใน Diffie-Hellman(เป็นวิธีการการจัดตั้ง(establishment )การ shared key ผ่านบนช่องทางที่ไม่ปลอดภัย) โดย group 1 หมายถึงมีขนาด 768 บิต group 2 หมายถึง มีขนาด 1024 บิต โดย default Cisco IOS จะเป็น group 1

                RouterName(config-isakmp)#group 2

คำสั่ง hash ใช้เพื่อบอกว่าจะใช้ hash algorithm แบบใด โดย default ของ Cisco IOS จะเป็นแบบ SHA ที่มีความปลอดภัยมากกว่า MD5

            RouterName(config-isakmp)#hash md5

คำสั่ง lifetime ใช้เพื่อบอกว่า SA จะมีเวลาอยู่เท่าใด ก่อนที่จะมีการเจรจาสร้าง SA ใหม่ โดย default จะมีค่าอยู่ที่ 86400 วินาทีหรือ 1 วัน

RouterName(config-isakmp)#lifetime 500

คำสั่ง authentication ใช้เพื่อบอกว่าจะใช้ key อะไรในการยืนยันตัวตนของ router ทั้งฝั่ง

RouterName(config-isakmp)#authentication pre-share

      ตั้งค่า ISAKMP key

คำสั่งที่จะแสดงต่อไปนี้ จะเป็นการบอกว่าค่า key เป็นอะไร และ ip ของ router ฝั่งตรงข้ามเป็นอะไร โดย key ที่ตั้งนี้จะต้องเหมือนกัน

                RouterName(config-isakmp)#exit

                RouterName(config-isakmp)#crypto isakmp key Slurpee address 192.168.10.38

ตั้งค่า IPSec

มีขั้นตอนย่อยๆดังนี้

·        สร้าง extended access list

·        สร้าง IPSec transform(s)

·        สร้าง crypto map

·        นำ crypto map ไปใส่ใน interface เพื่อใช้งาน

    สร้าง extended access list

คำสั่งที่ใช้นี้เป็นการสร้าง access list สำหรับบอกว่า traffic ใดบ้างที่จะถูก encryption หรือไม่ถูก encryption โดยคำสั่ง permit เป็นเหมือนการบอกว่า traffic นั้นจะถูก encryption และคำสั่ง deny เป็นเหมือนการบอกว่า traffic นั้นไม่ถูก encryption โดยมีการนำไปใช้อ้างอิงใน crypto map

                RouterName(config)#access-list 101 permit ip host 192.168.10.38 host 192.168.10.66

หรือ RouterName(config)#access-list 101 permit ip host 192.168.10.38 0.0.0.255 192.168.10.66 0.0.0.255

    สร้าง IPSec transform(s)

คำสั่งนี้เป็นการสร้าง IPSec transform set เพื่อบอกว่าจะใช้วิธีการใดในการ encrypt ข้อมูล โดยมีการนำไปใช้อ้างอิงใน crypto map

                RouterName(config)crypto ipsec transform-set MamaBear ah-md5-hmac esp-des

            RouterName(cfg-crypto-trans)exit

    สร้าง Crypto Map

ใน Crypto map จะมีการตั้งค่าต่างๆ ประกอบด้วย การตั้งค่าเพื่อบอกว่า peer ที่จะคุยด้วยเป็น IP อะไรโดยใช้คำสั่ง set peer การตั้งค่า session key ว่าจะมีอายุใช้งานเท่าใดก่อนมีการสร้างขึ้นใหม่ โดยมีการกำหนดได้สองแบบคือกำหนดด้วยเวลาและกำหนดด้วยขนาดข้อมูล traffic ที่รับส่งกัน การตั้งค่าผูกโยงกับ IPSec transform set ที่ได้มีการสร้างขึ้นมาก่อนหน้านี้ด้วยคำสั่ง set transform และการตั้งค่าอ้างอิงกับ access list ที่ได้สร้างขึ้นมาไว้ ด้วยคำสั่ง match address

                RouterName(config)crypto map armadillo 10 ipsec-isakmp

                RouterName(config-crypto-map)#set peer 192.168.10.38

                RouterName(config-crypto-map)#set session-key lifetime seconds 4000

                RouterName(config-crypto-map)#set transform-set MamaBear

                RouterName(config-crypto-map)#match address 101

    นำ crypto map ไปใส่ใน interface เพื่อใช้งาน

โดยใช้คำสั่งนี้

                RouterName(config)#interface serial 0/0

                RouterName(config-if)crypto map armadillo

ตัวอย่างคำสั่งที่ใช้ตรวจสอบ IPsec เช่น

Show crypto isakmp sa                                      ใช้ดูตาราง ISAKMP(IKE) SA ถึงการมีอยู่ระหว่าง SA ของ router ทั้งสอง   

Show crypto isakmp policy                               ใช้ดู policy ของ ISAKMP ที่ได้ตั้งค่าต่างไว้

Show crypto ipsec sa                                         ใช้ดูค่าของ traffic ที่ถูก encrypt ฯลฯ


ที่มา: wikipedia, cisco, รายงานนักศึกษา

คำสำคัญ (Tags): #ipsec#network
หมายเลขบันทึก: 239902เขียนเมื่อ 5 กุมภาพันธ์ 2009 19:21 น. ()แก้ไขเมื่อ 24 มิถุนายน 2012 02:27 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (1)

อธิบายเป็นขั้นตอนได้เข้าใจมากค่ะ ขอบคุณค่ะ

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท