พร็อกซีเซิร์ฟเวอร์ฟรีสำหรับองค์กรที่มีการให้สิทธิ์โดเมน

พร็อกซีเซิร์ฟเวอร์ฟรีสำหรับองค์กรที่มีการให้สิทธิ์โดเมน

pfSense+Squid พร้อมการกรอง https + เทคโนโลยีการลงชื่อเพียงครั้งเดียว (SSO) พร้อมการกรองตามกลุ่ม Active Directory

พื้นหลังโดยย่อ

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

คำตอบที่ถูกต้องคือซื้อโซลูชันเช่น Kerio Control หรือ UserGate แต่เช่นเคยไม่มีเงิน แต่มีความจำเป็น

นี่คือจุดที่ Squid เก่าๆ เข้ามาช่วยเหลือเรา แต่ขอย้ำอีกครั้งว่า ฉันจะรับเว็บอินเทอร์เฟซได้ที่ไหน แซมส์2? ล้าสมัยทางศีลธรรม นี่คือจุดที่ pfSense เข้ามาช่วยเหลือ

ลักษณะ

บทความนี้จะอธิบายวิธีกำหนดค่าพร็อกซีเซิร์ฟเวอร์ Squid
Kerberos จะถูกใช้เพื่ออนุญาตผู้ใช้
SquidGuard จะถูกใช้เพื่อกรองตามกลุ่มโดเมน

ระบบตรวจสอบ Lightsquid, sqstat และ pfSense ภายในจะถูกใช้สำหรับการตรวจสอบ
ปัญหาทั่วไปที่เกี่ยวข้องกับการนำเทคโนโลยีการลงชื่อเพียงครั้งเดียว (SSO) มาใช้ก็จะได้รับการแก้ไขเช่นกัน กล่าวคือ แอปพลิเคชันที่พยายามเข้าถึงอินเทอร์เน็ตภายใต้บัญชี Compass ของบัญชีระบบ

กำลังเตรียมติดตั้ง Squid

pfSense จะถูกใช้เป็นพื้นฐาน คำแนะนำในการติดตั้ง.

ภายในนั้นเราจัดระเบียบการรับรองความถูกต้องของไฟร์วอลล์โดยใช้บัญชีโดเมน การแนะนำ

สำคัญมาก!

ก่อนที่คุณจะเริ่มติดตั้ง Squid คุณต้องกำหนดค่าเซิร์ฟเวอร์ DNS ใน pfsense สร้างบันทึก A และบันทึก PTR บนเซิร์ฟเวอร์ DNS ของเรา และกำหนดค่า NTP เพื่อให้เวลาไม่แตกต่างจากเวลาบนตัวควบคุมโดเมน

และในเครือข่ายของคุณ ให้มีความสามารถสำหรับอินเทอร์เฟซ pfSense WAN ในการเข้าถึงอินเทอร์เน็ต และสำหรับผู้ใช้บนเครือข่ายท้องถิ่นเพื่อเชื่อมต่อกับอินเทอร์เฟซ LAN รวมถึงผ่านพอร์ต 7445 และ 3128 (ในกรณีของฉัน 8080)

ทั้งหมดพร้อมหรือยัง? โดเมนเชื่อมต่อผ่าน LDAP เพื่อขออนุญาตบน pfSense หรือไม่ และมีการซิงโครไนซ์เวลาหรือไม่ ยอดเยี่ยม. ถึงเวลาที่จะเริ่มกระบวนการหลักแล้ว

การติดตั้งและการกำหนดค่าล่วงหน้า

เราจะติดตั้ง Squid, SquidGuard และ LightSquid จากตัวจัดการแพ็คเกจ pfSense ในส่วน “ตัวจัดการระบบ/แพ็คเกจ”

หลังจากการติดตั้งสำเร็จ ให้ไปที่ “Services/Squid Proxy server/” และก่อนอื่นเลย ในแท็บ Local Cache ให้กำหนดค่าแคช ฉันตั้งค่าทุกอย่างเป็น 0 เพราะ ฉันไม่เห็นจุดใดในการแคชไซต์มากนัก เบราว์เซอร์ก็จัดการเรื่องนี้ได้ดี หลังจากตั้งค่าแล้ว ให้กดปุ่ม "บันทึก" ที่ด้านล่างของหน้าจอ ซึ่งจะทำให้เราสามารถตั้งค่าพร็อกซีพื้นฐานได้

การตั้งค่าหลักมีดังนี้:

พร็อกซีเซิร์ฟเวอร์ฟรีสำหรับองค์กรที่มีการให้สิทธิ์โดเมน

พอร์ตเริ่มต้นคือ 3128 แต่ฉันชอบใช้ 8080

พารามิเตอร์ที่เลือกในแท็บอินเทอร์เฟซพร็อกซีจะกำหนดอินเทอร์เฟซที่พร็อกซีเซิร์ฟเวอร์ของเราจะรับฟัง เนื่องจากไฟร์วอลล์นี้สร้างขึ้นในลักษณะที่ดูอินเทอร์เน็ตผ่านอินเทอร์เฟซ WAN แม้ว่า LAN และ WAN อาจอยู่บนเครือข่ายย่อยภายในเครื่องเดียวกัน ฉันขอแนะนำให้ใช้ LAN สำหรับพร็อกซี

จำเป็นต้องมี Loopback เพื่อให้ sqstat ทำงาน

ด้านล่างนี้คุณจะพบการตั้งค่าพร็อกซีแบบโปร่งใส รวมถึงตัวกรอง SSL แต่เราไม่ต้องการมัน พร็อกซีของเราจะไม่โปร่งใส และสำหรับการกรอง https เราจะไม่จัดการกับการทดแทนใบรับรอง (ท้ายที่สุด เรามีการจัดการเอกสาร , ลูกค้าธนาคาร ฯลฯ ) มาดูการจับมือกันกันดีกว่า

ในขั้นตอนนี้ เราต้องไปที่ตัวควบคุมโดเมนของเรา สร้างบัญชีในนั้นเพื่อตรวจสอบสิทธิ์ (คุณสามารถใช้บัญชีที่คุณกำหนดค่าสำหรับการตรวจสอบสิทธิ์บน pfSense ได้ด้วย) ปัจจัยที่สำคัญมากที่นี่คือหากคุณต้องการใช้การเข้ารหัส AES128 หรือ AES256 ให้ทำเครื่องหมายในช่องที่เหมาะสมในการตั้งค่าบัญชีของคุณ

หากโดเมนของคุณเป็นฟอเรสต์ที่ซับซ้อนมากซึ่งมีไดเรกทอรีจำนวนมากหรือโดเมนของคุณเป็น .local แสดงว่าเป็นไปได้ แต่ไม่แน่นอน คุณจะต้องใช้รหัสผ่านง่ายๆ สำหรับบัญชีนี้ เป็นที่ทราบถึงจุดบกพร่อง แต่มีความซับซ้อน รหัสผ่าน มันอาจจะใช้งานไม่ได้ คุณต้องตรวจสอบเป็นรายกรณี

พร็อกซีเซิร์ฟเวอร์ฟรีสำหรับองค์กรที่มีการให้สิทธิ์โดเมน

หลังจากทั้งหมดนี้ เราสร้างไฟล์คีย์สำหรับ Kerberos บนตัวควบคุมโดเมน เปิดพรอมต์คำสั่งด้วยสิทธิ์ของผู้ดูแลระบบแล้วป้อน:

# ktpass -princ HTTP/[email protected] -mapuser pfsense -pass 3EYldza1sR -crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All} -ptype KRB5_NT_PRINCIPAL -out C:keytabsPROXY.keytab

ในกรณีที่เราระบุ FQDN pfSense ของเรา โปรดเคารพกรณีนี้ ในพารามิเตอร์ mapuser เราป้อนบัญชีโดเมนและรหัสผ่านของเรา และใน crypto เราเลือกวิธีการเข้ารหัส ฉันใช้ rc4 สำหรับการทำงาน และในฟิลด์ -out เราเลือกตำแหน่ง เราจะส่งไฟล์กุญแจสำเร็จรูปของเรา
หลังจากสร้างไฟล์คีย์สำเร็จแล้ว เราจะส่งไฟล์ไปที่ pfSense ของเรา ฉันใช้ Far สำหรับสิ่งนี้ แต่คุณสามารถทำได้โดยใช้คำสั่ง สีโป๊ว หรือผ่านเว็บอินเตอร์เฟส pfSense ในส่วน "DiagnosticsCommand Line"

ตอนนี้เราสามารถแก้ไข create /etc/krb5.conf ได้แล้ว

พร็อกซีเซิร์ฟเวอร์ฟรีสำหรับองค์กรที่มีการให้สิทธิ์โดเมน

โดยที่ /etc/krb5.keytab เป็นไฟล์คีย์ที่เราสร้างขึ้น

อย่าลืมตรวจสอบการทำงานของ Kerberos โดยใช้ kinit หากไม่ได้ผล ก็ไม่มีประโยชน์ที่จะอ่านเพิ่มเติม

การกำหนดค่าการรับรองความถูกต้องของปลาหมึกและไม่มีรายการการเข้าถึงการรับรองความถูกต้อง

เมื่อกำหนดค่า Kerberos สำเร็จแล้ว เราจะแนบมันเข้ากับ Squid ของเรา

ในการดำเนินการนี้ไปที่ ServicesSquid Proxy Server และในการตั้งค่าหลักไปที่ด้านล่างสุดเราจะพบปุ่ม "การตั้งค่าขั้นสูง"

ในฟิลด์ตัวเลือกแบบกำหนดเอง (ก่อนการตรวจสอบสิทธิ์) ให้ป้อน:

#Хелперы
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -s GSS_C_NO_NAME -k /usr/local/etc/squid/squid.keytab -t none
auth_param negotiate children 1000
auth_param negotiate keep_alive on
#Списки доступа
acl auth proxy_auth REQUIRED
acl nonauth dstdomain "/etc/squid/nonauth.txt" 
#Разрешения 
http_access allow nonauth 
http_access deny !auth
http_access allow auth

ที่ไหน โปรแกรมเจรจา auth_param /usr/local/libexec/squid/negotiate_kerberos_auth — เลือกตัวช่วยตรวจสอบสิทธิ์ Kerberos ที่เราต้องการ

คีย์ -s ด้วยความหมาย GSS_C_NO_NAME — กำหนดการใช้งานบัญชีใด ๆ จากไฟล์คีย์

คีย์ -k ด้วยความหมาย /usr/local/etc/squid/squid.keytab — กำหนดให้ใช้ไฟล์แท็บคีย์นี้โดยเฉพาะ ในกรณีของฉัน นี่เป็นไฟล์ keytab เดียวกับที่เราสร้างขึ้น ซึ่งฉันคัดลอกไปยังไดเร็กทอรี /usr/local/etc/squid/ และเปลี่ยนชื่อมันเนื่องจาก squid ไม่ต้องการเป็นเพื่อนกับไดเร็กทอรีนั้น เห็นได้ชัดว่าฉันไม่มี มีสิทธิเพียงพอ

คีย์ -t ด้วยความหมาย -ไม่มีเลย — ปิดการใช้งานคำขอแบบวนไปยังตัวควบคุมโดเมน ซึ่งจะช่วยลดภาระได้อย่างมากหากคุณมีผู้ใช้มากกว่า 50 คน
ในระหว่างการทดสอบ คุณสามารถเพิ่มสวิตช์ -d ได้ เช่น การวินิจฉัย จะมีการแสดงบันทึกเพิ่มเติม
auth_param เจรจาเด็ก 1000 — กำหนดจำนวนกระบวนการอนุญาตที่สามารถเปิดใช้งานพร้อมกันได้
auth_param เจรจาต่อรอง Keep_alive — ป้องกันไม่ให้การเชื่อมต่อถูกตัดการเชื่อมต่อในขณะที่ทำการโพลห่วงโซ่การอนุญาต
ต้องมีการตรวจสอบสิทธิ์ acl proxy_auth — สร้างและต้องการรายการควบคุมการเข้าถึงซึ่งรวมถึงผู้ใช้ที่ได้รับอนุญาต
acl nonauth dstdomain "/etc/squid/nonauth.txt" — เราแจ้งให้ squid ทราบเกี่ยวกับรายการการเข้าถึงที่ไม่ผ่านการรับรองความถูกต้อง ซึ่งมีโดเมนปลายทางที่ทุกคนจะได้รับอนุญาตให้เข้าถึงได้เสมอ เราสร้างไฟล์ขึ้นมาเองและป้อนโดเมนที่อยู่ภายในไฟล์ในรูปแบบ

.whatsapp.com
.whatsapp.net

Whatsapp ถูกใช้เป็นตัวอย่างด้วยเหตุผล - เป็นเรื่องที่พิถีพิถันมากเกี่ยวกับพร็อกซีการตรวจสอบสิทธิ์และจะไม่ทำงานหากไม่ได้รับอนุญาตก่อนการตรวจสอบสิทธิ์
http_access อนุญาตการไม่รับรองความถูกต้อง — อนุญาตให้ทุกคนเข้าถึงรายการนี้ได้
http_access ปฏิเสธ !auth — เราห้ามการเข้าถึงเว็บไซต์อื่นสำหรับผู้ใช้ที่ไม่ได้รับอนุญาต
http_access อนุญาตการตรวจสอบสิทธิ์ — อนุญาตให้เข้าถึงผู้ใช้ที่ได้รับอนุญาต
เพียงเท่านี้ Squid ก็ได้รับการกำหนดค่าแล้วตอนนี้ได้เวลาเริ่มกรองตามกลุ่มแล้ว

การตั้งค่า SquidGuard

ไปที่ตัวกรองพร็อกซี ServicesSquidGuard

ในตัวเลือก LDAP เราป้อนรายละเอียดของบัญชีของเราที่ใช้สำหรับการตรวจสอบสิทธิ์ Kerberos แต่ในรูปแบบต่อไปนี้:

CN=pfsense,OU=service-accounts,DC=domain,DC=local

หากมีช่องว่างหรืออักขระที่ไม่ใช่ภาษาละติน รายการทั้งหมดนี้ควรอยู่ในเครื่องหมายคำพูดเดี่ยวหรือคู่:

'CN=sg,OU=service-accounts,DC=domain,DC=local'
"CN=sg,OU=service-accounts,DC=domain,DC=local"

ขั้นต่อไป อย่าลืมทำเครื่องหมายในช่องเหล่านี้:

พร็อกซีเซิร์ฟเวอร์ฟรีสำหรับองค์กรที่มีการให้สิทธิ์โดเมน

หากต้องการตัด DOMAINpfsense ที่ไม่จำเป็นออก DOMAIN.LOCAL ซึ่งทั้งระบบมีความอ่อนไหวมาก

ตอนนี้ไปที่ Group Acl และผูกกลุ่มการเข้าถึงโดเมนของเรา ฉันใช้ชื่อง่ายๆ เช่น group_0, group_1 ฯลฯ สูงสุด 3 โดยที่ 3 หมายถึงการเข้าถึงเฉพาะรายการที่ปลอดภัยเท่านั้น และ 0 หมายถึงทุกสิ่งเป็นไปได้

มีการเชื่อมโยงกลุ่มดังต่อไปนี้:

ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0%2cOU=squid%2cOU=service-groups%2cDC=DOMAIN%2cDC=LOCAL))

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

LightSquid และ sqstat

หากในระหว่างกระบวนการตั้งค่าเราเลือกลูปแบ็คในการตั้งค่า squid และเปิดความสามารถในการเข้าถึง 7445 ในไฟร์วอลล์ทั้งในเครือข่ายของเราและบน pfSense เอง เมื่อเราไปที่ DiagnosticsSquid Proxy Reports เราก็จะสามารถเปิดทั้ง sqstat และ Lighsquid ได้อย่างง่ายดาย อย่างหลัง เราต้องการ ที่นั่นคุณสามารถสร้างข้อมูลเข้าสู่ระบบและรหัสผ่านและคุณสามารถเลือกการออกแบบได้

เสร็จ

pfSense เป็นเครื่องมือที่ทรงพลังมากที่สามารถทำสิ่งต่างๆ ได้มากมาย การพร็อกซีการรับส่งข้อมูลและการควบคุมการเข้าถึงอินเทอร์เน็ตของผู้ใช้เป็นเพียงส่วนเล็กๆ ของฟังก์ชันการทำงานทั้งหมด อย่างไรก็ตาม ในองค์กรที่มีเครื่อง 500 เครื่อง มันช่วยแก้ปัญหาและทำให้เราสามารถบันทึกได้ ในการซื้อหนังสือมอบฉันทะ

ฉันหวังว่าบทความนี้จะช่วยให้ใครบางคนแก้ปัญหาที่ค่อนข้างเกี่ยวข้องกับองค์กรขนาดกลางและขนาดใหญ่

ที่มา: will.com

เพิ่มความคิดเห็น