1. 程式人生 > >Squid代理服務器的ACL訪問控制和日誌分析

Squid代理服務器的ACL訪問控制和日誌分析

無需 連接 amp 文件 over fig url路徑 install 字符集

系統環境:
  • 代理服務器(192.168.100.135):

YUM默認安裝無需配置即為標準正向代理模式,但是需對客戶端瀏覽器代理服務器進行設置(port:3128)

yum install squid -y
systemctl start squid.service   #啟動服務
systemctl enable squid.service 

關閉防火墻,關閉增強性策略

systemctl stop firewalld.service
setenforce 0
  • web服務器(192.168.100.140):

    YUM安裝httpd,配置網頁文件。

    yum install -y httpd
    systemctl start httpd.service
    echo "<h1>Squid-Web</h1>" > index.html

    關閉防火墻,關閉增強性策略

    systemctl stop firewalld.service
    setenforce 0
  • Windows7客戶端瀏覽器進行代理設置(192.168.100.134)

    在windows7系統中開啟瀏覽器步驟:打開IE瀏覽器---》工具---》Internet選項--》連接---》局域網設置--填寫代理服務器IP與端口信息。
    技術分享圖片

一、ACL訪問控制

Squid提供了強大的代理控制機制,通過設置ACL可以針對源地址、目標地址、訪問的URL路徑、訪問的時間等各種條件過濾。

在配置文件squid.conf中,ACL訪問控制可以通過以下步驟來實現:

其一:使用acl配置項定義需要控制的條件;

其二:通過http_access配置項對已定義的列表做“允許”或“拒絕”訪問的控制。

常用的ACL列表類型:

src 源地址
dst 目標地址
port 目標端口
dstdomain 目標域
tmie 訪問時間
maxconn 最大並發連接
url_regex 目標url地址
urlpath_regex 整個目標url地址

實例一:禁止客戶端訪問IP為192.168.100.140的網站

1.首先訪問192.168.100.140網站正常。
技術分享圖片

2.然後添加acl規則設置拒絕,重啟服務

vim /etc/squid/squid.conf

//添加以下acl規則
acl destionhost dst 192.168.100.140/32
......
http_access deny destionhost

技術分享圖片

systemctl restart squid.service    #重啟服務

3.再次訪問網站
技術分享圖片

實例二:只允許在設定的時間段(9:00-17:00)訪問

1.添加acl規則設置工作時間,重啟服務

vim /etc/squid/squid.conf

//添加以下acl規則
 acl worktime time MYWHF 12:00-17:00
......
http_access allow worktime
http_access deny all

技術分享圖片

systemctl restart squid.service    #重啟服務

2.在客戶端修改時間為0:33,訪問網站
技術分享圖片

實例三:只允許IP為192.168.100.134的客戶端使用代理上網,禁止其他客戶端的代理請求

1.添加acl規則設置工作時間,重啟服務

vim /etc/squid/squid.conf
 //添加以下acl規則
acl client src 192.168.100.140
......
http_access allow client
http_access deny all

技術分享圖片

systemctl restart squid.service

2.不在ip為192.168.100.140上訪問網站
技術分享圖片

當需要限制的同一類對象比較多的時候,可以使用獨立的文件來存放

二、Squid日誌分析

Sarg,是一款Squid日誌分析工具采用HTML格式,詳細列出每一位用戶訪問Internet的站點信息、時間占用信息、排名、連接次數和訪問量等。

在squid服務器上部署Sarg的步驟如下:

1.安裝GD庫和gcc

yum install -y gd gd-devel     #圖像處理
yum install -y gcc gcc_c++

2.安裝sarg

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 \            #配置文件目錄,默認是/usr/local/etc
--enable-extraprotection            #額外安全防護

make && make install

3.配置

cd /etc/sarg/

vim sarg.conf

access_log /var/log/squid/access.log    //指定訪問日誌文件

title "Squid User Access Reports"         //網頁標題

output_dir /var/www/html/squid-reports    //報告輸出目錄

user_ip no                             //使用用戶名顯示

exclude_hosts /usr/local/sarg/noreport    //不計入排序的站點列表文件

topuser_sort_field connect reverse  //top排序中有連接次數、訪問字節、降序排列 升序是normal

user_sort_field connect reverse    //用戶訪問記錄 連接次數、訪問字節按降序排序

overwrite_report no     //同名日誌是否覆蓋

mail_utility mailq.postfix   //發送郵件報告命令

charset UTF-8          //使用字符集

weekdays 0-6         //top排行的星期周期

hours 0-23           //top排行的時間周期

www_document_root /var/www/html  //網頁根目錄

4.運行

上述配置中,添加了不計入排序的站點,需存在下面這個文件。

touch /usr/local/sarg/noreport  #在這個文件中添加的域名將不被顯示在排序中

直接執行sarg就可啟動一次記錄,建議設置符號鏈接,然後執行sarg,會看到提示信息。

ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
sarg

技術分享圖片

5.安裝httpd服務

yum install httpd -y
systemctl restart httpd.service

6.驗證

多次執行sarg後,在客戶端上訪問squid-reports目錄,可以看到生成的報表。
技術分享圖片

7.計劃任務

vim /usr/local/sarg/daily.sh
 TODAY=$(date +%d/%m/%Y)
 YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y)
 sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports/ -z -d $YESTERDAY-$TODAY

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

crontab -e    #添加任務計劃,每臺00:00執行
  00 00 * * * /usr/local/sarg/daily.sh

Squid代理服務器的ACL訪問控制和日誌分析