我已经设置了端口敲打scheme来保护端口22使用iptable规则。 最重要的是,我已经设置了一些“蜜jar”规则来禁用端口敲打客户端几分钟,如果他们击中未使用的公用端口(例如端口21)或敲打序列周围的端口。 这似乎工作得很好(我相信这是一个更好的select,而不是将端口更改为某种模糊)。 对于SSHD密码,无论如何都将禁用login – 需要encryption的私钥/公钥组合。
在这个页面上有一个“滴水盘”的scheme,如果未使用的端口被击中,客户端将无法与任何东西(甚至打开的端口)通信60秒。 我最担心的是“–hitcount 3”似乎是由任何一个单一的端口请求引发的。
所以我的问题是,你对这种设置有什么看法? Web服务器上的“滴水盘”太多了,还是恰到好处? 除了保持一个放弃政策,只打开需要的东西外,你们有没有其他的防火墙安全build议?
编辑:我正在使用CentOS 5.7。 我们假设在理性的情况下尽可能安全。 服务器将不得不通过PCI / SAS合规(以及其他类似的标准)。 重点将是防火墙,不一定会发现单个服务的漏洞(这是另一个话题)。 我所缺less的任何与防火墙或外部任何东西有关的东西。 要使攻击者获得访问权尽可能地困难。
这里完全是主观的看法,但我从来没有对敲门声感兴趣。
感觉有点像一个疯子,我一直担心会有那么一段时间停止工作,或者我发现一个边缘案例,把我锁在了我的系统之外。
我发现禁用密码authentication和SSH密钥对,我很less看到相同的机器人尝试多个端口。 当有太多的其他主机尝试拥有时,这是不实际的。 在人们停止允许根SSHlogin并放弃密码authentication之前,低悬的成果仍然存在,并且为networking犯罪分子采摘已经成熟。
在防火墙上,除了几个位置外,我通常会断开与TCP 22的连接,因为我几乎不需要任何需要直接访问一个盒子的地方(我只需VPN即可)。
我假设这是一个Web服务器,是吗? 花一些时间来了解您的Web应用程序的需求。 典型的状态防火墙几乎无用,可以抵御像SQL注入,XSS等那样发生在端口80上的攻击。
我还设置了一些健壮的日志logging(如果您正在运行数据库,请logging所有SQL查询;为您的防火墙日志,Web服务器日志,auth.log,系统日志,Web服务器日志等设置远程系统日志)
我将在另一台主机上设置一个代理服务器(如果可以的话),并在防火墙上从Web服务器中删除所有内容。 当/如果你的盒子被拥有,攻击者将无法在互联网上直接进行TCP / UDP连接(通常攻击者想要做的第一件事就是获得一个shell到你的系统),如果你注意到了,你马上就知道了。
唯一应该允许的传出HTTPstream量应该通过代理服务器退出,并且您(至less对于服务器)应该有一个可以正常使用的域名白名单(如包pipe理回购)。
这样做会很长; 假设你将拥有并计划并相应地进行辩护。