使用CentOS7配置Squid代理

其實以前配過一個squid,只是因爲太懶,網上隨便搜了一個教程,用了默認端口而且沒有添加用戶認證。某天不幸的被爬蟲掃到,被用來發了半個月的垃圾郵件。。直到有一天登陸郵箱,看到了一大坨警告郵件,才意識到問題的嚴重。驚了個呆以後,趕忙重配一遍-.-php

我這裏是用squid配置了一個帶用戶認證的普通代理。html

安裝

安裝過程十分簡便,只須要安裝一下squid,一條命令搞定。我這裏裝的是squid3.3。windows

yum install squid
rpm -qa | grep squid
squid-3.3.8-12.el7_0.x86_64

配置

修改squid的配置文件 /etc/squid/squid.conf瀏覽器

主要就是配置一下端口,緩存,日誌和訪問規則。緩存

http_port 3712
cache_mem 64 MB
maximum_object_size 4 MB
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log
http_access allow all
visible_hostname squid.chao

初始化

在第一次啓動以前或者修改了cache路徑以後,須要從新初始化cache目錄。服務器

squid -z

啓動

systemctl start squid

使用

在瀏覽器中修改代理配置便可。測試

在windows中:ui

Internet選項 -> 鏈接 -> 局域網鏈接 -> 代理服務器spa

在macOSX中:代理

Safari -> 偏好設置 -> 代理 -> Web代理

而後輸入你的代理地址和端口,就能夠正常工做了。

測試

我從網上看到一個很是簡單的方法,能夠用來快速測試你的代理是否正常工做。首先打開百度,而後搜索ip。若是出來的是你代理的那臺機器的ip,那麼恭喜你,一大波垃圾郵件即將趕來。

添加用戶認證

爲了防止咱們的代理被爬蟲掃到而且被用於不法用途,咱們很是有必要爲咱們的squid添加用戶認證。事實上我剛配的代理,沒過多久就已然被掃到。

我從個人access.log裏面看到。然而此時我尚未添加任何認證機制,幸虧我沒使用認端口,否則個人郵箱又會收到一大坨告警郵件了。。

1439106533.703      0 89.102.9.196 TCP_DENIED/403 3739 GET http://www2.praguerentacar.com/proxy/detectproxy.php - HIER_NONE/- text/html
1439106539.302      0 89.102.9.196 TCP_DENIED/403 3724 GET http://www2.intimnosti.cz/proxy/detectproxy.php - HIER_NONE/- text/html
1439106544.881      0 89.102.9.196 TCP_DENIED/403 3706 GET http://93.185.96.50/proxy/detectproxy.php - HIER_NONE/- text/html
1439106550.453      0 89.102.9.196 TCP_DENIED/403 3712 GET http://www2.nuabi.com/proxy/detectproxy.php - HIER_NONE/- text/html

 

咱們這裏經過ncsa認證模塊來爲咱們的squid添加認證。爲何我選擇ncsa呢,由於我從網上搜到的大多用了這個方式。。

首先咱們得配置咱們的訪問用戶的帳戶信息。最後一個參數是用戶名,能夠替換成任何你喜歡的名字~

htpasswd -c /etc/squid/passwd chao

若是找不到htpasswd,就先裝個Apache。yum install httpd。 而後就能使用htpasswd了。

有了賬戶文件以後,咱們從新配置咱們的squid。在squid.conf裏面,把

http_access allow all

改爲

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm chao's squid server
auth_param basic credentialsttl 2 hours
acl myacl proxy_auth REQUIRED
http_access allow myacl
http_access deny all

最後重啓squid就能夠啦。

systemctl restart squid

如今當你使用代理訪問頁面的時候,會先彈出一個提示框,讓你輸入用戶名密碼。而後就能夠繼續訪問了。

 


 

配置說明

有些人可能一開始對原理以及配置的詳細介紹並不感冒,只是想讓代理先跑起來再說。至少我本人就是這樣子的。。因此,我把這塊放在了最後。

如今,就開始介紹一下上面配置的具體內容。固然參考官網會更加詳細準確。

http_port 3712 這個指定了咱們代理的端口。

cache_mem 64 MB 內存中的緩存大小

cache_dir ufs /var/spool/squid 100 16 256 緩存文件夾,默認是隻在內存中進行緩存的。這裏指定緩存大小爲100M,第一層子目錄爲16個,第二層爲256。

maximum_object_size 4 MB 最大被緩存文件大小,這個配合上面的cache_dir使用,只做用於緩存到磁盤的文件。

access_log /var/log/squid/access.log 訪問日誌

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd 指定認證程序以及帳戶文件

auth_param basic children 5 認證程序同時跑的個數

auth_param basic realm chao's squid server 客戶端在使用代理時,輸入密碼時彈出來的提示框中的描述文字。

auth_param basic credentialsttl 2 hours 認證的持續時間

acl myacl proxy_auth REQUIRED 對myacl使用外部程序進行認證

http_access allow myacl 容許myacl中的成員訪問

http_access deny all 拒絕全部其它訪問

visible_hostname squid.chao 代理機名字

相關文章
相關標籤/搜索