squid的acl设置 2010-04-08 17:54:01

标签:squid 设置 acl

RedHat linux 系统默认已经安装了squid
1.squid代理服务的配置

有以下最基本的设置squid就可以启动使用了

http_port 192.168.0.110:8080

cache_mem 64 MB

cache_dir ufs /var/spool/squid 4096 16 256

cache_effective_user squid

cache_effective_group squid

dns_nameservers 192.168.0.1

cache_access_log /var/log/squid/access.log

cache_log /var/log/squid/cache.log

cache_store_log /var/log/squid/store.log

visible_hostname 192.168.0.110

cache_mgr qubaoquan@ccpower.com.cn

acl all src 0.0.0.0/0.0.0.0

http_access allow all

1.1 指定squid服务器监听的ip和端口

http_port 192.168.0.110:8080

1.2 设置内存缓冲的大小(仅仅用于共享上网设为物理内存的1/2,如果还有其他服务责不应超过物理内存的1/3

cache_mem 64 MB

1.3 设置内存盘缓冲的大小

cache_dir ufs /var/spool/squid 4096 16 256

Ufs 是指缓冲的存贮类型,/var/spool/squid是存贮目录,4096代表最大存贮空间,16代表一级存贮目录,256代表二级存贮目录

1.4 设置使用存贮的有效用户和组

cache_effective_user squid

cache_effective_group squid

1.5 定义DNS服务器地址

\ dns_nameservers 192.168.0.1

1.6 设置访问日志文件

cache_access_log /var/log/squid/access.log

1.7 设置缓存日志文件

cache_log /var/log/squid/cache.log

1.8 设置网页缓冲日志文件

cache_store_log /var/log/squid/store.log

1.9 设置运行squid主机的名称

visible_hostname 192.168.0.110

1.10 设置管理员邮件地址

cache_mgr qubaoquan@ccpower.com.cn

1.11 设置默认的访问控制列表

acl all src 0.0.0.0/0.0.0.0

http_access allow all

2.初始化squid /usr/sbin/squid –z(创建squid在硬盘缓冲区的目录结构)

3.访问控制列表

类型选项

命令

说明

src

IP地址(客户机IP地址)

dst

目标IP地址(服务器IP地址)

srcdomain

源名称(客户机所属的域)

dstdomain

目标名称(服务器所属的域)

time

一天中的时刻和一周内的一天

url_regex

URL规则表达式匹配

urlpath_regex:url-path

略去协议和主机名的URL规则表达式匹配

proxy_auth

通过外部程序进行用户认证

maxconn

单一IP的最大连接数

time

语法为:时间 时间段 星期可用首字母大写表示,时间段可表示为:1100-2000

列表语法:acl 列表名称 列表类型 –i 列表值

http_access allow/deny 列表名称

实际应用举例

(1) 禁止IP地址为192.168.16.200的客户机上网

acl test src 192.168.16.200

http_access deny test

(2) 禁止192.168.1.0这个网段里的所有客户机上网

acl test src 192.168.1.0/255.255.255.0

http_access deny test

http_access deny test

(3) 禁止用户访问IP210.21.118.68的网站

acl test dst 210.21,118.68

http_access deny test

(4) 禁止用户访问域名为www.163.com的网站

acl test dstdomain –i www.163.com

http_access deny test

(5) 禁止用户访问域名包含有163.com的网站

acl test url_regex –i 163.com

http_access deny test

(6) 禁止用户访问包含有sex关键字的URL

acl test url_regex –i sex

http_access deny test

(7) 限制IP地址为192.168.16.200的客户机并发的最大连接数为5

acl test src 192.168.16.200

acl test2 maxconn 5

http_access deny test test2

(8) 禁止192.168.2.0这个子网里所以客户机在周一至周五的9点到18点上网

acl test src 192.168.2.0 /255.255.255.0

acl test2 time MTWHF 900-1800

http_access deny test test2

(9) 禁止用户下载*.mp3,*.exe,*.zip,*.rar

acl test urlpath_regex –i \.mp3$\.exe$\.zip$\.rar$

http_access deny test

(10) 禁止QQ通过squid上网

acl test url_regex –i tencent.com

http_access deny test

注:启动squid/etc/init.d/squid start

停止squid /etc/init.d/squid stop

重启squid /etc/init.d/squid restart

重新导入配置文件 /etc/init.d/squid reload

4.透明代理的实现

1实现透明代理的语句(vi /etc/squid/squid.conf

http_accel_host virtual

http_accel_port 80

http_accel_with_proxy 0n

httpd_accel_uses_host_header 0n

http_accel_hosthttp_accel_port来定义squid的加速模式,virtual是虚拟主机模式,80为请求的端口

http_accel_with_proxy 选项定义为on后,squid既是web请求的加速器又是缓存代理服务器

httpd_accel_uses_host_header定义为on后,在透明代理模式下代理服务器的缓存功能才能工作

2设置端口重定向

iptables –t nat –A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 8080

(3) 重新导入配置文件 /etc/init.d/squid reload

配置用户身份验证

1. 配置/etc/squid/squid.conf(NCSA认证)

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd

auth_param basic children 5

auth_param basic credentialsttl 2 hours

auth_param basic realm Example.com's Squid proxy-caching

acl auth_user proxy_auth REQUIRED

http_access allow auth_user

auth_param basic program选项定义了认证方式为basic/usr/lib/squid/ncsa_auth /etc/squid/passwd定义了认证程序的路径和读取的账户文件

auth_param basic children 定义了认证程序的进程数

auth_param basic credentialsttl 定义了经过认证后的有效时间

auth_param basic realm 定义了WEB 浏览器显示输入用户/密码对话框的领域内容

acl auth_user proxy_auth REQUIREDhttp_access allow auth_user设置合法用户的访问控制列表

2. 建立账户文件

htpasswd -c /etc/squid/passswd test(建第一个用户时要用-c选项)

htpasswd /etc/squid/passswd test2

htpasswd /etc/squid/passswd test3

3. 重新启动squid服务