หน้าเว็บ

วันพุธที่ 2 กันยายน พ.ศ. 2552

Pfsense + Squid + squidGuard + lightsquid

ติดตั้ง Pfsense + Squid + squidGuard + lightsquid

บันทึกฉบับนี้เขียนถึงการติดตั้งและคอนฟิกซ์ Squid ทำงานร่วมกับ squidGuard (เป็นตัวกรองเว็บ) และ lightsquid (เป็นตัวเก็บสถิติ)

หลัง จากติดตั้งและคอนฟิกซ์ pfSense เรียบร้อยแล้ว ทำการเพิ่ม add-on ที่จำเป็น ในที่นี้คือ proxy server ที่มีความสามารถสูง คือ Squid และโปรแกรมเสริมสำหรับ Squid ในการกรองเนื้อหาที่ไม่พึงประสงค์ (content filter) คือ squidGuard ที่ช่วยให้การบล็อกเว็บทำได้ง่ายขึ้นเยอะเลย

การ เพิ่ม package ของ Squid และ squidGuard ให้เข้าไปที่เมนู System -> Packages แล้วติดตั้งทั้ง 2 โปรแกรม แล้วทำการคอนฟิกซ์ สำหรับกรณีของผมทำดังนี้
1.Squid ไปที่เมนู Service -> Proxy Server

Proxy server: General settings

Proxy Interface : LAN
Allow user on interface : check
Transparent proxy : check
Do NOT proxy Private Address Space (RFC 1918) : check
Enabled logging : check (โปรแกรมจะเลือกที่เก็บ log ให้ คือ /var/squid/log)
Proxy port : 3128 (หรือ 8080 ก็ได้)

(นอกนั้นว่างไว้...)
กด Save

Proxy server: Cache management
Hard disk cache size : 10000 MB. (ตอนแรกโปรแกรมกำหนดให้ 100 MB. ทั้งนี้ผมเพียงทดสอบเท่านั้น)
Hard disk cache location : โปรแกรมตั้งให้เป็น /var/squid/cache
Memory cache size : 180 (RAM 512 / 3 = 170.66 ผมเลือก 180 อิๆ...)

(นอกนั้นว่างไว้...)
กด Save

2.squidGuard ไปที่เมนู Service -> Proxy Content Filter

Proxy Content filter SquidGuard: General settings
Enable : check กด Aply
Blacklist : check (เป็นการเรียกใช้ไฟล์ blacklist ที่บรรจุเว็บที่ต้องการบล็อกไว้ ซึ่งจะเก็บไว้ที่ /var/db/squidGuard/)


(นอกนั้นว่างไว้...)
กด Save



Proxy Content filter SquidGuard: Default

Default destination : เลือก deni เป็นบางอัน...หรือจะทั้งหมดก็ได้ แต่อันสุดท้ายต้องเป็น Allow


Not to allow IP addresses in URL : check
Enable log : check (ไม่ check ก็ได้ เป็นการบันทึก log)

แค่นี้เองเหรอ...ทำไมมันง่ายจังหว่า..???

หมายเหตุ // work around
เรา สามารถเก็บสถิติการใช้งานโดยเพิ่ม lightsquid เข้าไป โดยเมื่อได้ลองใช้ดูแล้วพบว่ามีบันทึกที่ค่อนข้างใช้ได้ และมีข้อสังเกตุดังนี้
  • หากเราไปตั้งค่าให้ rotate squid log มันจะเพิ่มคำสั่งใน crontab อัตโนมัติ...
    สำหรับผมได้ตั้งค่าให้ rotate ทุกวันศุกร์ ปรากฎว่าใน crontab จะมีบรรทัดเพิ่้มเข้ามาดังนี้...

    0 0 * * */1 root /usr/local/sbin/squid -k rotate > /dev/null

    รูปแบบ
    #minute hour mday month wday who command

    ผลคือ lightsquid ไม่ยอมทำงานในวันถัดไป ต้องกด refresh ในหน้า lightsquid แฮะ....

  • ลองแก้ crontab ให้แบ็คอัพ access.log (ใช้คำสั่ง cp /var/squid/log/access.log /home/shared/$DATE-access.log
    แต่ในการบู๊ตเครื่องครั้งต่อไป pfsense จะลบบรรทัดที่เราเพิ่มใน crontab ทิ้งไป ตอนนี้ยังหาวิธีการอยู่
  • ลอง เอาคำสั่ง rotate จาก lightsquid ออก และกำลังรอดูผล...ปรากฎว่า ต้องกด refresh เหมือนเดิม...(ถ้าไม่ถึงชั่วโมง lightsquid จะไม่บันทึกผล โดยกรนีนี้ตั้งค่าให้เก็บ log ทุก 1 ชั่วโมง ผลคือ หากมีคำสั่ง rotate พอเปิดเครื่อง จะไม่เก็บ access.log แต่พอเอาคำสั่ง rotate ออก มันเริ่มเก็บทันที ...ยังแปลกใจอยู่...)
  • ลองเอาคำสั่ง cache_swap_low 90, cache_swap_high 95 ออก (cache_swap_low 90 เริ่มเก็บ cache เมื่อพื้นที่ 90 % ของ disk cache ที่ตั้งไว้, และเก็บจนถึง 95 % ของ disk cache) เดาว่าคำสั่งนี้อาจทำให้ squid ไม่ยอมเก็บ cache เพราะเราตั้ง cache ไว้ที่ 1000 MB. แต่ตอนนี้ใช้พื้นที่ไปเพียง 500 MB. คือ 50 % จึงยังไม่ถึง cache_swap_low ที่ตั้งไว้ 90 %
  • รอดูผล...access.log เริ่มเก็บแล้ว....
สรุป
  • การเก็บ log ด้วย lightsquid ต้อง เอา cache_swap, rotate ออก ...???

Thanks : Hoke

ไม่มีความคิดเห็น: