保护一个新的Ubuntu服务器

假设我已经安装了全新的Ubuntu,我应该采取哪些步骤来确保它能够用作Rails应用程序服务器

我不能想到Ubuntu的任何特定的调整,但这里有一些适用于所有发行版:

  1. 卸载所有不必要的软件包
  2. 在SSH中使用公钥唯一身份validation
  3. 通过SSH禁用rootlogin(不适用于Ubuntu)
  4. 使用PHP的生产设置(php.ini-recommended)
  5. configurationMySQL仅使用套接字

当然,这个列表并不完整,你永远不会完全安全,但它涵盖了在现实生活中看到的所有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使用不同的分区,并尽可能使用nosuidnodevnoexec挂载。

一些防火墙build议。

学习使用防火墙和正确locking方框的概念。 更改默认端口在很大程度上是无用的。 正确的应用程序和防火墙configuration更重要。

两者都在Ubuntu的回购:

FireHOL

有非常好的文档和非常容易学习的语法。 我能够在20分钟内build立一个网关/防火墙。 我离开这个唯一的原因是,它似乎并没有得到维护(2年前的最后一个版本)。 并不意味着它不工作,但…

FERM

是另一个。 更像iptables的语法,但相同的概念。 更多的社区维护比FireHOL,但需要更长的时间才能拿起。

的shorewall

是我目前使用的。 其文档非常丰富,其configuration格式是表格式的。 我花了大约一个半小时的时间来了解所有需要的文件(6),以使防火墙/网关configuration正常运行。 这是相当强大的。 提示:不同的configuration文件的手册页是非常有帮助的!

所有这些都从configuration文件加载防火墙configuration。 非常有效,比iptables更容易使用,并且(在我看来)比ufw更易于使用和pipe理。

其他:

  • 我第二次使用SSH密钥的build议。

  • 设置一个IDS。

  • 了解AppArmor。 它将可执行文件的文件访问权限限制在只需指定的目录和文件。 类似于RHEL世界中的SELinux。 它已安装并启用了许多使用良好的程序的预configuration“configuration文件”。

以及其他build议在这里我会提到三个是显而易见的,但也许值得一提的完整性:

  1. 如果你不认为你需要防火墙,再想一想。 ufw很简单,但为Ubuntudevise,并基于iptables
  2. 更新软件包:至less应用所有的安全补丁
  3. logging你已经做了什么来保护服务器,为什么。 包括configuration(自动)进程以监视日志,testingconfiguration并报告所需的安全更新。