Codebeef Asked: 2009-05-01 00:10:42 +0800 CST2009-05-01 00:10:42 +0800 CST 2009-05-01 00:10:42 +0800 CST 保护新的 Ubuntu 服务器 [关闭] 772 假设我全新安装了 Ubuntu,我应该采取哪些步骤来保护它以用作 Rails 应用程序服务器? linux ubuntu security application-server 10 个回答 Voted Best Answer Can Berk Güder 2009-05-01T00:30:43+08:002009-05-01T00:30:43+08:00 我想不出任何特定于 Ubuntu 的调整,但这里有一些适用于所有发行版: 卸载所有不必要的软件包 在 SSH 中使用仅公钥身份验证 通过 SSH 禁用 root 登录(不适用于 Ubuntu) 使用 PHP 的生产设置 (php.ini-recommended) 将 MySQL 配置为仅使用套接字 当然这个列表并不完整,你永远不会完全安全,但它涵盖了我在现实生活中看到的所有漏洞。 此外,我看到的漏洞利用几乎总是与不安全的用户代码相关,而不是不安全的配置。最小的服务器发行版中的默认配置往往非常安全。 Alister Bulman 2009-05-01T00:52:46+08:002009-05-01T00:52:46+08:00 我早期做的一件快速的事情是安装DenyHosts。它会定期查看 /var/log/secure,寻找失败的登录,并在几次失败后阻止 IP。我将它设置为在第一个无此类用户之后、第二次尝试 root 时以及在为真实用户尝试几次之后(以防万一你搞砸了,但你应该使用 SSH 公钥登录)。 Mike McQuaid 2009-05-01T05:01:57+08:002009-05-01T05:01:57+08:00 Ubuntu 基于 Debian,我发现Debian 安全手册在基于 Debian 的发行版中非常有用,可以完全引导您完成系统并检查每个部分。它基本上是对您问题的非常非常全面的答案。 Tim Howland 2009-05-01T04:35:54+08:002009-05-01T04:35:54+08:00 我通常安装 RKHunter,它会扫描 rootkit 并对各种重要的系统二进制文件进行完整性检查。它在标准 repo 中,每天都会从 cron 运行。在安全方面,它并不完美,但添加起来并不费力,而且它提供了一定程度的保护。 Mikeage 2009-05-01T03:21:20+08:002009-05-01T03:21:20+08:00 安装 logcheck,但要进行调整,以便您永远不会收到来自常规事件的消息,否则您将养成忽略电子邮件的习惯。 使用 netstat 检查哪些进程正在侦听,并确保没有运行不需要运行的程序。许多守护程序可以配置为仅侦听内部 IP(或 localhost)而不是所有接口。 Jauder Ho 2009-05-01T00:33:48+08:002009-05-01T00:33:48+08:00 按照 Can 的建议做... Nmap 主机并禁用所有非必要服务。必要时使用 iptables。 Timo Geusch 2009-05-01T00:38:12+08:002009-05-01T00:38:12+08:00 如果您要使用服务器访问 Internet 附近的任何地方,请安装入侵检测系统,例如 snort。 Cristian Ciupitu 2009-06-03T15:06:13+08:002009-06-03T15:06:13+08:00 为各种目录使用单独的分区,例如/tmpor/var并使用nosuid,nodev和noexec如果可能的话。 Luke has no name 2010-04-28T11:22:08+08:002010-04-28T11:22:08+08:00 一些防火墙建议。 学习使用防火墙和正确锁定盒子的概念。更改默认端口在很大程度上是无用的;正确的应用程序和防火墙配置更为重要。 两者都在 Ubuntu 存储库中: FireHOL 有很棒的文档和非常容易学习的语法。我能够在 20 分钟内设置网关/防火墙。我离开这个的唯一原因是它似乎没有被维护(最后一次发布是 2 年前)。不代表不行,但是... 费姆 是另一个。更多类似 iptables 的语法,但概念相同。维护的社区比 FireHOL 多,但需要更长的时间才能恢复。 护墙 是我目前使用的。它的文档很丰富,它的配置格式是表格的。我花了大约一个半小时来了解所有需要的文件 (6) 才能运行有效的防火墙/网关配置。它相当强大。提示:不同配置文件的手册页真的很有帮助! 所有这些都从配置文件加载防火墙配置。非常有效,比 iptables 更易于使用,并且(在我看来)比 ufw 更易于使用和管理。 其他: 我支持 SSH 密钥使用的建议。 设置 IDS。 了解 AppArmor。它将可执行文件的文件访问权限限制在它需要的指定目录和文件中。类似于 RHEL 世界中的 SELinux。它已安装并启用了许多常用程序的预配置“配置文件”。 mas 2009-07-12T07:13:56+08:002009-07-12T07:13:56+08:00 除了这里的其他建议外,我还会提到三个显而易见但可能值得一提的完整建议: 如果您认为不需要防火墙,请三思。ufw 很简单,但专为 Ubuntu 设计并基于 iptables 更新软件包:至少应用所有安全补丁 记录您为保护服务器所做的工作以及原因。包括配置(自动化)流程以监控日志、测试配置和报告所需的安全更新。
我想不出任何特定于 Ubuntu 的调整,但这里有一些适用于所有发行版:
当然这个列表并不完整,你永远不会完全安全,但它涵盖了我在现实生活中看到的所有漏洞。
此外,我看到的漏洞利用几乎总是与不安全的用户代码相关,而不是不安全的配置。最小的服务器发行版中的默认配置往往非常安全。
我早期做的一件快速的事情是安装DenyHosts。它会定期查看 /var/log/secure,寻找失败的登录,并在几次失败后阻止 IP。我将它设置为在第一个无此类用户之后、第二次尝试 root 时以及在为真实用户尝试几次之后(以防万一你搞砸了,但你应该使用 SSH 公钥登录)。
Ubuntu 基于 Debian,我发现Debian 安全手册在基于 Debian 的发行版中非常有用,可以完全引导您完成系统并检查每个部分。它基本上是对您问题的非常非常全面的答案。
我通常安装 RKHunter,它会扫描 rootkit 并对各种重要的系统二进制文件进行完整性检查。它在标准 repo 中,每天都会从 cron 运行。在安全方面,它并不完美,但添加起来并不费力,而且它提供了一定程度的保护。
安装 logcheck,但要进行调整,以便您永远不会收到来自常规事件的消息,否则您将养成忽略电子邮件的习惯。
使用 netstat 检查哪些进程正在侦听,并确保没有运行不需要运行的程序。许多守护程序可以配置为仅侦听内部 IP(或 localhost)而不是所有接口。
按照 Can 的建议做...
Nmap 主机并禁用所有非必要服务。必要时使用 iptables。
如果您要使用服务器访问 Internet 附近的任何地方,请安装入侵检测系统,例如 snort。
为各种目录使用单独的分区,例如
/tmp
or/var
并使用nosuid
,nodev
和noexec
如果可能的话。一些防火墙建议。
学习使用防火墙和正确锁定盒子的概念。更改默认端口在很大程度上是无用的;正确的应用程序和防火墙配置更为重要。
两者都在 Ubuntu 存储库中:
FireHOL
有很棒的文档和非常容易学习的语法。我能够在 20 分钟内设置网关/防火墙。我离开这个的唯一原因是它似乎没有被维护(最后一次发布是 2 年前)。不代表不行,但是...
费姆
是另一个。更多类似 iptables 的语法,但概念相同。维护的社区比 FireHOL 多,但需要更长的时间才能恢复。
护墙
是我目前使用的。它的文档很丰富,它的配置格式是表格的。我花了大约一个半小时来了解所有需要的文件 (6) 才能运行有效的防火墙/网关配置。它相当强大。提示:不同配置文件的手册页真的很有帮助!
所有这些都从配置文件加载防火墙配置。非常有效,比 iptables 更易于使用,并且(在我看来)比 ufw 更易于使用和管理。
其他:
我支持 SSH 密钥使用的建议。
设置 IDS。
了解 AppArmor。它将可执行文件的文件访问权限限制在它需要的指定目录和文件中。类似于 RHEL 世界中的 SELinux。它已安装并启用了许多常用程序的预配置“配置文件”。
除了这里的其他建议外,我还会提到三个显而易见但可能值得一提的完整建议: