ระบบปฏิบัติการ pfSense ซึ่งมุ่งเน้นไปที่ ไฟร์วอลล์ และเราเตอร์มีหลายตัว VPN โปรโตคอลในการเชื่อมต่อไซต์ผ่าน Site-to-Site VPN และเรายังสามารถกำหนดค่า VPN การเข้าถึงระยะไกลเพื่อเชื่อมต่อไคลเอนต์มือถือที่แตกต่างกันและเพื่อให้การรับส่งข้อมูลทางอินเทอร์เน็ตทั้งหมดผ่านระบบปฏิบัติการเอง OpenVPN เป็นหนึ่งในโปรแกรมที่ใช้มากที่สุดในการสร้างเครือข่ายส่วนตัวเสมือนด้วยความปลอดภัยความยืดหยุ่นและการทำงานที่ดี วันนี้ในบทความนี้เราจะอธิบายวิธีกำหนดค่าเซิร์ฟเวอร์ OpenVPN ที่อยู่ใน pfSense ทีละขั้นตอน
OpenVPN ในตัว pfSense คืออะไรและอะไร?
OpenVPN เป็นซอฟต์แวร์ที่ช่วยให้เราสร้างเครือข่ายส่วนตัวเสมือนเราจะมีช่องทางควบคุมที่จะมีการจัดการการยกอุโมงค์และการเจรจาต่อรองของโปรโตคอลการเข้ารหัสและเราจะมีช่องข้อมูลที่จะมีการรับส่งข้อมูลอุโมงค์ทั้งหมด เข้ารหัสแบบชี้ต่อจุด จุดแข็งอย่างหนึ่งของ OpenVPN ใน pfSense คือตัวเลือกที่มีให้ใช้งานส่วนใหญ่มีให้ใช้งานผ่านอินเทอร์เฟซผู้ใช้แบบกราฟิกที่ใช้งานง่ายซึ่งจะช่วยให้เราสามารถกำหนดค่าได้โดยไม่จำเป็นต้องรวมคำสั่งใด ๆ ด้วยตนเองในช่อง "ตัวเลือก" ขั้นสูง ซอฟต์แวร์ OpenVPN ที่เรารวมเข้ากับ pfSense จะช่วยให้เราสามารถสร้างและกำหนดค่าสถาปัตยกรรมสองประเภท:
- VPN การเข้าถึงระยะไกล - ระยะไกล ไคลเอนต์จะเชื่อมต่อกับเซิร์ฟเวอร์ pfSense VPN และออกสู่อินเทอร์เน็ตผ่านเรา นอกจากนี้ยังสามารถเข้าถึงเครือข่ายย่อยที่เราระบุได้อีกด้วย VPN ประเภทนี้มุ่งเป้าไปที่นักสื่อสารโทรคมนาคมช่างเครือข่ายและระบบ ฯลฯ
- VPN แบบไซต์ต่อไซต์ : สถาปัตยกรรมนี้ช่วยให้เราสามารถเชื่อมต่อไซต์หนึ่งกับอีกไซต์หนึ่งเพื่อเชื่อมต่อไซต์ต่างๆผ่านอินเทอร์เน็ตและการรับส่งข้อมูลทั้งหมดได้รับการป้องกันแบบจุดต่อจุด ตัวอย่างเช่นด้วย VPN ประเภทนี้เราสามารถสื่อสารกับสำนักงานสำนักงานใหญ่ของ บริษัท ฯลฯ
OpenVPN รองรับการกำหนดค่าต่างๆมากมายทั้งเพื่อปรับปรุงประสิทธิภาพและความปลอดภัย pfSense อนุญาตให้ใช้การพิสูจน์ตัวตนประเภทต่างๆ แต่สิ่งที่แนะนำมากที่สุดคือขึ้นอยู่กับใบรับรอง SSL / TLS เพื่อให้แน่ใจว่ามีความถูกต้องการรักษาความลับและความสมบูรณ์และไม่แนะนำให้ใช้คีย์ที่แชร์ล่วงหน้า นอกเหนือจากการรวมการรับรองความถูกต้องตามใบรับรอง SSL / TLS แล้วเรายังสามารถรวมการตรวจสอบสิทธิ์เพิ่มเติมด้วยชื่อผู้ใช้ / รหัสผ่านเพื่อให้ระบบมีประสิทธิภาพมากขึ้น pfSense อนุญาตให้คุณส่งออกคีย์ส่วนตัวของใบรับรองด้วยรหัสผ่านด้วยวิธีนี้เพื่อให้สามารถใช้ใบรับรองเหล่านี้ได้เราจะต้องใส่รหัสผ่านเพิ่มเติมด้วยมิฉะนั้นจะไม่สามารถใช้งานได้
เซิร์ฟเวอร์ OpenVPN ที่รวมอยู่ใน pfSense จะช่วยให้เราสามารถเชื่อมต่อกับบ้านหรือที่ทำงานของเราจากระยะไกลได้อย่างรวดเร็วและปลอดภัยไม่ว่าเครือข่ายจะมีสายหรือ อินเตอร์เน็ตไร้สาย. การรับส่งข้อมูลทั้งหมดจะเข้ารหัสแบบ end-to-end จากไคลเอนต์ OpenVPN ของเรา (ซึ่งติดตั้งบนคอมพิวเตอร์สมาร์ทโฟนหรือแท็บเล็ต) ไปยังเซิร์ฟเวอร์ pfSense OpenVPN รายละเอียดที่สำคัญมากคือต้องติดตั้งเซิร์ฟเวอร์ OpenVPN ในการเชื่อมต่ออินเทอร์เน็ตนอก CG-NAT และด้วยกฎในไฟร์วอลล์ที่เปิดขึ้นเพื่ออนุญาตการเชื่อมต่อมิฉะนั้นเราจะไม่สามารถเชื่อมต่อผ่านอินเทอร์เน็ตได้
แน่นอนบนเซิร์ฟเวอร์เราสามารถเพิ่มเครือข่ายย่อยที่แตกต่างกันเพื่อกำหนดเส้นทางการรับส่งข้อมูลผ่านเครือข่ายย่อยต่างๆที่เรามีใน pfSense และเรายังสามารถกำหนดค่าในไฟร์วอลล์ได้ว่าเราต้องการอนุญาตการเข้าถึงเหล่านั้นจากที่อยู่ IP ของเซิร์ฟเวอร์ OpenVPN เฉพาะหรือไม่ ด้วย OpenVPN เรามีสองวิธีในการจัดการแพ็คเกจและวิธีการทำงานในระดับเลเยอร์การขนส่ง:
- TUN : โหมดการทำงานนี้อนุญาตให้ห่อหุ้มแพ็กเก็ตทั้งหมดที่ขนส่งผ่านเป็นเซ็กเมนต์ TCP หรือดาตาแกรม UDP ไคลเอนต์ทั้งหมดจะได้รับซับเน็ตใหม่ที่เฉพาะเจาะจงโดยค่าเริ่มต้นเครือข่ายย่อย OpenVPN คือ 10.8.0.0/24 แต่เราสามารถกำหนดค่าที่เราต้องการได้
- TAP : โหมดการทำงานนี้จำลองอินเทอร์เฟซเครือข่ายอีเทอร์เน็ตหรือที่เรียกว่าบริดจ์และสิ่งที่อุโมงค์เสมือนนี้ทำคือห่อหุ้มแพ็กเก็ตอีเทอร์เน็ตโดยตรง โหมดการทำงานของบริดจ์มีประโยชน์ในการติดต่อสื่อสารกับผู้ใช้ระยะไกลได้อย่างง่ายดาย แต่หากเครือข่ายส่วนตัวต้นทางตรงกับปลายทางเราจะมีปัญหาในการกำหนดเส้นทางและการสื่อสารจะไม่ทำงาน
ในบทช่วยสอนนี้เพื่อกำหนดค่า OpenVPN ใน pfSense เราจะใช้ไฟล์ เครือข่ายย่อยเสมือน 10.8.0.0/24 ที่เราจะมีไคลเอนต์ VPN ทั้งหมดเมื่อพวกเขาเชื่อมต่อมันจะง่ายมากในการระบุไคลเอนต์ VPN ต่างๆที่เราเชื่อมต่อกับเครือข่ายนอกจากนี้เราสามารถ "บังคับ" เพื่อให้ไคลเอนต์แต่ละรายที่มีใบรับรองเฉพาะมี ที่อยู่ IP ส่วนตัวเดียวกันของอุโมงค์ VPN
ในคู่มือนี้เราจะแสดงวิธีสร้างการกำหนดค่า OpenVPN ที่ปลอดภัยมากใน pfSense ปรับแต่งอัลกอริธึมการเข้ารหัสแบบสมมาตรไม่สมมาตรและแฮช ด้วยวิธีนี้เราสามารถเข้ารหัสการสื่อสารที่ดีที่สุดเท่าที่จะเป็นไปได้
สรุปการเข้ารหัสที่จะใช้
- ใบรับรองดิจิทัล : OpenVPN อนุญาตให้ใช้ใบรับรองดิจิทัลตาม RSA หรือด้วย EC (เส้นโค้งรูปไข่) เราจะใช้อัลกอริทึม EC secp521r1 แม้ว่าเราจะมีอื่น ๆ อีกมากมายที่พร้อมใช้งานผ่านการจัดการใบรับรอง pfSense อัลกอริทึมแฮชที่เราจะใช้จะเป็น SHA512 หนึ่งในความปลอดภัยที่สุดที่เราสามารถใช้ได้ในปัจจุบัน ไคลเอนต์ VPN ทั้งหมดจากเวอร์ชัน 2.4 ควรเข้ากันได้กับการกำหนดค่านี้ในกรณีของเราทั้งเซิร์ฟเวอร์และไคลเอนต์ใช้ OpenVPN 2.5 หรือสูงกว่าดังนั้นจึงไม่น่ามีปัญหา
- ช่องควบคุม OpenVPN : เราจะใช้ TLS 1.3 เพื่อความปลอดภัยสูงสุดและใช้ PFS (Perfect Forward Secrecy) เสมอ เราจะใช้ชุดการเข้ารหัสสามชุดจาก TLS 1.3 เพื่อสร้างการสื่อสาร: TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256 และ TLS_AES_128_GCM_SHA256 หากคุณต้องการตรวจสอบว่าเซิร์ฟเวอร์หรือไคลเอ็นต์ของคุณรองรับการเข้ารหัสประเภทนี้หรือไม่คุณต้องใส่“ openvpn –show-tls” ในคอนโซล
- ช่องข้อมูล OpenVPN : เราจะใช้อัลกอริธึมการเข้ารหัสแบบสมมาตร AES-256-GCM ซึ่งเป็นหนึ่งในระบบที่ปลอดภัยที่สุดในปัจจุบันซึ่งรวมอยู่ใน OpenVPN 2.4 และใหม่กว่า อย่างไรก็ตามเราจะใช้ CHACHA20-POLY1305 และ AES-128-GCM สำหรับไคลเอนต์ VPN เพื่อเลือกสิ่งที่ต้องการโดยให้ความสำคัญเป็นอันดับแรก หากคุณต้องการตรวจสอบว่าเซิร์ฟเวอร์หรือไคลเอ็นต์ของคุณรองรับการเข้ารหัสประเภทนี้หรือไม่คุณต้องใส่“ openvpn –show-ciphers” ในคอนโซล
ในการกำหนดช่องข้อมูลที่เราต้องการใช้ TLS 1.3 เราจะต้องใช้คำสั่ง "tls-ciphersuites" แทน "tls-cipher" ทั่วไปตามที่เราเคยใช้ มันจะเป็นดังนี้:
tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
นอกเหนือจากมาตรการรักษาความปลอดภัยเหล่านี้เราจะรวมลายเซ็น HMAC สำหรับการเจรจา TLS ครั้งแรกซึ่งจะช่วยให้เราสามารถปกป้องเซิร์ฟเวอร์ OpenVPN จากการโจมตี DoS ที่อาจเกิดขึ้นได้ หากไคลเอ็นต์ไม่มีลายเซ็น HMAC ที่ถูกต้องระบบจะบล็อกโดยอัตโนมัติและจะไม่ดำเนินการตรวจสอบใบรับรองดิจิทัล เราจะใช้ tls-crypt ที่พร้อมใช้งานจาก OpenVPN 2.4 และใหม่กว่าเพื่อให้มีการรักษาความปลอดภัยที่ดีที่สุดเนื่องจากช่วยให้เราสามารถตรวจสอบสิทธิ์และเข้ารหัสช่องเพื่อไม่ให้ใครจับคีย์ที่แชร์ล่วงหน้านี้ได้
ในที่สุดเราจะใช้โปรโตคอล UDP แทน TCP เนื่องจากมีความแข็งแกร่งกว่าในการต่อต้านการโจมตีแบบปฏิเสธบริการเราต้องจำไว้ว่า UDP ไม่เชื่อมต่อไม่น่าเชื่อถือและเน้นการเชื่อมต่อ อย่างไรก็ตามเราสามารถใช้ TCP ได้โดยไม่มีปัญหาใด ๆ เพื่อให้ VPN มีประโยชน์ทั้งหมดของโปรโตคอลนี้
ติดตั้งปลั๊กอินไคลเอนต์ OpenVPN เพื่อสร้างการกำหนดค่า
แม้ว่า OpenVPN จะถูกติดตั้งโดยค่าเริ่มต้นใน pfSense ทั้งในเซิร์ฟเวอร์หรือโหมดไคลเอนต์เราไม่มีแพ็คเกจที่ติดตั้งไว้ล่วงหน้าที่ช่วยให้เราสร้างการกำหนดค่าสำหรับไคลเอนต์โดยอัตโนมัติ หากเราไปที่ตัวจัดการแพ็คเกจใน«ระบบ / ตัวจัดการแพ็คเกจ»และเราไปที่แท็บ«แพ็คเกจที่มีอยู่»เราสามารถติดตั้งแพ็คเกจ« OpenVPN-client-export »ที่จะช่วยให้เราดำเนินการนี้ได้อย่างแม่นยำ การกำหนดค่าไคลเอนต์นำเข้าการกำหนดค่าเซิร์ฟเวอร์พร้อมใบรับรองดิจิทัลที่เกี่ยวข้อง
เมื่อติดตั้งแล้วเราก็พร้อมที่จะไปยังขั้นตอนต่อไปคือการสร้างใบรับรองดิจิทัล
สร้างใบรับรองดิจิทัลใน pfSense เอง
ในการกำหนดค่าเซิร์ฟเวอร์ OpenVPN ด้วยการตรวจสอบสิทธิ์“ Remote access SSL / TLS” เราต้องใช้ใบรับรองดิจิทัล เราจะต้องสร้างผู้ออกใบรับรอง (CA) เพื่อลงนามในใบรับรองต่างๆเราต้องสร้างใบรับรองเฉพาะสำหรับเซิร์ฟเวอร์ OpenVPN และประเภทเซิร์ฟเวอร์ตลอดจนใบรับรองดิจิทัลทั้งหมดของไคลเอนต์ VPN ที่เราต้องการลงทะเบียน .
นอกจากนี้เรายังสามารถสร้างรายการเพิกถอนใบรับรองได้หากใบรับรองถูกบุกรุกเนื่องจากเราสูญหายเราสามารถยกเลิกได้โดยตรงเพื่อไม่ให้ถูกต้อง ในกรณีที่ผู้ใช้นอกกฎหมายใช้งานคุณจะไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ VPN ของเราได้ไม่ว่าจะด้วยวิธีใดก็ตาม
สร้าง CA (ผู้ออกใบรับรอง)
ในส่วน“ CA” เป็นที่ที่เราต้องคลิกที่“ เพิ่ม” เพื่อสร้างผู้ออกใบรับรองใหม่การทำเช่นนี้เป็นสิ่งสำคัญเพื่อให้ใบรับรองดิจิทัลทั้งหมดทำงานได้อย่างถูกต้องทั้งเซิร์ฟเวอร์และไคลเอนต์ VPN ที่กำลังจะใช้ . เชื่อมต่อ ในเมนูนี้เราต้องเลือกตัวเลือกต่อไปนี้:
- สร้าง / แก้ไข CA
- ชื่อที่สื่อความหมาย: เราใส่ชื่อที่สื่อความหมายให้กับ CA นี้ตามที่เราต้องการ
- วิธีการ: สร้างผู้ออกใบรับรองภายใน
- ผู้ออกใบรับรองภายใน
- ประเภทคีย์: ECDSA พร้อม secp521r1 ซึ่งเข้ากันได้กับ OpenVPN
- อัลกอริทึมไดเจสต์: sha512
- อายุการใช้งานวัน: 3650 (10 ปี)
- ชื่อสามัญ: CN ต้องเป็นชื่อที่สื่อความหมายซึ่งอธิบาย CA นี้โดยไม่ซ้ำกัน ในกรณีของเราเรามีเพียง CA สำหรับ OpenVPN ดังนั้นเราจึงใส่“ openvpn-ca”
- รหัสประเทศ: ไม่มี ไม่จำเป็นต้องกรอกใบรับรอง OpenVPN ใหม่อีกต่อไป
การกำหนดค่า CA จะเป็นดังนี้:
ในเมนูต่างๆเราสามารถเลือกตัวเลือกการกำหนดค่าอื่น ๆ เช่นการนำเข้า CA ที่เราสร้างไว้แล้วหรือการสร้าง CA ระดับกลางเราจะสร้าง CA จากนั้นใบรับรองโดยไม่ต้องใช้ CA ระดับกลางใด ๆ
นอกจากนี้เรายังสามารถเลือกระหว่าง RSA หรือ ECDSA และแม้กระทั่งใช้ความยาวคีย์ RSA ที่แตกต่างกันและอัลกอริทึม EC ที่แตกต่างกันในการสร้าง CA ใน“ อัลกอริทึมการย่อย” เราสามารถเลือกอัลกอริทึมแฮชที่แตกต่างกันที่แนะนำมากที่สุดคือ sha256, sha384 และ sha512 คุณไม่ควรใช้ sha1 เพื่อความปลอดภัย
เมื่อสร้าง CA แล้วจะปรากฏในรายการ CA ดังที่คุณเห็นที่นี่:
ในเมนูนี้เราจะเห็นจำนวนใบรับรองที่เกี่ยวข้อง CN ความถูกต้องของใบรับรองและหากเราใช้ CA นี้อยู่ เมื่อเรามี CA หรือใบรับรองที่ใช้งานอยู่เราจะไม่สามารถลบออกได้ ในส่วน«การดำเนินการ»เราสามารถแก้ไขคำอธิบายของใบรับรองส่งออกคีย์สาธารณะของ CA คีย์ส่วนตัวต่ออายุ CA และแม้แต่ลบ CA ที่เราเพิ่งสร้างขึ้น
สร้างใบรับรองเซิร์ฟเวอร์ OpenVPN
ตอนนี้เราต้องสร้างใบรับรองที่เซิร์ฟเวอร์ OpenVPN ที่รวมอยู่ใน pfSense จะใช้ ไปที่ส่วน "ใบรับรอง" และคลิกที่ "เพิ่ม / ลงชื่อ" เราจะมีใบรับรองที่กำหนดค่าไว้ล่วงหน้าใน pfSense เสมอเนื่องจากโปรโตคอล HTTPS ใช้เพื่อเชื่อมต่อมิฉะนั้นจะไม่สามารถทำงานได้ ใบรับรองนี้สร้างขึ้นโดยอัตโนมัติเมื่อคุณติดตั้งระบบปฏิบัติการ
เมนูการสร้างใบรับรองนั้นคล้ายกับเมนูก่อนหน้ามากเราจะต้องเลือกระหว่างสามตัวเลือก:
- วิธีการ:
- สร้างใบรับรองภายใน
- นำเข้าใบรับรองที่มีอยู่
- สร้างคำขอลงนามใบรับรอง
- ลงนามในคำขอลงนามใบรับรอง
เราจะเลือกตัวเลือกแรกสร้างใบรับรองภายใน
ต่อไปเราจะต้องตั้งชื่อที่สื่อความหมายสิ่งที่เราต้องการและการกำหนดค่าจะต้องเป็นดังนี้:
- เพิ่ม / ลงนามในใบรับรองใหม่
- วิธีการ: สร้างผู้ออกใบรับรองภายใน
- ชื่อที่สื่อความหมาย: เราใส่ชื่อที่สื่อความหมายลงในใบรับรองนี้ตามที่เราต้องการ
- ใบรับรองภายใน
- ผู้ออกใบรับรอง: เราต้องเลือก CA ก่อนหน้าที่เราเพิ่งสร้างในขั้นตอนก่อนหน้านี้
- ประเภทคีย์: ECDSA พร้อม secp521r1 ซึ่งเข้ากันได้กับ OpenVPN เช่นเดียวกับ CA
- อัลกอริทึมไดเจสต์: sha512
- อายุการใช้งานวัน: 3650 (10 ปี)
- ชื่อสามัญ: CN ต้องเป็นชื่อที่สื่อความหมายซึ่งอธิบายถึงใบรับรองเซิร์ฟเวอร์นี้อย่างชัดเจน ในกรณีของเราเรามีเพียงใบรับรองเซิร์ฟเวอร์ดังนั้นเราจึงระบุ openvpn-server
- รหัสประเทศ: ไม่มี ไม่จำเป็นต้องกรอกใบรับรอง OpenVPN ใหม่อีกต่อไป
หากเรามีใบรับรองที่มีระยะเวลามากกว่า 398 วันมีความเป็นไปได้ที่จะให้ข้อผิดพลาดกับเราในบางแพลตฟอร์มซึ่งเป็นวิธีทั่วไป แต่ไม่ใช่สำหรับ OpenVPN ดังนั้นเราสามารถวางระยะเวลาที่เราต้องการได้โดยไม่มีปัญหามันจะไม่ทำให้เราล้มเหลว
ที่ด้านล่างเราต้องเลือกตัวเลือกต่อไปนี้:
- คุณสมบัติของใบรับรอง:
- ประเภทรับรอง: server certificate
- ชื่อทางเลือก: เราสามารถปล่อยให้มันว่างเปล่าได้อย่างสมบูรณ์
เราต้องจำไว้ว่าตอนนี้เรากำลังกำหนดค่าใบรับรองดิจิทัลสำหรับเซิร์ฟเวอร์ OpenVPN ดังนั้นเราจึงต้องเลือก“ ใบรับรองเซิร์ฟเวอร์”
ส่วน“ ชื่อทางเลือก” มักใช้สำหรับใบรับรอง IPsec แต่เราจะไม่ใช้ใน OpenVPN
เมื่อสร้างแล้วเราจะเห็นในรายการใบรับรองนอกจากนี้เรายังสามารถดู CA ที่เราได้ลงนามในใบรับรองและถ้าเป็นประเภทเซิร์ฟเวอร์
ใบรับรองดิจิทัลสำหรับเซิร์ฟเวอร์นี้เป็นใบรับรองที่เราจะต้องใส่เมื่อกำหนดค่าเซิร์ฟเวอร์ OpenVPN ใน pfSense เราต้องจำชื่อที่เราให้ไว้ให้ดีเพราะในภายหลังจะมีรายชื่อใบรับรองทั้งหมดมาให้เรา
สร้างใบรับรองสำหรับลูกค้าทั้งหมด
ในการสร้างใบรับรองดิจิทัลอย่างน้อยหนึ่งรายการสำหรับไคลเอ็นต์เราต้องทำกระบวนการเดียวกันกับใบรับรองเซิร์ฟเวอร์
- เพิ่ม / ลงนามในใบรับรองใหม่
- วิธีการ: สร้างผู้ออกใบรับรองภายใน
- ชื่อที่สื่อความหมาย: เราใส่ชื่อที่สื่อความหมายลงในใบรับรองไคลเอ็นต์นี้
- ใบรับรองภายใน
- ผู้ออกใบรับรอง: เราต้องเลือก CA ก่อนหน้านี้ที่เราสร้างไว้ในขั้นตอนแรก
- ประเภทคีย์: ECDSA พร้อม secp521r1 ซึ่งเข้ากันได้กับ OpenVPN เช่นเดียวกับ CA
- อัลกอริทึมไดเจสต์: sha512
- อายุการใช้งานวัน: 3650 (10 ปี)
- ชื่อสามัญ: CN ต้องเป็นชื่อที่สื่อความหมายซึ่งอธิบายใบรับรองไคลเอ็นต์นี้โดยไม่ซ้ำกัน ในกรณีของเราเรามีเพียงใบรับรองไคลเอ็นต์ดังนั้นเราจึงระบุ openvpn-client1
- รหัสประเทศ: ไม่มี ไม่จำเป็นต้องกรอกใบรับรอง OpenVPN ใหม่อีกต่อไป
ในส่วน“ คุณสมบัติของใบรับรอง” เราจะต้องกำหนดค่าดังต่อไปนี้:
- คุณสมบัติของใบรับรอง:
- ประเภทรับรอง: user certificate
- ชื่อทางเลือก: เราสามารถปล่อยให้มันว่างเปล่าได้อย่างสมบูรณ์
เมื่อสร้างแล้วเราจะเห็นรายการใบรับรองใหม่ที่สร้างขึ้นใน pfSense
หากเราคลิกที่แก้ไขสิ่งเดียวที่เราทำได้คือแก้ไขชื่อที่สื่อความหมาย แต่เรายังสามารถส่งออกคีย์ส่วนตัวด้วยข้อความรหัสผ่านหากเราใส่รหัสผ่านคีย์ส่วนตัวจะถูกเข้ารหัสด้วย AES-256-CBC เพื่อ ปกป้องเนื้อหาและหลีกเลี่ยงไม่ให้หากตกอยู่ในมือคนผิดก็สามารถอ่านและใช้งานได้ นี่คือสิ่งที่เราใช้ในการส่งออกใบรับรองของลูกค้าซึ่งเราจะแสดงให้คุณเห็นในภายหลัง
หากเราต้องการสร้างใบรับรองลูกค้าเพิ่มเติมเราสามารถทำได้ในลักษณะเดียวกันสิ่งที่เราต้องทำคือใส่คำอธิบายที่แตกต่างกันและ CN ที่แตกต่างกัน
เมื่อเราสร้างใบรับรองทั้งหมดของไคลเอนต์ที่กำลังจะเชื่อมต่อกับเซิร์ฟเวอร์ OpenVPN เสร็จแล้วเราจะดำเนินการกำหนดค่าเซิร์ฟเวอร์ทีละขั้นตอน
กำหนดค่าเซิร์ฟเวอร์ OpenVPN พร้อมอธิบายตัวเลือกทั้งหมด
ในการกำหนดค่าเซิร์ฟเวอร์ OpenVPN สิ่งที่เราต้องทำคือไปที่เมนูหลักของ pfSense คลิกที่ส่วน“ VPN” และเลือก” OpenVPN "
ในส่วน“ OpenVPN” เราต้องคลิกที่“ เซิร์ฟเวอร์” และคลิกที่“ เพิ่ม” เพื่อเพิ่มเซิร์ฟเวอร์ OpenVPN ใหม่
ภายในการกำหนดค่าเซิร์ฟเวอร์ OpenVPN เราต้องเลือกตัวเลือกต่อไปนี้:
- ข้อมูลทั่วไป:
- โหมดเซิร์ฟเวอร์: การเข้าถึงระยะไกล (SSL / TLS)
- โปรโตคอล: UDP
- โหมดอุปกรณ์: tun
- อินเทอร์เฟซ WAN
- พอร์ตท้องถิ่น: 1194 โดยค่าเริ่มต้นเป็นพอร์ตนี้ขอแนะนำให้เปลี่ยน
- คำอธิบาย: เราใส่คำอธิบายของเซิร์ฟเวอร์ OpenVPN นี้เนื่องจากเราสามารถสร้างไฟล์.
ในส่วน“ โปรโตคอล” เรามีตัวเลือกการกำหนดค่าที่แตกต่างกันโดยค่าเริ่มต้นคือ“ UDP บน IPv4 เท่านั้น” เนื่องจากเรายังสามารถใช้ TCP และแม้แต่ TCP และ UDP และสำหรับเครือข่าย IPv6 ได้หากเราใช้โปรโตคอลนี้ สุทธิ. ในส่วน“ โหมดอุปกรณ์” เราสามารถเลือกจูนหรือแตะตามที่เราได้อธิบายไปก่อนหน้านี้จูนอยู่ที่ระดับของเลเยอร์ 3 และการแตะอยู่ที่ระดับของเลเยอร์ 2 พร้อมทั้งจุดแข็งและจุดอ่อน ในส่วน“ อินเทอร์เฟซ” สิ่งที่ปกติที่สุดคือการใช้ WAN แต่เราสามารถฟังเซิร์ฟเวอร์ OpenVPN นี้ได้ในทุกอินเทอร์เฟซ สุดท้ายใน“ พอร์ตภายในเครื่อง” เราสามารถแก้ไขพอร์ต TCP และ / หรือ UDP ที่เราต้องการได้ขอแนะนำว่าอย่าใช้พอร์ตเริ่มต้นซึ่งเป็น 1194
ใน " การตั้งค่าการเข้ารหัส ส่วน "เราสามารถกำหนดค่าทุกอย่างเกี่ยวกับใบรับรองดิจิทัล SSL / TLS จากนั้นเราจะอธิบายตัวเลือกทั้งหมด:
- การตั้งค่าการเข้ารหัส
- การกำหนดค่า TLS: เราเปิดใช้งานการใช้คีย์ TLS เพื่อใช้ประโยชน์จาก tls-crypt เราคลิกที่สร้างคีย์ TLS โดยอัตโนมัติ เมื่อบันทึกการเปลี่ยนแปลงจะปรากฏขึ้นหากเราต้องการใช้“ การพิสูจน์ตัวตน” หรือ“ การเข้ารหัส” ขอแนะนำให้ใช้ tls-crypt ใหม่แทน tls-auth ที่เรามีก่อนหน้านี้
- Peer Certificate Authority: เราเลือก CA ที่เราสร้างใน pfSense เองสำหรับเซิร์ฟเวอร์ OpenVPN นี้
- รายการเพิกถอนใบรับรองเพียร์: หากเราสร้างรายการเพิกถอนใบรับรองเราจะสร้างในส่วน“ ระบบ> ใบรับรองผู้จัดการ” และเลือกรายการที่เราสร้างไว้ก่อนหน้านี้ที่นี่
- ใบรับรองเซิร์ฟเวอร์: เราเลือกเซิร์ฟเวอร์ OpenVPN ในกรณีของเราคือ“ OpenVPN_ServidorOVPN (เซิร์ฟเวอร์: ใช่)”
- ความยาวพารามิเตอร์ DH: ECDH เท่านั้น
- ECDH Curve: เราเลือก secp521r1
ในส่วน“ Data การเข้ารหัสลับ การเจรจาต่อรอง” เราเปิดใช้งานและเราเลือกรหัสสมมาตรที่เราต้องการใช้สำหรับช่องข้อมูล ในกรณีของเราเราได้เลือกทั้งหมด 3: AES-256-GCM, AES-128-GCM และ CHACHA20-POLY1305 ใหม่ที่เพิ่งรวมเข้าด้วยกัน นอกจากนี้เราต้องเลือกอัลกอริทึม«ทางเลือกสำรอง»ในกรณีที่ไคลเอนต์ OpenVPN เข้ากันไม่ได้ในกรณีนี้เราเลือก AES-256-CBC แต่ถ้าคุณต้องการความปลอดภัยสูงสุดเราขอแนะนำให้เลือก AES-256-GCM เพื่อบังคับไม่ให้เชื่อมต่อ หากเราไม่ใช้การเข้ารหัสที่รัดกุมไม่มีอะไรที่จะใช้ AES-256-CBC หากมีไคลเอนต์เก่าเราต้องอัปเดต
ใน“ Auth Digest Algorithm” เราจะเลือก SHA256 หรือ SHA512 ฟังก์ชันแฮชที่ปลอดภัยเสมอ
ในส่วน "Hardware Crypto": หากเรามีการเร่งการเข้ารหัสฮาร์ดแวร์เราจะเลือกที่นี่เพื่อให้การเชื่อมต่อกับ VPN ทำงานได้เร็วขึ้นหากเราไม่มีหรือไม่ต้องการเปิดใช้งานเราจะปล่อยค่าเริ่มต้นไว้
ใน«ความลึกของใบรับรอง»เราเลือก«หนึ่ง (ไคลเอนต์ + เซิร์ฟเวอร์) »
ในส่วน«การตั้งค่าอุโมงค์»เราจะต้องกำหนดค่าตัวเลือกต่อไปนี้:
- IPv4 Tunnel Network: เราจะใส่ซับเน็ตเฉพาะสำหรับไคลเอนต์ OpenVPN ต้องเป็นซับเน็ตฟรีที่เราไม่เคยใช้มาก่อน ในกรณีของเราเราได้เลือก 10.8.0.0/24 ซึ่งเป็นค่าเริ่มต้นในซอฟต์แวร์นี้ แต่เราสามารถใช้ซับเน็ตใดก็ได้
- IPv6 Tunnel Network: เหมือนกับใน IPv4 แต่ถ้าคุณใช้เครือข่าย IPv6
- เปลี่ยนเส้นทาง IPv4 Gateway และ IPv6: หากเราเปิดใช้งานตัวเลือกนี้การรับส่งข้อมูลทั้งหมดจากไคลเอนต์ OpenVPN จะผ่านเซิร์ฟเวอร์ OpenVPN และจะสามารถเข้าถึงเครือข่ายย่อยทั้งหมดของระบบปฏิบัติการเราสามารถบล็อกการเข้าถึงเครือข่ายย่อยบางเครือข่ายผ่านตัวเลือกการกำหนดค่าไฟร์วอลล์ แต่ไคลเอนต์ จะได้รับเส้นทางเพื่อเข้าถึงเครือข่ายย่อยทั้งหมด หากเราจะทำ Full-Tunnel VPN เราจะเปิดใช้งานตัวเลือกนี้หากเราจะใช้ Split-Tunnel เราจะปิดการใช้งานและเราจะต้องป้อนเครือข่ายย่อยที่เราต้องการให้เข้าถึงได้ด้านล่าง
- การเชื่อมต่อพร้อมกัน: 10 คือจำนวนไคลเอนต์สูงสุดที่เชื่อมต่อพร้อมกันซึ่งจะขึ้นอยู่กับความต้องการของคุณ
- อนุญาตการบีบอัด: ปฏิเสธเราไม่ต้องการให้บีบอัดเพื่อหลีกเลี่ยงการโจมตี
- Push Compression: เราจะสามารถให้ตัวเลือกการบีบอัดนี้ (ไม่มีการบีบอัด) ให้กับลูกค้าได้
- การสื่อสารระหว่างไคลเอนต์: เราสามารถอนุญาตหรือปฏิเสธว่าไคลเอนต์ OpenVPN สามารถสื่อสารกันได้เพื่อความปลอดภัยขอแนะนำให้ปิดการใช้งาน แต่ในบางกรณีมีความจำเป็นและแนะนำให้มีการสื่อสารสิ่งนี้จะขึ้นอยู่กับความต้องการของคุณ
- การเชื่อมต่อที่ซ้ำกัน: โดยปกติตัวเลือกนี้ควรปิดใช้งานไคลเอ็นต์ OpenVPN แต่ละตัวควรมีข้อมูลประจำตัวของตัวเองและไม่ใช้ไคลเอนต์เดียวกันที่มีใบรับรองเดียวกันในการเชื่อมต่อ ตัวเลือกนี้มีประโยชน์หากเราต้องการใช้ใบรับรองเดียวกันบนสมาร์ทโฟนคอมพิวเตอร์และแท็บเล็ต (อุปกรณ์ 3 เครื่อง) และเราจะเชื่อมต่อพร้อมกัน คำแนะนำของเราคือการออกใบรับรองสำหรับอุปกรณ์แต่ละเครื่อง
ใน "การตั้งค่าไคลเอ็นต์" เราสามารถจัดหา IP แบบไดนามิกให้กับไคลเอ็นต์จากนั้นเราสามารถระบุได้ว่าไคลเอนต์แต่ละรายมี IP ของช่วงเฉพาะ 10.8.0.0/24 ใน“ โทโพโลยี” เราเลือก“ ซับเน็ต” ซึ่งมีประสิทธิภาพมากกว่า net30 ซึ่งเป็นวิธีเก่า
ใน«การตั้งค่า Ping »เราสามารถกำหนดค่า Ping เพื่อดูว่าไคลเอนต์ยังคงเชื่อมต่ออยู่หรือขาดการเชื่อมต่อ
ใน“ การตั้งค่าไคลเอนต์ขั้นสูง” เราสามารถกำหนดค่า DNS เซิร์ฟเวอร์เซิร์ฟเวอร์ DNS ภายนอกเช่น 8.8.8.8 ยอดนิยมหรือเซิร์ฟเวอร์ DNS ภายในจาก pfSense เอง นอกจากนี้เรายังสามารถเลือกตัวเลือก“ บล็อกการเข้าถึงเซิร์ฟเวอร์ DNS” ยกเว้นอุโมงค์ VPN เพื่อปรับปรุงความปลอดภัย
ในส่วน "การกำหนดค่าขั้นสูง" เราสามารถเพิ่มกฎขั้นสูงเพิ่มเติมที่เราไม่มีในอินเทอร์เฟซผู้ใช้แบบกราฟิกได้ตัวอย่างเช่นเราสนใจที่จะเจรจากับ TLS 1.3 อยู่เสมออย่างน้อยที่สุดหากไคลเอนต์เข้ากันไม่ได้ก็จะไม่เชื่อมต่อ เนื่องจากเราจะไม่เปิดใช้งาน TLS 1.2
ดังที่เราได้อธิบายไปก่อนหน้านี้เมื่อบันทึกการกำหนดค่าเซิร์ฟเวอร์ OpenVPN เป็นครั้งแรกในส่วน“ คีย์ TLS” เราจะเห็นคีย์ TLS ที่สร้างขึ้นโดยอัตโนมัติโดย pfSense และเราต้องเลือก“ การเข้ารหัสและการตรวจสอบความถูกต้อง TLS”
เมื่อกำหนดค่าแล้วเราจะเห็นข้อมูลสรุปของการกำหนดค่าด้านล่าง:
การกำหนดค่าอื่นที่เราสามารถทำได้เกี่ยวกับเส้นทางก็คือแทนที่จะบังคับให้ไคลเอนต์ทั้งหมดส่งทราฟฟิกทั้งหมดผ่านอุโมงค์ VPN เราสามารถกำหนดได้ว่าเราสามารถเข้าถึงได้เฉพาะเครือข่ายที่เราต้องการและโดยอัตโนมัติไคลเอนต์ที่พวกเขาจะได้รับ เส้นทางไปยังเครือข่ายเหล่านี้
เมื่อเรากำหนดค่าเซิร์ฟเวอร์ OpenVPN แล้วเราจะกำหนดค่าไฟร์วอลล์เพื่ออนุญาตการเชื่อมต่อขาเข้า
กำหนดค่ากฎบนไฟร์วอลล์เพื่ออนุญาตการเข้าถึง
ในส่วน "ไฟร์วอลล์ / กฎ" เราคลิกที่ WAN และสร้างกฎด้วยค่าต่อไปนี้:
- การดำเนินการ: PASS
- อินเทอร์เฟซ: WAN
- ที่อยู่ตระกูล: IPv4
- โปรโตคอล: UDP
- ที่มา: ใด ๆ ที่มาใด ๆ เนื่องจากเราไม่เคยรู้มาก่อนว่าเราจะมี IP สาธารณะใด
- ปลายทาง: ที่อยู่ WAN ในพอร์ต OpenVPN 1194 หรือในพอร์ตที่เรากำหนดค่าเซิร์ฟเวอร์
เราบันทึกและเราจะสร้างกฎในอินเทอร์เน็ต WAN
ตอนนี้เราต้องไปที่ส่วน“ ไฟร์วอลล์ / กฎ / OpenVPN” ในส่วนนี้เป็นที่ที่เราจะกำหนดการเข้าถึงไคลเอนต์ OpenVPN หากเราต้องการอนุญาตให้ไคลเอนต์ OpenVPN เข้าถึงเครือข่ายย่อย pfSense และอินเทอร์เน็ตด้วยเราจะต้องสร้างกฎ“ ผ่านทั้งหมด” โดยกำหนดสิ่งต่อไปนี้:
- การดำเนินการ: PASS
- อินเทอร์เฟซ: OpenVPN
- ที่อยู่ตระกูล: IPv4
- โปรโตคอล: ใด ๆ
- ที่มา: ใด ๆ
- ปลายทาง: ใดก็ได้
หากเราต้องการสร้างกฎเฉพาะเพื่อปฏิเสธการรับส่งข้อมูลไปยังเครือข่ายย่อยบางเครือข่ายเราจะต้องสร้างกฎที่ตรงตามเงื่อนไขนี้
เมื่อเราสามารถเข้าถึงจากอินเทอร์เน็ต WAN และไปยังเครือข่ายย่อยใด ๆ ของระบบปฏิบัติการและการเปลี่ยนเส้นทางไปยังอินเทอร์เน็ตเราจะส่งออกไฟล์การกำหนดค่า OpenVPN สำหรับไคลเอนต์
ส่งออกไฟล์คอนฟิกูเรชัน OpenVPN สำหรับไคลเอนต์
ไปที่ส่วน“ VPN / OpenVPN / Client Export” ที่นี่เราจะกำหนดค่าส่วนขยายเพื่อสร้างการกำหนดค่าอัตโนมัติสำหรับไคลเอนต์:
- เซิร์ฟเวอร์การเข้าถึงระยะไกล: เราจะเลือกเซิร์ฟเวอร์ VPN ที่เรากำหนดค่าไว้เราสามารถมีได้หลายตัวดังนั้นเราจะเลือกสิ่งที่เราสนใจ
- การแก้ไขชื่อโฮสต์: โดเมน DDNS ที่เรากำหนดค่าไว้ใน pfSense หรือที่อยู่ IP ของ WAN เราจะมีความเป็นไปได้หลายประการ
- ตรวจสอบเซิร์ฟเวอร์ CN: อัตโนมัติ - ใช้ Verify-x509-name
- บล็อก DNS ภายนอก: เราเปิดใช้งานตัวเลือกนี้
- ใช้พอร์ตโลคัลแบบสุ่ม: เราเปิดใช้งานตัวเลือกนี้
เมื่อกำหนดค่าทั้งหมดข้างต้นแล้วเราต้องคลิกที่ไคลเอนต์เพื่อส่งออกสิ่งที่ปกติที่สุดคือการเลือก "การกำหนดค่าแบบอินไลน์: ไคลเอนต์ส่วนใหญ่" และจะส่งออก CA คีย์สาธารณะและส่วนตัวของใบรับรองของลูกค้าและ การกำหนดค่าทั้งหมด
คำแนะนำของเราคือเลือกตัวเลือกนี้จาก«การกำหนดค่าแบบอินไลน์: ไคลเอนต์ส่วนใหญ่» แต่เพิ่มคีย์ส่วนตัวของไคลเอนต์ที่เข้ารหัสดังนั้นหากไฟล์การกำหนดค่านี้ตกไปอยู่ในมือคนผิดก็จะไม่สามารถเข้าถึงเซิร์ฟเวอร์ VPN ของเราได้ ในการส่งออกคีย์ส่วนตัวที่เข้ารหัสเราต้องไปที่ส่วน“ System / Cert Manager” และไปที่“ แก้ไข” ใบรับรองของลูกค้าใส่ข้อความรหัสผ่านและคลิกที่“ ส่งออกคีย์ส่วนตัว”:
ขณะนี้ด้วยโปรแกรมแก้ไขข้อความเราจะเปิดคีย์ที่เข้ารหัสนี้และไฟล์การกำหนดค่าที่เพิ่งดาวน์โหลด:
- ในไฟล์กำหนดค่า OpenVPN ที่สมบูรณ์เราจะลบทุกอย่างที่อยู่ภายใน« »
- เราคัดลอกเนื้อหาทั้งหมดของคีย์ส่วนตัวที่ส่งออกภายใน« »และบันทึกการเปลี่ยนแปลง
ตอนนี้เมื่อใช้คีย์ส่วนตัวเพื่อเชื่อมต่อกับเซิร์ฟเวอร์เราจะต้องป้อนรหัสผ่านนี้เพื่อป้องกันใบรับรอง ตอนนี้เรากำลังจะตรวจสอบว่าบริการนี้พร้อมใช้งานแล้วและเราจะเชื่อมต่อกับลูกค้ารายแรก
ตรวจสอบสถานะของบริการและไคลเอนต์ที่เชื่อมต่อ
ในส่วน“ สถานะ / OpenVPN” เราสามารถดูว่ามีการเปิดใช้งานหรือไม่เราเปิดใช้งานและเชื่อมต่อกับลูกค้ารายแรกโดยไม่มีปัญหา
คำแนะนำเพิ่มเติมที่คุณสามารถทำได้กับ pfSense คือให้ไคลเอ็นต์ VPN เดียวกันกับที่ใช้ใบรับรองเฉพาะที่มีที่อยู่ IP เดียวกันเสมอ ในการดำเนินการนี้เราต้องเข้าไปที่«การแทนที่เฉพาะไคลเอ็นต์»เพิ่มใหม่เลือกเซิร์ฟเวอร์และ CN ของไคลเอ็นต์เฉพาะและในส่วน«ขั้นสูง»เราใส่:
ifconfig-push 10.8.0.2 255.255.255.0;
และไคลเอนต์ VPN ที่มี CN นั้นจะมีที่อยู่ IP ส่วนตัวนี้อยู่ในอุโมงค์ VPN เสมอ