จากบทความ คอนฟิก 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
ข้อมูลอ้างอิง
- คอนฟิก Squid Proxy Server ให้ผู้ใช้ใส่ user, password ก่อนเข้าเว็บ
- ติดตั้ง OpenLDAP Server บน Fedora 13
- squid: basic_ldap_auth