julianchen 发表于 2018-6-12 14:32:57

如何在Ubuntu 16.04上用Lynis执行安全审计 (1)


介绍
Lynis是一个基于主机的、开源的安全审计应用程序,它可以评估安全性配置文件、Linux和其他类UNIX操作系统的安全态势。在本教程中,你将学会安装Lynis,并用它在一台Ubuntu 16.04服务器上执行安全审计。然后你将会探究一个审计样本的结果,并通过配置Lynis来忽略那些与你的需求所不相关的各种测试。
Lynis不会自动执行任何系统的加固,但它能提供一些建议,以向你展示如何去自行加固系统。因此, 如果你有Linux系统安全方面的基本知识的话,它将对你很有帮助。你还应该对你所计划执行审计的机器上的那些正在运行服务有所熟悉,例如各种web服务器、数据库和其他Lynis可能会默认扫描到的服务。这将有助于你去识别出那些能够被安全地忽略掉的结果。
注意:执行安全审计是需要时间和耐心的。你可能需要在安装Lynis和用它来审计你的服务器之前,花上一些时间来仔细地阅读本文全部内容。

先决条件
为了吃透本文,你需要有:一台Ubuntu 16.04服务器,并配置了一个具有sudo特权的非根用户和防火墙,你可以参考《用Ubuntu 16.04来初始化服务器的设置》(https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04)教程来实现。

步骤1 在你的服务器上安装Lynis
安装Lynis可以有多种方法。你可以从源代码来编译它,下载并复制其二进制文件到系统上的一个适当的位置;或者你可以用包管理器来安装它。使用包管理器是安装并更新Lynis的最简便的方法,所以我们在此将使用该方法。
不过,在Ubuntu 16.04上,资源库里所提供的版本并非是最新的。为了获得其最新的特性,我们将从其项目的官方资源库来安装Lynis。
Lynis的软件资源库使用的是HTTPS协议,因此我们首先需要确保支持HTTPS的包管理器已被安装。你可以使用以下的命令来进行检查:
$ dpkg -s apt-transport-https | grep -i status
如果已安装,该命令的输出结果应该是:
Output
Status: install ok installed
如果输出结果显示未安装,则可用sudo apt-get install apt-transport-https来安装。
扫清并安装了这个唯一的依赖性之后,我们就可以来安装Lynis了。为了触发此过程,我们要添加库的键值:
$ sudo apt-key adv --keyserverkeyserver.ubuntu.com --recv-keys C80E383C3DE9F082E01391A0366C67DE91CA5D5F
你将能看到如下的输出结果,它表明键值已被添加成功:
Output
Executing: /tmp/tmp.AnVzwb6Mq8/gpg.1.sh--keyserver
keyserver.ubuntu.com
--recv-keys
C80E383C3DE9F082E01391A0366C67DE91CA5D5F
gpg: requesting key 91CA5D5F from hkp serverkeyserver.ubuntu.com
gpg: key 91CA5D5F: public key "CISOfySoftware (signed software packages) <software@cisofy.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1(RSA: 1)
然后是将Lynis的资源库添加到那些对软件包管理器可用的列表之中:
$ sudo add-apt-repository "deb https://packages.cisofy.com/community/lynis/deb/ xenial main"
为了使这些新附加的资源库能为系统所用,我们需更新包的数据库:
$ sudo apt-get update
最后再来安装Lynis:
$ sudo apt-get install lynis
在安装完成后,你将可以访问到lynis的命令其子命令集。接下来让我们来看看如何使用Lynis。

步骤2 执行审计
在安装完毕后,你就可以使用Lynis来对系统执行安全审计了。让我们从查看Lynis所能执行的操作列表开始吧。请执行如下命令:
$ lynis show commands
你会看到如下的输出:
Output

Commands:
lynis audit
lynis configure
lynis show
lynis update
lynis upload-only
Lynis在审计时一般用到的是概要文件(profiles),它们就像配置文件一样通过设置来控制Lynis的审计。你可以使用如下命令来查看默认概要文件的设置:
$ lynis show settings
你将会看到如下的输出:
Output
# Colored screen output
colors=1

# Compressed uploads
compressed-uploads=0

# Use non-zero exit code if one or more warningswere found
error-on-warnings=0

...

# Upload server (ip or hostname)
upload-server=

# Data upload after scanning
upload=no

# Verbose output
verbose=0

# Add --brief to hide descriptions,--configured-only to show configured items only, or --nocolors to remove colors
在执行审计之前去验证一下是否有新版本可用会是一个很好的习惯,因为这样你将能得到最新的建议和信息。你可以通过以下命令来检查更新:
$ lynis update info
你将得到类似于如下的输出,它会显示出Lynis的最新版本:
Output
== Lynis==

Version            : 2.4.8
Status             : Up-to-date
Releasedate       : 2017-03-29
Updatelocation    : https://cisofy.com/lynis/


2007-2017, CISOfy - https://cisofy.com/lynis/
或者,你可以输入lynis update check,来产生如下的一行输出:
Output
status=up-to-date
如果当前版本确实需要更新,那么你可以使用包管理器来执行更新操作。
你可使用lynis audit system命令,在系统上运行一次审计。当然,你可以选择用特权或是非特权(渗透测试)模式来运行Lynis。对于后者的模式,一些需要root特权的测试会被忽略。因此,你应该使用sudo来将审计运行在特权模式之下。请使用如下命令来执行你的第一次审计:
$ sudo lynis audit system
验证完成之后,Lynis将运行它的测试并将结果显示在你的屏幕上。Lynis的一次审计通常只需要一分钟或更短的时间。
在Lynis执行审计的过程中,它会用到各种类型的多种测试。在每次审计完成后,各种测试结果、调试信息、和对系统的加固建议都被写到标准的输出中(即屏幕)。而更为详细的信息则被记录在/var/log/lynis.log里;同时,报告数据被保存到/var/log/lynis-report.dat中。报告数据通常只包含有关服务器和应用程序本身的信息,所以你只需要关注的是日志文件。每次审计都会清除(覆盖)日志文件,因此先前的审计结果是不会被下一次所保留下来的。
审计完成后,你应该对结果、警告和建议进行复查,然后有选择的采纳实施相关建议。
让我们来看看运行在本教程中的设备上的一次Lynis审计结果。它也许和你自己的审计结果有所不同,但是你应该能从中领会到一些重点。
Lynis审计输出中的第一个重要部分是其纯信息的部分。它会按类别分组的形式告诉你每个测试的结果。分类的关键字有NONE, WEAK, DONE, FOUND,NOT_FOUND, OK, 和 WARNING。
Output
[+] Boot and services
------------------------------------
- Service Manager                                          
- Checking UEFI boot                                       
- Checking presence GRUB                                    [ OK ]
- Checking presence GRUB2                                 [ FOUND ]
   - Checking for passwordprotection                        

..

[+] File systems
------------------------------------
- Checking mount points
    - Checking /home mount point                              [ SUGGESTION ]
    - Checking /tmp mount point                               [ SUGGESTION ]
    - Checking /var mount point                               [ OK ]
- Query swap partitions (fstab)                           [ NONE ]
- Testing swap partitions                                 [ OK ]
- Testing /proc mount (hidepid)                           [ SUGGESTION ]
- Checking for old files in /tmp                            [ OK ]
- Checking /tmp sticky bit                                  [ OK ]
- ACL support root file system                              [ ENABLED ]
- Mount options of /                                        [ OK ]
- Checking Locate database                                  [ FOUND ]
- Disable kernel support of somefilesystems
    - Discovered kernel modules: udf

...

[+] Hardening
------------------------------------
- Installed compiler(s)                                 [ FOUND ]
- Installed malware scanner                               [ NOT FOUND ]
- Installed malware scanner                               [ NOT FOUND ]

...

[+] Printers and Spools
------------------------------------
- Checking cups daemon                                    [ NOT FOUND ]
- Checking lp daemon                                        [ NOTRUNNING ]
虽然Lynis在“开箱即用”的状态下会执行200多种测试,但不是所有的都对你的服务器是必要的。那么如何来判断哪些测试是必要的,而哪些不是呢?这就依靠于服务器上到底运行着什么服务了。举个例子,如果你检查一个典型的Lynis审计的结果部分,你会发现在Printers and Spools类别下有两个测试:
Output
[+] Printers and Spools
------------------------------------
- Checking cups daemon                                    [ NOTFOUND ]
- Checking lp daemon                                        [ NOTRUNNING ]
你真的在Ubuntu 16.04服务器上运行着打印服务器吗?除非你正在运行一个基于云的打印服务器,不然你是没有必要让Lynis每次运行该测试的。
虽然这是一个在测试中筛选忽略的完美例子,但其他的可能就没那么显而易见了。请看下面这个例子。例如:
Output
[+] Insecure services
------------------------------------
- Checking inetd status                                     [ NOTACTIVE ]
该输出指明它希望在Ubuntu 16.04服务器上使用到的inetd并未被激活。但实际上Ubuntu早已将systemd取代了inetd。知道了这个,你就可以在对服务器进行审计测试时标记出来,让Lynis不去执行。
随着对每个测试结果的复查,你会在测试中圈出更多的多余项目。有了这样的列表,你就可以定制出在未来的审计中有所忽略的Lynis了。你会在步骤5中了解到如何完成这些操作的。
在下一节里,我们将浏览Lynis审计输出的其他不同部分,这样你会对如何正确运用Lynis来审计你的系统有一个更好的理解。那么就让我们来首先看看如何处理Lynis所发出的警告吧。

页: [1]
查看完整版本: 如何在Ubuntu 16.04上用Lynis执行安全审计 (1)