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


29

特别

我在运行CentOS的服务器上定义了一个iptables规则集。我可以保证/可以保证/如何保证当网络联机时(在机器启动时或在重新启动网络服务之后)iptables规则集已经被应用(如果iptables无法启动或未能应用规则集)网络接口将无法启动)?

(我知道这是一个菜鸟问题,但是除了伪装的DHCP NAT和防火墙之后,我从未在受信任的网络上的任何服务器上运行服务器,因此...希望菜鸟提出菜鸟问题。)


15
真的不是一个菜鸟问题。这实质上是黑客在2011年进入PlayStation网络的方式,造成24天的服务中断和1500万美元的和解金。当防火墙重新启动时(如每月一次),防火墙打开了片刻-显然足够长。
克里斯·S

@ChrisS对我来说,最奇怪的事情是,我敢肯定,负责网络的系统管理员几乎肯定会聪明到足以阻止有人建议关闭防火墙,但每月都不要打扰,将其关闭...然后再次打开。不过,不确定这些组合中的哪一个可以解释它。
Parthian Shot

另一个选项是在服务器完全启动之前禁用网络交换机上的端口-如果您在现场并且具有交换机访问权限。这不是理想的,但是除非服务器具有网络依赖性(例如NFS),否则它肯定会起作用。
jftuga 2014年

@jftuga好吧,当然。但是这样一来,服务器将无法连接到Internet,因此该解决方案从技术上来说不会属于此问题的范围。如果我在现场,则可以在重启过程中拔出以太网电缆。无论如何,根本的问题将仍然存在于端口阻塞解决方案中。这样另一台通过网络进行攻击的计算机就不会被本地防火墙阻止。如果路由器被黑客入侵,发生故障或本地网络上的其他人受到威胁,则游戏仍将结束。
Parthian Shot 2014年

@jftuga实际上,问题甚至比那更糟。假设有人已经在本地计算机上运行了某个软件,但是我的防火墙进行了出口过滤,说规则是,只有在建立或相关的情况下才允许传出数据包,并且仅允许传入的新连接进入端口80通常,这将防止反向Shell进入非特权帐户。但是,如果在启动时启动了连接,则将通过防火墙初始化来维持连接。我想这也意味着应该更改防火墙规则,但这是一个容易犯的错误。
Parthian Shot

Answers:


18

开箱即用,可以保证在启动脚本顺序启动界面之前,iptables将启动。查看每个启动脚本中的“ chkconfig”行,您将看到处于活动状态的运行级别,启动顺序和停止顺序。

如果iptables规则集未正确应用(或根本未应用),则不能保证不会打开该接口。

示例:
chkconfig: 2345 08 92
此行指出,所涉及的服务将在运行级别2、3、4和5中处于活动状态,并从8开始并在92处停止。任何具有更大“开始”值的内容都将在此脚本完成后开始,但此脚本错误被认为已完成,不会阻止下游脚本运行。

请注意,此答案适用于CentOS 6和更早的版本,不一定适用于CentOS7。我个人没有对7进行充分的研究来回答7的问题。


1
+1而且...因为您的回答是很有帮助的,所以不要在嘴上望一眼礼品马,但是...您是否会偶然知道以任何标准的方式向服务授予依赖顺序,以便在失败时在链的早期,后续的没有开始吗?哦,还有,如果有人设法使防火墙崩溃(以某种方式),那么网络接口将“随船停下来”?理想情况下,我希望一切都能够安全地进行故障转移,即使是有人愿意在0天之内对DoS防火墙进行攻击……
Parthian Shot

5
使用SysV启动脚本(即CentOS 6和更早版本),没有一个好的方法。CentOS 7可以根据需要进行依赖-如果B依赖于A并且A失败,则B无法启动。对于7,使用依赖项systemctl list-dependencies --all(我刚刚看了30秒前的手册页)。
约翰

虽然这个消息有点令人失望(目前我现在是6岁),但至少我现在知道修改init脚本是一个可以接受的可怕技巧。
Parthian Shot 2014年

5
在修改初始化脚本时要非常小心-这样做可能会对您可能安装的任何入侵检测软件造成误报,并且如果initscripts软件包已更新(例如,勘误发布),则修改将被覆盖。我真的不建议这样做。
约翰

我还没有设置IDS,所以目前虚假警报已经不是问题(服务器还没有启动,我知道我还没准备好部署;这个问题是我准备的一部分。但我要放入一个HIDS)。我将尽可能地小心,如果有一种方法不涉及手动修改init的配置的核心部分,我肯定会这样做。
Parthian Shot 2014年

1

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

/ etc / sysconfig / network-scripts / 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

1

一点附录:为确保下次启动服务器时存在所需的规则,请使用

sudo sh -c "iptables-save > /etc/iptables.rules"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.