0

我正在尝试设置客户端计算机,以便只有 kinit 流量有效。到目前为止,我的规则看起来像

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i eth0 -s 192.168.1.130 -p tcp -m tcp --sport kerberos -j ACCEPT
-A INPUT -i eth0 -s 192.168.1.130 -p udp -m udp --sport kerberos -j ACCEPT
-A OUTPUT -i eth0 -d 192.168.1.130 -p tcp -m tcp --dport kerberos -j ACCEPT
-A OUTPUT -i eth0 -d 192.168.1.130 -p udp -m udp --dport kerberos -j ACCEPT

就这样,当我运行“kinit remuser”时,我不断收到错误

kinit: Cannot contact any KDC for realm 'EXAMPLE.COM' while getting initial credentials

如果我跑

iptables -P INPUT ACCEPT

然后“kinit remuser”按预期工作。在第一次成功之后,如果我跑

iptables -P INPUT DROP

它仍然继续工作。

我尝试使用wireshark 来查看我最初不允许的内容。它似乎与 arp 相关,但我不能始终如一地看到......而且我认为 iptables 不应该与 arp 混淆。我没有看到“arp -n”或“ip -s neigh”缺少任何东西。

我已经正确配置了客户端和服务器,可以正常工作,但我对这些东西还太陌生,不知道我需要允许哪些其他端口才能正常工作。如果有人能给我一些建议,我将不胜感激。

更新 虽然我的适配器声称处于混杂模式,但事实并非如此。我最终在服务器上运行了 wireshark,并没有看到需要其他端口号。为了验证这一点,我更新了规则以包括

-A INPUT -s 192.168.1.130 -j ACCEPT

正如成功的 kinit wireshark 捕获所暗示的那样,它没有帮助。只有当我打开所有 INPUT 时它才能工作。

谢谢。赫克托

4

2 回答 2

2

默认情况下,Kerberos 通常是 udp。我对 IP 表不太熟悉,但是虽然定义了服务器上的端口号,但客户端上的端口号完全是随机的。因此,任何基于 ip 的过滤器都必须允许具有任意客户端端口号的传入 udp 数据包。

同样在传出端,您需要能够在客户端发送具有任意 udp 端口​​的数据包。对于 kinit,您只需要 kerberos 端口,但更改密码等,您还需要 kadmin 端口。

说了这么多,并对 ip 表规则的含义做出了最好的猜测,我认为这就是你已经实现的。但是,您还需要访问 DNS srv 记录或工作的 krb5.conf。

http://wiki.unixh4cks.com/index.php/Using_DNS_SRV_records_to_find_Kerberos_realm_servers

当您允许传入 DNS 记录查找时,kinit 可能会开始工作。这也可以解释为什么它在第一次连接后继续工作,因为 DNS 记录可能已缓存在系统上。服务器是否在 /etc/hosts 文件的 krb5.conf 中列出?如果不是,那将解释这种行为。

再想一想,拿到这张票后,你到底希望做什么?kerberos 的全部意义在于通过保护端点而不是通过实施防火墙来实现开放网络的安全性。

于 2013-11-09T02:16:49.430 回答
1

我知道了。也许这仅适用于我或其他使用硬件 VPN 的人。需要从网关接收 ICMP 类型 3 数据包才能继续 krb5 事务。我在工作网络上测试类似东西的同事没有看到这个问题,所以我们需要弄清楚我的情况有什么特别之处,以及它是否适用于其他事情。

所有这一切中最困难的部分是找到一个真正支持混杂模式的有线适配器。

于 2013-11-09T19:50:58.197 回答