一、ACL訪問控制
前面我們做了透明模式的代理https://blog.csdn.net/ML908/article/details/104951915,客戶端(192.168.10.10)可以正常訪問web服務器(192.168.17.129)
#現在我們來進行配置ACL訪問控制
列表加載完成後,權限讀取,從上向下依次匹配,匹配及停止,調取列表名並執行匹配的動作。
[root@squid ~]# vim /etc/squid.conf
#服務重新加載
[root@squid ~]# service squid reload
這時我們再到客戶端進行訪問,可以看到這時是無法訪問的:訪問被拒絕
acl控制類型
#acl localnet src 192.168.0.0/16 //註釋本行默認配置
http_access allow all //在本行以上可以新增ACL語句
1.禁止某IP地址主機上網
acl host src 192.168.90.9/32
http_access deny host2.禁止某網段在某時間段上網
acl nolink src 192.168.1.0/24
acl nowang time MTWHF 9:00-11:30
http_access deny nolink nowang3.禁止所有人訪問某網站(精確匹配)
acl nourl dstdomain -i www.qq.com
http_access deny nourl4.禁止所有人訪問某些網站(含有關鍵字的都會過慮)
acl nourl url_regex -i taobao.com
http_access deny nourl5.禁止下載某類型的文件
acl nof urlpath_regex -i .avi$ .mkv$
http_access deny nof6.禁止訪問某類型的網站
acl nop url_regex -i ^emule:// ^thunder
http_access deny nopacl destionhost dst 192.168.175.130/32 指定目標地址
acl MC20 maxconn 20 設置訪問數量
#可創建一個列表進行控制
mkdir /etc/squid //啓用對象列表管理
vim dest.list
192.168.175.150
192.168.175.140
192.168.175.130 //目標web
vim /etc/squid.conf
acl destionhost dst “/etc/squid/dest.list”
http_access deny destionhost //拒絕列表(注意置頂)
service squid restart
二、squid日誌分析
剛剛我們配置了acl訪問控制,將添加的acl刪除掉
百度網盤鏈接:https://pan.baidu.com/s/10YViQ3ZULIwsnNgNhP-yuw
提取碼:0z25
#安裝sarg,解壓軟件包
[root@squid~]# tar zxvf sarg-2.3.7.tar.gz -C /opt
[root@squid~]# cd /opt
[root@squid opt]# ls
rh sarg-2.3.7 squid-3.5.23
#安裝srg之前需要安裝圖形化處理工具gd庫
[root@squid opt]# cd sarg-2.3.7
[root@squid sarg-2.3.7]# yum install httpd gd gd-devel -y
[root@squid sarg-2.3.7]# mkdir /usr/local/sarg //創建工作目錄
#配置編譯安裝
[root@squid sarg-2.3.7]# ./configure \
--prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \
--enable-extraprotection
[root@squid sarg-2.3.7]# make && make install
#更改配置文件
[root@squid sarg-2.3.7]# vim /etc/sarg/sarg.conf
7 access_log /usr/local/squid/var/logs/access.log //squid的訪問日誌文件位置
25 title "Squid User Access Reports" //網頁標題
120 output_dir /var/www/html/squid-reports //分析報告的存放位置
178 user_ip no //不使用IP代替用戶ID(使用用戶名顯示)
184 topuser_sort_field connect reverse //升序排列
190 #user_sort_field reverse //用戶訪問記錄 連接次數、訪問字節按降序排序
206 exclude_hosts /usr/local/sarg/noreport //設置不生成報告的主機
257 overwrite_report no //同名日誌是否覆蓋
289 mail_utility mailq.postfix //指定發郵件命令
434 charset UTF-8 //使用字符集
518 weekdays 0-6 //指定top排序星期週期
525 hours 0-23 //指定top排序時間週期
633 www_document_root /var/www/html //網頁根目錄
#建立不生成報告的主機列表文件
[root@squid sarg-2.3.7]# touch /usr/local/sarg/noreport
#創建軟連接
[root@squid sarg-2.3.7]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
#啓用程序
[root@squid sarg-2.3.7]# sarg
SARG: 紀錄在文件: 215, reading: 100.00%
SARG: 成功的生成報告在 /var/www/html/squid-reports/2020Mar17-2020Mar17
#查看報告
[root@squid sarg-2.3.7]# cd /var/www/html/
[root@squid html]# ll
總用量 0
drwxr-xr-x. 3 root root 243 3月 17 23:01 sarg-php
drwxr-xr-x. 4 root root 65 3月 17 23:18 squid-reports
[root@squid html]# cd squid-reports/
[root@squid squid-reports]# ll
總用量 8
drwxr-xr-x. 4 root root 222 3月 17 23:18 2020Mar17-2020Mar17
drwxr-xr-x. 2 root root 92 3月 17 23:18 images
-rw-r--r--. 1 root root 4437 3月 17 23:18 index.html
-rw-r–r--. 1 root root 4437 3月 17 23:18 index.html
html文件,需要安裝httpd訪問
#安裝httpd
[root@squid squid-reports]# yum install httpd -y
[root@squid sarg-2.3.7]# systemctl start httpd
#使用客戶端進行訪問該報告
#生成前一天的報告
[root@squid sarg-2.3.7]# sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports/ -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y)
此條命令也可添加爲週期性計劃任務,每天執行一次
#這時再到客戶端訪問,可以看到有新的報告
三、反向代理
1、工作機制
-
緩存網頁對象,減少重複請求
-
將互聯網請求輪詢或按權重分配到內網Web服務器
-
代理用戶請求,避免用戶直接訪問Web服務器,提高安全
如果 Squid 反向代理服務器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端,
否則反向代理服務器將向後臺的 WEB 服務器請求資源,然後將請求的應答返回給客戶端,
同時也將該應答緩存在本地,供下一個請求者使用
當外網客戶機訪問緩存服務器外網口時,實現內網調度,同時可以緩存提速,保護內網服務器
2、squid服務器搭建
前期已搭建,詳見https://blog.csdn.net/ML908/article/details/104951915
3、啓動web服務器(共需要2臺)
[root@web1 ~]# yum install -y httpd
[root@web1 ~]# systemctl stop firewalld
[root@web1 ~]# setenforce 0
[root@web1 ~]# cd /var/www/html/
[root@web1 html]# echo "welcome to kgc" > index.html //便於訪問時區分
[root@web2 html]# echo "welcome to accp" > index.html
[root@web1 html]# systemctl start httpd.service
4、建立反向代理
[root@squid ~]# vim /etc/squid.conf
http_port 192.168.17.170:80 accel vhost vport //外網口址
cache_peer 192.168.17.129 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=kgc //重定向
cache_peer 192.168.17.135 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=accp
cache_peer_domain kgc accp www.yun.com //匹配,訪問www.yun.com就相當於訪問kgc accp這兩個節點
#這時的80端口被httpd服務佔用,所以需要先關閉httpd服務,然後在重新啓動squid服務即可
#清空下防火牆規則並重新設定規則
[root@squid ~]# iptables -F
[root@squid ~]# iptables -t nat -F
[root@squid ~]# iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
[root@squid ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
不要忘記在web服務器配置靜態路由,數據返回客戶端
[root@web1 ~]# route add -net 192.168.10.0/24 gw 192.168.17.170
[root@web2 ~]# route add -net 192.168.10.0/24 gw 192.168.17.170
5、客戶端訪問驗證
#地址訪問驗證
這時我們到客戶端進行訪問驗證,兩個web服務器均可正常被訪問
#域名訪問驗證
現在win10系統,我們切換至管理員賬戶,添加hosts文件
這時我們使用域名www.yun.com進行訪問,可以在web1及web2服務器中實現輪詢訪問