为什么这个 iptables 规则会阻止我的网络服务器?

为什么这个 iptables 规则会阻止我的网络服务器?

我正在远程服务器上设置 Mathematica,并且需要访问 UI。我根据设置VNChttp://wiki.centos.org/HowTos/VNC-Server,并使其正常工作,其中涉及对 iptables 进行更改。大约三分钟后,我的手机开始震动。看到这个我感到很震惊:

在此输入图像描述

这些是我附加到 /etc/sysconfig/iptables 的行:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 5901:5903,6001:6003 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

我知道我所做的有很多错误:

  1. 换了一个直播系统。公平地说,这是我安装了 Mathematica 的系统,而且根据使用条款我只能将其安装在一个系统上。

  2. 换了一个直播系统。

  3. 换了一个直播系统。

  4. 不知道我在做什么

所以,我的问题是;其中哪一部分阻止了对网络服务器的访问,大概还阻止了其他端口的访问?

答案1

以冒号和规则名称开头的行(例如:INPUT ACCEPT [0:0])会重置相应的链:所有先前的规则都会被刷新。如果要添加规则,请添加-A INPUT …行。中的每个链都应该有一行,位于引用该链的任何其他规则之前。因此,由于您附加的代码,任何已经存在的规则都被有效地忽略。:CHAIN/etc/sysconfig/iptables

操纵远程计算机上的防火墙总是有风险的。如果您确实需要这样做,这里有一些技巧可以最大限度地降低风险。

  • 交互式运行iptables命令,直到您满意为止;在没有进行充分的测试之前,不要编辑配置文件。
  • 使用 screen 或 tmux。当您使用防火墙规则时,您可能会断开连接。
  • 在进行任何更改之前,请sleep 60 && iptables-restore </etc/sysconfig/iptables在 screen/tmux 窗口中启动该命令。这样,一分钟后,将重新应用默认设置。如果更改顺利,请返回该窗口并使用Ctrl+取消C

答案2

我发现发生了什么 - 新规则覆盖了之前的所有规则,只保留 SSH 和 VNC 端口打开。我将 VNC 规则添加到文件中的先前配置中。解决了!

答案3

我认为icmp协议主要用于ping,而不是禁止vnc连接。检查 iptables 中是否未打开分配的任何 Web 服务器端口。

相关内容