我想在我的 Linux 服务器上放置一个 Web 应用程序:我将首先向您解释该 Web 应用程序将做什么,然后我将告诉您我到目前为止为保护我的全新 Linux 系统所做的工作。
该应用程序将是一个分类广告网站(类似 gumtree.co.uk),用户可以在其中出售他们的物品,上传图片,向管理员发送电子邮件和接收来自管理员的电子邮件.它将使用SSL对于某些页面。我需要SSH。
到目前为止,我为保护我的 Ubuntu(最新版本)所采取的措施如下:
注意:我可能做了一些事情,导致应用程序无法完成所有任务,所以请告诉我。我的机器的唯一用途是托管网站。
(我将数字作为要点列出,以便您更轻松地参考)
1)防火墙
我安装了 Uncomplicated Firewall。默认拒绝进出
规则:允许进出:HTTP、IMAP、POP3、SMTP、SSH、UDP 端口 53 (DNS)、UDP 端口 123 (SNTP)、SSL、端口 443
(我不允许的是 FTP、NFS、Samba、VNC、CUPS)
当我安装 MySQL 和 Apache 时,我将打开端口 3306 IN 和 OUT。
2)固定分区
在 中/etc/fstab
,我在最后添加了以下行:
tmpfs /dev/shm tmpfs defaults,rw 0 0
然后在控制台中:mount -o remount /dev/shm
3)保护内核
在文件中/etc/sysctl.conf
,有几个不同的过滤器需要取消注释。我不知道哪一个与 Web 应用托管相关。我应该激活哪一个?它们如下:
A)在所有接口上打开源地址验证,以防止欺骗攻击 B)取消注释下一行以启用 IPv4 数据包转发 C)取消注释下一行以启用 IPv6 数据包转发 D)不接受 ICMP 重定向(我们不是路由器) E)仅接受默认网关列表中列出的网关的 ICMP 重定向 F)不发送 ICMP 重定向 G)不接受 IP 源路由数据包(我们不是路由器) H)记录火星数据包
4)配置passwd文件
对于除用户帐户和 root 之外的所有帐户,将“sh”替换为“false”。我也对名为 sshd 的帐户进行了此操作。我不确定这是否会阻止 SSH 连接(我想使用它)或者是否是其他原因。
5)配置影子文件
在控制台中:passwd -l
锁定除用户帐户之外的所有帐户。
6)安装 rkhunter 和 chkrootkit
7)安装Bum
禁用这些服务:“高性能邮件服务器”、“无法阅读(内核循环)”,”无法阅读(语音调度程序)”,“恢复 DNS”(这个应该保留吗?)
8)安装Apparmor_profiles
9)安装 clamav 和 freshclam(防病毒和更新)
我做错了什么以及我应该做些什么来确保这台 Linux 机器的安全?
提前致谢
答案1
你说
我的机器的唯一用途是托管网站
但是您打开了“IMAP、POP3”端口。这些是运行网站所必需的吗?或者这也是一个邮件服务器。
忘记 rkhunter 之类的工具吧,它们充满了误报和漏报。它们会寻找诸如“文件被意外更改以包含一些已知 rootkit 的小子集”之类的信息,而“文件被意外更改”应该足以发出警报。 萨温节 是一个很好的工具,可以在文件发生变化时发出警报。
当您需要升级软件包以进行安全补丁时,如何提醒您?不要依赖这里的人工来查看邮件列表或定期检查。您需要某种东西来主动骚扰人们,直到安全更新完成。icinga 或 nagios 或类似的东西可以提供帮助。
禁止通过 ssh 密码登录。让人们使用密钥。如果你让他们使用密码,他们会选择弱密码。
除了通过检测 ssh 暴力破解尝试来帮助保证设备的安全之外,失败2ban可以配置为帮助提高应用程序的安全性。它可以捕获是否有人试图暴力破解其他用户的密码。
您可能可以更进一步“保护 fstab”。/home 是否需要 exec?用户是否需要 readrwite?或 readonly,直到您进行升级为止。
考虑使用类似 logwatch 或 logcheck 的工具来清理系统日志文件,并向管理员发送有趣的日志事件。两者都需要大量调整,以免它们成为每个人都会很快忽略的电子邮件,因为它们通常只是充满了平庸的消息。
答案2
按照部署看起来你在安全方面已经做得很彻底了。因此,下一步是考虑如何维持您的安全操作与您在部署中建立的标准一致。
这包括:
- 安全更新
- 漏洞扫描和渗透测试
- 入侵检测
- 查看访问日志
- 访问控制
所有这些都属于拥有良好的运营政策为了维护您在部署期间建立的安全性。我可能扩大了您的问题范围,并不是想让您觉得您没有考虑过这个问题,但也许这有助于为您下一步的思考建立一个框架。
答案3
我以前使用过一个名为 Bastille 的系统,可能值得一看。
答案4
安装sshgaurd帮助抵御暴力攻击,并禁用 sshd 中的密码登录。仅对 sshd 使用公钥身份验证,因为它们使暴力攻击变得不那么实际。