คอนฟิก Squid Proxy Server ให้ตรวจสอบ user, password จาก LDAP

จากบทความ คอนฟิก Squid Proxy Server ให้ผู้ใช้ใส่ user, password ก่อนเข้าเว็บ

เป็นการตรวจสอบ user จาก Local Password หรือไฟล์ /etc/passwd, /etc/shadow ผ่าน Linux PAM ที่อยู่บนเครื่อง proxy server เอง

แต่ถ้าบริษัทหรือองค์กรของเรามีการเก็บ user, password อยู่บนเซิร์ฟเวอร์เครื่องอื่น เช่นเก็บรวมเป็นศูนย์กลางบน LDAP Server เราก็สามารถคอนฟิก Squid Proxy Server ให้ตรวจสอบ user, password จาก LDAP Server ได้

วิธีการคือ แก้ไขคอนฟิกในส่วนของ auth_param basic program เปลี่ยนไปใช้ไฟล์ basic_ldap_auth

สมมติว่าค่าคอนฟิกต่างๆ ของ LDAP Server มีดังนี้

  • ออปชั่น ‘-v’ ระบุเวอร์ชั่นของ LDAP ที่ใช้ = 3
  • ออปชั่น ‘-b’ ระบุ Base DN สำหรับการค้นหา = “dc=example,dc=com”
  • ออปชั่น ‘-f’ ระบุเงื่อนไขการค้นหา uid=% คือให้ค้นหาการ username (บน LDAP Server ก็ต้องเก็บโดยใช้ชื่อฟิลด์ uid ด้วย)
  • ออปชั่น ‘-h’ ระบุ IP Address = 192.168.1.10

แต่ถ้า LDAP Server ที่คุณใช้ ต้องมีการระบุชื่อ DN และ password ที่ใช้ bind ด้วย ก็ต้องระบุ 2 ออปชั่นนี้เพิ่มเติม

  • ออปชั่น ‘-D’ ระบุชื่อ DN สำหรับการ bind เข้า LDAP
  • ออปชั่น ‘-w’ ระบุ password ที่ใช้ bind เข้า LDAP

ตัวอย่างการแก้ไขคอนฟิก

[root@fc16-64a ~]# cat /etc/squid/squid.conf
....
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
auth_param basic children 5
auth_param basic realm Proxy Authentication
auth_param basic credentialsttl 12 hours
auth_param basic program /usr/lib64/squid/basic_ldap_auth -v 3 -b "dc=example,dc=com" -f uid=%s -h 192.168.1.10
acl user_ldap_auth proxy_auth REQUIRED
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet user_ldap_auth
...

ใช้คำสั่ง service หรือ systemctl เพื่อ start หรือ reload เซอร์วิส squid

[root@fc16-64a ~]# systemctl reload squid.service

เสร็จแล้วลองทดสอบจาก Browser

หมายเหตุ หลังจากทดสอบเรียบร้อยใช้งานได้แล้ว เพื่อความปลอดภัยของเซิร์ฟเวอร์ หากคุณเปลี่ยนจาก basic_pam_auth มาเป็น basic_ldap_auth แล้ว ให้ยกเลิก setuid root ของไฟล์ basic_pam_auth ด้วย ใช้คำสั่ง chmod ดังนี้

[root@fc16-64a ~]# ls -l /usr/lib64/squid/basic_pam_auth
-rwsr-x---. 1 root squid 15416 Sep 20 15:36 /usr/lib64/squid/basic_pam_auth
[root@fc16-64a ~]# chmod u-s /usr/lib64/squid/basic_pam_auth
[root@fc16-64a ~]# ls -l /usr/lib64/squid/basic_pam_auth
-rwxr-x---. 1 root squid 15416 Sep 20 15:36 /usr/lib64/squid/basic_pam_auth

 

ข้อมูลอ้างอิง

 

Leave a Reply

Your email address will not be published.