預設安裝的 Squid 往往無存取控制,導致:
❌ 任意用戶透過代理訪問色情/暴力/違法站點
❌ 攻擊者利用代理掃描/攻擊內網/外部目標 (隱藏真實 IP)
❌ 難以追蹤責任人 (日誌不全/無認證)
Squid ACL 兩大要素:
① ACL 定義:acl 名稱 類型 參數
② 存取規則:http_access allow|deny 名稱 (按序匹配,首符合生效,預設 deny all)
acl lan src 172.16.0.0/255.255.0.0 http_access allow lan http_access deny all # 必須放最後
acl clients src 10.0.0.124/24 192.168.10.15/24 acl guests src "/etc/squid/guests" # 檔案每行一個 CIDR http_access allow clients http_access allow guests http_access deny all
/etc/squid/guests 內容範例:
172.168.10.3/24 210.113.24.8/16 10.0.1.24/25
acl allclients src 0.0.0.0/0 acl admins src 192.168.10.0/24 acl work_time time MTWH 08:30-20:30 # 週一至四 acl fri_time time F 13:00-18:00 # 週五下午 http_access allow allclients work_time http_access allow admins fri_time http_access deny all
acl bad_ip src "/usr/local/squid/etc/bad_ip" acl bad_domain dstdomain "/usr/local/squid/etc/bad_domain" acl bad_url url_regex "/usr/local/squid/etc/bad_url" acl bad_path urlpath_regex "/usr/local/squid/etc/bad_path" http_access deny bad_domain http_access deny bad_ip http_access deny bad_url http_access deny bad_path
檔案內容範例:
bad_domain:porn.com
bad_url:sex, gamble
bad_path:/adult/, /xxx/
# 定義安全埠 acl SSL_ports port 443 563 acl Safe_ports port 80 21 443 563 70 210 1025-65535 280 488 591 777 acl CONNECT method CONNECT # 拒絕非安全埠的 CONNECT http_access deny CONNECT !SSL_ports
驗證:tail -f /var/log/squid/access.log | grep CONNECT 觀察被拒記錄 (TCP_DENIED)。
# 僅綁定內網介面 IP (如 192.168.0.254) http_port 192.168.0.254:3128
外網介面完全不監聽,徹底杜絕公開代理濫用。
cp /usr/lib/squid/cachemgr.cgi /var/www/cgi-bin/ (Apache CGI 目錄)<Location /cgi-bin/cachemgr.cgi> AuthType Basic AuthName "Squid Admin" AuthUserFile /usr/local/squid/etc/squid.pwd Require valid-user </Location>
htpasswd -c /usr/local/squid/etc/squid.pwd squidadminhttps://server/cgi-bin/cachemgr.cgi → 輸入帳密 → 填入 Squid IP:Port → 即時查看:HAVP (HTTP Antivirus Proxy) 使用 ClamAV 引擎,專掃 HTTP 流量病毒。
./configure; make; make installhavp.config 關鍵參數:SCANTEMPFILE /tmp/havp-scan ACCESSLOG /var/log/havp/access.log ERRORLOG /var/log/havp/error.log USER havp PORT 8080 # HAVP 監聽埠 PARENTPROXY 127.0.0.1 PARENTPORT 3128 # 上游 Squid 埠 TEMPLATE /usr/local/havp/templates/en.html
StreamMaxLength > HAVP MAXRECV/usr/local/sbin/havp訪問 EICAR 測試檔,應被 HAVP 攔截顯示病毒警告頁面。
僅支援 HTTP 協定;HTTPS (加密)、FTP 等無法掃描。需配合終端防毒/SSL 檢測方案。
| 層面 | 關鍵動作 |
|---|---|
| 存取控制 | ACL 白名單 + 時間段 + 內容過濾 + CONNECT 封鎖 |
| 介面綁定 | 僅內網 IP 監聽 |
| 日誌審計 | Cache Manager 圖形化 + 定期離線分析 |
| 病毒防護 | HAVP + ClamAV 串聯 (HTTP 層) |
| 維運 | 日誌輪轉、配置版控、定期滲透測試 |
Squid 安全非裝好即完,核心在於 ACL 白名單機制 + 最小權限介面綁定 + 持續日誌審計。HAVP 為 HTTP 層增加病毒防線,但加密流量仍需端點防護。將上述策略納入標準化部署模板,才能確保每一個 Squid 節點都是安全合規的。