1. 程式人生 > >Squid代理服務器綜合應用案例

Squid代理服務器綜合應用案例

linu 正向代理 p地址 概念 cache 訪問 密碼文件 客戶機 var

squid代理服務器

squid是一種用來緩存Internet數據的軟件。接受來自客戶機需要下載的目標的請求並適當的處理這些請求。也就是說,如果一個客戶端想要打開默認網站,它請求squid為它取得這個頁面。squid隨之連接到遠程服務器並向這個頁面發出請求。然後,squid顯式地聚集數據到客戶端機器,而且同時復制一份。當下一次有人需要同一頁面時,squid可以簡單的從磁盤中讀到它,那樣數據會立即傳輸到客戶機上。

squid代理的作用

- 通過緩存方式為用戶提供Web加速訪問
- 對用戶的Web訪問請求進行過濾控制

squid的幾種代理模式

1. 正向代理模式

1)標準正向代理模式

2)透明正向代理模式

主要作用:

實現代理上網、隱藏用的真實訪問信息以及對控制用戶訪問網站行為的訪問控制列表(ACL)進行限制。

2. 反向代理模式

主要作用:

加快用戶訪問網站的速度,降低網站資源服務器的負載壓力。

標準正向代理模式與透明正向代理模式的區別:

用戶是否需要配置代理服務器的信息。若使用透明代理模式,則用戶感知不到代理服務器的存在。

正向代理與反向代理的區別:

1. 概念

正向代理:對於原始服務器而言,就是客戶端的代言人
反向代理:對於客戶端而言,就像是原始服務器

2. 用途

1.正向代理的典型用途是為在防火墻內的局域網客戶端提供訪問Internet的途徑。正向代理還可以使用緩沖特性減少網絡使用率。

2.反向代理還可以為後端的多臺服務器提供負載平衡,或為後端較慢的服務器提供緩沖服務。另外,反向代理還可以啟用高級URL策略和管理技術,從而使處於不同web服務器系統的web頁面同時存在於同一個URL空間下。

3. 安全性

1.正向代理允許客戶端通過它訪問任意網站並且隱藏客戶端自身,因此你必須采取安全措施以確保僅為經過授權的客戶端提供服務。
2.反向代理對外都是透明的,訪問者並不知道自己訪問的是一個代理。

Squid主要組成部分:

  • 服務名:squid
  • 主程序:/usr/sbin/squid
  • 配置目錄:/etc/squid
  • 主配置文件:/etc/squid/squid.conf
  • 監聽tcp端口號:3128
  • 默認訪問日誌文件:/var/log/squid/access.log

系統環境

主機 操作系統 IP地址 軟件包
squid代理服務器 centos 7.3 192.168.96.10 squid
win7 客戶端 windows 7 192.168.96.11 IE瀏覽器

開始部署

一、標準正向代理模式

1.安裝squid軟件包

yum install squid -y

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

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

技術分享圖片
技術分享圖片
技術分享圖片

2.開啟squid服務

systemctl enable squid.service
systemctl start squid.service

3.查看啟動進程信息

netstat -tunlp | grep squid

技術分享圖片

以下列舉幾種實例應用場景:

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

1.編輯配置文件
vim /etc/squid/squid.conf

//2.添加以下acl規則
> acl client src 192.168.96.11
......
http_access allow client        #允許client規則
http_access deny all            #禁用其他所有規則

技術分享圖片

2.重啟squid服務
systemctl restart squid.service
客戶端訪問測試:

技術分享圖片

修改客戶端IP地址為192.168.96.12,應該被拒絕訪問

技術分享圖片


實例2:禁止所有客戶端訪問網址中包含“linux”關鍵字的網站

1.編輯配置文件
vim /etc/squid/squid.conf

//2.添加以下acl規則
acl deny_keyword url_regex -i linux
......
http_access deny deng_keyword
2.重啟squid服務
systemctl restart squid.service
客戶端訪問測試:

技術分享圖片

實例3:禁止所有客戶端訪問百度域名

1.編輯配置文件
vim /etc/squid/squid.conf

//2.添加以下acl規則
acl deny_url dstdomain www.baidu.com
......
http_access deny deny_url
http_access allow all
2.重啟squid服務
systemctl restart squid.service
客戶端訪問測試:

技術分享圖片

實例4:禁止用戶下載帶有某些後綴的文件

1.編輯配置文件
vim /etc/squid/squid.conf

//2.添加以下acl規則
> acl badfile urlpath_regex -i \.rar$ \.avi$
......
http_access deny badfile
http_access allow all
2.重啟squid服務
systemctl restart squid.service

特別提醒:這裏只是簡單的禁止下載規則,迅雷等還需要專業的用具進行控制

實例4:只允許在工作時間(9:00-17:00)上網

1.編輯配置文件
vim /etc/squid/squid.conf

//2.添加以下acl規則
> acl worktime time MYWHF 12:00-17:00
......
http_access allow worktime
2.重啟squid服務
systemctl restart squid.service
http_access deny all
客戶端訪問測試:

技術分享圖片

二、用戶認證功能

1.編譯squid配置文件

vim /etc/squid/squid.conf

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm this is squid server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl auth_user proxy_auth REQUIRED

http_access deny !auth_user
http_access allow auth_user
http_access deny all

**註釋:**
第一行:選擇的認證方式為basic,認證程序路徑和密碼文件路徑。
第二行:認證程序的進程數
第三行:驗證域的提醒字符串
第四行:認證有效時間
第五,六行:設置允許認證的用戶訪問
2.使用apache的工具htpasswd生成密碼文件
yum -y install httpd httpd-devel expect
生成密碼文件
htpasswd -c /etc/squid/passwd zhangsan

New password:           //輸入密碼
Re-type new password:           //再次確認密碼
Adding password for user zhangsan
3.創建成功後會生成/etc/squid/passwd密碼文件
cat /etc/squid/passwd

//第一列是用戶名,第二列是密碼
zhangsan:$apr1$L7N/jRsc$RIj4ocdXk52/pJYwdUsUu/

4.配置文件參數檢查
squid -k parse
5.重啟squid服務
systemctl rsstart squid.service
客戶端訪問測試:

技術分享圖片
技術分享圖片

三、設置內存及硬盤緩沖區大小

1.編譯squid配置文件

vim /etc/squid/squid.conf

2.設置硬盤緩沖區大小

cache_mem 64M
cache_dir ufs /var/spool/squid 2000 16 256

3.重啟squid服務

systemctl restart squid.service

4.初始化緩存

squid -z

四、透明正向代理模式

正常企業應用時可以配合DHCP服務器進行使用,自動分配地址(網關指向squid服務器),這樣客戶機打開瀏覽器便會自動使用代理服務了。

1.通過SNAT技術完成數據的轉發,讓客戶機將數據交給Squid代理服務器,再由其轉發到外網中

//清空防火墻規則
iptables -F
iptables -t nat -F

//開啟dns服務允許通過外網口
iptables -t nat -A POSTROUTING -p udp --dport 53 -o ens32 -j MASQUERADE

//開啟路由轉發
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

//立即生效
sysctl -p

2.編輯squid配置文件

vim /etc/squid/squid.conf
http_port 3128 transparent

cache_dir ufs /var/spool/squid 100 16 256

3.檢查配置文件

squid -k parse

4.初始化

squid -z

5.重啟squid服務

systemctl restart squid.service

6.添加防火墻規則

//將內網用戶對80端口的訪問都轉發到本機3128端口上
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

//
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -0 ens32 -j SNAT --to 192.168.96.170

//
service iptables save

五、反向代理服務器

1.編輯squid配置

vim /etc/squid/squid.conf

2.添加以下規則

http_port IP:80 vhost
cache_peer 網站源服務器IP parent 80 0 originserver

3.重啟squid服務

systemctl restart squid

六、定制個性化錯誤頁面

為了更友好和本地化顯示公司內部規定信息

1.錯誤頁面默認在/usr/share/squid/errors/zh-cn/目錄下

2.修改logo為公司logo ,/etc/squid/errorpage.css

vim /etc/squid/errorpage.css

/* Page displayed title area */
#titles {
        margin-left: 15px;
        padding: 10px;
        padding-left: 100px;

        //ur(‘‘) 指向地址,替換為公司的logo路徑地址即可
        background: url(‘/squid-internal-static/icons/SN.png‘) no-repeat left;      
}
......

3.修改系統管理員郵箱

vim /etc/squid/squid.conf
//主機名
visible_hostname squid.njxx.com

//管理員郵箱信息
cache_mgr [email protected]

4.重啟squid服務

systemctl restart squid.service

Squid代理服務器綜合應用案例