介绍
Bastille对于所有级别的系统管理员和Linux用户来说是非常有用的工具,旨在提高或评估其安全级别。乍一看,Bastille本身[及其兴趣点]可能似乎在桌面计算领域。此外,最近失去了它的人气,不是的去到应用程序之一,并成为其中包括在线社区
一个不很酷的工具。 然而,Bastille是一个真正的Gem,应该称赞慷慨;它致力于不仅仅是OS(操作系统)的真正的艺术美妙的
系统管理工具加固,而且安全评估和教育。 在这篇DigitalOcean文章中,使用Bastille,我们将提高我们系统的安全性,并通过分析Bastille本质上要教授的内容,通过分析各种方面的指导笔记,大大增强我们对Linux系统强化的知识和理解力。过程。
操作系统的加固 操作系统强化(或简称强化)是用户(维护者,系统管理员等)采取的行动的总称,目的是防止恶意方窃取信息,损害操作或造成一般损害的攻击可能。 安全是无底洞之一,无论花费的努力或应用的经验水平,都不能实现完全证明的解决方案,并且永远不会安全承担安全。下一个未知的人可能以攻击的形式出现并接管。 不过,幸运的是,当一个人谨慎行事“未知”今天是一个奇怪的发生,与常识的帮助下割让,相对成熟的(D)系统和简单易用的工具,如
Bastille ,可以通过许多轻松访问。
一些导致漏洞的常见系统方面 如上所述,为了增强安全性而需要注意的事物的数量是无穷的。下面,我们将尝试提及可能导致漏洞的一些[系统]方面,让位给攻击或导致危害的行为。
- 默认操作系统应用程序及其工具必须保持最新。
- 必须避免使用访问各种系统资源的不必要应用程序重载系统,以防止漏洞利用。
- 所有不需要的(和未使用的)默认可执行文件/二进制文件和访问方法必须删除或禁用。
- 必须为系统及其用户设置强大的密码和密钥轮换,以鼓励密码共享和更高级别的字典攻击。
- 加密密钥更好地用来代替(较短)密码。
- 纯文本(未加密)通信和传输将泄漏关键信息 - 必须使用加密方法。
- 保持所有端口关闭,除非需要并且不同于(显而易见的)默认值 - 它们可以被挑选为(通常是自动化的)攻击的目标。
- 套接字创建必须严格监视。
- 应定期执行日志分析,最好使用日志自动分析和报告工具来识别可能的入侵企图和安全缺陷。
- 必须禁用帐户访问,并锁定超过重复失败登录,以防止暴力攻击。
- 用户级别访问必须限制在严格的制度,以防止劫持单个帐户的根级别访问。
- 不允许以root用户身份登录。
- 入侵防御/战斗应用程序更好地被使用,因为他们可以遵循某些特定模式来自动打击一些攻击。
- 将服务器暴露给外界不应该做,除非必要 - 更好地选择在可能的内部网络连接。
- 必须存在固态备份策略以进行恢复并确保数据完整性。
- 应该考虑磁盘分区,以防止某些攻击,使系统及其应用程序的磁盘不工作。
- 除非有必要,否则不应允许响应外部世界和查找尝试,应将应用程序版本隐藏以不鼓励某些应用程序级故障漏洞。
- 必须确保数据中心审计和物理服务器安全。
加固和评估与Bastille
已经谈到了Bastille是通过一些系统方面,它可以变成安全漏洞去,我们准备谈什么
呢Bastille。
注:(!和重要的太)鉴于Bastille将使系统水平的变化,建议您先尝试在一个新的服务器安装。此外,请确保在尝试新的东西之前备份(一如既往)。当使用Bastille时,我们非常鼓励您阅读它对它将执行的系统调整的解释,因为它们非常有价值。在这里,我们正在使用Ubuntu长期支持(LTS)版本--10.04和12.04--由于它们的成熟度,稳定性和从公司得到的长期支持。如果您使用非LTS或最新版本之一,某些事情(例如sources.list文件)可能会出现一点点不同。
准备系统
根据建议,我们应该更新我们的系统的应用程序源列表开始(其中
包管理器 -如性向-寻找应用程序),如果需要升级。
对于Ubuntu,运行以下命令:
sudo aptitude update
sudo aptitude -y upgrade
安装Bastille加固和评估工具
根据您的Ubuntu版本,为了得到Bastille,您可能需要启用Universe存储库(请参阅下面的解释)。请跟着,并尝试安装
Bastille ,如果包管理器(资质)抱怨说,它无法找到Bastille,继续下面的部分(故障排除),再次尝试。 要下载并安装Bastille,请通过aptitude执行安装命令:
sudo aptitude install -y bastille
Ubuntu存储库 Ubuntu默认有各种应用程序包范围,在Ubuntu世界中,所有软件分为四个不同的类别(存储库/范围)。 这些是:
主要是所有Ubuntu的支持,鼓励和(井)保持
免费的应用程序驻留。
受限包含了专有的驱动程序和所需要拥有的Ubuntu的“日常硬件”操作其他一些重要的系统工具。
宇宙是,几乎所有自由(开源)的Linux应用程序可以找到并安装,它是从这里,我们去取水的
Bastille 。 最后,
多元宇宙包含了剩下的和其他一切,包括特别是那些不是免费的应用程序。
故障排除
如果您无法下载Bastille: 如果
aptitude
抱怨不能够找到Bastille,请执行以下命令:
sudo nano /etc/apt/sources.list
这将弹出的文本编辑器
nano
。在这里,你将看到大量的URL(和可能注释掉的文本)的Ubuntu包储存库。 根据您的Ubuntu版本(清晰,精确等),您需要将以下行(URL)附加到此文件的开头(确保用您的版本名称替换版本名称)。
如果您不确定您的Ubuntu版本名称,请运行:
$ cat /etc/lsb-release
与开头的行
DISTRIB_CODENAME
会告诉你你的系统版本的名称。
例如:
DISTRIB_CODENAME=lucid
Universe存储库的示例URL:
# Example URLs:
# deb http://archive.ubuntu.com/ubuntu [version name] universe
# deb http://archive.ubuntu.com/ubuntu [version name]-updates universe
# For Ubuntu 'precise' you would need to use:
deb http://archive.ubuntu.com/ubuntu precise universe
deb http://archive.ubuntu.com/ubuntu precise-updates universe
按“CTRL + X”关闭并保存文件,输入“Y”确认。 在将URL添加到源后,您将需要通过执行以下操作来更新存储库列表:
aptitude update
现在,你应该能够下载Bastille作为通过上述
aptitude
。
使用Bastille进行加固
在安装Bastille之后,我们准备使用它。
为了运行Bastille,请运行以下命令:
sudo bastille
注:Bastille有两种工作模式:CLI(命令行界面)和GUI(图形用户界面)。 如果你用基于X的交互(图形)接口的台式机系统的工作,你可以通过运行使用它的GUI
sudo bastille -x
代替(您可能需要安装Perl的
Tk
模块-
aptitude install perl-tk
) 。 运行应用程序后,您将看到有关Bastille的免责声明,其功能以及它将执行或不执行的操作。仔细阅读免责声明,然后键入“接受”,然后按以继续与实际
输入程序。 阅读第二
导入屏幕,使用箭头键和
TAB的解释,并再次,按
Enter键继续。
从现在开始,您将逐一提出问题。您将被要求回答他们,并为一些,输入文本(如警告消息)。请找到您应该在下面选择的解释和建议的答案的问题。
回答Bastille的加固问题
问题:
一般来说,大多数供应商设置的默认文件权限是相当安全的。为了使它们更安全,您可以删除非root用户对某些管理员功能的访问权限。 如果选择此选项,您将更改某些常用系统管理实用程序的权限,以使其不能由root以外的用户读取或执行。这些实用程序(包括linuxconf,fsck,ifconfig,runlevel和portmap)是大多数用户不应该访问的。此选项将增加系统安全性,但有可能会给您的用户带来不便。
推荐答案是 “是” 在继续问题2之前,您将获得有关“SUID”的进一步(非常有帮助)的解释。按
Enter键继续。
- 您要禁用mount / umount的SUID状态吗?
安装和卸载用于安装(激活)和卸载(停用)在引导时未自动安装的驱动器。这可以包括软盘和CD-ROM驱动器。禁用SUID仍允许具有root密码的任何人安装和卸载驱动器。
推荐答案是 “是”
Ping用于测试网络连接。具体来说,它用于测试网络从这台机器到另一台机器返回数据包的能力。 ping程序是SUID,因为只有root用户可以打开原始套接字。然而,因为它通常只由负责网络的人使用主机,谁通常有根访问权限,我们建议禁用它的SUID状态。
推荐答案是 “是”
traceroute实用程序用于测试网络连接。它对于调试网络问题很有用,但通常没有必要,特别是对于非特权用户。如果非root用户将需要调试网络连接,则可以在traceroute上保留SUID位。否则,您应该禁用它。
推荐答案是 “是”
- Bastille是否应禁用使用基于IP的身份验证的明文r协议?
BSD的R-工具依赖于基于IP的认证,这意味着你可以允许与(例如)的root访问权限的人
192.168.1.1
拥有root权限
192.168.1.2
。 管理员和其他用户传统上认为这是有用的,因为它允许他们从一个主机连接到另一个,而不必重新输入密码。
.rhosts文件包含了被认为是受信任的帐户和机器的名称。 然而,基于IP的认证的问题是入侵者可以制造声称来自可信机器上的可信用户的“欺骗”或伪造分组。 由于r工具完全依赖IP地址(和远程用户名)进行身份验证,所以欺骗性数据包将被接受为真实的。 您的某些用户,甚至该计算机的其他管理员可能不知道BSD r工具的安全问题。 如果是这样的情况下,它们可能会造成
的.rhosts文件,将可能允许饼干访问机器。此选项将禁用这些r工具从您的机器和作为登录到您的机器的方法。
推荐答案是 “是”
您的操作系统的默认行为(我们将在此处更改)是在99999天的密码未更改时禁用帐户。此间隔太长,无法使用。我们可以将默认值设置为60天。在60天过去之前的某一时刻,系统将要求用户改变他或她的密码。在60天结束时,如果密码未更改,该帐户将暂时停用。我们将确保此警告时间至少为5天。我们将在这变化
/etc/login.defs
推荐答案是 “是”
umask设置您创建的文件的默认权限。 Bastille可以在默认登录配置文件中设置多个umask中的一个。这些包括标准shell像csh和大多数bourne shell变体,如bash,sh和ksh。如果要安装其他shell,您可能需要自己配置它们。唯一不设置最小默认umask的原因是,如果你确定你已经设置了一个。
推荐答案是 “是”,并选择“077”(不带引号)。 按
Tab键和
Enter键继续。
你可以限制哪个tty的root可以登录。一些站点选择限制root登录,以便管理员必须使用普通用户帐户登录,然后使用“su”成为“root”。这可以阻止只能窃取root密码的攻击者直接登录。他必须窃取第二个帐户的密码,以通过ttys使用root密码。
推荐答案是 “否”
如果攻击者可以物理访问此计算机,特别是键盘,他/他可以通过Grand Unified Bootloader(GRUB)命令行获得超级用户访问权限。我们将考虑其他方法来防止这种情况,但一个简单的方法是密码保护GRUB提示。如果GRUB受密码保护,任何用户都可以正常重新启动计算机,但只有具有密码的用户才能将参数传递给GRUB提示。请注意,此选项可能会干扰与第二个操作系统的双引导,因为双引导通常需要键入一个O / S名称来引导两个操作系统之一。如果此机器位于通用实验室和双引导,您可能不应该选择此选项。否则,这是强烈建议用于通常使用的工作站和服务器,而不是锁在自己的房间。
推荐答案是 “否”给你是一个虚拟服务器上。
任何可以与您的系统进行物理交互的人都可以告诉Bootloader在“单用户模式”下启动计算机,其中s /他被赋予root权限,其他人都被锁定在系统外。这在大多数Unix系统上不需要密码。该方法与所使用的引导加载程序不同,因此与每个操作系统修订版本和体系结构不同。您可以在使用LILO的Linux系统上通过在LILO:提示符处键入“linux single”来测试此攻击。 Bastille可以为您密码保护bootprompt。您不必记住另一个密码 - 单用户模式或“root”模式,将需要root密码。我们强烈建议您密码保护单用户模式。
推荐答案是 “是”
- 您要对TCP Wrappers和xinetd设置默认拒绝吗?
不建议大多数用户:许多网络服务可以被配置为限制访问某些网络地址(而在Linux中,Mandrake的8.0和Red Hat 7.x的xinetd的服务,其他标准的情况下也一样)。 对于在较旧版本的inetd超级服务器(在旧版本的Linux - Mandrake和Red Hat以及其他一些发行版的最新版本中)上运行的服务,一些独立服务(如OpenSSH)和 - Hat的xinetd的超级服务器,可以根据网络地址配置的限制
/etc/hosts.allow
。 使用inetd或xinetd的服务通常包括telnet,ftp,pop,imap,finger和许多其他服务。 如果愿意,Bastille可以为所有inetd,xinetd和TCP Wrappers感知服务配置默认策略,以拒绝所有连接尝试。 虽然您可能已经选择安装Bastille的防火墙,但为这些服务设置默认拒绝策略可以更深入地进行防御。 这也将xinetd的配置,以使当前安装的xinetd服务将使用xinetd的更灵活的访问控制
,而
不是
/etc/hosts.allow
。所有其他基于包装器的程序,如sshd,将遵守默认拒绝。作为一个特殊的例外,Bastille目前允许在默认允许的基础上使用“sshd”。如果您希望此阻止,请在hosts.allow中手动更改其行。
推荐答案是 “否”
- 应该Bastille确保telnet服务不在这个系统上运行吗?
Telnet不安全。 为了向后兼容性,大多数操作系统都提供Telnet,并且不应在不受信任的网络中使用。 Telnet是一种明文协议,这意味着任何传输的数据(包括密码)都可以由您网络上的任何其他人监视(即使您使用交换路由器,因为交换机是为性能而设计的,而不是安全的,可以进行广播)。如果telnet会话跨越多个LAN,其他网络也可以监视此信息。 还有其他更活跃的攻击。例如,任何可以窃听的人都可以使用Hunt或Ettercap等工具接管您的telnet会话。 安全意识的站点之间的标准做法是从远程登录尽可能快的实际迁移到安全Shell(命令:
ssh
)。我们建议您尽快采取行动。 Secure Shell实现可以从openssh.org和ssh.com获得。大多数操作系统供应商还分发一个版本的安全shell,所以请先与您的供应商联系,看看是否有一个已经使用您的操作系统测试过的版本。 注意:停用“telnetd”服务不会影响您的telnet客户端。
推荐答案是 “是”
- 应该Bastille确保inetd的FTP服务不在这个系统上运行?
Ftp是另一个有问题的协议。首先,它是一个明文协议,如telnet - 这允许攻击者窃听会话和窃取密码。这也允许攻击者使用明文接管工具(如Hunt或Ettercap)接管FTP会话。第二,它可以使得有效的防火墙由于FTP需要许多端口保持开放的方式而困难。第三,每个主要的FTP守护进程都有很长的安全漏洞历史 - 它们是远程根攻击的主要成功攻击源之一。 FTP可以由Secure Shell的scp和sftp程序替代。 注意:对此问题回答“是”也会阻止将此计算机用作匿名FTP服务器。
推荐答案是 “是”
此时,您可以为您的网站创建“仅授权使用”消息。这些可能非常有助于起诉系统破解,你可能抓到试图闯入你的系统。 Bastille可以制作默认邮件,您可以稍后编辑。这是一种类似于“反欢迎垫”为您的计算机。
推荐答案是 “否”,在默认情况下,“是”,如果您有其他用户。
设置并决定反欢迎垫信息,然后按 TAB
* **继续*。
Bastille将通过告诉负责此机器的用户,开始使横幅更具体。这将明确指出用户需要获得使用此机器的授权。请输入拥有或负责此机器的公司,个人或其他组织的名称。
决定系统所有者的名称,然后按 TAB
* **,然后
按Enter继续。*
拒绝服务攻击通常很难防御,因为它们不需要任何类型的访问目标机器。由于几个主要的守护程序,包括网络,名称和FTP服务器,可以为特定的用户运行,你可以通过修改限制服务攻击拒绝很多的有效性
/etc/security/limits.conf
。如果您以这种方式限制可用资源,您可以有效地削弱大多数拒绝服务攻击。 如果选择此选项,您将设置以下资源使用的初始限制:
- 允许的核心文件数将设置为零。核心文件可用于诊断系统问题,但它们是非常大的文件,可以被攻击者利用来填充您的文件系统。它们还可以用于调整漏洞利用工具。最后,攻击者可能使用来自崩溃程序的核心文件来获取程序转储的特权数据。
- 个人用户每个限制为150个进程。这应该是足够正常的系统使用,并不足以使您的机器。 (仅限Linux)
所有这些值都可以稍后编辑。
推荐答案是 “否”
在某些发行版中,在控制台登录的用户具有一些特殊的访问权限(如装载CD-ROM驱动器的能力)。您可以完全禁用此特殊访问,但更灵活的选项是将控制台访问限制为一小组受信任的用户帐户
推荐答案是 “是”:根
我们想为您的系统配置其他日志记录。如果您的站点已有一个,我们将提供登录到远程主机的选项。我们将两个附加的日志文件添加到默认安装,也将记录一些状态消息的第7和第8的虚拟终端(你会看到,当你打的那些
ALT-F7
和
ALT-F8
)。此额外的日志记录将不会更改现有的日志文件,所以这绝不是一个“危险”的举动。
推荐答案是 “是”
设置记录,按 TAB
* **然后按
Enter继续。*
如果您已经有远程日志记录主机,我们可以设置此机器进行日志记录。
推荐答案是 “否”,除非你有,否则,“是”。
Linux具有记录哪些命令在何时以及由谁运行的能力。这在试图重建潜在的破解者实际运行是非常有用的。缺点是日志很快大(包括日志旋转模块来抵消这一点),命令的参数不被记录,并且像所有日志文件一样,如果攻击者具有根,则记帐日志是可移除的。由于这是磁盘和CPU密集型,请选择否,除非你仔细考虑这个选项。
推荐答案是 “是”或“否”根据您的喜好。
apmd
和
acpid
用于监控电池功率和由笔记本/膝上型计算机几乎独占使用。
推荐答案是 “是”
我们想禁用网络文件系统NFS(网络文件系统,大多数Unix变体)和SMB(Samba,大多数Linux发行版)。我们强烈建议您禁用这两个选项。 NFS具有主要的安全漏洞的历史; Samba稍微好一点,但它仍然是一个共享文件系统,仍然引发了潜在的严重的安全问题。这两种服务都使用明文,这意味着任何传输的数据都可以由网络上的任何人监视(即使您使用交换路由器,因为交换机是为性能设计的,而不是安全性)。传输的数据包括文件句柄,然后可以用于修改文件。 如果您可以将防火墙设置为阻止其中的任何一个进入或离开您的网络的数据包,则这些服务更安全,但最好是停用它们,直到您可以调查是否需要它们以及如何最佳地保护它们。
推荐答案是 “是”
您不需要让Sendmail以守护程序模式运行以发送和接收电子邮件,除非您具有恒定的网络连接,否则您可能无法以守护程序模式运行sendmail。守护进程模式意味着sendmail不断监听网络连接,等待接收邮件。 如果禁用守护进程模式,Bastille会询问您是否希望每隔几分钟运行一次sendmail来处理外发邮件的队列。大多数发送邮件的程序都会立即这样做,处理队列将处理瞬态错误。 如果您通过ISP提供的POP / IMAP邮箱收到所有电子邮件,则您可能不需要daemon -mode sendmail,除非您运行的是基于fetchmail风格的基于POP / IMAP的检索程序。例如,如果您通过Netscape的常用POP / IMAP读取功能读取邮件,您可以关闭守护进程模式。在守护进程模式下运行sendmail的唯一原因是如果您正在运行邮件服务器。
推荐答案是 “是”,但取决于你的服务器的角色。
您将立即使用Apache Web服务器吗?同样,极简主义是良好网站安全的关键部分。如果您不需要运行Web服务器,至少现在不需要,您应该停用它。 :您可以通过键入后重新启动Web服务器
/sbin/chkconfig httpd on
推荐答案是 “是的”,但
很大程度上取决于系统的作用。
如果本机不需要打印,则应停止打印调度程序并限制所有打印实用程序的权限。 在Linux上,您可以通过键入以下内容来还原此内容:
$ /bin/chmod 06555 /usr/bin/lpr /usr/bin/lprm
$ /sbin/chkconfig lpd on
仅在不久的将来不使用此机器进行打印时,才建议这样做。如果禁用此功能,您可能需要记下上面的命令,以防您以后决定重新启用打印。
推荐答案是 “是”的服务器。
如果本机不需要打印,则应停止打印调度程序并限制所有打印实用程序的权限。 在Linux上,您可以通过键入以下内容来还原此内容:
$ /bin/chmod 0755 /usr/bin/lpr /usr/bin/lprm /usr/bin/lpstat
$ /bin/chmod 04755 /usr/bin/lppasswd
$ /sbin/chkconfig cups on
仅在不久的将来不使用此机器进行打印时,才建议这样做。如果禁用此功能,您可能需要记下上面的命令,以防您以后决定重新启用打印。
推荐答案是 “是”的服务器。
许多程序使用
/tmp
目录是在多用户系统危险的方式。 如果使用TMPDIR或TMP环境变量指定了其中许多程序,则许多程序将使用备用目录。 我们可以安装在用户登录时安全地创建合适的临时目录,并设置将要运行的脚本
TMPDIR
和TMP环境变量。 这取决于你的系统配套上
/etc/profile.d
的脚本。
推荐答案是 “是”,如果多用户系统“否”,如果事实并非如此。
使用包过滤脚本,您将能够通过Linux内核执行包过滤/修改。您可以使用此功能来阻止某些类型的连接到您的计算机,将您的计算机转换为小型防火墙,以及执行网络地址转换(也称为“IP伪装”),这使得多台计算机共享一个IP地址。 如果您安装包过滤脚本,它将为您创建防火墙说明。系统将提示您进行各种选择(使用建议的默认值),但您可能需要为您的特定网站编辑它,并需要单独激活它。 此脚本支持内核2.2(ipchains)和2.4(iptables,如果可用,否则ipchains)。
推荐答案是 “否”,但根据你的目标,也可以是“是”。
批准要进行的更改
回答所有问题后,系统会提示您确保完成这些操作。在给你的确认Bastille将做它的工作,并显示(字面上)信用。 您可以按
Enter键返回到Linux的外壳。
恢复Bastille的更改
如果您决定还原Bastille对系统所做的更改,可以通过执行以下命令来完成:
sudo RevertBastille
这将要撤消一切,如果你需要Bastille,你需要逐一经历每一步。
注意:通常操作系统已经配备了正确设置许多安全选项,默认情况下为你的利益。 这是因为
系统默认 :有收归Bastille的更改后,不要被你看到,有些事情并没有改变惊慌。
使用Bastille进行评估
正如我们在文章开头所提到的,Bastille也是一个伟大的系统安全评估工具,因为它为您提供了非常简单,关于可能的漏洞的某些方面的优秀报告。
生成评估
要获取评估报告,请运行以下命令:
sudo bastille --assessnobrowser
完成测试后,Bastille会告诉你类似的东西:
Bastille Hardening Assessment Completed
You can find a report in HTML format at:
file:///var/log/Bastille/Assessment/assessment-report.html
You can find a report in text format at:
/var/log/Bastille/Assessment/assessment-report.txt
You can find a more machine-parseable report at:
/var/log/Bastille/Assessment/assessment-log.txt
查看评估结果
为了查看评估报告中,我们将文本格式使用文本编辑器(打开报告
nano
)。
$ cat /var/log/Bastille/Assessment/assessment-report.txt
在这里,您将能够获得有关您的系统上有关安全的各个方面的设置的摘要。 此外,通过查看文档的结尾,您可以了解Bastille得分的安全级别。