如何安装和使用 Bastille 来加固 Ubuntu 12.04

金钱(警告)

** 状态:** 被贬值

如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议升级或迁移到支持的 Ubuntu 版本:

** 原因:** Ubuntu 12.04 已于 2017 年 4 月 28 日到期(EOL)并且不再收到安全补丁或更新。

** 相反,请参见:** 本指南可能仍然有用作为参考,但可能不会在其他Ubuntu版本上工作. 如果可用,我们强烈建议使用为您正在使用的Ubuntu版本撰写的指南。

介绍


巴斯蒂尔对于系统管理员和所有层次的Linux用户来说是一个非常有用的工具,希望提高或评估他们的安全级别。乍一看,巴斯蒂尔本身(以及其兴趣点)似乎在桌面计算领域。

然而,巴斯蒂尔是一个真正的宝石,应该慷慨赞扬;它是一个奇妙的系统管理工具,致力于不仅硬化操作系统(操作系统)的真正艺术,还包括安全评估和教育。

在这篇DigitalOcean文章中,使用巴斯蒂尔,我们将提高我们的系统的安全性,并通过分析巴斯蒂尔本质上旨在用其彻底的指导笔记来教导的知识和理解Linux系统的硬化,因为我们分析了该过程的各个方面。

操作系统的硬化

操作系统硬化(或简单地说硬化)是指用户(维护者、系统管理员等)采取的行动,目的是尽可能阻止恶意方盗取信息、损害操作或造成损害的入侵攻击。

安全是那些无底洞之一,无论花费的努力或应用的经验水平,都无法达到完整的证据解决方案,并且从来不安全地假设安全。

然而,幸运的是,当一个人谨慎地采取行动时,今天的未知是一种奇怪的现象,通过共同的知识,相对成熟的系统和易于使用的工具,如巴斯蒂尔,许多人可以轻松访问。

** 导致漏洞的某些常见系统方面**

如上所述,为了提高安全性,需要注意的事情数量是无限的. 下面,我们将尝试提到一些可能导致漏洞的 [系统] 方面,从而让攻击或造成损害的行为发生。

  • 默认操作系统应用程序及其工具必须不断更新。
  • 加密键必须更好地使用,而不是使用(缩短)密码。
  • Plain-text(未加密)通讯和传输将泄露关键信息----必须使用加密方法。
  • 保持所有不想要的(和未使用的)默认可执行程序/二进制,并且进入方法必须被删除或禁用。
  • 严格的密码和关键旋转程序,必须为其用户设置鼓励密码共享和更高水平的字典攻击。 K 加密记录系统必须经常使用,最好是使用自动解析和输入工具,以防止许多进入程序

与巴斯蒂尔的硬化和评估


谈到巴斯蒂尔是什么,并通过一些可能变成漏洞的系统方面,我们已经准备好谈论巴斯蒂尔是什么。

** 注意:** 考虑到巴斯蒂尔将对系统进行更改(以及重要的更改!),建议您先在新服务器安装时尝试。 另外,请确保在尝试新东西之前有备份(如往常一样)。 当使用巴斯蒂尔时,您非常建议阅读其对系统调节的解释,因为它们非常有价值。 在这里,我们正在与Ubuntu长期支持(LTS)版本(10.04 和 12.04)合作,因为它们的成熟度,稳定性和公司获得的长期支持。

准备系统


正如建议的那样,我们应该开始更新我们的系统的应用源列表( package managers - 如 aptitude - 寻找应用程序)并在必要时升级。

对于Ubuntu,运行以下操作:

1sudo aptitude update
2 sudo aptitude -y upgrade

安装巴斯蒂尔硬化和评估工具


根据您的 Ubuntu 版本,为了获取 Bastille,您可能需要启用宇宙存储库(参见下面的解释)。请跟随并尝试安装 Bastille ,如果软件包管理器(aptitude)抱怨它无法找到 Bastille,请继续到以下部分(故障排除)并再次尝试。

要下载和安装 Bastille,请通过 aptitude 执行安装命令:

1sudo aptitude install -y bastille

Ubuntu存储库

默认情况下,Ubuntu有不同的应用程序包范围,在Ubuntu世界,所有的软件都被分为四个不同的类别(库存 / 范围)。

这些是:

  • Main
  • Restricted
  • Universe
  • Multiverse

Main 是所有Ubuntu支持,鼓励和(很好)维护的 ** 免费应用程序的所在地。

故障解析


** 如果您无法下载巴斯蒂尔:**

如果能力抱怨无法找到巴斯蒂尔,请执行:

1sudo nano /etc/apt/sources.list

这将带来文本编辑器nano。在这里,你将看到一堆URL(以及可能的评论文本)的Ubuntu包库。

根据您的 Ubuntu 版本(清晰,精确等),您需要将以下行(URL)附加到该文件的开头(确保您用您的版本名称更换)。

如果您对 Ubuntu 版本名称不确定,请运行:**

$ cat /etc/lsb-release

开始于 DISTRIB_CODENAME 的行将告诉您系统的版本名称。

宇宙存储库的示例URL:

1# Example URLs:
2# deb http://archive.ubuntu.com/ubuntu [version name] universe
3# deb http://archive.ubuntu.com/ubuntu [version name]-updates universe
4
5# For Ubuntu 'precise' you would need to use: 
6deb http://archive.ubuntu.com/ubuntu precise universe
7deb http://archive.ubuntu.com/ubuntu precise-updates universe

关闭并保存文件,按CTRL+X并确认输入Y

将 URL 添加到源时,您需要通过执行以下操作来更新存储库列表:

1aptitude update

现在你应该能够通过适用性下载巴斯蒂尔,如上所述。

使用巴斯蒂尔为硬化


安装巴斯蒂尔后,我们准备好与之合作。

** 若要运行 Bastille,请执行以下命令:**

1sudo bastille

注: 巴斯蒂尔有两个工作模式:CLI(命令行接口)和GUI(图形用户界面)。如果您正在使用基于X的交互式(图形)接口的桌面系统,您可以使用它的GUI通过运行sudo bastille -x而不是(您可能需要安装Perl的Tk模块 -aptitude perl install-tk)。

在运行应用程序时,您将看到有关巴斯蒂尔的声明,其功能以及它会做什么或不会做什么的声明。仔细阅读声明,键入接受并按 Enter 以继续使用实际程序。

您将被要求回答他们,并为一些,输入文本(如警告消息)。

回答巴斯蒂尔关于硬化的问题


问答: 问答:

  • 您想在管理工具上设置更具限制性的权限吗?

一般来说,大多数供应商设置的默认文件权限是相当安全的,但为了使其更安全,您可以删除非根用户访问某些管理员功能。

如果您选择此选项,您将更改一些常见的系统管理实用程序的权限,以便它们不能被 root 以外的用户读取或执行。这些实用程序(包括 linuxconf, fsck, ifconfig, runlevel 和 portmap)是大多数用户不应该需要访问的实用程序。

推荐的答案是

在继续第2个问题之前,您将获得有关SUID的进一步(非常有用的)解释。

  • 您想禁用 mount/mount 的 SUID 状态吗?

Mount 和 umount 用于安装 (激活) 和卸载 (禁用) 驱动器,这些驱动器在启动时没有自动安装. 这可能包括闪存驱动器和 CD-ROM 驱动器。

推荐的答案是

  • 您想禁用 ping 的 SUID 状态吗?

Ping 用于测试网络连接性. 具体来说,它是用于测试网络的能力,从这个机器到另一个机器并返回一个包。 ping 程序是 SUID,因为只有根用户可以打开原始接口。

推荐的答案是

  • 您想禁用 traceroute 的 SUID 状态吗?

Traceroute 实用程序用于测试网络连接性. 它有助于调试网络问题,但通常不必要,特别是对于非特权用户。 如果非根用户需要调试网络连接,您可以将 SUID 位留在 traceroute 上。

推荐的答案是

  • ** 巴斯蒂尔应该禁用使用基于 IP 身份验证的清晰文本 r 协议吗?**

BSD r-tools依赖基于IP的认证,这意味着你可以允许任何拥有(例如)根访问 '192.168.1.1' 的人访问. 可在192.168.1.2上进入。 管理员和其他用户传统上都认为这种有用,因为这样可以让他们从一个主机连接到另一个主机,而不必再重打密码. .rhosts 文件包含被认为信任的账户和机器名称. 然而,基于IP的认证问题在于,入侵者可以将声称来自信任的机器上信任的用户的"spoofed"或"假包"进行手取. 由于r-tools完全依赖IP地址(和远程用户名)进行认证,一个被spoofed包会被接受为真实. 您的一些用户,甚至可能为这台机器的其他管理员,可能不知道BSD r-tool的安全问题. 如果是这样,他们可能会创建** .rhosts** 文件,这些文件可能会允许快克机进入机器. 此选项将禁用您机器上的 R- 工具, 并用作登录您的机器的工具 .

推荐的答案是

  • 你想强制执行密码老化吗?

您的操作系统的默认行为,我们在这里将更改,是禁用帐户,当密码在99999天内没有更改时。这个间隔太长了,不能用。我们可以将默认设置为60天。在60天过去之前,系统会要求用户更改密码。在60天结束时,如果密码没有更改,帐户将被暂时禁用。我们会确保这个预警期至少为5天。我们会在/etc/login.defs中进行这种更改。

推荐的答案是

  • 你想设置默认任务吗?

umask 设置了您创建的文件的默认权限。 Bastille 可以在默认登录配置文件中设置多个 umasks 之一。 这些涵盖了 csh 和大多数 bourne shell 变体,如 bash、sh 和 ksh。 如果您要安装其他 shells,您可能需要自行配置它们。 唯一不设定最低限度的默认 umask 的理由是,如果您确定已经设置了一个。

推荐的答案是 并选择077(没有报价)。

  • 我们应该禁止 root 登录 tty 的 1-6?

有些网站选择限制 root 登录,所以管理员必须使用普通用户帐户登录,然后使用su成为root。这可以阻止只能够偷走 root 密码的攻击者直接登录。

推荐的答案是

  • 您想用密码保护 GRUB 提示?

如果攻击者有物理访问这个机器,特别是键盘,他可以通过Grand Unified Bootloader(GRUB)命令行获得超级用户访问。我们将研究其他方法来防止这种情况,但一个简单的方法是通过密码保护GRUB提示。如果GRUB是密码保护的,任何用户都可以正常地重新启动机器,但只有具有密码的用户才能向GRUB提示传递论点。请注意,此选项可以干扰第二个操作系统的双重启动,因为双重启动通常需要一个类型的O/S名称来启动两个操作系统之一。

推荐的答案是 ,因为您在虚拟服务器上。

  • 您想通过密码保护单用户模式吗?

任何能与您的系统进行物理互动的人都可以告诉启动器将您的机器带到单用户模式中,在那里他/她被赋予了根特权,而其他人被锁定在系统中。这在大多数Unix系统上不需要密码。方法与使用的启动器不同,因此在每个操作系统的修订和架构上。您可以通过键入LILO:prompt的linux单一来测试使用LILO的Linux系统上的这种攻击。

推荐的答案是

  • 您想在 TCP Wrappers 和 xinetd 上设置默认拒绝?

** 不建议大多数用户:** 许多网络服务可以被配置来限制某些网络地址的访问(而在Linux-Mandrake 8.0和Red Hat 7.x的xinetd服务中,其他标准也有). 对于在更古老的被输入式超级服务器下运行的服务(在Linux-Mandrake和Red Hat的更古老版本中被发现,以及一些其他发售的当前版本中被找到),一些独立的服务如OpenSSH,以及-除非其他配置——在Red Hat's xinetd 超服务器下运行的服务,您可以根据‘/etc/hosts.allow'中的网络地址来配置限制. 使用inetd或xinetd的服务一般包括telnet,ftp,pop,imap,指向等多种服务. 如果您愿意, Bastille 可以配置一个默认政策, 用于所有输入, xinetd, 以及 TCP Wrappers- 意识服务, 以拒绝所有连接尝试 。 虽然你可能已经选择安装了巴士底尔的防火墙,但为这些服务设定默认拒绝政策会给予更深入的防御. 这也将配置xinetd,这样目前安装的xinetd服务将使用xinetd更灵活的访问控制并_not_'/etc/hosts.allow'. 所有其他以包装为主的程序,如sshd,都会服从默认的拒绝. 作为特例,巴士底尔目前允许在默认允许的基础上"sshd". 如果您也希望被屏蔽, 请在主机中手动更改其行 。 允许.

推荐的答案是

  • ** 巴斯蒂尔应该确保telnet服务不会在这个系统上运行吗?**

电网不是安全的。

Telnet 在大多数操作系统上提供后向兼容性,不应该在不受信任的网络中使用。

Telnet 是一个清晰的文本协议,这意味着任何传输的数据,包括密码,都可以由网络上的任何人监控(即使您使用的是交换路由器,因为交换机是为了性能而不是安全而设计的,并且可以进行广播)。

例如,任何能够倾听的人通常可以使用Hunt或Ettercap等工具来接管您的telnet会话。

安全意识的网站的标准做法是尽可能快地从 telnet 迁移到 Secure Shell(命令: ssh)。我们建议您尽快进行此举。安全壳的实现可从 openssh.org 和 ssh.com 获得。

注意:禁用telnetd服务不会影响您的telnet客户端。

推荐的答案是

  • ** 巴斯蒂尔应该确保 inetd 的 FTP 服务在这个系统上不运行吗?**

Ftp是另一个有问题的协议. 首先,它是一种清晰的文本协议,如telnet - 这允许攻击者倾听会话并窃取密码. 这还允许攻击者接管FTP会话,使用Hunt或Ettercap等清晰的文本接收工具。 第二,它可以使有效的防火墙变得困难,因为FTP需要许多端口保持开放的方式。 第三,每个主要的FTP示威者都有长期的安全漏洞历史 - 它们代表了远程根攻击的主要成功攻击引擎之一。

FTP 可以被 Secure Shell 的 scp 和 sftp 程序取代。

注意:对这个问题回答也会阻止该机器作为匿名 ftp 服务器的使用。

推荐的答案是

  • 您是否希望在登录时显示授权使用消息?

在这一点上,您可以为您的网站创建仅授权使用消息,这些信息可能对您可能遇到的系统破解程序非常有帮助。Bastille可以创建默认消息,您可以稍后编辑。

推荐的答案是 默认,如果您有其他用户,则是。

设置并决定反欢迎地毯消息,并按 _TAB* 继续。

  • 谁负责授权使用此机器?

巴斯蒂尔将通过告诉用户谁对该机器负责,开始更具体地使用该旗帜。这将明确说明用户需要从谁那里获得使用该机器的授权。请输入拥有或负责该机器的公司的名称、个人或其他组织。

决定系统所有者的名称,然后按 _TAB* 然后按 Enter 继续。

  • 您想限制系统资源的使用吗?

服务拒绝攻击往往很难防御,因为它们不需要任何类型的访问目标机器. 由于包括网络、名称和 FTP 服务器在内的几个主要恶魔可能作为特定用户运行,您可以通过修改 `/etc/security/limits.conf 来限制许多服务拒绝攻击的有效性。

如果您选择此选项,则将设置以下初始资源使用限制:

*允许的核心文件的数量将被设置为零。核心文件可以用于诊断系统问题,但它们是非常大的文件,并且可以被攻击者利用来填补您的文件系统。它们也可以用于调节漏洞剥削工具。最后,攻击者可能会使用一个崩溃的程序的核心文件来获取被程序抛弃的特权数据。 *个别用户每个人只限150个进程。

所有这些值可以稍后编辑。

推荐的答案是

  • 我们是否应该限制控制台访问小组用户帐户?

在某些发行版中,在主机上登录的用户有某些特殊访问权限(例如安装 CD-ROM 驱动器的能力)。

推荐的答案是 :根

  • 您想添加额外的日志?

我们希望为您的系统配置额外的日志。如果您的网站已经有一个,我们将为您的系统提供登录到远程主机的选项。我们将向默认设置添加两个额外的日志文件,并将一些状态消息登录到第7和第8个虚拟终端(当您点击ALT-F7ALT-F8)时,您将看到的状态消息。

推荐的答案是

设置日志,然后按 _TAB* 然后按 Enter 继续。

  • 你有远程日志主机吗?

如果您已经拥有远程日志主机,我们可以将此机器设置为登录。

推荐的答案是 ,除非您有

  • 您想设置流程会计吗?

Linux有能力记录哪些命令在何时和由谁运行。这在试图重建潜在的黑客实际运行时非常有用。缺点是,日志很快变得大(一个日志旋转模块包含以抵消这一点),命令的参数不被记录,和所有日志文件一样,如果攻击者有根,会计日志是可移除的。

推荐的答案是 ,取决于您的偏好。

  • 您想禁用 acpid 和/或 apmd?

apmdacpid用于监控电池功率,几乎完全用于笔记本电脑或笔记本电脑。

推荐的答案是

  • 你想禁用NFS和Samba吗?

我们希望禁用网络文件系统NFS(网络文件系统,常见于大多数Unix变体)和SMB(Samba,它配备了大多数Linux发行版)。我们强烈建议您禁用这两种系统。NFS具有重大安全漏洞的历史;Samba略好一些,但它仍然是一个共享的文件系统,并且仍然引发潜在严重的安全担忧。这两个服务都使用清晰文本,这意味着任何传输的数据都可以由网络上的任何人监控(即使你使用一个交换路由器,因为交换机是为性能而设计的,而不是安全)。

如果您可以将防火墙设置为阻止它们中的任何一个进入或离开网络的包,这些服务会更安全,但最好是禁用它们,直到您可以调查是否需要它们,以及如何最好地保护它们。

推荐的答案是

  • 您想阻止发送邮件在daemon模式中运行吗?

您不需要在 daemon 模式下运行 sendmail 来发送和接收电子邮件,除非您有持续的网络连接,否则您可能无法在 daemon 模式下运行 sendmail。

如果你禁用了daemon模式,Bastille会问你是否想每隔几分钟运行sendmail来处理发送邮件的队列.大多数发送邮件的程序仍然会立即这样做,并处理队列将处理暂时错误。

如果您通过您的 ISP 提供的 POP/IMAP 邮箱接收所有电子邮件,您可能不需要 DAEMON 模式发送邮件,除非您正在运行专门的 fetchmail 类型 POP/IMAP 基于的检索程序。例如,如果您通过 Netscape 的通用 POP/IMAP 阅读功能阅读邮件,您可以关闭 DAEMON 模式。

推荐的答案是 ,但取决于您的服务器的角色。

  • 您想禁用Apache网页服务器吗?

你会立即使用Apache网页服务器吗? 再次,最小化是良好的网站安全的重要组成部分. 如果你不需要运行网页服务器,至少不是现在,你应该禁用它。

您可以稍后通过键入: /sbin/chkconfig httpd on 重新启动 Web 服务器。

推荐的答案是 ,但** 很大程度上取决于您的系统的角色。

  • 您想禁用打印吗?

如果这台机器不需要打印,您应该停止打印计时器,并限制所有打印实用程序的权限。

在Linux上,您可以通过键入以下方式来扭转这一点:

1$ /bin/chmod 06555 /usr/bin/lpr /usr/bin/lprm
2
3$ /sbin/chkconfig lpd on

如果您禁用此功能,您可能需要写下上述命令,以便在稍后重新启用打印。

推荐的答案是 服务器。

  • 您想禁用打印吗?

如果这台机器不需要打印,您应该停止打印计时器,并限制所有打印实用程序的权限。

在Linux上,您可以通过键入以下方式来扭转这一点:

1$ /bin/chmod 0755 /usr/bin/lpr /usr/bin/lprm /usr/bin/lpstat
2$ /bin/chmod 04755 /usr/bin/lppasswd
3$ /sbin/chkconfig cups on

如果您禁用此功能,您可能需要写下上述命令,以便在稍后重新启用打印。

推荐的答案是 服务器。

  • 您想安装 TMPDIR/TMP 脚本吗?

许多程序以多用户系统上危险的方式使用 /tmp 目录. 这些程序中的许多程序将使用替代目录,如果其中一个被指定为 TMPDIR 或 TMP 环境变量。 我们可以安装在用户登录时运行的脚本,安全地创建合适的临时目录并设置 `TMPDIR 和 TMP 环境变量。

推荐的答案是 如果多用户系统是,如果不是。

  • 您想运行包过滤脚本吗?

使用包过滤脚本,您将能够通过Linux内核进行包过滤/修改,您可以使用它来阻止某些类型的连接到或从您的机器,将您的机器变成一个小防火墙,并进行网络地址翻译(也称为IP隐藏),允许多个机器共享单一的IP地址。

如果您安装了包过滤脚本,它将为您创建防火墙指示,您将被要求做出各种选择(有建议的默认),但您可能需要为您的特定网站编辑它,并需要单独激活它。

此脚本支持核 2.2 (ipchains) 和 2.4 (iptables 如果可用,否则 ipchains)。

推荐的答案是 ,但取决于你的目标,它可以是

批准要进行的变更


在回答所有问题后,你将被要求确保你已经完成了它. 给你的确认后,巴斯蒂尔将做自己的工作,并向你展示(字面上)的信贷。

您可以按 Enter 返回 Linux 壳。

扭转巴斯蒂尔的变化


如果您决定逆转Bastille对您的系统所做的更改,您可以通过执行以下命令:

1sudo RevertBastille

这将取消一切,如果你需要巴斯蒂尔再次,你将被要求通过每个步骤一个一个。

** 注意:** 通常操作系统已经有许多安全选项设置正确,为您的利益,默认情况下. 逆转巴斯蒂尔的更改后,如果您看到一些东西没有改变,不要担心:这是因为 ** system defaults** 。

使用巴斯蒂尔进行评估


正如我们在文章开始时所提到的,Bastille 也是一个很好的系统安全评估工具,因为它非常简单地为您提供了关于可能的漏洞的某些方面的优秀报告。

生成评估


为了获得评估报告,运行以下操作:

1sudo bastille --assessnobrowser

完成测试后,巴斯蒂尔会告诉你类似的东西:

 1Bastille Hardening Assessment Completed
 2
 3You can find a report in HTML format at:
 4file:///var/log/Bastille/Assessment/assessment-report.html
 5
 6You can find a report in text format at:
 7/var/log/Bastille/Assessment/assessment-report.txt
 8
 9You can find a more machine-parseable report at:
10/var/log/Bastille/Assessment/assessment-log.txt

查看评估结果


为了查看评估报告,我们将使用文本编辑器(nano)以文本格式打开报告。

1$ cat /var/log/Bastille/Assessment/assessment-report.txt

在这里,您将能够获得关于安全的各种方面在您的系统上设置的概述。

此外,通过查看文档的末尾,您可以了解您的安全级别得到了巴斯蒂尔。

Submitted by: O.S. Tezer
Tagged with
comments powered by Disqus