Chinaunix首页 | 论坛 | 博客
  • 博客访问: 488480
  • 博文数量: 82
  • 博客积分: 3003
  • 博客等级: 中校
  • 技术积分: 1285
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-11 15:27
文章分类

全部博文(82)

文章存档

2011年(1)

2010年(5)

2009年(63)

2008年(13)

我的朋友

分类: LINUX

2009-11-19 09:23:35

Squid初级配置

       在局域网中,常常需要对访问外部资源进行控制。通常的做法是用防火墙(例如iptables)对某些IP或者端口进行管理,但这样不够灵活。

    RHEL5中使用Squid作为代理服务软件,不仅可以实现访问控制,也可以对访问内容进行控制。同时可以作为Cache提高访问速度。

一、Squid访问控制——ACL

ACL的语法格式如下:

acl aclname acltype string1 ...

acl aclname acltype "file" ...

       当使用”file”时,”file”中的每一行只能包含一个item

几种ACL类型简介:

默认情况下,正则表达式是大小写敏感的,加-i参数可以取消大小写敏感。

       acl aclname src      ip-address/netmask ... (客户端IP地址)

acl aclname src      addr1-addr2/netmask ... (地址范围)

acl aclname dst      ip-address/netmask ... (URL host's IP address)

acl aclname myip     ip-address/netmask ... (本地IP)

acl aclname arp      mac-address ... (xx:xx:xx:xx:xx:xx notation)

         # arp ACL 需要特殊选项 --enable-arp-acl.

                # /etc/init.d/squid restart --enable-arp-acl

acl aclname srcdomain   .foo.com ...    # 反解client IP

acl aclname dstdomain   .foo.com ...   

acl aclname srcdom_regex [-i] xxx ...   # 正则表达式匹配客户端的主机名

acl aclname dstdom_regex [-i] xxx ...  

       #如果匹配不成功,可以使用”none”这个字来匹配。

acl aclname time     [day-abbrevs]  [h1:m1-h2:m2]

day-abbrevs:

               S - Sunday

               M - Monday

               T - Tuesday

               W - Wednesday

               H - Thursday

               F - Friday

               A - Saturday

# h1:m1 必须小于 h2:m2

acl aclname port     80 70 21 ...               #定义端口

acl aclname port     0-1024 ...         #定义端口的范围

acl aclname myport   3128 ...           # (local socket TCP port)

acl aclname proto    HTTP FTP ...

acl aclname method   GET POST ...

acl aclname browser  [-i] regexp ...           #过滤浏览器类型

         # 这个选项会检查HTTP报头中的User-Agent选项

acl aclname referer_regex  [-i] regexp ...

         #正则表达式匹配HTTP报头中的Referer选项

acl aclname maxconn number

         #每个IP的最大链接数

二、基于ACL网页内容过滤

acl aclname url_regex [-i] ^http:// ...         # 匹配整个url地址

acl aclname urlpath_regex [-i] \.gif$ ...              #匹配url中的路径

acl sexpath urlpath_regex "/usr/local/squid/etc/sex_path.txt"
acl
 sex url_regex "/usr/local/squid/etc/sex_tab.txt"

至於sex_path.txt的内容列举如下:
sex

fuck
sex_tab.txt的内容列举如下:(注意在网址之前须使用^)
^
^
^

http_access allow manager localhost
#
设定色情防治
http_access deny sexpath
http_access deny sex
#
设定中可存取proxy
http_access allow school
http_access deny manager
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
….
http_access deny all

三、透明代理

要在一个网段的每一台计算机上都设置代理很不方便,所以可以利用NATSquid来实现透明代理功能。

实验要求

       Client1访问Server1HTTP服务,默认访问80端口,在服务器端通过iptables将访问到80端口的包重定向到3128端口(Squid服务监听的端口)。这样对于客户端来说就完全意识不到有代理服务器的存在。

实验环境

Client1

              OSRed Hat Enterprise Linux 5 update 4

              Networketh0 192.168.242.2/24

              Gateway192.168.242.3

Server1Squid ServerHTTP Server):

              OSRed Hat Enterprise Linux 5 update 4

Networketh0 10.66.5.144/24eth1 192.168.242.3/24

实验步骤:

客户端:

1.      配置客户端的Gateway,设置为192.168.242.3,重启network服务使之生效。

#vi /etc/sysconfig/network-scripts/ifconfig-eth0

       ...

GATEWAY=192.168.242.3

              ...

       #service network restart

2.      客户端的DNS服务器一定要指向正确的地址。

#vi /etc/resolv.conf

generated by /sbin/dhclient-script

search redhat.com

nameserver 66.187.233.210

nameserver 209.132.183.2

       服务器:

1.      编辑squid.conf文件,配置合理的acl,使客户端不能访问。在http_port选项后加transparent参数,使squid支持透明代理。

#vi /etc/squid/squid.conf

       ...

acl localnet src 192.168.242.0/24

...

http_access deny localnet

...

http_port 3128 transparent

2.      配置防火墙规则,将访问到80端口的包重定向到3128端口;为了能使内网IP访问互联网,对私网IPSNAT

# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 10.66.5.144

//对私网IPSNAT

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128

//DNAT

      

       测试

在客户端访问,若出现Access Deny,则说明实验成功;若出现其他问题,则实验失败。

        #elinks

 

 
实验成功!
更多信息,可以参考/etc/squid/squid.conf文件中的注释。
阅读(1726) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~