Iptables
配置 IPSec,以便將使用者身份傳遞給 iptables 規則
嗨,我對此很陌生,所以你必須非常明確。
我在 CentOS 上設置了 IPSec,以便我可以使用 VPN。使用者身份儲存在 中
/etc/ppp/chap-secrets
,主要是因為這就是我使用的安裝腳本中的工作方式。現在我想編寫一些規則來根據使用者阻止某些網站。我試過:
iptables -t nat -A PREROUTING -s badsite.com -m owner --uid-owner 100 -i eth0 -p tcp -s --dport 80 -j REDIRECT --to-destination http://myserver.com/blockedsitewarning
其中 100 是我孩子的 unix 帳戶 ID。但這當然行不通,因為該
chap-secrets
帳戶與該帳戶完全分開passwd
。我將如何配置 IPSec 和/或 iptables 以便它們使用相同的身份驗證系統和使用者身份?請發布實際的配置文件,而不僅僅是抽象概念或手冊頁連結。謝謝!!!
你不能很好地做到這一點,而且它可能無論如何也行不通。
“–to-destination http://myserver.com/blockedsitewarning ”不起作用的原因是它是一個URL而不是一個站點,並且
iptables
對URL一無所知;它在 TCP/IP 地址和埠級別工作。您能做的最好的事情就是重定向到“myserver.com”。此外,一些網站(例如 google.com,還有微軟和一些流量大的色情網站)有多個 IP 地址或通過所謂的“CDN”(內容傳遞網路)訪問。當您告訴 iptables 阻止 google.com 時,
iptables
將在那一刻解析google.com 的地址並從此使用該號碼。因此,您將阻止 DNS 系統在該特定時刻為該查詢返回的 google.com 的地址,並且很可能一段時間後,相同的查詢將返回一個不同的地址,即規則剛剛給出的地址不會覆蓋。你需要做的是阻止網站是完全不同的:
- 安裝一個透明代理,例如 Squid,它知道所有關於主機和 URL 的資訊,
iptables
用於將埠 80 和 443 重定向到本地主機(可以在這裡找到一個舊教程,但 Google 是你的朋友)。現在,所有流量都將由iptables
through引導squid
。- 設置 Squid拒絕列表- 您可以使用Squidguard,但我知道也有組織發布“子黑名單”。
- 告訴 Squid 將所有被拒絕的訪問映射到錯誤頁面或機器上的本地站點。