squid代理——ACL訪問控制+sarg日誌分析+反向代理

一、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 host

2.禁止某網段在某時間段上網
acl nolink src 192.168.1.0/24
acl nowang time MTWHF 9:00-11:30
http_access deny nolink nowang

3.禁止所有人訪問某網站(精確匹配)
acl nourl dstdomain -i www.qq.com
http_access deny nourl

4.禁止所有人訪問某些網站(含有關鍵字的都會過慮)
acl nourl url_regex -i taobao.com
http_access deny nourl

5.禁止下載某類型的文件
acl nof urlpath_regex -i .avi$ .mkv$
http_access deny nof

6.禁止訪問某類型的網站
acl nop url_regex -i ^emule:// ^thunder
http_access deny nop

acl 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服務器中實現輪詢訪問

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章