squid的acl设置 2010-04-08 17:54:01
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 |
语法为:时间 时间段 星期可用首字母大写表示,时间段可表示为:11:00-20:00 |
列表语法: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) 禁止用户访问IP为210.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 9:00-18:00
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_host和http_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 REQUIRED;http_access allow auth_user设置合法用户的访问控制列表
2. 建立账户文件
htpasswd -c /etc/squid/passswd test(建第一个用户时要用-c选项)
htpasswd /etc/squid/passswd test2
htpasswd /etc/squid/passswd test3
3. 重新启动squid服务