Iptables

配置 IPSec,以便將使用者身份傳遞給 iptables 規則

  • June 17, 2018

嗨,我對此很陌生,所以你必須非常明確。

我在 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 是你的朋友)。現在,所有流量都將由iptablesthrough引導squid
  • 設置 Squid拒絕列表- 您可以使用Squidguard,但我知道也有組織發布“子黑名單”。
  • 告訴 Squid 將所有被拒絕的訪問映射到錯誤頁面或機器上的本地站點。

引用自:https://unix.stackexchange.com/questions/448665