步骤3 修复Lynis的审计警告 Lynis的审计输出并不总是带有警告。但是当你读到有警告部分的时候,你就会需要知道如何解决这些引发警告的根源。 警告一般罗列在结果部分的后面。每个警告都以警告性文本本身开始,并在同一行的括号中列出生成警告的测试项名称。而下一行则包含一个可能的建议性解决方案。最后一行是一个安全控制的URL,你可能从那里发现一些有关该警告的指导说明。不过,URL并不总能提供解释,因此你可能需要做一些进一步的研究。 以下输出源自在本文所涉服务器上执行过的一次Lynis审计的警告部分。让我们浏览一下每个警告,来看看如何对其进行解决或改正: Output Warnings (3): ---------------------------- ! Version of Lynis is very old and should be updated [LYNIS] https://cisofy.com/controls/LYNIS/
! Found one or more vulnerable packages. [PKGS-7392] https://cisofy.com/controls/PKGS-7392/ 第一个警告是说Lynis需要被更新。这也意味着根据该审计所使用的Lynis版本,其结果可能并不完整。正如步骤2所示,如果我们事先执行了基本的版本检查,那么这是完全可以避免的。可见,此修复非常容易,就是更新Lynis。 第二个警告表明服务器需要被重启。这可能是因为系统最近的更新里包含了内核的升级。这里的解决方案也就是直接重启系统。 在深究任何警告或是测试结果时,你可以通过查询Lynis的ID来得到更多的关于测试的信息。其对应的命令形式为: $ sudo lynis show details test-id 因此对于第二个ID为KRNL-5830的警告,我们可以运行这样的命令: $ sudo lynis show details KRNL-5830 如下是具体测试的输出,它能让你对Lynis的每个测试的执行过程有所认识。在此输出中,Lynis甚至为其警告项给出了一些具体的信息: Output 2017-03-21 01:50:03 Performing test ID KRNL-5830 (Checking if system isrunning on the latest installed kernel) 2017-03-21 01:50:04 Test: Checking presence /var/run/reboot-required.pkgs 2017-03-21 01:50:04 Result: file /var/run/reboot-required.pkgs exists 2017-03-21 01:50:04 Result: reboot is needed, related to 5 packages 2017-03-21 01:50:04 Package: 5 2017-03-21 01:50:04 Result: /boot exists, performing more tests from here 2017-03-21 01:50:04 Result: /boot/vmlinuz not on disk, trying to find/boot/vmlinuz* 2017-03-21 01:50:04 Result: using 4.4.0.64 as my kernel version (stripped) 2017-03-21 01:50:04 Result: found /boot/vmlinuz-4.4.0-64-generic 2017-03-21 01:50:04 Result: found /boot/vmlinuz-4.4.0-65-generic 2017-03-21 01:50:04 Result: found /boot/vmlinuz-4.4.0-66-generic 2017-03-21 01:50:04 Action: checking relevant kernels 2017-03-21 01:50:04 Output: 4.4.0.64 4.4.0.65 4.4.0.66 2017-03-21 01:50:04 Result: Found 4.4.0.64 (= our kernel) 2017-03-21 01:50:04 Result: found a kernel (4.4.0.65) later than runningone (4.4.0.64) 2017-03-21 01:50:04 Result: Found 4.4.0.65 2017-03-21 01:50:04 Result: found a kernel (4.4.0.66) later than runningone (4.4.0.64) 2017-03-21 01:50:04 Result: Found 4.4.0.66 2017-03-21 01:50:04 Warning: Reboot of system is most likely needed[test:KRNL-5830] [details:] [solution:text:reboot] 2017-03-21 01:50:04 Hardening: assigned partial number of hardening points(0 of 5). Currently having 7 points (out of 14) 2017-03-21 01:50:04 Checking permissions of/usr/share/lynis/include/tests_memory_processes 2017-03-21 01:50:04 File permissions are OK 2017-03-21 01:50:04===---------------------------------------------------------------=== 第三个警告PKGS-7392是关于软件漏洞包的,我们可以运行如下命令: $ sudo lynis show details PKGS-7392 其输出为我们提供了有关需要升级的软件包的更多信息: Output 2017-03-21 01:39:53 Performing test ID PKGS-7392 (Check for Debian/Ubuntusecurity updates) 2017-03-21 01:39:53 Action: updating repository with apt-get 2017-03-21 01:40:03 Result: apt-get finished 2017-03-21 01:40:03 Test: Checking if /usr/lib/update-notifier/apt-checkexists 2017-03-21 01:40:03 Result: found /usr/lib/update-notifier/apt-check 2017-03-21 01:40:03 Test: checking if any of the updates contain securityupdates 2017-03-21 01:40:04 Result: found 7 security updates via apt-check 2017-03-21 01:40:04 Hardening: assigned partial number of hardening points(0 of 25). Currently having 96 points (out of 149) 2017-03-21 01:40:05 Result: found vulnerable package(s) via apt-get(-security channel) 2017-03-21 01:40:05 Found vulnerable package: libc-bin 2017-03-21 01:40:05 Found vulnerable package: libc-dev-bin 2017-03-21 01:40:05 Found vulnerable package: libc6 2017-03-21 01:40:05 Found vulnerable package: libc6-dev 2017-03-21 01:40:05 Found vulnerable package: libfreetype6 2017-03-21 01:40:05 Found vulnerable package: locales 2017-03-21 01:40:05 Found vulnerable package: multiarch-support 2017-03-21 01:40:05 Warning: Found one or more vulnerable packages.[test:PKGS-7392] [details:-] [solution:-] 2017-03-21 01:40:05 Suggestion: Update your system with apt-get update,apt-get upgrade, apt-get dist-upgrade and/or unattended-upgrades[test:PKGS-7392] [details:-] [solution:-] 2017-03-21 01:40:05 ===---------------------------------------------------------------=== 对此警告的解决方案就是更新数据库和系统。 在修复了此项警告之后,你应该再次运行审计。后续的审计就不会再对此产生警告了,当然新的警告也可能会出现在他处。因此你不得不重复进行此步骤以解决所有的警告。 至此,你已经知道了如何读懂并修复Lynis所生成的警告,让我们来看看如何去实施那些Lynis所提供的建议吧。
根据你的运行环境,实施所有这些建议都是比较安全可靠的。但是,为了能做出决断,你必须知道每一个建议的具体意思。因为这些都隶属于SSH服务器,因此所有的更改必须体现在SSH守护进程的配置文件/etc/SSH/sshd_config中。如果你对Lynis给出的关于SSH的建议有任何疑问,请用man sshd_config指令来查看。当然这些信息也在网上找到。 其中的一条建议是要求更改SSH的默认22号端口。如果你要更改它,请相应地在防火墙上添加一条规则,让对于SSH的访问能从新的端口上通过。 和警告部分一样,你可以使用sudo lynis show details test-id来查询Lynis的测试ID,以获得更多有关建议的详细信息。 其他的建议则是要求你在服务器上安装额外的软件。如下例所示: Output * Harden the system by installing at least one malware scanner, to performperiodic file system scans [HRDN-7230] - Solution : Install a tool likerkhunter, chkrootkit, OSSEC https://cisofy.com/controls/HRDN-7230/ 该建议是安装rkhunter、chkrootkit或OSSEC来满足加固测试(HRDN-7230)的要求。OSSEC是一个基于主机的入侵检测系统,它可以生成并发送警告。这是一个能够协助Lynis执行测试的一个很好的安全应用程序。关于此工具,你可以通过DigitalOcean的各个教程(https://www.digitalocean.com/community/tutorials?q=ossec)来进行更多的了解。但是,仅仅安装OSSEC并不能顺利地通过此测试,你还需要安装chkrootkit。这就是为什么有时候除了Lynis所给出的建议,你还要做更多的研究的原因。 让我们来看另一个例子。这是一个在文件完整性测试后显示的一个结果建议。 Output * Install a file integrity tool to monitor changes to critical andsensitive files [FINT-4350] https://cisofy.com/controls/FINT-4350/ 该安全控制的URL所给出的建议并没有提到我们前面所及的那个OSSEC程序,但是如果安装它,则会保证我们能通过后续的审计测试。这就是为什么OSSEC是一个很好的文件完整性监控工具的原因。 你也可以忽略一些并不适合你的建议。这里同样也有一个例子: Output * To decrease the impact of a full /home file system, place /home on aseparated partition [FILE-6310] https://cisofy.com/controls/FILE-6310/
* To decrease the impact of a full/tmp file system, place /tmp on a separated partition [FILE-6310] https://cisofy.com/controls/FILE-6310/ 传统上,核心Linux文件系统,如/home、/tmp、/var和/usr常被挂载到一个单独的分区里,以减少在整个服务器耗尽其磁盘空间时的影响。但是,这种耗尽的情况其实并不被经常看到,尤其是在那些云服务器上。这些文件系统如今只是作为一个目录被挂载到同一根分区里。但是如果你对这样的系统执行Lynis审计的话,你会得到一些类似于前面所提及的建议输出。除非你的确想实施的该建议,否则你很可能想通过配置Lynis来忽略它们,使它们将来不再执行此类审计。 使用Lynis来执行安全审计不仅仅涉及到修复警告和实施建议,它还包括识别出多余的测试。在接下来的步骤中,你将学习到如何定制缺省的概要文件来忽略此类测试。