วันอังคารที่ 19 มกราคม พ.ศ. 2553

Squid

ในการเขียนกฎของ proxy
ตัวอย่างการ authen

acl name proxy_auth REQUIRED
http_access allow name

# set up the acl name for the local network
acl localnetwork proxy_auth 192.168.1.0/24
# set up the acl name for user authentication
acl localusers proxy_auth REQUIRED

# set up all the denies for those not in the local network
http_access deny !localnetwork
# set up the user authentication ;http_access deny !localusers
http_access allow localusers
# set up the allows for the local network
http_access allow localnetwork
# deny anything that passes beyond this point
http_access deny all

จากกฎด้านบนนี้จะทำใครที่เข้าไม่ได้เพราะ ip นั้นไม่ได้อยู่ใน localnetwork และจะไม่สามารถเข้าสู่หน้าให้ทำการ login ได้
นอกเหนือจากนั้นจะปล่อยผ่าน ip ให้ทำการ authen โดยการถาม user,password และจำทำการ Denied ถ้าใส่ข้อมูลผิด


หากใครที่ไม่สามารถเข้าสู่การ authen ได้เกิดจาก http_access allow localusers rule
หากที่ไม่สามารถทำการ authen ผ่านได้จะติดที่ http_access deny all

Incorrect ACL formats

ตัวอย่างต่อไปนี้ไม่ถูกต้อง เพราะทุก user ที่อยู่ใน localnetwork นั้นสามารถ access ได้แล้วทำให้ไม่สามารถตรวจสอบการ Authen
# set up the allows for the local network
http_access allow localnetwork
# set up the user authentication
http_access allow localusers

ตัวอย่างต่อไปผิดเพราะ user ที่ผ่านการ authen ได้แล้วถูก deny all
# set up the user authentication
http_access allow localusers
# deny anything that passes beyond this point
http_access deny all

How Squid processes authentication

squid ใช้ sub-processes ในการ process การ Authen ต้องการหลีกเลี่ยงโดยการ block โดยใช้ slow connection
การ authen ใช้ sub processes ในการติดต่อกับ squid ซึ่งใช้ unix pipe และ squid โดยผ่านทาง stdin , stdout
sup-process จะตอบกลับเป็น "OK","ERR" ขึ้นอยู่กับ สถานะของการ authen

เหตุว่าทุกครั้งที่มีการร้องขอจำเป็นมีการ authen. squid จะทำการเปรียบเทียบ user,password ตามว่าถูกต้องหรือไม่และ squid
จะส่งการร้องขอเพื่อทำการ authen เพียงแค่หนึ่งครั้งสำหรับการตรวจสอบ

แต่ในความเป็นแล้วมันถูกใช้งานกับหลาย user เพื่อทำการแชร์ในการ login.squid ใช้ splay tree ในการเช็คและไม่ตอบกลับถ้าเกิด
การซ้ำกันของ user

authen hearders ถูกใช้ในครั้งแรกโดย proxy ที่มันร้องขอ และบางครั้งมันไม่จำเป็นต้องใช้
ในทางกลับกัน ACL เราสามารถใช้ http_access allow localusers เป็น http_access deny !localusers.