安装环境:Centos7,Windows7
centos7上安装好squid服务
centos7:172.16.0.100/24(nat),192.168.0.2/24(仅主机)
windows:192.168.0.100/24(仅主机)
访问控制列表检查原则:从上到下的顺序依次匹配,如果匹配,立刻执行该行为(拒绝|允许 deny|allow)
• 主动代理
1、禁止指定IP上网
acl badhost src 192.168.0.100
http_access deny badhost
2、禁止工作时间上网
acl worktime time MTWHF 9:00-17:00
http_access deny worktime
禁止非工作时间上网
acl worktime time MTWHF 9:00-17:00
http_access deny !worktime
3、禁止访问指定的服务器(IP)
acl baddst dst 14.215.177.39
acl baddst dst 14.215.177.38
http_access deny baddst
4、禁止访问指定的域名(taobao.com)
acl baddomain dstdomain .taobao.com .pinduoduo.com
http_access deny baddomain
5、禁止员工区域电脑(192.168.32.100-192.168.32.199)访问电商网站(淘宝,拼多多)
acl staff src 192.168.0.100-192.168.0.199
acl unbus dstdomain .taobao.com .pinduoduo.com
http_access deny staff unbus
6、禁止通过IP地址访问网站(nbzjzx.com.cn)
使用到正则表达式
250-255、200-249、100-199、0-99
0.0.0.0 – 255.255.255.255
acl xdomain dstdomain .nbzjzx.com.cn
acl xhost dstdom_regex ((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9]).){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])
http_access deny xdomain
http_access deny xhost
• 安全基本用户认证
1.创建密码文件(htpasswd)
默认是没有安装的,这个包在安装httpd时时会自动依赖安装,那么我们现在单独安装这个包
yum install -y httpd-tools
在squid目录下创建passwd密码文件
htpasswd -c passwd vec
2.修改主配置文件(squid.conf)
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm You need pasword
acl authuser proxy_auth REQUIRED
注意需要把默认的允许所有访问给注销掉,并且注意加载的位置,一定要写在http_access deny all 的前面
正向代理的缺点:客户端需要单独配置,才能使用正向代理功能
• 透明代理(不需要客户单独配置)
遇到的问题:浏览网页有两种方式(http、https)
实验步骤:
• 1.制作公钥和私钥
私钥:openssl genrsa -out s.key
请求文件:openssl req -new -key s.key -out s.csr
公钥(证书)openssl x509 -req -in s.csr -signkey s.key -out s.crt
cat /etc/squid/s.crt >> /etc/pki/tls/certs/ca-bundle.crt
• 2、编辑主配置文件
默认端口:3128
http代理端口:3129、https代理端口:3130 (这个端口没有特指你可以随便配一个)
http_port 3129 intercept
https_port 3130 ssl-bump cert=/etc/squid/s.crt key=/etc/squid/s.key generate-host-ce
rtificates=on dynamic_cert_mem_cache_size=4MB transparent
/usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_db
chown squid:squid /var/lib/ssl_db/
• *3、修改防火墙(重点配置)
iptables -t nat -A PREROUTING -s 191.168.0.0/24 -i eno16777736 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3129
把80端口的数据包重定向到3129端口去
iptables -t nat -A PREROUTING -s 191.168.0.0/24 -i eno16777736 -p tcp -m tcp --dport 443 -j REDIRECT --to-port 3130
把ssl的443端口重定向到3130端口中去
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -j DNAT -p udp --dport 53 --to 172.16.0.2
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -j DNAT -p tcp --dport 53 --to 172.16.0.2
iptables -t nat -A POSTROUTING -o eno33554944 -j MASQUERADE
将收到的数据包从外网口转发出去
cat /etc/resolv.conf
echo 1 > /proc/sys/net/ipv4/ip_forward
开启包转发
• 4.客户机的配置
如果有DHCP服务就不需要配置,自动获取就好了
没有的话手动配置,网关是squid服务器内网地址,DNS也是squid服务器内网地址