目前,很多學校都建起了校園網並連接上互聯網,但互聯網上的不良信息非常多,如何進行網站過濾,防止不健康網站對學生的影響呢?以下本著零成本、高效益的原則,談談在免費的Linux下如何實現互聯網的過濾功能。
設置代理服務器
校園網通過Linux上網,在網關上利用Squid架設代理服務器。
首先要安裝好Linux,我用的是易裝好用的RedHat Linux 7.2。在安裝RedHat Linux 7.2時,Squid已同時安裝好,我們只需簡單的配置一下就能使用。
RedHat Linux 7.2安裝後默認是未運行Apache,故應先啟用Squid,確保Squid代理服務器能正常工作。修改/etc/squid/squid.conf配置文件。
http_port 3128 (定義Squid監聽HTTP客戶端請求的端口)
cache_mem 10 MB (Squid可以使用的內存理想值,一般設為物理內存的1/3)
cache_swap_low 95
cache_swap_low 90
maximum_object_size 4096 KB(大於該值對象將不被存儲)
cache_dir ufs /var/spool/squid/cache 200 16 256(指定Squid用來存儲對象的交換空間大小及其目錄結構)
acl all src 192.168.1.1/24(定義All 為192.168.1.1網段)
http_acceaa allow all(192.168.1.1 網段的客戶端可使用Squid代理上網)
cache_effective_user squid(使用的用戶和用戶組)
cache_effective_group squid(其余參數用默認值即可)
[root@squid bin]# chmod 777 /var/spool/squid/cache(使/var/spool/squid/cache目錄為Noboay用戶,具有寫權限)
[root@squid bin]# squid -z(手工建立Squid的緩存目錄/var/spool/squid/cache)
[root@squid bin]# /etc/rc.d/init.d/squid start(啟動Squid,停止Squid用/etc/rc.d/init.d/squid stop)
在客戶端進行測試,以Windows為例。運行IE,單擊“工具”,接著單擊“Internet選項”,再單擊“連接”選項卡,單擊“局域網設置”;在“局域網設置”窗口中,在“地址”處填上Squid服務器的IP地址:192.168.1.16,在“端口”處填上“3128”,確定後退出。此時客戶端應能浏覽Internet,說明Squid已正常運行。
過濾功能的配置
接下來進行的是網站過濾功能的配置。可以有兩種配置方法。
方法一
請到:
ftp://k12linux.mesd.k12.or.us/pub/squidguard/ 下載RPM版本的SquidGuard-1.2.0-3.i386.rpm。
引用:
squidGuard則是作為squid的輔助軟件,完成過濾、重定向和訪問控制的功能。它是一個自由軟件,功能強,便於安裝、易於配置、而且處理速度快。功能主要包括:根據web服務器或URLs列表限制一些用戶的訪問;阻塞某些用戶對黑名單上的web服務器和URLs的訪問;阻塞某些用戶對正則表達式匹配的URLs的訪問;在URL路徑加強了使用域名訪問而禁止用IP訪問;重定向阻塞的URLs到一個智能CGI的信息頁;重定向非授權用戶到一個注冊頁面;具有基於日期、每周、每天具體時間的訪問規則;對不同用戶組有不同的規則。但是不能過濾、檢查文檔中的文本以及HTML中的JavaScript或Vbscript腳本語言。
#rpm -ivh squidguard-1.2.0-3.i386.rpm
(安裝後數據目錄Dbhome:/var/squidguard/blacklists;日志目錄Logdir: /var/log/squidguard)
按提示修改/etc/squid/squid.conf文件中的有關配置行:
redirect_program /usr/sbin/squidguard -c /etc/squid/squidguard.conf
redirect_child 5
重啟Squid,查看/var/log/squidguard/squidguard.log,看最後一行:2002-06-23 16:13:18[2237] squidguard ready for requests則表明Squidguard已正常運行。
方法二
請到squidguard.mesd.k12.or.us/squidguard.tar.gz下載TAR版本的SquidGuard.tar.gz,並存放到根目錄下。
#cd / (進入根目錄)
#tar vzxf squidguard.tar.gz
(解壓縮文件到/usr/local/squidguard 下,數據目錄Dbhome:/usr/local/squidguard/db;日志目錄Logdir:/usr/local/squidguard/log)
修改/etc/squid/squidguard.conf配置文件:
redirect_program: /usr/local/bin/squidguard -c /etc/squid/squidguard.conf
重啟Squid,查看/usr/local/squid guard/log/squidguard.log確保SquidGuard已正常運行。
試浏覽一些欲過濾網站,若能被重定向到指定網頁,則說明過濾功能已起作用。
在使用TAR版本的SquidGuard時能增減數據。進入到數據目錄:/usr/local/squidguard/db下的Porn文件夾,新建一個Domains.diff文件,內容格式是(加號“+”表示增加,減號“-”表示去除):
+newsite1(把newsite1加入過濾名單,不能訪問)
+newsite2(把newsite2加入過濾名單,不能訪問)
-site3(把site3從過濾名單去掉,可以正常訪問)
-site4(把site4從過濾名單去掉,可以正常訪問)
然後執行:#/usr/local/bin/squidguard -c /etc/squid/squidguard.conf -u
查看SquidGuard.log文件,若有:
db update done
squidguard stopped(102233.823)
表明數據更新成功!再重啟Squid即可。
此方法的優點
此方法的優點是配置方便,對硬件要求低,一般退役下來的486、586完全能勝任,代理服務器可以長時間工作。且所有軟件都是免費的,過濾名單更新快,只需到www.squidGuard.org下載最新版本的過濾名單數據庫替換舊的即可,也可以手工增減過濾名單。
Squid還可以設定上網時間段;可以定期檢查日志,及時發現學生上網中存在的不良傾向。
引用:
squidGuard的配置文件;
/usr/local/squidGuard/squidGuard.conf文件:;
logdir /usr/local/squidGuard/logs #日志目錄定義;
dbhome /usr/local/squidGuard/db #db目錄定義;
time testtime { #時間規則定義;
weekly mtwhf 05:00 - 10:30;
weekly as 08:00 - 19:00;
date *-*-01 08:00 - 16:30;
date 2001.10.01 - 2001.10.09;
};
src admin { #源組定義;
ip 192.168.100.18;
};
src client{;
ip 192.168.100.20 192.168.100.21 192.168.100.22;
ip 192.168.200.0/24;
};
dest porn { #目標組定義;
domainlist porn/domains;
urllist porn/urls;
expressionlist porn/expressions;
};
acl { #訪問規則定義;
admin within testtime {;
pass !porn all;
} else {;
pass all;
};
client {;
pass !in-addr !porn all;
};
default {;
pass none;
redirect http://admin.foo.com
(#也可以重定向到一個含有一些信息的cgi頁面,如下:;
http://admin.foo.com/cgi/blocked?clientaddr=%a&clientname=%n&clientuser=;
%i&clientgroup=%s&targetgroup=%t&url=%u);
};
};
# vi db/porn/domains;
(域列表文件:主要是阻塞一些定義的站點);
co.za;
sex.com;
(如上,可以阻塞如hack.co.za、sex.com、www.sex.com、whatever.sex.com,
但是不同於.*[^.]sex.com,不匹配ssex.com);
# vi db/porn/urls;
(url列表文件,主要是阻塞一些站點及其一些欄目);
qihui.com/sex;
valen.sohu.com/album;
(如上可阻塞http://qihui.com/sex、
http://qihui.com/sex/whatever、
ftp://qihui.com/sex、
http://www.qihui.com/sex等);
# vi db/porn/expressions;
(表達式列表文件,主要是阻塞一些與表達式匹配的URL訪問);
(^|[?+=/])(.*)(girl)(.*)([?+=/]|$);
(上面的正則表達式可以阻塞URL中包括girl站點的訪問,
如:www.girlzine.com、girl.huabao.net、www.huayu.net/girl、www.universiti.com/girl等 )
注意:squidGuard對配置文件的語法要求很嚴,如果配置文件語法有誤,squidGuard仍能運行,
但是squidGuard已進入應急模式,此時代理服務不具有任何阻塞作用,
所有通過該代理的訪問都可通過,可以查看logs/squidGuard的日志文件,即可發現錯誤,例如:
2001-12-20 17:08:44 [2430] parse error in configfile /usr/local/squidGuard/squidGuard.conf line 8
2001-12-20 17:08:44 [2430] going into emergency mode