我甚至不认为自己是 iptables 新手用户,所以我想知道是否有人可以帮助我做到这一点:
我希望能够使用 eth0 网卡通过 ssh 进入我的其中一台服务器。所有其他流量都应使用 eth1 网卡。在任何情况下,除 ssh 流量之外的任何流量都不应通过 eth0。
我认为这很“简单”,但我发现很难找到解决方案。
有人可以分享他们的专业知识吗?
根据请求详细说明网络拓扑:
eth0、eth1暴露在公司网络中,可以访问互联网。
eth0 是固定 IP(带有主机名 - 方便 ssh 登录)。eth1 的 IP 地址会发生变化,因为它是由公司 DHCP 服务器动态分配的。
答案1
对于 eth0(我猜你在端口 22 上运行 SSH 守护程序 - 如果我的猜测错误,请适当更改):
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp -m multiport --dports 22 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -j DROP
第一条规则表示允许所有属于已建立连接的数据包。第二条规则表示端口 22 上的 TCP 连接正常。第三条规则丢弃任何其他数据包。
在 /etc/ssh/sshd_config 中,您应该将 ssh 守护进程监听的地址限制为来自 eth0 的地址,以避免通过 eth1 进行连接。例如:
ListenAddress 192.168.1.1
ListenAddress 2001:0db8:0:1::1