กำหนดค่าเซิร์ฟเวอร์ OpenVPN ใน pfSense ด้วยความปลอดภัยที่ดีที่สุด

ระบบปฏิบัติการ pfSense ซึ่งมุ่งเน้นไปที่ ไฟร์วอลล์ และเราเตอร์มีหลายตัว VPN โปรโตคอลในการเชื่อมต่อไซต์ผ่าน Site-to-Site VPN และเรายังสามารถกำหนดค่า VPN การเข้าถึงระยะไกลเพื่อเชื่อมต่อไคลเอนต์มือถือที่แตกต่างกันและเพื่อให้การรับส่งข้อมูลทางอินเทอร์เน็ตทั้งหมดผ่านระบบปฏิบัติการเอง OpenVPN เป็นหนึ่งในโปรแกรมที่ใช้มากที่สุดในการสร้างเครือข่ายส่วนตัวเสมือนด้วยความปลอดภัยความยืดหยุ่นและการทำงานที่ดี วันนี้ในบทความนี้เราจะอธิบายวิธีกำหนดค่าเซิร์ฟเวอร์ OpenVPN ที่อยู่ใน pfSense ทีละขั้นตอน

กำหนดค่าเซิร์ฟเวอร์ 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 เสมอ