วิธีการกรองเว็บไม่พึงประสงค์ที่ใช้ผ่าน Squid Proxy โดยใช้โปรแกรม SquidGuard
แนะนำ SquidGuard
squidGuard ทำงานร่วมกับ Squid Proxy เพื่อบล็อคการเข้าถึงไซต์ต่าง ๆ โดยการบล็อคสามารถบล็อคด้วยค่าของ โดเมน IP Address หรือแม้แต่ keyword นอกจากนี้สามารกกำหนดได้ว่าจะบล็อดในช่วงเวลาไหนของแต่ละวันและสามารถกำหนดกลุ่มในการบล็อคได้ แต่ในที่นี้จะเป็นตัวอย่างการบล็อคที่เป็นการบล็อคโดเมน และ URL ครับ
โปรแกรมที่ต้องติดตั้ง
1. Squid
2. BerkeleyDB
3. squidGuard
การติดตั้งและคอนฟิก squid
ดูตัวอย่างการติดตั้งได้จาก
http://www.itwizard.info/technology/linux/squid_install_and_config.htmlการติดตั้ง BerkeleyDB
ดาวน์โหลดได้จาก
http://www.sleepycat.com มาไว้ในตำแหน่งที่เหมาะสม
ในที่นี้ผมดาวโหลดมาติดตั้งไว้ที่ /root (db-4.2.52.tar.gz)
ให้เข้าไปยังตำแหน่งที่ได้ดาวน์โหลดมาแล้วใช้คำสั่งดังนี้
* # tar xvfz db-4.2.52.tar.gz
* # cd db-4.2.52/dist
* # ./configure –prefix=/usr/local/BerkeleyDB สั่ง configure ก่อนที่จะคอมไพล์
* # make
* # make install ติดตั้ง Berkeley DB library
* # echo “/usr/local/BerkeleyDB/lib” >> /etc/ld.so.conf
* # ldconfig บรรทัดนี้ถ้าไม่ใส่จะไม่สามารถ compile squidGuard ได้
การติดตั้ง squidGuard
ดาวน์โหลดได้จาก
http://www.squidguard.org มาไว้ในตำแหน่งที่เหมาะสม จากนั้นก็ให้เข้าไปยังตำแหน่งที่ดาวน์โหลดมาแล้ว
* # tar xvfz squidGuard-1.2.0.tar.gz
* # cd squidGuard-1.2.0
* #./configure เพื่อจะติดตั้ง squidGuard executable เป็น /usr/local/bin/squidGuard
* # make
* # make install
การคอนฟิก squidGuard
หลังจากคอมไพล์ squidGuard แล้วก็ต้องทำการสร้างไฟล์ squidGuard.conf ขึ้นมาเองดังนี้
* # cd /usr/local/
* # mkdir /usr/local/squidGuard
* # vi squidGuard.conf เป็นการสร้างไฟล์ config ของ squidGuard โดยเนื่อหาไฟล์สามารถจะเป็นได้หลาย ๆ แบบ
ซึ่งในที่นี้จะขอยกตัวอย่างการคอนฟิกเพื่อบล็อก site ที่ไม่เหมาะสม (Blocking inappropriate sites) ซึ่งจะมีเนื้อหาของไฟล์ดังนี้ :
-------------------------------- start -------------------------------------
logdir /usr/local/squidGuard/log
dbhome /usr/local/squidGuard/db
dest porn {
domainlist porn/domains
urllist porn/urls
}
acl {
default {
pass !porn all
redirect
http://www.itwizard.info/blocked.php?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&url=%u }
}
-------------------------------- End -------------------------------------
อธิบายเพิ่มเติม
เมื่อมีการเรียกใช้งานไปยังเว็บไซต์ที่เราบล็อก ก็จะ redirect ไปยัง url ที่เราได้กำหนดไว้ โดยส่งค่าตัวแปรต่าง ๆ ไปด้วย ดังนี้
- clientaddr
- clientname
- clientuser
- clientgroup
- url
หมายเหตุ
%a เป็น IP ของเครื่อง Client ที่เข้าเว็บนั้น ๆ
%u เป็น url ที่เครื่อง client เรียกใช้งาน
ตัวอย่าง php script file บน Web Server ที่ถูก redirect ไป
<?
echo "<center><br><br><br>";
echo "<font site=4>";
echo "เว็บนี้ ($url) เป็นเว็บต้องห้าม <br>";
echo "This is prohibitive URL ($url)";
echo "</font>";
echo "</center>";
?>
สร้างตำแหน่งเก็บ log file และสร้างฐานข้อมูล web ที่ไม่ต้องการให้เรียกใช้งาน
* # cd /usr/local/squidGuard/
* # mkdir log สร้างตำแหน่งเก็บ log
* # mkdir db
* # mkdir db/porn สร้างตำแหน่งที่เก็บฐานข้อมูล web
* # cd db/porn
* # vi domains สร้างไฟล์ที่ใช้เก็บค่าของ domain ที่ถูกบล็อก โดยอาจะมีเนื้อหาดังนี้
porn.com
sex.com
* # vi urls # สร้างไฟล์ที่ใช้เก็บค่าของ url ที่ถูกบล็อค โดยอาจจะมีข้อมูลดังนี้
foo.com/~porn
bar.com/img/sex
ความหมายคือเครื่อง Client สามารถเรียกใช้งาน foo.com และ bar.com ได้ (ไม่ได้บล็อคโดเมน) แต่ไม่สามารถเรียกใช้งาน
foo.com/~porn และ bar.com/img/sex ได้ (บล็อค url)
เสร็จแล้วก็สร้างฐานข้อมูลจากไฟล์ domains และ urls ที่ได้เตรียมไว้โดยใช้คำสั่ง
* # /usr/local/bin/squidGuard –C all
* # chown –R nobody:nobody /usr/local/squidGuard
แก้ไขคอนฟิกของ squid
* # vi /usr/local/squid/etc/squid.conf สำหรับการติดตั้ง Squid จากไฟล์ประเภท tar.gz หรือ
# vi /etc/squid/squid.conf สำหรับการติดตั้ง Squid จากไฟล์ประเภท RPM
โดยเพิ่มบรรทัดต่อไปนี้
redirect_program /usr/local/bin/squidGuard
และเอาเครื่องหมาย # หน้าบรรทัดต่อไปนี้ออก
redirect_children 5
สุดท้ายก็ให้ restart squid โดยใช้คำสั่งดังนี้ครับ
* # /usr/local/squid/bin/squid –k reconfigure (ท่านอาจจะติดตั้ง squid ไว้ตำแหน่งอื่น ก็ให้ใช้คำสั่งนี้ตรงกับตำแหน่งที่ติดตั้งครับ)
เส็จแล้วก็ลองเข้า
www.porn.com หรือ
www.sex.com ดูครับ
หมายเหตุ ทุกครั้งที่คุณแก้ไฟล์ไฟล์ domains, urls ต้องทำการเพิ่มเข้าไปในฐานข้อมูทุกครั้งด้วย โดยใช้คำสั่ง :
# /usr/local/bin/squidGuard –C all
# chown –R nobody:nobody /usr/local/squidGuard
หมายเหตุ ชื่อของโดเมนและชื่อ URL (รวมถึง Blacklist อื่น ๆ) ที่เป็นที่ไม่พึงประสงค์สามารถดาวน์โหลดไดจาก
http://www.squidguard.org/blacklist