Squid คือ โปรแกรมประเภท Caching Proxy
ตัวหนึ่งที่ได้รับความนิยมสูงสุด ถูกพัฒนาบน License GPL เป็นโอเพนซอร์ส
นำมาใช้งานได้ฟรี โดยตัวโปรแกรมรองรับระบบปฏิบัติการได้หลากหลาย
แต่โดยพื้นฐานของ Squid แล้วถูกออกแบบมาเพื่อใช้งานกับ UNIX-Like เป็นหลัก
(ซึ่ง BSD กับ Linux ก็เป็น UNIX-Like)
สำหรับใน pfSense 2.1 นั้น Squid ถูกจัดเป็นในรูป Package โดยมีให้เลือกทั้ง Squid version 2 และ Squid version 3 ซึ่งในบทความนี้จะเจาะจงเฉพาะ Squid version 3 (หรือเรียกสั้นๆว่า Squid 3)เท่านั้น นอกจากตัวของ Squid เองแล้วยังมี Package ตัวอื่นๆที่มีหน้าที่ทำงานเกี่ยวพันธ์ร่วมกับ Squid อีกหลายตัว ซึ่งหลักๆ ได้แก่ LightSquid และ SquidGuard
LightSquid เป็นโค้ด Script สำหรับแสดงบันทึก(Log)การใช้งานรายงาน (Proxy Report) ออกในรูปแบบของหน้าเว็บเพจ มีจุดเด่นที่สามารถแสดงข้อมูลได้ครบถ้วน ดูง่าย จัดแยกแสดงผล รายปี/รายเดือน/รายวันได้
SquidGuard มีลักษณะคล้ายเป็นโปรแกรมเสริมของ Squid เพื่อขยายความสามารถในด้าน Filter(กรองข้อมูล)ให้มีความสามารถและลูกเล่นมากขึ้น
เสถียรภาพ : pfSense 2.1 และ Squid 3
การ ใช้งาน pfSense 2.1 และ Squid 3 นั้น สามารถสนองความต้องการ ระบบ Proxy Server ในระบบ(ความคาดหวัง)ทั่วๆไปได้ แต่ด้วยข้อจำกัด จากลักษณะเฉพาะตัวของ pfSense เองนั้น ที่มีลักษณะเป็น firewall appliance หรือ Firewall/Gateway-Box เสียมากกว่าที่จะเป็น Server สมบูรณ์แบบเต็มตัว จึงทำให้สถาณะภาพ Squid ใน pfSense กลายเป็นคล้าย proxy appliance ไปด้วยโดยบริยาย
ดังนั้นเมื่อนำไปใช้งานจริง เราจึงคาดหวังให้ Package Squid ใน pfSense นั้นมีเสถียรภาพทัดเทียม Server จริงๆไม่ได้ แต่หากว่าความต้องการของเรานั้น เพียงต้องการแค่ระบบ Web Proxy อย่างง่าย ใช้งานสะดวก มีประสิทธิภาพตามมาตรฐานของHardwareเครื่อง และไม่มีคอนฟิกที่ละเอียดยิบจนมากมาย ซึ่งความต้องการเช่นนี้ pfSense 2.1 + Squid 3 สามารถตอบสนองความต้องการ ได้เป็นอย่างดี... แต่หาก(องค์กร)เราต้องการระบบ Proxy Server อย่างเลิศ เพื่อสนองผู้ใช้งานจำนวนมาก ต้องการประสิทธิภาพดิสแคสซิ่งสูงๆ ต้องเน้นควบคุม/จำกัด(ลด)แบนวิธอย่างจริงจัง ต้องมีคอนฟิกอย่างละเอียดซับซ้อน ต้องทำFilterคัดกรองมากมายในหลายๆเงื่อนไข ต้องทำBack-Up ไฟล์ Log บันทึกการใช้งาน ความต้องการที่มากอย่างนี้ เราควรเซ็ตอัพ(ตั้ง)Server เพื่อรัน Squid เป็น Proxy Server แยกเครื่องออกจาก pfSense จะเหมาะสมกว่า(โดยยังคงใช้ pfSense ทำหน้าที่เฉพาะเป็น Gateway/Firewall ตามเดิม)
Squid ใน pfSense กับ HTTPS
ทาง เทคนิคแล้ว Squid สามารถทำงานได้ทั้ง HTTP, HTTPS, FTP หรือโปรโตคอลอื่นๆ ขอเพียงว่าให้ข้อมูล(Port)นั้นๆ ได้ผ่านเข้า Squid เพียงเท่านั้น... แต่โดยทั่วไปเรามักตั้งค่าให้ Squid ทำงานแบบ Transparent proxy ซึ่งในกรณีตั้งค่าเช่นนี้ Squid จะสนใจเฉพาะโปรโตคอล HTTP ที่ผ่าน Port 80 เท่านั้น ซึ่งทำให้ Squid ไม่สามารถทำงาน(มีฟังก์ชัน)กับ HTTPS ที่ผ่าน Port 443 ได้ จึงทำให้เราไม่สามารถใช้ Squid ทำแคซหรือบล็อคเว็บ(Filter)ที่เปิดดูผ่าน HTTPS ไม่ได้เลย (อย่างที่เราบล็อก https://www.facebook.com ไม่ได้นั้นเอง)
แต่ถ้า หากเราตั้งค่า(setting) ที่ตัวโปรแกรมเว็บเบราว์เซอร์(ในเครื่องคอมพิวเตอร์ของผู้ใช้) โดยกำหนด Proxy Server เอง เมื่อทำเช่นนี้แล้ว โปรแกรมเว็บเบราว์เซอร์ก็จะสื่อสารข้อมูลผ่าน Proxy(Squid) ทั้ง HTTP และ HTTPS ตามที่เราตั้งค่าไว้ เราก็จะสามารถบล็อกเว็บที่ดูผ่าน HTTPS ด้วย Squid ได้สำเร็จ... เพียงว่ามีปัญหา คือ คงเป็นเรื่องลำบากมาก หากเรา(คนเป็นAdministrator)ต้องไปตั้งค่าที่หน้าเครื่องผู้ใช้ทุกเครื่อง หรือหากจะทำเอกสารคู่มือเพื่อแจกจ่ายให้ผู้ใช้ตั้งค่าเอง ก็อาจเจอปัญหาผู้ใช้(ลักไก่)ไม่ยอมทำตามที่ต้องการ...
ทางออก ของปัญหานี้ คือ WPAD/PAC (Proxy Auto-Configure) เป็นวิธีการให้โปรแกรมเว็บเบราว์เซอร์ ที่เครื่องผู้ใช้ ทำการเพิ่ม Proxy Server ได้เองโดยอัตโนมัติ ซึ่งเป็น Feature ที่มีอยู่แล้วในโปรแกรมเว็บเบราว์เซอร์มาตรฐาน (ซึ่งเราเองอาจไม่รู้ตัว ว่าบริการอินเตอร์เน็ตตามบ้าน, อินเตอร์เน็ต WiFi, รวมทั้งเน็ต3Gมือถือ ผู้ให้บริการISP ก็มักจะใช้ WPAD ส่งค่าให้อุปกรณ์คอมฯของเราตั้งค่าเองโดยอัตโนมัติ)
ด้วย Feature ของ WPAD/PAC นี้ เราสามารถกำหนดตั้งค่า Proxy Server ที่เครื่องผู้ใช้ได้อัตโนมัติ… และเพื่อป้องกันผู้ใช้บางคนอาจ(ลักไก่)ตั้งค่าในเว็บเบราว์เซอร์ของตนเอง เป็น No-Proxy server โดยหวังจะเปิดดูเว็บตรงๆ ผ่าน Port 80 หรือ 443 (โดยจะไม่ผ่านProxy) ซึ่งเราก็สามารถป้องกันได้ ด้วยการสร้าง Rule ที่ Firewall ทำการปิด(บล็อค)ที่ Port 80 และ 443 ไม่ให้ผ่านออกอินเตอร์เน็ต(WAN) เพื่อบังคับโดยปริยายให้ผู้ใช้ต้องเปิดดูเว็บไซต์ได้โดยผ่าน Proxy Server เท่านั้น โดยผู้ใช้ไม่ต้องทำอะไรยุงยาก เพราะระบบจะ”ออโต”เพิ่ม Proxy Server ให้ผู้ใช้เอง (ที่โปรแกรมเว็บเบราว์เซอร์ผู้ใช้ ให้เลือก Auto config proxy server รอเอาไว้เท่านั้น)
แสดงแผนการติดตั้ง/คอนฟิกระบบ
ตัวอย่างการ Setting
ตัวอย่างการ Setting ในบทความนี้ จะสดงขั้นตอนโดยเริ่มต้นจาก pfSense ที่เพิ่งถูกติดตั้งใหม่ๆ โดยสมมุติสถานการณ์ดังนี้
Network
- Hostname คือ firewall (-- ชื่อHostnameประจำเครื่อง ที่ลงpfSense)
- Domain ของ Network คือ mycompany
- Interface WAN : รับ IP จาก DHCP (ในตัวอย่างนี้ต่อ Wan ไปเข้า Router ภายนอกอีกทีหนึ่ง)
- Interface LAN : IP 10.0.0.1 (วง Local เป็นCIDRกำหนด IP 10.0.0.0/24 หรือ 10.0.0.0-10.0.0.255, Subnet 255.255.255.0 )
URL ที่จะทดลองบล็อค คือ
- บล็อคเว็บ Facebook.com ทั้ง http และ httpd
- บล็อคเว็บ Youtube.com ทั้ง http และ httpd
- บล็อคเว็บผู้ใหญ่ ได้แก่ xhamster.com และ youporn.com
ดูเว็บไซต์ ตอนที่ยังไม่ได้บล๊อคใดๆ
สำหรับใน pfSense 2.1 นั้น Squid ถูกจัดเป็นในรูป Package โดยมีให้เลือกทั้ง Squid version 2 และ Squid version 3 ซึ่งในบทความนี้จะเจาะจงเฉพาะ Squid version 3 (หรือเรียกสั้นๆว่า Squid 3)เท่านั้น นอกจากตัวของ Squid เองแล้วยังมี Package ตัวอื่นๆที่มีหน้าที่ทำงานเกี่ยวพันธ์ร่วมกับ Squid อีกหลายตัว ซึ่งหลักๆ ได้แก่ LightSquid และ SquidGuard
LightSquid เป็นโค้ด Script สำหรับแสดงบันทึก(Log)การใช้งานรายงาน (Proxy Report) ออกในรูปแบบของหน้าเว็บเพจ มีจุดเด่นที่สามารถแสดงข้อมูลได้ครบถ้วน ดูง่าย จัดแยกแสดงผล รายปี/รายเดือน/รายวันได้
SquidGuard มีลักษณะคล้ายเป็นโปรแกรมเสริมของ Squid เพื่อขยายความสามารถในด้าน Filter(กรองข้อมูล)ให้มีความสามารถและลูกเล่นมากขึ้น
เสถียรภาพ : pfSense 2.1 และ Squid 3
การ ใช้งาน pfSense 2.1 และ Squid 3 นั้น สามารถสนองความต้องการ ระบบ Proxy Server ในระบบ(ความคาดหวัง)ทั่วๆไปได้ แต่ด้วยข้อจำกัด จากลักษณะเฉพาะตัวของ pfSense เองนั้น ที่มีลักษณะเป็น firewall appliance หรือ Firewall/Gateway-Box เสียมากกว่าที่จะเป็น Server สมบูรณ์แบบเต็มตัว จึงทำให้สถาณะภาพ Squid ใน pfSense กลายเป็นคล้าย proxy appliance ไปด้วยโดยบริยาย
ดังนั้นเมื่อนำไปใช้งานจริง เราจึงคาดหวังให้ Package Squid ใน pfSense นั้นมีเสถียรภาพทัดเทียม Server จริงๆไม่ได้ แต่หากว่าความต้องการของเรานั้น เพียงต้องการแค่ระบบ Web Proxy อย่างง่าย ใช้งานสะดวก มีประสิทธิภาพตามมาตรฐานของHardwareเครื่อง และไม่มีคอนฟิกที่ละเอียดยิบจนมากมาย ซึ่งความต้องการเช่นนี้ pfSense 2.1 + Squid 3 สามารถตอบสนองความต้องการ ได้เป็นอย่างดี... แต่หาก(องค์กร)เราต้องการระบบ Proxy Server อย่างเลิศ เพื่อสนองผู้ใช้งานจำนวนมาก ต้องการประสิทธิภาพดิสแคสซิ่งสูงๆ ต้องเน้นควบคุม/จำกัด(ลด)แบนวิธอย่างจริงจัง ต้องมีคอนฟิกอย่างละเอียดซับซ้อน ต้องทำFilterคัดกรองมากมายในหลายๆเงื่อนไข ต้องทำBack-Up ไฟล์ Log บันทึกการใช้งาน ความต้องการที่มากอย่างนี้ เราควรเซ็ตอัพ(ตั้ง)Server เพื่อรัน Squid เป็น Proxy Server แยกเครื่องออกจาก pfSense จะเหมาะสมกว่า(โดยยังคงใช้ pfSense ทำหน้าที่เฉพาะเป็น Gateway/Firewall ตามเดิม)
Squid ใน pfSense กับ HTTPS
ทาง เทคนิคแล้ว Squid สามารถทำงานได้ทั้ง HTTP, HTTPS, FTP หรือโปรโตคอลอื่นๆ ขอเพียงว่าให้ข้อมูล(Port)นั้นๆ ได้ผ่านเข้า Squid เพียงเท่านั้น... แต่โดยทั่วไปเรามักตั้งค่าให้ Squid ทำงานแบบ Transparent proxy ซึ่งในกรณีตั้งค่าเช่นนี้ Squid จะสนใจเฉพาะโปรโตคอล HTTP ที่ผ่าน Port 80 เท่านั้น ซึ่งทำให้ Squid ไม่สามารถทำงาน(มีฟังก์ชัน)กับ HTTPS ที่ผ่าน Port 443 ได้ จึงทำให้เราไม่สามารถใช้ Squid ทำแคซหรือบล็อคเว็บ(Filter)ที่เปิดดูผ่าน HTTPS ไม่ได้เลย (อย่างที่เราบล็อก https://www.facebook.com ไม่ได้นั้นเอง)
แต่ถ้า หากเราตั้งค่า(setting) ที่ตัวโปรแกรมเว็บเบราว์เซอร์(ในเครื่องคอมพิวเตอร์ของผู้ใช้) โดยกำหนด Proxy Server เอง เมื่อทำเช่นนี้แล้ว โปรแกรมเว็บเบราว์เซอร์ก็จะสื่อสารข้อมูลผ่าน Proxy(Squid) ทั้ง HTTP และ HTTPS ตามที่เราตั้งค่าไว้ เราก็จะสามารถบล็อกเว็บที่ดูผ่าน HTTPS ด้วย Squid ได้สำเร็จ... เพียงว่ามีปัญหา คือ คงเป็นเรื่องลำบากมาก หากเรา(คนเป็นAdministrator)ต้องไปตั้งค่าที่หน้าเครื่องผู้ใช้ทุกเครื่อง หรือหากจะทำเอกสารคู่มือเพื่อแจกจ่ายให้ผู้ใช้ตั้งค่าเอง ก็อาจเจอปัญหาผู้ใช้(ลักไก่)ไม่ยอมทำตามที่ต้องการ...
ทางออก ของปัญหานี้ คือ WPAD/PAC (Proxy Auto-Configure) เป็นวิธีการให้โปรแกรมเว็บเบราว์เซอร์ ที่เครื่องผู้ใช้ ทำการเพิ่ม Proxy Server ได้เองโดยอัตโนมัติ ซึ่งเป็น Feature ที่มีอยู่แล้วในโปรแกรมเว็บเบราว์เซอร์มาตรฐาน (ซึ่งเราเองอาจไม่รู้ตัว ว่าบริการอินเตอร์เน็ตตามบ้าน, อินเตอร์เน็ต WiFi, รวมทั้งเน็ต3Gมือถือ ผู้ให้บริการISP ก็มักจะใช้ WPAD ส่งค่าให้อุปกรณ์คอมฯของเราตั้งค่าเองโดยอัตโนมัติ)
ด้วย Feature ของ WPAD/PAC นี้ เราสามารถกำหนดตั้งค่า Proxy Server ที่เครื่องผู้ใช้ได้อัตโนมัติ… และเพื่อป้องกันผู้ใช้บางคนอาจ(ลักไก่)ตั้งค่าในเว็บเบราว์เซอร์ของตนเอง เป็น No-Proxy server โดยหวังจะเปิดดูเว็บตรงๆ ผ่าน Port 80 หรือ 443 (โดยจะไม่ผ่านProxy) ซึ่งเราก็สามารถป้องกันได้ ด้วยการสร้าง Rule ที่ Firewall ทำการปิด(บล็อค)ที่ Port 80 และ 443 ไม่ให้ผ่านออกอินเตอร์เน็ต(WAN) เพื่อบังคับโดยปริยายให้ผู้ใช้ต้องเปิดดูเว็บไซต์ได้โดยผ่าน Proxy Server เท่านั้น โดยผู้ใช้ไม่ต้องทำอะไรยุงยาก เพราะระบบจะ”ออโต”เพิ่ม Proxy Server ให้ผู้ใช้เอง (ที่โปรแกรมเว็บเบราว์เซอร์ผู้ใช้ ให้เลือก Auto config proxy server รอเอาไว้เท่านั้น)
แสดงแผนการติดตั้ง/คอนฟิกระบบ
ตัวอย่างการ Setting
ตัวอย่างการ Setting ในบทความนี้ จะสดงขั้นตอนโดยเริ่มต้นจาก pfSense ที่เพิ่งถูกติดตั้งใหม่ๆ โดยสมมุติสถานการณ์ดังนี้
Network
- Hostname คือ firewall (-- ชื่อHostnameประจำเครื่อง ที่ลงpfSense)
- Domain ของ Network คือ mycompany
- Interface WAN : รับ IP จาก DHCP (ในตัวอย่างนี้ต่อ Wan ไปเข้า Router ภายนอกอีกทีหนึ่ง)
- Interface LAN : IP 10.0.0.1 (วง Local เป็นCIDRกำหนด IP 10.0.0.0/24 หรือ 10.0.0.0-10.0.0.255, Subnet 255.255.255.0 )
URL ที่จะทดลองบล็อค คือ
- บล็อคเว็บ Facebook.com ทั้ง http และ httpd
- บล็อคเว็บ Youtube.com ทั้ง http และ httpd
- บล็อคเว็บผู้ใหญ่ ได้แก่ xhamster.com และ youporn.com
ดูเว็บไซต์ ตอนที่ยังไม่ได้บล๊อคใดๆ