天天看點

Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理

Squid代理伺服器應用(二)

  • 一、ACL通路控制
    • 1.通路控制清單格式
    • 環境配置
      • Squid-Server(192.168.28.10)
      • Web1 (192.168.28.20)、Web2 (192.168.28.30)
      • 浏覽器通路web伺服器
  • 二、Squid 日志分析
    • 1、安裝圖像處理軟體包
    • 2、添加不計入站點檔案,添加的域名将不被顯示在排序中
    • 3、運作
    • 4、驗證
    • 5、添加計劃任務,執行每天生成報告
  • 三、Squid 反向代理
    • 環境配置
      • Squid-Server(192.168.28.10)
      • web1、web2
      • web1(192.168.28.20)
      • web2(192.168.28.30)
      • 客戶機(192.168.184.100)的域名映射
      • 客戶機的代理配置
      • 浏覽器通路 http://www.mxx.com

一、ACL通路控制

  • 在配置檔案 squid.conf 中,ACL 通路控制通過以下兩個步驟來實作:
    • 步驟一:使用 acl 配置項定義需要控制的條件;
    • 步驟二:通過 http_access 配置項對已定義的清單做“允許”或“拒絕”通路的控制。

1.通路控制清單格式

格式:acl 清單名稱 清單類型 清單内容 …
           
清單類型 定義的清單内容
src 源位址
dst 目标位址
maxconn 最大并發連接配接
port 目标位址
dstdomain 目标域
url_regex 比對請求URL的任何部分
urlpath_regex 與url_regex非常相似(不包含傳輸協定和主機名)
time 通路時間

例如:

vim /etc/squid.conf
......
acl localhost src 192.168.28.10/32    	 #源位址為 192.168.28.10
acl MYLAN src 192.168.28.0/24        	 #客戶機網段
acl destionhost dst 192.168.28.20/32  	 #目标位址為 192.168.28.20
acl MC20 maxconn 20                      #最大并發連接配接 20
acl PORT port 21                         #目标端口 21
acl DMBLOCK dstdomain .qq.com            #目标域,比對域内所有站點
acl BURL url_regex -i ^rtsp:// ^emule://  #以 rtsp://、emule:// 開頭的 URL,-i表示忽略大小寫
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$  #以 .mp3、.mp4、.rmvb 結尾的 URL 路徑
acl WORKTIME time MTWHF 08:30-17:30     #時間為周一至周五 8:30~17:30,“MTWHF”為每個星期的英文首字母
           

環境配置

主機 作業系統 IP位址 軟體、安裝包、工具
Squid-Server CentOS7 192.168.28.10 squid-3.5.28.tar.gz
Web1 CentOS7 192.168.28.20 httpd
Web2 CentOS7 192.168.28.30 httpd
客戶機 Windows 192.168.28.15 -----

Squid-Server(192.168.28.10)

iptables -F
iptables -t nat -F

mkdir /etc/squid
vim /etc/squid/dest.list
192.168.28.20
           
Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理
vim /etc/squid.conf
......
acl destionhost dst "/etc/squid/dest.list"			#調用指定檔案中的清單内容
......
http_access deny destionhost				#注意,如果是拒絕清單,需要放在http_access allow all前面

http_port 3128

systemctl restart squid

netstat -natp | grep 3128
           
Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理
Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理

Web1 (192.168.28.20)、Web2 (192.168.28.30)

systemctl stop firewalld.service 
setenforce 0
yum -y install httpd
systemctl start httpd
           

浏覽器通路web伺服器

浏覽器(192.168.28.15)通路Web伺服器 http://192.168.28.20 ,顯示被通路被拒絕,通路http://192.168.28.30則可以通路。

Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理

客戶機浏覽器打開代理功能,代理伺服器192.168.28.10,端口3128

二、Squid 日志分析

1、安裝圖像處理軟體包

  • 需要使用線上源,出現報錯,将網卡配置檔案中的dns和網關修改回原樣
  • 安裝圖像處理軟體包
yum install -y pcre-devel gd gd-devel

mkdir /usr/local/sarg
tar zxvf sarg-2.3.7.tar.gz -C /opt/

cd /opt/sarg-2.3.7

./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection

make && make install			

#---------./configure中子產品解釋---------------------------------------
--prefix=/usr/local/sarg 		#指定安裝目錄/usr/local/sarg
--sysconfdir=/etc/sarg   		#配置檔案目錄,預設是/usr/local/etc
--enable-extraprotection 		#額外安全防護
#------------------------------------------------------------------
           
vim /etc/sarg/sarg.conf
#---------7行,取消注釋---------------------------------------------
access_log /usr/local/squid/var/logs/access.log		#指定通路日志檔案
#---------25行,取消注釋--------------------------------------------
title "Squid User Access Reports"					#網頁标題
#---------120行,取消注釋-------------------------------------------
output_dir /var/www/html/squid-reports				#報告輸出目錄
#---------178行,取消注釋-------------------------------------------
user_ip no											#使用使用者名顯示
#---------184行,取消注釋,修改--------------------------------------
topuser_sort_field connect reverse					#top排序中,指定連接配接次數采用降序排列,升序是normal
#---------190行,取消注釋,修改--------------------------------------
user_sort_field connect reverse						#對于使用者通路記錄,連接配接次數按降序排序
#---------206行,取消注釋,修改--------------------------------------
exclude_hosts /usr/local/sarg/noreport				#指定不計入排序的站點清單的檔案
#---------257行,取消注釋-------------------------------------------
overwrite_report no									#同名同日期的日志是否覆寫
#---------289行,取消注釋,修改--------------------------------------
mail_utility mailq.postfix							#發送郵件報告指令
#---------434行取消注釋,修改---------------------------------------
charset UTF-8										#指定字元集UTF-8
#---------518行,取消注釋-------------------------------------------
weekdays 0-6										#top排行的星期周期
#---------525行,取消注釋-------------------------------------------
hours 0-23											#top排行的時間周期
#---------633行,取消注釋--------------------------------------------
www_document_root /var/www/html						#指定網頁根目錄
           
Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理

2、添加不計入站點檔案,添加的域名将不被顯示在排序中

touch /usr/local/sarg/noreport					#建立不計入站點檔案

ln -s /usr/local/sarg/bin/sarg /usr/local/bin/	#建立軟連接配接,便于系統識别

sarg --help			#檢視指令幫助
           

3、運作

sarg				#啟動一次記錄
           
Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理

4、驗證

  • 此時安裝web服務在squid伺服器上,其他用戶端機器無法通路測試的頁面
yum install httpd -y
systemctl start httpd
           
  • 浏覽器通路 http://192.168.28.10/squid-reports ,檢視sarg報告網頁
  • Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理
    Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理

5、添加計劃任務,執行每天生成報告

vim /usr/local/sarg/report.sh				#編輯腳本,日志分割
#/bin/bash
#Get current date
TODAY=$(date +%d/%m/%Y)						#設定變量TODAY,表示今天的時間,格式:日/月/年
#Get one week ago today
YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y)	#變量TESTEDAY,表示前一天的時間,格式:日/月/年
#指令sarg -l:導出緩存日志   -o:輸出到的目錄  -z:程序消息  -d:日期消息 
/usr/local/sarg/bin/sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports -z -d $YESTERDAY-$TODAY &> /dev/null
exit 0										#退出傳回值是0

chmod +x /usr/local/sarg/report.sh

crontab -e									#加入周期性計劃
0 0 * * * /usr/local/sarg/report.sh			#每天的0:00執行
           

三、Squid 反向代理

如果 Squid 反向代理伺服器中緩存了該請求的資源,則将該請求的資源直接傳回給用戶端;否則反向代理伺服器将向背景的 Web 伺服器請求資源,然後将請求的應答傳回給用戶端,同時也将該應答緩存在本地,供下一個請求者使用。

工作機制:

●緩存網頁對象,減少重複請求

●将網際網路請求輪訓或按權重配置設定到内網Web伺服器

●代理使用者請求,避免使用者直接通路Web伺服器,提高安全

環境配置

主機 作業系統 IP位址 軟體、安裝包、工具
Squid-Server CentOS7 192.168.28.10 squid-3.5.28.tar.gz
Web1 CentOS7 192.168.28.20 httpd
Web2 CentOS7 192.168.28.30 httpd
客戶機 Windows 192.168.28.15 -----

Squid-Server(192.168.28.10)

vim /etc/squid.conf
......
#---------60行,修改,插入-------------------------------------------
http_port 192.168.28.10:80 accel vhost vport
cache_peer 192.168.28.20 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.28.30 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.mxx.com



systemctl stop httpd			#關閉httpd服務,以免幹擾squid重新開機
systemctl restart squid
           
Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理
#---------解釋-----------------------------------------------------
http_port 80 accel vhost vport 
#squid從一個緩存變成了一個Web伺服器使用加速模式,這個時候squid在80端口監聽請求,同時和web server的請求端口(vhost vport)綁定,這個時候請求到了squid,squid是不用轉發請求的,而是直接要麼從緩存中拿資料要麼向綁定的端口直接請求資料。
accel:反向代理加速模式
vhost:支援域名或主機名來表示代理節點
vport:支援ip和端口來表示代理節點

parent:代表為父節點
80:HTTP_PORT
0:ICP_PORT
no-query:不做查詢操作,直接擷取資料
originserver:指定是源伺服器
round-robin:指定 squid 通過輪詢方式将請求分發到其中一台父節點
max_conn:指定最大連接配接數
weight:指定權重
name:設定别名
           

web1、web2

systemctl stop firewalld.service 
setenforce 0
yum install -y httpd
systemctl start httpd
           

web1(192.168.28.20)

echo "this is mxx" >> /var/www/html/index.html
           

web2(192.168.28.30)

echo "this is zx" >> /var/www/html/index.html
           

客戶機(192.168.184.100)的域名映射

修改 C:\Windows\System32\drivers\etc\hosts 檔案
192.168.28.10 www.mxx.com
           
Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理

客戶機的代理配置

Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理

浏覽器通路 http://www.mxx.com

Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理
Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理

繼續閱讀