我有一台 Linux PC,它位于 3 个路由器后面,其中第 3 个是互联网网关。这台 PC 正在运行一个监听 TCP 套接字的软件。所有 3 个路由器上的端口都已转发,以便从外部世界连接 PC 上运行的软件。是否可以使用 iptables 命令阻止除来自几个 WAN IP 的连接之外的所有网络流量?(基本上将远程 PC 的互联网 IP 列入白名单)。
有人建议我可以使用下面给出的命令。
#Flush existing rules
iptables -F
# Set up default DROP rule for eth0
iptables -P INPUT DROP
# Allow connections from WAN
iptables -A INPUT -o eth0 -d <WAN IP1> -j ACCEPT
iptables -A INPUT -o eth0 -d <WAN IP2> -j ACCEPT
如果上述方法正确,那么它能免受黑客攻击吗?
答案1
您的规则无效。您正在拒绝所有传入流量!没有其他规则允许任何传入流量进入此计算机。
此外,链中只有ACCEPT
规则OUTPUT
。如果的默认策略OUTPUT
是ACCEPT
,则表示允许所有规则。
您需要确保使用正确的链。如果您在路由器/网关机器上执行这些命令,则需要将规则添加到FORWARD
链中。如果您在要限制的机器上执行这些命令,则需要使用INPUT
链。
该OUTPUT
链条对于限制来自您的机器的、您不想要的流量很有用。
答案2
是否可以使用 iptable 命令阻止除来自几个 WAN IP 的连接之外的所有网络流量?
当然,这就是防火墙存在的原因。不过,我想向你介绍一下 UFW。 https://help.ubuntu.com/community/UFW
简单的防火墙让我的生活更加轻松。
是否可以阻止除来自几个 WAN IP 的连接之外的所有网络流量
和联邦水务局你甚至不需要堵塞它们,因为安装后的一次性配置非常简单:
ufw default deny incoming
ufw default allow outgoing
回到你的问题,如果现在从 WAN 到你的 Linux PC 的所有内容都被阻止,以允许某人访问它:
ufw allow from 10.10.10.10 to any port 22
这样,允许客户端 10.10.10.10 访问端口 22,通常是 ssh。
看一下我上面给您写的链接,UFW 的命令简单易记且易于使用。
要安装并开始使用 UFW:
apt-get install ufw
ufw enable
ufw default deny incoming
ufw default allow outgoing
ufw allow from 10.10.10.10 to any port 22
好吧,不要写这最后一条规则,10.10.10.10 只是一个您不想允许的随机地址。
编辑:apt-get 适用于基于 Debian 的发行版。你没有说你的