iptables足够的安全性,如果端口80是唯一的畅通无阻的端口和Apache安装正确?

我们正在使用PHP,MySQL,SVN和Apache。 我想知道,如果我假设本地子网值得信任,并允许我们的子网上的所有端口使用iptables,然后只允许端口80开放“任何人”。 如果以子网可信为前提是“良好安全”的话。 这也是假设良好的PHP代码等,并configuration正确的Apache。

这是使用CentOS 5。

没有挑衅不。 实际上,80端口可能是现代系统中最危险的端口。 也没有https://(tcp 443)意味着所有的会话ID都被泄漏。 不使用https是明显违反了A3:OWASP 2010年前十名中的“破坏的身份validation和会话pipe理”。

保护自己的一件好事是运行一个Web应用程序防火墙(WAF),比如Mod_Secuirty 。 WAF是一个非常不同于“包filter防火墙”像iptables。

我还build议针对您的系统(如Acunetix或wapiti)运行漏洞扫描。 确保您的系统定期更新: yum upgrade 。 运行PhpSecInfo并configuration你的php.ini,这样就不会出现RED。 PHP的默认configuration是非常不安全的,它已经变得更好(默认禁用远程文件包含和register_globals),但是它仍然非常糟糕。

我实际上会说问题在于:

“假设良好的PHP代码”。

你不能认为这是理所当然的。 理想情况下,该服务器将进入局域网可以访问的DMZ,但DMZ无法访问局域网。 这个想法是,你认为你面向公众的服务器会受到攻击,然后你想限制这个损害。 通过在局域网和DMZ之间设置单独的防火墙,可能会限制这种损害。 所以在DMZ设置下,Subversion可能不会在面向公众的服务器上。 如果你买不起这个额外的服务器,那么创build一个虚拟机,让公众面对服务器可能是一个穷人的DMZ。

我也会采取额外的步骤,只打开所需的本地子网端口(你可能需要信任你更多的局域网,但仍然限制,如果可以的话)。 如果使用状态模块(redhat / centos默认设置),可能不会那么多。

另外,不要忘记操作系统和应用程序的安全更新。

如果一切都安全,那么你有足够的安全。 不幸的是,这句话的第一部分很less是真的。 只打开所需的端口,甚至到可信networking。

以及..不只是限制传入的连接。 也过滤出去。 并在OUTPUT表上本地进行筛选,同时在路由器上进行筛选。

在stream行的脚本中有太多的漏洞,如果你的服务器被拥有,最小化伤亡。

允许传出ESTABLISHED,相关[显然],可能是less数主机与操作系统更新,也许到您的SMTP中继服务器…就是这样。 所以你防止下载恶意负载,传播垃圾邮件等

我同意@The Rook对此 – 真正的危险是潜伏在80后面的所有那些大胖子function。如果你正在编写web app代码,不pipe语言如何,我都会匆忙推荐你快速学习如何编写安全代码并创build安全devise。 没有任何防火墙防御措施将保护您免受蹩脚的networking应用程序。