分类: LINUX
2006-12-11 10:04:13
利用squid的acl控制语句来控制某些站点的访问,前几天在网络改造时一直没有成功。在squid.conf中acl字段如下:
acl web src 192.168.20.0/24
http_access allow web
acl badsite dstdomain 17lele.com
acl badurl url_regex -i sex
http_access deny badsite
http_access deny badurl
acl all src 0.0.0.0/0.0.0.0
http_access deny all
今天刚看了CNFUG十六期Horus的一篇文章--,才再次去试着改一下,最后明白:上次我是装禁止站点的语句加在了
acl web src 192.168.20.0/24
http_access allow web
的后面,所以就省略了我新加的这两句。所以我将badsite和badurl字段的两句放到前面,重启,成功禁止了17lele.com和带sex字段的网址。如下:
acl badsite dstdomain 17lele.com
acl badurl url_regex -i sex
http_access deny badsite
http_access deny badurlacl web src 192.168.20.0/24
http_access allow web
acl all src 0.0.0.0/0.0.0.0
http_access deny all
附上acl语句详细说明: ACL,Access Control List,访问控制列表.它的语法是: (在/usr/local/squid/etc/squid.conf里添加)
acl 表名 表类型 [-i] 表的值
http_access [allow/deny] 表名下面分条解释:
表名:可以自定义
表类型:表类型有
src 源地址:客户机的IP地址
dst 目的地址:服务器的IP地址
srcdomain 源域:客户机所属的域
dstdomain 目的域:服务器所属的域
url_regex URL正则表达式(字符串部分)
urlpath_regex URL正则表达式中的路径
time [星期] [时间段]
maxconn 客户端的最大连接数
-i 这个参数使Squid不区分大小写
表的值:随表的类型不同而不同
注意:time中的星期要用如下字符:
S (Sunday,星期日) M(Monday,星期一) T(Tuesday,星期二) W(Wednesday,星期三)
H(Thursday,星期四) F(Friday,星期五) A(Saturday,星期六)
时间段的表示方式是: XX:00-YY:00 如: 20:00-22:00
http_access 选项允许你设置一个表是允许(allow)还是拒绝(deny)
下面举几个例子: 防3721的ACL.在squid.conf中加入:
acl badurls dstdomain -i download.3721.com cnsmin.3721.com
http_access deny badurls
acl badkeywords url_regex -i 3721.com 3721.net
http_access deny badkeywords
解释:
badurls 和 badkeywords 是你自定义的表名.
dstdomain 是服务器的域名(目的域) 而 url_regex 则是URL正则表达式(字符串部分)包含的内容.
http_access 选项的 deny 则是把表badurls和表badkeywords的访问拒绝.
禁止下载Flash:
acl badfiles urlpath_regex -i .swf$
http_access deny badfiles
大家在今后的配置中,慢慢体会ACL的用法吧! 达到目的喽:
错误
您所请求的网址(URL)无法获取
--------------------------------------------------------------------------------
当尝试读取以下网址(URL)时: 发生了下列的错误:
Access Denied. 拒绝访问
Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect. 当前的存取控制设定禁止您的请求被接受,如果您觉得这是错误的,请与您网路服务的提供者联系。 本缓存服务器管理员:guanjianfeng@jscpu.com
附上acl语句详细说明:
ACL,Access Control List,访问控制列表.它的语法是: (在/usr/local/squid/etc/squid.conf里添加)
acl 表名 表类型 [-i] 表的值
http_access [allow/deny] 表名下面分条解释:
表名:可以自定义
表类型:表类型有
src 源地址:客户机的IP地址
dst 目的地址:服务器的IP地址
srcdomain 源域:客户机所属的域
dstdomain 目的域:服务器所属的域
url_regex URL正则表达式(字符串部分)
urlpath_regex URL正则表达式中的路径
time [星期] [时间段]
maxconn 客户端的最大连接数
-i 这个参数使Squid不区分大小写
表的值:随表的类型不同而不同
注意:time中的星期要用如下字符:
S (Sunday,星期日) M(Monday,星期一) T(Tuesday,星期二) W(Wednesday,星期三)
H(Thursday,星期四) F(Friday,星期五) A(Saturday,星期六)
时间段的表示方式是: XX:00-YY:00 如: 20:00-22:00
http_access 选项允许你设置一个表是允许(allow)还是拒绝(deny)
下面举几个例子: 防3721的ACL.在squid.conf中加入:
acl badurls dstdomain -i download.3721.com cnsmin.3721.com
http_access deny badurls
acl badkeywords url_regex -i 3721.com 3721.net
http_access deny badkeywords
解释:
badurls 和 badkeywords 是你自定义的表名.
dstdomain 是服务器的域名(目的域) 而 url_regex 则是URL正则表达式(字符串部分)包含的内容.
http_access 选项的 deny 则是把表badurls和表badkeywords的访问拒绝.
禁止下载Flash:
acl badfiles urlpath_regex -i .swf$
http_access deny badfiles
大家在今后的配置中,慢慢体会ACL的用法吧! 达到目的喽:
错误
您所请求的网址(URL)无法获取
--------------------------------------------------------------------------------
当尝试读取以下网址(URL)时: 发生了下列的错误:
Access Denied. 拒绝访问
Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect. 当前的存取控制设定禁止您的请求被接受,如果您觉得这是错误的,请与您网路服务的提供者联系。 本缓存服务器管理员:guanjianfeng@jscpu.com
老管 2005/07/30 14:15 | 服务器维护笔记 | 96