重新启动开放至互联网的服务器是否安全?

重新启动开放至互联网的服务器是否安全?

具体来说

我在运行 CentOS 的服务器上定义了一个 iptables 规则集。我是否可以保证/如何保证当网络连接时(无论是在机器启动时,还是在重新启动网络服务后),iptables 规则集已经应用(如果 iptables 启动失败或应用规则集失败,网络接口将无法启动)?

(我知道这是一个菜鸟问题,但我从来没有在伪装的 DHCP NAT 和防火墙后面的受信任网络之外的任何网络上运行服务器,所以......期待菜鸟提出菜鸟问题。)

答案1

开箱即用,可以保证 iptables 会在接口启动之前按照启动脚本的顺序启动。查看每个启动脚本中的“chkconfig”行,您将看到它在活动时处于“开启”的运行级别、启动顺序和停止顺序。

如果 iptables 规则集未正确应用(或根本没有应用),则不能保证接口不会启动。

示例:
chkconfig: 2345 08 92
此行表明相关服务将在运行级别 2、3、4 和 5 中处于活动状态,并将从 8 启动并在 92 停止。任何具有较大“启动”值的脚本仅在此脚本完成后才会启动,但此脚本出错被视为完成,不会阻止下游脚本运行。

请注意,这个答案适用于 CentOS 6 及更早版本,不一定适用于 CentOS 7。我个人还没有对 7 进行足够的研究,因此无法回答有关 7 的这个问题。

答案2

您还可以使用 centos 中的 ifup-post 选项:

/etc/sysconfig/网络脚本/ifup-post

当任何网络设备(SLIP 设备除外)启动时调用。调用 /etc/sysconfig/network-scripts/ifup-routes 来启动依赖于该设备的静态路由。调用 /etc/sysconfig/network-scripts/ifup-aliases 来启动该设备的别名。如果尚未设置主机名,并且可以为该设备的 IP 找到主机名,则设置主机名。向已请求网络事件通知的任何程序发送 SIGIO。

可以根据需要进行扩展以修复名称服务配置、调用任意脚本等。

该脚本运行,并在上面的(ifup-route 和 ifup-aliases)之后查找 ifup-local

if [ -x /sbin/ifup-local ]; then
   /sbin/ifup-local ${DEVICE}
fi

因此,您可以创建此文件并确保它再次调用 iptables,例如使用 iptables-restore:

iptables-restore < /etc/sysconfig/iptables

答案3

补充一点:为了确保下次启动服务器时所需的规则可用,请使用以下命令保存它

sudo sh -c "iptables-save > /etc/iptables.rules"

相关内容