实验条件两台虚拟机一台作为Squid代理服务器一台为客户端主机。实验目的Squid代理服务器上部署上网审计系统能够监管客户端主机。一、Squid 代理基础配置放行内网、开启日志1. 修改 squid 配置放行内网网段开启完整日志# 取消内网放行注释 sed -i s/# http_access allow localnet/http_access allow localnet/ /etc/squid/squid.conf # 写入全局拒绝规则放在最后 echo http_access deny all /etc/squid/squid.conf # 开启完整访问日志防止日志缺失 echo access_log /var/log/squid/access.log combined /etc/squid/squid.conf # 重载配置生效 systemctl reload squid # 验证放行规则 grep http_access allow localnet /etc/squid/squid.conf2. 放行防火墙 3128 代理端口firewall-cmd --add-port3128/tcp --permanent firewall-cmd --reload # 验证端口放行 firewall-cmd --list-ports二、安装网页服务用来展示审计页面yum install -y httpd # 开机自启并立即运行 systemctl enable --now httpd # 验证网页服务是否启动 systemctl status httpd三、审计自动生成脚本 web_audit.sh最终版有序号、最多 100 条、无状态码、标准数字时间1. 清空旧脚本新建完整脚本 /root/web_audit.sh vim /root/web_audit.sh2.写入网页代码#!/bin/bash LOG/var/log/squid/access.log HTML/var/www/html/audit.html # 写入页面头部、分页样式 cat $HTML END !DOCTYPE html html langzh-CN head meta charsetUTF-8 title内网上网审计/title style *{box-sizing: border-box;margin:0;padding:0;font-family:Microsoft Yahei,sans-serif;} body{background:#f5f7fa;padding:30px;max-width:1300px;margin:0 auto;} h1{color:#2d3748;text-align:center;margin-bottom:25px;font-size:28px;} table{width:100%;border-collapse:collapse;background:#fff;box-shadow:0 2px 12px rgba(0,0,0,0.08);border-radius:8px;overflow:hidden;} th{background:#4299e1;color:#fff;padding:14px 12px;font-size:15px;} td{padding:12px 12px;border-bottom:1px solid #e2e8f0;color:#4a5568;font-size:14px;text-align:center;} td:nth-child(3){text-align:left;} tr:nth-child(even){background:#f7fafc;} tr:hover{background:#ebf8ff;} .no-data{text-align:center;padding:60px;color:#a0aec0;font-size:16px;} .footer{margin-top:20px;text-align:right;color:#718096;font-size:13px;} .page-tip{margin-bottom:10px;color:#666;} /style /head body h1内网上网访问记录审计平台/h1 div classpage-tip当前页面最多展示最近100条访问记录/div table tr th width8%序号/th th width26%访问时间/th th width20%客户端IP/th th width46%访问网址/th /tr END # 处理日志过滤无效error日志、只取最新100条、生成自增序号、转换标准数字时间 if [ -f $LOG ];then grep GET $LOG | grep -v error | tail -n 100 | awk BEGIN{num1} { raw_t $4 $5 ip $1 url $7 # 清除时间开头多余的[符号 sub(/^\[/,,raw_t) split(raw_t, tarr, /[:\/ ]/) day tarr[1] mon tarr[2] year tarr[3] h tarr[4] mi tarr[5] s tarr[6] # 英文月份转数字 if(monJan) m01; else if(monFeb) m02; else if(monMar) m03; else if(monApr) m04; else if(monMay) m05; else if(monJun) m06; else if(monJul) m07; else if(monAug) m08; else if(monSep) m09; else if(monOct) m10; else if(monNov) m11; else if(monDec) m12; new_time year-m-day h:mi:s # 输出4列序号、时间、客户端IP、访问网址已删除状态码列 printf trtd%s/tdtd%s/tdtd%s/tdtd%s/td/tr\n,num,new_time,ip,url num } $HTML else echo trtd colspan4 classno-data暂无上网访问日志/td $HTML fi # 页面底部闭合标签 cat $HTML END /table div classfooter自动刷新任务每分钟更新一次 · Squid代理审计系统/div /body /html END echo [$(date %Y-%m-%d %H:%M:%S)] 审计页面更新完成2. 赋予脚本执行权限并手动测试生成页面chmod x /root/web_audit.sh # 手动执行一次生成审计网页 /root/web_audit.sh四、配置定时自动刷新无需手动执行脚本每分钟自动更新页面# 编辑定时任务 crontab -e写入一行定时规则保存退出五、客户端配置代理访问外网这里在新建一台虚拟机临时生效当前终端访问百度export HTTP_PROXYhttp://192.168.3.71:3128 export HTTPS_PROXYhttp://192.168.3.71:3128 # 强制测试访问确保走代理 curl -v --proxy http://192.168.3.71:3128 http://baidu.com六、访问审计网页浏览器打开地址替换为你的 Squid 服务器 IP我的是3.71http://192.168.3.71/audit.html序号为22、23的是最新测试结果能看到最新测试结果显示了客户机访问外网的时间IP地址以及访问网站的地址。
麒麟V11系统中实现基于Squid的内网上网审计系统
实验条件两台虚拟机一台作为Squid代理服务器一台为客户端主机。实验目的Squid代理服务器上部署上网审计系统能够监管客户端主机。一、Squid 代理基础配置放行内网、开启日志1. 修改 squid 配置放行内网网段开启完整日志# 取消内网放行注释 sed -i s/# http_access allow localnet/http_access allow localnet/ /etc/squid/squid.conf # 写入全局拒绝规则放在最后 echo http_access deny all /etc/squid/squid.conf # 开启完整访问日志防止日志缺失 echo access_log /var/log/squid/access.log combined /etc/squid/squid.conf # 重载配置生效 systemctl reload squid # 验证放行规则 grep http_access allow localnet /etc/squid/squid.conf2. 放行防火墙 3128 代理端口firewall-cmd --add-port3128/tcp --permanent firewall-cmd --reload # 验证端口放行 firewall-cmd --list-ports二、安装网页服务用来展示审计页面yum install -y httpd # 开机自启并立即运行 systemctl enable --now httpd # 验证网页服务是否启动 systemctl status httpd三、审计自动生成脚本 web_audit.sh最终版有序号、最多 100 条、无状态码、标准数字时间1. 清空旧脚本新建完整脚本 /root/web_audit.sh vim /root/web_audit.sh2.写入网页代码#!/bin/bash LOG/var/log/squid/access.log HTML/var/www/html/audit.html # 写入页面头部、分页样式 cat $HTML END !DOCTYPE html html langzh-CN head meta charsetUTF-8 title内网上网审计/title style *{box-sizing: border-box;margin:0;padding:0;font-family:Microsoft Yahei,sans-serif;} body{background:#f5f7fa;padding:30px;max-width:1300px;margin:0 auto;} h1{color:#2d3748;text-align:center;margin-bottom:25px;font-size:28px;} table{width:100%;border-collapse:collapse;background:#fff;box-shadow:0 2px 12px rgba(0,0,0,0.08);border-radius:8px;overflow:hidden;} th{background:#4299e1;color:#fff;padding:14px 12px;font-size:15px;} td{padding:12px 12px;border-bottom:1px solid #e2e8f0;color:#4a5568;font-size:14px;text-align:center;} td:nth-child(3){text-align:left;} tr:nth-child(even){background:#f7fafc;} tr:hover{background:#ebf8ff;} .no-data{text-align:center;padding:60px;color:#a0aec0;font-size:16px;} .footer{margin-top:20px;text-align:right;color:#718096;font-size:13px;} .page-tip{margin-bottom:10px;color:#666;} /style /head body h1内网上网访问记录审计平台/h1 div classpage-tip当前页面最多展示最近100条访问记录/div table tr th width8%序号/th th width26%访问时间/th th width20%客户端IP/th th width46%访问网址/th /tr END # 处理日志过滤无效error日志、只取最新100条、生成自增序号、转换标准数字时间 if [ -f $LOG ];then grep GET $LOG | grep -v error | tail -n 100 | awk BEGIN{num1} { raw_t $4 $5 ip $1 url $7 # 清除时间开头多余的[符号 sub(/^\[/,,raw_t) split(raw_t, tarr, /[:\/ ]/) day tarr[1] mon tarr[2] year tarr[3] h tarr[4] mi tarr[5] s tarr[6] # 英文月份转数字 if(monJan) m01; else if(monFeb) m02; else if(monMar) m03; else if(monApr) m04; else if(monMay) m05; else if(monJun) m06; else if(monJul) m07; else if(monAug) m08; else if(monSep) m09; else if(monOct) m10; else if(monNov) m11; else if(monDec) m12; new_time year-m-day h:mi:s # 输出4列序号、时间、客户端IP、访问网址已删除状态码列 printf trtd%s/tdtd%s/tdtd%s/tdtd%s/td/tr\n,num,new_time,ip,url num } $HTML else echo trtd colspan4 classno-data暂无上网访问日志/td $HTML fi # 页面底部闭合标签 cat $HTML END /table div classfooter自动刷新任务每分钟更新一次 · Squid代理审计系统/div /body /html END echo [$(date %Y-%m-%d %H:%M:%S)] 审计页面更新完成2. 赋予脚本执行权限并手动测试生成页面chmod x /root/web_audit.sh # 手动执行一次生成审计网页 /root/web_audit.sh四、配置定时自动刷新无需手动执行脚本每分钟自动更新页面# 编辑定时任务 crontab -e写入一行定时规则保存退出五、客户端配置代理访问外网这里在新建一台虚拟机临时生效当前终端访问百度export HTTP_PROXYhttp://192.168.3.71:3128 export HTTPS_PROXYhttp://192.168.3.71:3128 # 强制测试访问确保走代理 curl -v --proxy http://192.168.3.71:3128 http://baidu.com六、访问审计网页浏览器打开地址替换为你的 Squid 服务器 IP我的是3.71http://192.168.3.71/audit.html序号为22、23的是最新测试结果能看到最新测试结果显示了客户机访问外网的时间IP地址以及访问网站的地址。