pfSense 2.1 ใช้ Squid 3 + WPAD/PAC บล็อค HTTPS (บล็อค Facebook)

Tuesday, March 11, 2014
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





ดูเว็บไซต์ ตอนที่ยังไม่ได้บล๊อคใดๆ

การทำ VPN แบบ PPTP Server บน pfSense

Friday, October 19, 2012
ต่อจากการทำ VPN แบบ PPTP บน Linksys RV042 วันนี้มาแนะนำการทำ VPN บน pfSense กันต่อเลยน่ะครับ pfSense เป็นระบบที่ใช้ในการจัดการ firewall ให้ง่ายขึ้น พัฒนามาจาก FreeBSD จากที่ทดลองใช้งานจนถึงวันนี้ 1 ปีกว่าๆ ยังไม่เกิดปัญหาใดๆ นับว่าเป็น Open firewall ที่มีความเสถียรตัวหนึ่งเลยที่เดียว โดยส่วนตัวผมทดลองใช้อยู่หลายตัวเหมือนกัน แต่ขอบเขตของความต้องการโดยส่วนตัว pfSense สามารถตอบได้ตรงใจผมได้ดีในขณะนั้น จนวันนี้อะไรๆ มันเปลี่ยน ความต้องการมีมากขึ้นทุกวัน แต่อย่างน้อย pfSense ก็สามารถช่วยเราได้ในระดับหนึ่ง จริงๆแล้วไม่เกี่ยวอะไรกับ VPN หรอก แต่อยากบอกว่า pfSense มีประสิทธิถาพไม่น้อยกว่า  open linux ตัวอื่นๆเลย สิ่งสำคัญอยู่ที่การนำไปใช้ และการจัดการที่ดีมากกว่า เข้าเรื่องเลยแล้วกัน การทำ VPN มีธีดังนี้
1. เข้าไปโหมด admin ของ pfSense เลือก เมนู  VPN -> PPTP

vpn_pptp_pfsense1
2. เลือก Enable PPTP Server

vpn_pptp_pfsense2
Max.Current Connections คือ Client สามารถเชื่อมต่อเข้ามาได้พร้อมกันสูงสุด 16 connections

Server Address คือ IP address ที่ใช้เชื่อมต่อ ของผมเป็นแบบ Fix IP เพื่อให้ Client เชื่อมผ่าน IP นี้เข้ามา
Remote Address Range คือ IP Pool ที่ต้องการจ่ายให้ client ที่เชื่อมต่อเข้ามาแล้ว ให้เริ่มใช้ IP 192.89.0.32 เป็นต้นไป

3. สร้าง User account เลือกที่ Users

vpn_pptp_pfsense3
4. การสร้าง Network connection ในเครื่อง Client ดูได้ ที่นี่

Shell script clear Squid Cache on pfSense


จากการที่ใช้ pfSene ทำเป็น firewall , proxy server นั้น นานนับปีแล้ว อย่างที่เคยบอกไป pfSense มันเสถียรพอได้ จนถึงตอนนี้ยังไม่พบปัญหากวนใจเลย ที่ต้องตรวจเช็คอยู่บ่อยๆ ก็คือ หน่วยจำ cache ของ pfSense ครับ วันนี้มาแนะนำการสร้าง shell script เพื่อลบ cache กันครับ

1. เชื่อมต่อไปยังเครื่องที่ติดตั้ง pfSense โดยเปิด terminal ขึ้นมาแล้วใช้คำสั่ง
ssh -l root ippfSense
ตัวอย่างของผมเป็น
ssh -l root 192.89.0.254
ใส่พาสเวิร์ดให้ถูกต้อง แล้วกด 8 -> กด Enter ดังรูป
2. ทำการสร้าง shell  โดยตั้งชื่อเป็น squid.sh (หรือชื่ออะไรก็ได้ แต่ต้องมีนามสกุล .sh)
vi /var/squid/squid.sh 
แล้วพิมพ์โค้ดด้านล่างลงไป
 /usr/local/etc/rc.d/squid.sh stop
 rm -rf /var/squid/cache/
 mkdir -p /var/squid/cache/
 chown squid:squid /var/squid/cache/
 chmod 777 /var/squid/cache/
 squid -z
 /usr/local/etc/rc.d/squid.sh start
จากนั้น save โดยกด :wp
3. กำหนดสิทธิ์ให้กับ squid.sh
chmod 777  /var/squid/squid.sh
4. สั่งให้ script ทำงาน เพื่อเคลียร์ cache กันครับ ใช้คำสั่ง
/var/squid/squid.sh
note : ตำแหน่งพาธ /var/squid/cache/  แต่ละเครื่องอาจจะไม่เหมือนกันน่ะครับ รูปด้านล่างเป็นตัวอย่าง ของผม

 

การทำ VPN บน pfSense


pfSense ทำ VPN ใช้ตั้งนานแล้ว ถือว่านิ่งมากเลยสำหรับระบบ Unix ตัวนี้ เอามาเก็บไว้ในเว็ปดีกว่า เดี่๋ยวลืมเผื่อได้ใช้ เดิมทีที่ทำงานผมใช้ Lead line แต่คำนวณราคากับงานที่ใช้ไม่คุ้มค่า เลยยกเลิก Lead line มาใช้ VPN แทน สำนักงานมี 2 แห่งทำ VPN กัน ฝั่ง Local คือฝั่งที่ตั้ง pfSense เป็นสำนักงานใหญ่ กทม. อีกฝั่งคือ ฝั่ง Remote ใช้ Router Linksys RV042 ที่สมุทรปราการ




บน pfSense  ไปที่ VPN > IPsec แล้ว Click ผมกำหนดค่า แบบนี้

และ Service ของ IPsec


คุยไม่เก่ง เอาเนื้อๆ จบ

การทำเน็ต แบบเน็ต 2 สาย

Thursday, September 20, 2012
การทำเน็ต แบบเน็ต 2 สาย

พอดีมีคนมีคนถามเรื่องการ Server แบบเน็ต 2 สาย กันเข้ามามากเลยถือโอกาส แนะนำระบบ 2 สาย สไตร์ลุงอ้วนให้ชมกัน
ในระบบนี้จะประกอบไปด้วย ipcop + ADSL router อีก 1 ตัว
IPCOP
1. ให้คุณติดตั้งตามปกติ
2. ลง add-on ตามคุณต้องการ เช่น advance proxy ,copfilter,samba
3. ใครที่ต้องการ create war3 ก็สามารถทำได้ตามสบาย
การทำ Bat File แยก gateway
1. ให้เราสร้าง Bat File ของ โปรแกรม IE เพื่อที่เวลาใช้งานจะได้ไปยัง router 192.168.2.1 (เป็นการแยกเน็ต และ เกมส์ในตัว) โดยใช้ notepad สร้างไฟล์ขึ้นมา และพิมพ์ข้อมูล
2. Saveให้เป็น Bat File
3. เราก็สร้าง Bat File ในโปรแกรมที่เราต้องการให้ไปออกเส้น อินเตอร์เน็ต ได้ตามต้องการ
ข้อดี-ข้อเสีย
1. สามารถแยก เน็ต และเกมส์ ได้อย่างเด็ดขาด
2. สามารถทำเองได้ง่าย
3. แต่ระบบนี้ถ้าสายเกมส์ เกิด down เราต้องมาสร้าง bat file เพื่อให้กลับไปใช้เส้นเกมส์ ตามเดิม

การทำ LoadBalance บน PFSense

การทำ  LoadBalance  บน  PFSense แบบที่ 2


ขั้นตอนการติดตั้ง
  1. ลงตามปกติ ตาม  www.linuxthai.org
  2. หลังจากลงเรียบร้อยแล้วให้กำหนดค่าของ  WAN   กับ  WAN1  ให้รับ  DHCP  จาก  Router  ทั้ง 2 ตัว

3.  ให้ทำ  NAT  ทั้งสอง สาย เพื่อให้สามารถ เล่น   เน็ต   ได้ทั้ง 2 เส้น

4. ไปที่เมนู  loabalance  เพื่อสร้าง  pool   ขึ้นมา 3 อัน

5. กำหนด  Rule  ในการ เข้าออกของ Internet

= = = = = =  จบแล้วจ้า  = = = = = =

การติดตั้งโปรแกรมเสริม (AddOn)

การติดตั้งโปรแกรมเสริม (AddOn)

1. ให้คลิกที่ เมนู System + Packages จะพบ package ที่เราสามารถติดตั้งเพิ่มได้
2. ในที่นี่เราจะติดตั้งโปรแกรม  squid
3. ให้คลิกที่ Add ( เครื่องหมายบวก ) แล้วคลิกที่ปุ่ม  OK จะเริ่มกระบวนการติดตั้งโปรแกรม



การยกเลิกการติดตั้งโปรแกรมเสริม (Uninstall-AddOn)
1. ให้คลิกที่ เมนู System + Packages + Installer Packages จะพบ package ที่เราสามารถติดตั้งไปแล้ว
2. ให้เราคลิกที่ Remove
3. ให้คลิกที่ ่ปุ่ม  OK จะเริ่มกระบวนการถอนการติดตั้งโปรแกรม




 

Pfsense Thailand Copyright © 2011-2012 | Powered by Blogger