假设我已经安装了全新的Ubuntu,我应该采取哪些步骤来确保它能够用作Rails应用程序服务器?
我不能想到Ubuntu的任何特定的调整,但这里有一些适用于所有发行版:
当然,这个列表并不完整,你永远不会完全安全,但它涵盖了我在现实生活中看到的所有function。
另外,我所看到的漏洞通常都与不安全的用户代码有关,而不是不安全的configuration。 最小的服务器分发中的默认configuration往往是非常安全的。
我很早就做的一件事是安装DenyHosts 。 它会定期查看/ var / log / secure,查找失败的login名,并在几次失败后,阻止IP。 我把它设置为在第一次没有这样的用户之后,第二次尝试在根目录下,以及在真正的用户尝试了几次(如果你搞砸了,但你应该使用SSH公共密钥login)之后阻止。
Ubuntu基于Debian,我发现“ Debian安全手册”在基于Debian的发行版中非常有用,可以完全引导您查看系统并检查每个部分。 这基本上是一个真正的,非常全面的回答你的问题。
我通常会安装RKHunter,它会扫描rootkit,并对各种重要的系统二进制文件进行完整性检查。 这是在标准的回购,并将每天从cron运行。 这不是完美的,安全的,但是这是一个很难的项目,它提供了一个保护措施。
安装日志检查,但调整,以便永远不会收到来自常规事件的消息,否则你会养成忽略电子邮件的习惯。
检查哪些进程正在使用netstat监听,并确保没有任何运行的东西不需要运行。 许多守护进程只能configuration为侦听内部IP(或本地主机)而不是所有接口。
做什么可以build议…
Nmap主机并禁用所有非基本服务。 如有必要使用iptables。
如果你要在服务器附近的任何地方使用Internet,请安装入侵检测系统,如snort。
对不同的目录(如/tmp
或/var
使用不同的分区,并尽可能使用nosuid
, nodev
和noexec
挂载。
学习使用防火墙和正确locking方框的概念。 更改默认端口在很大程度上是无用的。 正确的应用程序和防火墙configuration更重要。
两者都在Ubuntu的回购:
有非常好的文档和非常容易学习的语法。 我能够在20分钟内build立一个网关/防火墙。 我离开这个唯一的原因是,它似乎并没有得到维护(2年前的最后一个版本)。 并不意味着它不工作,但…
是另一个。 更像iptables的语法,但相同的概念。 更多的社区维护比FireHOL,但需要更长的时间才能拿起。
是我目前使用的。 其文档非常丰富,其configuration格式是表格式的。 我花了大约一个半小时的时间来了解所有需要的文件(6),以使防火墙/网关configuration正常运行。 这是相当强大的。 提示:不同的configuration文件的手册页是非常有帮助的!
所有这些都从configuration文件加载防火墙configuration。 非常有效,比iptables更容易使用,并且(在我看来)比ufw更易于使用和pipe理。
我第二次使用SSH密钥的build议。
设置一个IDS。
了解AppArmor。 它将可执行文件的文件访问权限限制在只需指定的目录和文件。 类似于RHEL世界中的SELinux。 它已安装并启用了许多使用良好的程序的预configuration“configuration文件”。
以及其他build议在这里我会提到三个是显而易见的,但也许值得一提的完整性: