配置 IPSec,以便将用户身份传递给 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,以便它们使用相同的身份验证系统和用户身份?请发布实际的配置文件,而不仅仅是抽象概念或手册页链接。谢谢!!!

答案1

你不能很好地做到这一点,而且无论如何它也可能不起作用。

“--到达目的地”的原因http://myserver.com/blockedsitewarning“之所以不起作用,是因为它是一个 URL 而不是站点,并且iptables对 URL 一无所知;它在 TCP/IP 地址和端口级别上工作。您能做的最好的事情就是重定向到“myserver.com”。

此外,一些网站(例如 google.com,还有 Microsoft 和一些大流量色情网站)拥有多个 IP 地址或通过所谓的“CDN”(内容交付网络)进行访问。当你告诉 iptables 阻止 google.com 时,iptables将解决在那一瞬间google.com 的地址并从此使用该号码。因此,您将阻止 DNS 系统为 google.com 返回的地址在那个特定的时刻对于一个查询,并且很可能一段时间后,相同的查询将返回不同的地址,刚刚给出的规则不会涵盖该地址。

您需要做什么才能阻止网站是完全不同的东西:

  • 安装一个透明代理比如 Squid,它知道所有关于主机和 URL 的信息,用于iptables将端口 80 和 443 重定向到本地主机(可以找到旧的教程这里但谷歌是你的朋友)。现在,所有流量都将通过iptablesthrough进行引导squid
  • 设置一个鱿鱼拒绝名单- 您可以使用鱿鱼卫士但我知道也有组织发布“儿童黑名单”。
  • 告诉 Squid 将所有拒绝的访问映射到错误页面或计算机上的本地站点。

相关内容