Squid代理服務器的ACL訪問控制和日誌分析
-
代理服務器(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訪問控制和日誌分析