Linux系統架構-----Squid---訪問控制列表與日誌分析

目錄

 

一.簡述

二.配置squid的透明代理

三.ACL配置

四.Sarg日誌分析


一.簡述

  • 在squid的透明代理模式下進行ACL和日誌分析
  • 以下是實驗結構圖

二.配置squid的透明代理

  • 配置suqid代理服務器
1.解壓squid軟件包
tar xzvf squid-3.4.6.tar.gz  -C /opt/
2.安裝相關軟件包
yum install gcc gcc-c++ make -y 
3.編輯編譯安裝
cd /opt/squid-3.4.6/
./configure \
--prefix=/usr/local/squid \
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-linux-tproxy \
--enable-async-io=100 \
--enable-err-language="Simplify_Chinese" \
--enable-underscore \
--enable-poll \
--enable-gnuregex

make && make install
4.優化服務控制方式
ln -s /usr/local/squid/sbin/squid /usr/local/sbin
vim /etc/init.d/squid
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"

case "$1" in
start)
      netstat -natp | grep squid &> /dev/null
      if [ $? -eq 0 ]
        then
        echo "squid is running"
        else
        echo "正在啓動 squid...."
        echo "成功啓動"
        $CMD
        fi
        ;;
stop)
        $CMD -k kill &> /dev/null
        rm -rf $PID &> /dev/null
        ;;
status)
         [ -f $PID ] &> /dev/null
           if [ $? -eq 0 ]
             then
              netstat -natp | grep squid
             else
              echo "squid is not running"
           fi
          ;;
restart)
          $0 stop &> /dev/null
           echo "正在關閉 squid..."
           echo "關閉成功"
          $0 start &> /dev/null
           echo "正在啓動 squid..."
           echo "啓動成功"
          ;;
reload)
          $CMD -k reconfigure
          ;;
check)
          $CMD -k parse
        ;;
        *)
            echo "用法:$0{start|stop|status|reload|check|restart}"
        ;;
esac

chmod +x /etc/init.d/squid
chkconfig --add squid
5.添加squid的賬戶,修改squid文件的屬性
useradd -M -s /sbin/nologin squid
chown -R squid.squid /usr/local/squid/var/
6.編輯squid的主配置文件
vim /etc/squid.conf

57 # And finally deny all other access to this proxy
 58 http_access allow all
 59 http_access deny all
 60 
 61 # Squid normally listens to port 3128
 62 http_port 192.168.10.1:3128 transparent
 63 cache_mem 64 MB
 64 reply_body_max_size 10 MB
 65 maximum_object_size 4096 KB
 66 cache_effective_user squid
 67 cache_effective_group squid
 68 
 69 # Uncomment and adjust the following to add a disk cache directory.

7.開啓squid服務
service squid start

8.添加網卡,修改網卡信息
ens33 NAT模式
ens37 僅主機模式
cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-ens37
vim ifcfg-ens37

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens37"
DEVICE="ens37"
ONBOOT="yes"
IPADDR="192.168.10.1"
PREFIX="24"
IPV6_PRIVACY="no"
~                   
9.重啓網卡
service network restart

10.開啓路由轉發功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1

sysctl -p   //加載轉發功能

11.添加防火牆規則
iptables -F
iptables -t nat -F
iptables -t nat -I PREROUTING -i ens37 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i ens37 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128 
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
  • 配置web服務器
 yum install httpd -y
 systemctl start httpd.service 
 systemctl stop firewalld.service 
 setenforce 0
 netstat -natp | grep 80
cd /var/www/html/
 vim index.html
<img src="1.jpg"/>
 route add -net 192.168.10.0/24 gw 192.168.43.101    //添加靜態路由
  • 在客戶機上訪問(僅主機模式),驗證

三.ACL配置

  • ACL參數
acl localhost src 192.168.10.1/32    //把源地址加入acl列表中,且命名爲localhost
acl MyLan src 192.168.10.0/24    //將源地址網段添加到acl列表中,命名爲MyLan
acl MaxC20 maxconn 20    //規定最大通過代理的連接數爲20個,命名爲MaxC20
acl BURL url_regex -i ^rtsp:// ^emule://    //基於協議,正則表達式
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$      //基於文件末尾的文件類型,正則表達式
acl WorkTime MTWHF 08:30-17:30    //規定時間,週一到週五的8點半到17點半
  • 在squid代理服務器中設置acl訪問控制列表

[root@squid ~]# vim /etc/squid.conf
 
8 acl ip_deny src 192.168.10.10/32
...
33 http_access deny ip_deny        //拒絕源地址訪問
[root@squid ~]# service squid restart
正在關閉 squid...
關閉成功
正在啓動 squid...
啓動成功
[root@squid ~]# 
  • 在客戶機上訪問

四.Sarg日誌分析

  • Sarg(Squid Analysis Report Generator),是一款squid日誌分析工具,採用HTML的格式,詳細列出每一位用戶訪問Internet的站點信息、時間佔用信息、排名、連接次數、訪問量等
  • 在squid代理服務器上配置sarg服務
1.安裝必要軟件包
yum install -y gd gd-devel
2.解壓軟件包
tar xzvf sarg-2.3.7.tar.gz -C /opt
3.安裝功能模塊,編譯安裝
mkdir /usr/local/sarg   //創建安裝目錄
cd /opt/sarg-2.3.7
./configure \
--prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \             //配置文件存放位置
--enable-extraprotection             //額外的安全防護
make && make install 
4.編輯sarg的配置文件
[root@squid ~]# vim /etc/sarg/sarg.conf    //開啓以下功能
access_log /usr/local/squid/var/logs/access.log //指定訪問日誌文件
title "Squid User Access Reports"    //網頁標題

output_dir /var/www/html/squid-reports  //輸出網頁的目錄

user_ip no   //是否使用用戶名顯示

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

exclude_hosts /usr/local/sarg/noreport    //不計入排序的站點列表文件,需要創建


overwrite_report no    //不覆蓋同名日誌



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




charset UTF-8    //開啓字符集


weekdays 0-6    //按星期週期排序

hours 0-23    //按小時週期排序


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

5.添加不計入站點文件,添加的域名將不被顯示在排序中
touch /usr/local/sarg/nporeport

6.創建軟鏈接,優化服務控制方式
ln -s /usr/local/sarg/bin/sarg /usr/local/bin

7.安裝http服務
yum install httpd -y
8.開啓日誌分析服務
[root@squid ~]# sarg
SARG: 紀錄在文件: 17, reading: 100.00%
SARG: 成功的生成報告在 /var/www/html/squid-reports/2020Feb03-2020Feb04
[root@squid ~]# 

9.開啓httpd服務,關閉防火牆
[root@squid ~]# systemctl stop firewalld
[root@squid ~]# setenforce 0
[root@squid ~]# systemctl start httpd
[root@squid ~]# netstat -natp | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      1631/httpd  
  • 計劃性任務的sarg的日誌分析
sarg命令常用選項:
-l 指定輸入日誌來源
-o 指定輸出目錄
-z 處理信息
-d 指定日期
  • 編寫sarg日誌分割腳本
[root@squid ~]# cd /usr/local/sarg/bin/
[root@squid bin]# ls
sarg
[root@squid bin]# vim sarg.sh
#!/bin/bash
# Get curent date
TODAY=$(date +%d/%m/%Y)
# Get one week ago today
YESTERDAY=$(date -d "1 day ago" "+%d/%m/%Y")
/usr/local/sarg/bin/sarg -l /var/log/squid/access.log -o /var/www/html/squid-reports -z -d
$YESTERDAY-$TODAY &>/dev/null
exit 0

[root@squid bin]# ls
sarg  sarg.sh
[root@squid bin]# chmod +x sarg.sh 
[root@squid bin]# ls
sarg  sarg.sh
[root@squid bin]# crontab -e
[root@squid bin]# crontab -l
0 0 * * * /usr/local/sarg/sarg.sh
[root@squid bin]# 

  • 在客戶機訪問,日誌報告網頁

 

 

 

 

 

發佈了118 篇原創文章 · 獲贊 132 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章