安裝
sudo apt-get install squid3
查看squid的版本
squid3 -v
編輯設定檔
sudo vim /etc/squid3/squid.conf
指定squid使用的port,可以只指定port,也可以ip:port的方式指定squid綁定的IP與port,例如http_port 192.168.123.254:3128
http_port 3128
squid是以存取控制清單的方式來辨別是否接受客戶端的存取要求!存取控制清單的格式為「acl <名稱> <種類> <設定值>」,<名稱>可以任意指定,但不可重複!squid一般只接受本地端網路的存取,可以建立一個允許本地端網路存取的清單,如:
acl mynetwork src 192.168.123.0/24
建立存取清單後,需設定squid接受(allow)或拒絕(deny)存取清單的連線要求。參數為「http_access」,例如:http_access allow mynetwork,表示接受mynetwork這ㄍ存取清單的要求,http_access deny mynetwork則為拒絕!http_access會依照設定的先後順序加以套用規則!
http_access allow mynetwork
squid預設已有許多http_access的設定去阻擋一些不必要的連線,建議保留這些設定,並避免把自己的設定值插在這些預設值當中!若要加入自己的設定,可以在設定檔中找到以下註解,
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
可以在此行之後依需求插入個人的設定。
若只允許本地端網路存取squid,可以加入「http_access deny !mynetwork」,表示只要不屬於mynetwork清單上的網路位址,即禁止存取!
http_access deny !mynetwork
squid預設不允許其他主機存取,所以會在所有的http_access設定值之後加上「http_access deny all」,表示存了先前已設定為允許存取的清單之外,禁止任何主機使用squid!建議不可拿掉此行設定,避免主機成為他人進行攻擊
的跳板!
http_access deny all
修改完設定檔後需重新啟動squid,才可使設定生效!若重新啟動squid時出現「無法決定主機位址」的錯誤訊息,可以在設定檔中加入一行「visible_hostname <網路位址>」的設定,如「visible_hostname localhost」,可以避免此錯誤訊息!
存取控制清單的格式
acl <名稱> <種類> <設定值>
種類名稱 | 說明 | 設定值 |
src |
存取要求清單的來源位址 |
單一或區段IP位址,例如192.168.1.0/或192.168.1.0/24或192.168.1.0/255.255.255.0 |
dst |
存取要求清單的目的位址,只會執行一次DNS查詢,確認主機的IP |
單一或區段IP位址,例如192.168.1.0/或192.168.1.0/24或192.168.1.0/255.255.255.0 |
myip |
用來表示squid所使用的IP位址,通常只有squid主機同時擁有兩個以上IP位址時才會使用這個設定 |
IP位址 |
種類名稱 | 說明 | 設定值 |
srcdomain |
存取要求清單的來源網域名稱,會進行DNS反查以確認IP的正確性,若反查失敗則此設定值無法使用! |
網域名稱,例如.demo.com |
dstdomain |
存取要求清單的目的網域名稱,每次使用時都進行DNS查詢,確認主機的IP,與dst參數相比可以取得較正確的資訊! |
網域名稱,例如demo.com |
需注意網域名稱前方是法有「‧」,例如「demo.com」代表demo.com這台主機,「.demo.com」代表任何以「demo.com」結尾的主機!
種類名稱 | 說明 | 設定值 |
port |
指定遠端伺服器使用的port,以數字表示,可以是單一port,也可以是連續port |
22,20-21 |
myport |
指定自身提供的服務使用的port,以數字表示,可以是單一port,也可以是連續port |
80,3128 |
例如下列設定:
acl http_acc myport 80 #開啟 80 port的加速功能
acl proxy myport 3128 #開啟 3128 port的proxy功能
acl my_net 192.168.1.0/24 #指定內部網段
http_access allow http_acc #允許任何機器存取80 port
http_access allow proxy my_net #只允許內部網段存取 3128 port
http_access deny proxy #拒絕其他機器存取proxy
時間種類控制清單:可以用來設定squid規則的有效時間
格式:acl 名稱 星期幾 h1:m1-h2:m2
acl | 名稱 | 星期幾 | h1:m1-h2:m2 |
| | 使用大寫英文字母代號,可同時指定二天以上 | 開始至結束的時間 |
星期幾代號:
例如:
週一至週五,早上八點至下午六點為工作時間,設定如下
acl_work_hours MTWHF 08:00-18:00
每天上午七點至下午七點為工作時間,設定如下
acl day_hours D 07:00-19:00
maxconn:可以指定同一個IP位址同時間可以使用的最大連線數量
例如:
acl OverConneLimit maxconn 5
http_access deny OverConneLimit #表示每一個IP同時間最多只能有5個連線與squid溝通,超過即拒絕!
arp:指定網路裝置的MAC位址
例如:
acl bad_host arp 00:01:02:03:04:05
http_access deny bad_host #拒絕指定MAC位址的網路設備連線