我能够使用基本的 Linux 发行版(稳定的 Ubuntu 服务器)并安装启动和运行我的 Web 应用程序所需的一切。(Django、Rails、PHP 等...)但在完成所有这些之后,我希望得到一些有关安全的建议。
这是我目前的检查清单:1. 更改分配给我的 root 密码 2. 添加管理员用户,这样我就不必以 root 身份登录 3. 将 ssh 端口更改为我编写的随机端口,并要求 SSH 密钥 4. 设置 IPTables 以阻止几乎所有端口,除了(80,我的 ssh 端口,可能还有其他几个端口,具体取决于
(按要求)
现在怎么办?如何让服务器保持最新状态?我真的不想每天阅读 ubuntu-security-announce 邮件列表,我只想构建 Web 应用程序。
答案1
确保配置 IPTables 以限制 ssh 以及您拥有的任何其他不应公开到本地子网或特定工作站的内容。您可能需要限制传出流量如果你正在使用多个服务器限制损失在发生妥协的情况下。apt-get update
进行基本更新、安装从源头上讲,你需要自己做。对于从源代码安装,README 文件通常会告诉您需要了解的内容,并且通常会有迁移矩阵或升级指南。如果还有其他问题,该过程几乎总是简单地从源代码重新安装(./configure [options]
, make
, make install
)
您还可以速率限制使用 iptables 来缓解暴力破解和基本DOS(拒绝服务)。你可能想确保你降低(ing)数据包而不是拒绝在您的 iptables 中。拒绝发送一个回复发件人他们被拒绝了。放下表现得好像它从来没有收到过数据包。
http://www.cyberciti.biz/faq/how-do-i-update-ubuntu-linux-softwares/
您可以在此处找到速率限制的示例:
Iptables 阻止的连接会持续多长时间?有没有办法设置超时?
我强烈建议您阅读上述网站上的其他一些文章。Vivek Gite 非常善于传达基本观点,并且涵盖了很多关于安全的内容。
添加管理员用户,这样您就不必登录根本作为根是最小的安全增益- 以 root 身份执行操作是没有问题的,只要您接受犯更大错误的风险,例如意外删除 /boot。更重要的是关闭通过 SSH 进行的 root 登录(在 /etc/ssh/sshd_config 中),因此您只能通过su
物理访问来获取 root 权限,或者仅允许某些用户切换到 root 权限。
我确实想强调管理员用户仍然可以作为 root 的垫脚石(即以管理员身份 ssh 登录然后切换到 root),只是创建一个管理员用户以便您不必登录到 root 在安全性方面有点徒劳。
您可能还会考虑使用应用程序防火墙。与其他防火墙(例如,IPTables,它使用数据包)相比,应用程序防火墙可以防御各种更高级别的攻击。如果您使用 Apache 作为 Web 服务器,那么 Mod_Security2(由 Ivan Ristic 提供)是一个不错的选择。
如果您想要更多的安全陷阱\防御,您可以研究入侵检测系统,其中一个流行的系统是 Snort。
确保你安装了杀毒软件。Clam AV 是一款不错的免费杀毒软件。
如果以上内容超出了您认为的环境所需的最低要求,则请执行以下操作:
- 安装防病毒软件
- 关闭 Root 的 SSH。
- 限制开放端口上的 SSH 和其他服务,使其仅接受来自 iptables 中子网的连接。
过去它进入模糊的您需要考虑一些细节,例如确保文件和文件夹权限不会太松散,编写不良的程序不会以 root 身份运行,等等。