การกำหนด access list ใน Squid Proxy Server ตอนที่ 1

คุณสมบัติอย่างหนึ่งของ Squid Proxy Server คือสามารถกำหนดสิทธิในการใช้งาน access list ได้หลายรูปแบบ และค่อนข้างละเอียดมาก เช่นที่ยกตัวอย่างในบทความ คอนฟิก Squid Proxy Server เป็นการอนุญาตเฉพาะเครื่องไคลเอนต์ที่มี ip address ตามที่กำหนด สามารถใช้ proxy ได้

ในบทความนี้จะกล่าวถึงการกำหนดสิทธิในรูปแบบอื่นๆ ที่สามารถทำได้ ตามความต้องการ

ส่วนการคอนฟิก access list ใน Squid

ไฟล์คอนฟิกหลักของโปรแกรม Squid โดยดีฟอลต์แล้วคือไฟล์ /etc/squid/squid.conf ประกอบด้วยคอนฟิกหลายส่วน (TAG) ด้วยกัน ในบทความนี้เราจะเปลี่ยนเฉพาะในส่วน “TAG: acl” และ “TAG: http_access” เท่านั้น

คำแนะนำ สำรองไฟล์ (backup) /etc/squid/squid.conf ไว้ ก่อนการแก้ไข

การคอนฟิกจะมีสองขั้นตอนดังนี้

1) คอนฟิก TAG: acl

ขั้นแรกเพิ่มคอนฟิกในส่วน acl เพื่อกำหนดชื่อ (aclname) และชนิด (acltype) ของ access list มีรปแบบคอนฟิกดังนี้

acl <aclname> <acltype> <argument> ...

คำอธิบาย

  • <aclname> เป็นชื่อ acl ที่เรากำหนดเอง โดยชื่อชี้จะถูกกำหนดในขั้นตอนที่สองอีกทีว่าจะอนุญาตหรือปฏิเสธ
  • <acltype> เป็นชนิด access list ที่เราจะใช้ แสดงรายละเอยดในหัวข้อถัดไป
  • <argument> เป็นค่าพารามิเตอร์ สามารถกำหนดได้หลายค่า ขึ้นอยู่กับ acltype

2) คอนฟิก TAG: http_access

ส่วนที่สองคือเพิ่มคอนฟิกในส่วน TAG: http_acces เพื่อที่จะอนุญาต (allow) หรือปฏิเสธ (deny) ชื่อ acl (aclname) ที่สร้างไว้ มีรูปแบบคอนฟิกดังนี้

http_access {allow|deny} [!]<aclname> ...

คำอธิบาย

  • คอนฟิก http_access เป็นตัวกำหนดว่า aclname ที่ match ได้นั้น จะอนุญาตหรือปฏิเสธการใช้งาน
  • หากมีหลาย aclname ถูกกำหนดไว้ในบรรทัดเดียวกัน การ match ได้จะต้อง match ชื่อ aclname ทั้งหมด
  • รูปแบบการ match จะไล่เรียงตั้งแต่บรรทัดแรกจนถึงบรรทัดสุดท้ายที่ขึ้นต้นด้วย http_access
  • เครื่องหมายตกใจ ! เป็นการ match ในทางตรงกันข้าม

ชนิดของ access list <acltype>

สามารถดูรายละเอียดทั้งหมดของ acltype ได้จากในไฟล์ /etc/squid/squid.conf แต่ในที่นี้ขอยกตัวอย่างมาเฉพาะที่ใช้กันบ่อยๆ  ดังนี้


กำหนด ip address : src, dst

ตัวอย่าง match ไคลเอนต์ที่มี ip address อยู่ใน subnet 192.168.1.0/24 หรือ 192.168.2.0/24

acl acl_client1 src 192.168.1.0/24 192.168.2.0/24

ตัวอย่าง match ไคลเอนต์ที่มี ip address ระหว่าง 192.168.1.1 ถึง 192.168.1.10

acl acl_range1 src 192.168.1.1-192.168.1.10

ตัวอย่าง match การเข้าเว็บไซต์ที่มี ip address 10.1.0.1 หรือ 10.9.0.22

acl acl_server1 dst 10.1.0.1/32 10.9.0.22/32

กำหนดชื่อเว็บไซต์ : dstdomain

ตัวอย่าง match การเข้าเว็บไซต์ที่มีโดเมนเนมเป็น .useless-website.com

acl acl_domain1 dstdomain .useless-website.com

กำหนดพอร์ต : port

ตัวอย่างการ match การเข้าเว็บไซต์ พอร์ต 8080 หรือ พอร์ต 9000

acl acl_port1 port 8080 9000

กำหนดช่วงเวลา : time

พารามิเตอร์ที่ใช้กำหนดช่วงเวลามีสองส่วนคือ วัน และเวลา มีรูปแบบคอนฟิกดังนี้

acl aclname time [day-abbrevs] [h1:m1-h2:m2]

คำอธิบาย

  • day-abbrevs : เป็นอักษรย่อของวัน ตามด้านล่างนี้

S – Sunday
M – Monday
T – Tuesday
W – Wednesday
H – Thursday
F – Friday
A – Saturday

  • h1:m1 เวลาเริ่มต้น
  • h2:m2 เวลาสิ้นสุด
  • h1:m1 ต้องน้อยกว่า h2:m2

ตัวอย่างการ match การเข้าเว็บไซต์ระหว่างเวลา 12:00-13:00 ตั้งแต่วันจันทร์ถึงวันศุกร์

acl acl_time1 time MTWHF 12:00-13:00

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

Leave a Reply

Your email address will not be published.