作为一名软件开发人员,我非常习惯于在我的开发机器上安装典型的堆栈(java,mysql和tomcat / apache)。 但是设置和保护一台生产机器不是我想要做的事。 是否有用于设置和保护生产服务器的傻瓜AZ指南? 这个过程与平台(Windows或Linux)有很大的不同吗? 是否有一些可以应用于不同平台(和应用程序堆栈)的一般规则?
是否有用于设置和保护生产服务器的傻瓜AZ指南?
没有。软件,代码,平台,硬件等可能的组合太多了。 但是,如果你打碎了你的堆栈,你会发现每个级别的信息都很好(例如,强化你的操作系统,Web应用安全最佳实践等)。
这个过程与平台(Windows或Linux)有很大的不同吗?
硬化的过程是一样的,但是实现细节不一样。
是否有一些可以应用于不同平台(和应用程序堆栈)的一般规则?
是。 您应该创build应用程序的configuration文件:logging应用程序的依赖关系(任何需要运行的服务;需要打开(进出)任何networking端口/协议;任何第三方库/组件)为您的应用程序工作的基本要求。 系统地删除/禁用任何不需要的服务,应用程序和端口; 以最less的权限运行服务和应用程序。 testing每一步的方法; 你会打破一些东西。
投资一个合适的防火墙,并启用出口过滤(如果你的箱子拥有,不要让它build立直接的TCP连接); 使用白名单的代理只允许出站HTTP到所需的更新(windowsupdate.com等,Linux存储库)。 安装警报和正确的日志logging:失败的login尝试,启动/停止服务,安装,权限升级等提醒。补丁pipe理非常重要; devise一个合理的维护窗口并坚持下去。 不要让更新累积太久。
如果这是一个Web应用程序,请查看您的入口点,HTTP动词到URI映射,将您的POST或GET参数白名单,清理表单(不要相信任何input),转义您的SQL(或者使用3rd-为你做这个),logging所有的SQL查询, 等等。
使用像iptables这样的防火墙,并花费一些时间来规划应该可能和需要的机器连接。 限制input和即使输出stream量。
有许多一般规则适用于所有types的服务器,如:
删除未使用的软件并closures未使用的端口/服务。 他们正在浪费资源,这是一个可能的漏洞。
不断地修补和升级,特别是在发现一些错误或弱点的时候。
尽可能更改所有默认密码和/或禁用访客/默认帐户。
使用强密码。
只要适用和适当,请使用SSL来保护您的交易。
此外,每个特定的服务可以有一些保证它的提示。
除了哈立德的回答:
更改默认帐户名称,包括:
administrator帐户名称 在SQL Server或任何其他数据库服务器的情况下,除非需要禁用远程连接,并且如果需要,请考虑阻止服务器使用的端口并白名单允许的IP。
tomcat的一个特别提示:将其端口绑定到localhost,并使用适当的web服务器(例如apache httpd)作为前端。 如果您有权访问pipe理器应用程序,许多最新的tomcat漏洞只能被利用。
因此,如果您的应用程序已启动并运行,那么最好还是摆脱pipe理器应用程序。 禁用自动部署。
充分利用不同的angular色 – networking服务器httpd不需要在os级别上访问tomcat提供的文件,反之亦然。 所以如果有人利用httpd的弱点,并下到命令行,确保他不能写任何重要的东西。
看看ISO 27001 – 还有一个专门研究安全的堆栈交换论坛。