一、lynis简介
Lynis是Linux系统中的审计工具,能够对Linux系统的安全进行检测,在对Linux系统进行扫描检测后,会生成报告。Lynis 是一套适用于各种 UNIX based system 的系统安全检测工具,以 Shell Script建构而成。它能找出系统安全需要补强的地方,同时提供许多提升系统安全的作法与建议,对于系统管理者来说是一套既实用,又能从中学习(或复习)到许多系统安全观念的好工具。不足之处:该款工具比较全面的涵盖了系统安全的审计内容,但每个审计项都不深入,需要具体的扩展,例如PHP、Apache,MySQL的安全配置,就需要细化。
1.1 下载安装包安装lynis
在lynis官网上下载最新版本的安装包lynis-2.7.5.tar.gz
https://cisofy.com/download/lynis/
root权限使用以下命令,进行系统扫描:
# cp lynis-2.7.5.tar.gz /opt
# cd /opt
# tar zxvf lynis-2.7.5.tar.gz
# cd lynis
# ./lynis –checkall
1.2 rpm包安装到CentOs/RHEL/Fedora
在lynis官网上下载最新版本的安装包lynis-2.7.5.tar.gz
https://packages.cisofy.com//
-
更新依赖
#yum update ca-certificates curl nss openssl
-
创建yum源
#vim /etc/yum.repos.d/cisofy-lynis.repo [lynis] name=CISOfy Software - Lynis package baseurl=https://packages.cisofy.com/customers/LICENSE-KEY/lynis/rpm/ enabled=1 gpgkey=https://packages.cisofy.com/keys/cisofy-software-rpms-public.key gpgcheck=1
-
安装lynis及lynis-plugins
#yum makecache fast #yum install lynis lynis-plugins
二、如何借助lynis扫描Linux的安全漏洞
2.1 启动lynis
切换到root权限下,进入到lynis文件下下,使用./lynis --checkall进行系统扫描,如下图所示:
# ./lynis –checkall
2.2 执行扫描
一旦lynis开始扫描你的系统,它就会执行以下类别的审查工作:
category | 类别 | 作用 |
---|---|---|
System Tools | 系统工具 | 扫描可用工具;检测系统二进制代码 |
Boot and Services | 引导和服务 | 引导装入程序和启动服务 |
Kernel | 内核 | 运行级别、已装入模块、内核配置和核心转储 |
Memory and Processes | 内存和进程 | 僵尸进程和输入输出等待进程 |
Users,Groups and Authentication | 用户、用户组和验证 | 用户组编号、sudoers文件、可插拔验证模块(PAM)配置、密码老化和默认掩码 |
Shells | ||
File systems | 文件系统 | 挂载点、临时文件和根文件系统 |
Storage存储 | USB存储(usb-storage)和火线开放式主机控制器接口(firewire ohci) | |
NFS Check running NFS daemon | ||
Name services | 名称服务 | DNS搜索 |
Ports and packages | 端口和软件包 | 容易受到攻击/可以升级的程序包和安全存储库 |
Networking | 网络 | 名称服务器、混杂接口和连接 |
Printers and Spools | 打印机和假脱机 | 通用Unix打印系统(CUPS)配置 |
Software:email and messaging | 软件:电子邮件和消息传送 | Exim status、postfix status、dovecot status、qmail status、sendmail status |
Software:firewalls | 防火墙 | Iptables、host based firewall |
Software:webserver | 网站服务器 | Apache、nginx |
SSH support | SSH支持 | Checking running SSH daemon |
SNMP Support | Checking running SNMP daemon | |
Databases | MySQL根密码 | |
LDAP Services | Checking OpenLDA | |
PHP | ||
Squid Support | ||
Logging and files | 日志和文件 | syslog守护程序和日志目录 |
Insecure services | 不安全服务 | Checking inetd status |
Banners and identificationBanner | 信息和身份认证 | |
Scheduled tasks | 调度任务 | Checking crontab/cronjob /vrontabs |
Accounting | 账号 | Accounting information/sysstat accounting data/auditd |
Time and Synchronization | 时间和同步 | ntp守护程序 |
Cryptography | 密码学 | Checking for expired SSL certificates |
Virtualization虚拟化 | ||
Containers | ||
Security frameworks | 安全框架 | AppArmor、SELinux、grsecurity、MAC framework |
Software:file integrity | 文件完整性 | |
Software:system tooling | Checking automation tooling/Checing for IDS/IPS tooling | |
Software:Malware | 恶意软件扫描工具 | |
File permissions | ||
Home directories | 主目录 | Checking shell history files |
Kernel hardening | ||
Hardening | Installed compiler Installed malware scanner | |
Custom tests | Running custom tests |
工作界面如下所示:
2.2.1 扫描结果
lynis系统扫描完成,当前界面会给出扫描结果,如上图 ** -[ Lynis 2.7.5 Results ]- ** :一个告警,40个建议;
同时可以通过链接 https://cisofy.com/lynis/controls/AUTH-9216/去查看针对此条告警的具体表现及解决方案等信息。
结果分析
-
潜在安全漏洞的警告信息:没有查到两个功能正确的域名服务器
分析内容来源: https://cisofy.com/controls/NETW-2705/
问题描述: 连通性是系统进行通信的中心环节。互联系统的通信大多数发生在第3层 (网络层)。DNS 解析对正常运行是非常重要的。DNS 解析,虽然是最基本的一部分,但是往往被忽视。为了减少失效或者糟糕性能的机会,建议至少需要两个可工作的名称服务器。工具Lynis 测试名称服务器的可用性以及是否对查询做出实际的相应。若要确定使用哪些 DNS 服务器,请查阅 /etc/resolv.conf 文件解决方案: 依据个人系统的不同,需要去修改/etc/resolv.conf文件或者其他方法,Debian系统使用/etc/network/interfaces去定义名称服务器(dns-nameservers 1.2.3.4 5.6.7.8 9.10.11.12)或者是/etc/resolvconf/resolv.conf.d/tail
-
用于加固Linux系统的建议措施
序号 | 建议措施 | 描述及解决方案 |
---|---|---|
1 | BOOT-5122-Set boot loader password | 序在启动周期开始时启动,并且是用户选择要启动的操作系统。通常情况下,一个带有计时器的通道被选中作为默认选项,当计时器到期时,选择此默认通道,触发相应的操作系统开始安装。引导装载程序包含主流操作系统和几个备用选项。在这种配置中,带有以前Linux内核版本的相同操作系统是个常见的选项,另一个选项是一个救援图像,当系统不再启动时用来执行紧急维修。紧急情况下,尽管一个救援选项或者备用版本是很好的方法,但是它们也可能成为弱点,具有物理访问系统的人可以使用这个选项来重置跟密码,尤其对于笔记本电脑来说,这是个风险。当主机系统处在一个共享数据中心时,这种情况下可以给引导装载程序上设置密码。给引导装载程序设置密码 默认情况下,在系统启动阶段,任何一个具有物理访问权限的人都可以加载可替代的软件或者另一个操作系统,在grub中配置一个密码以预防这种可能; |
2 | KRNL-5788-Linux kernel update available 确定可用的内核更新优先级 | 此控件是基于Debian/Ubuntu系统的,用来测试一个新的Linux内核的可用性。当更新可用时,这个更新常常是一个与安全相关的或者可以修复严重缺陷的更新。当一个基于Debian/Ubuntu系统的内核更新时,它们通常是与安全相关,确定是否可以使用相关的更新以及安排重启系统。 |
3 | AUTH-9228-Linux password file consistency | Linux 密码文件的一致性 对密码文件,比如/etc/passwd 和/etc/shadow应该进行定期检查;通过运行pwck和grpck来检查密码和组文件,通过运行vigr和 vipw去解决发现的问题。 |
4 | AUTH-9262-PAM password strengthening tools | PAM密码加强工具 PAM框架的几个模块可以帮助限制除经过授权的人员之外的其他人员的访问设施,密码应该尽可能的被保护和加强。在基于Unix和Linux系统中,通常采用PAM模块和相关的配置文件进行。例如使用passwdqc(密码质量控制)和cracklib工具(密码破解图书馆);安装pam_cracklib 或 pam_passwdqc 的 PAM 模块,以进行密码强度测试 |
5 | AUTH-9286-Password aging密码老化 | 在/etc/login.defs中配置密码最短使用期限和最长使用期限 |
6 | AUTH-9328-Default umask默认掩码 | 在/etc/login.def和/etc/init.d/rc中的默认掩码应该像027一样严格 |
7 | FILE-6310-Separation of partitions分离的分区 | 一些像/tmp和/home分区很容易被系统的用户装满,当这些分区没有从根文件系统分离出来时,很容易增加填充这个文件系统的风险以及引起其他系统组件故障;为了减少完整/tmp文件系统的影响,将/tmp放到一个分离的分区中;为了减少完整/var文件系统的影响,将/var放到一个分离的分区中 |
8 | STRG-1840-USB storage drivers USB存储驱动器 | 为了防止未经授权的存储或数据被盗,当驱动器不使用时将其禁止,比如USB存储驱动器 |
9 | PKGS-7370-Install debsums utility 安装debsums实用程序 | 安装debsums实用程序以验证带有良好数据库的安装包 |
10 | PKGS-7398-Package audit tool 包审计工具 | 大多数操作系统都提供一个检测安全安装包的工具,用来修复易于被攻击的已安装的软件版本,如果可以,安装一个。安装一个包审计工具以确定易于被攻击的包 |
11 | NETW-2705-Properly functioning name servers 正确功能的名称服务器 | 检查resolv.conf文件并填写一个备份名称服务器 |
12 | NETW-3032-ARP monitoring ARP监控 | 考虑使用一个工具用来监控ARP流量 |
13 | PRNT-2307-CUPS configuration file permissions CUPS配置文件权限 | 进入CUPS配置的权限应该更严格些:调整/etc/cups/cupsd.conf文件的权限 |
14 | FIRE-4590 - Active firewall 激活防火墙 | 配置防火墙/数据包筛选器以筛选器传入和传出流量 |
15 | SSH-7408 - SSH configuration SSH配置 | 考虑强化SSH配置:AllowTcpForwarding (YES --> NO);ClientAliveCountMax (3 --> 2);Compression (DELAYED --> NO);LogLevel (INFO --> VERBOSE);MaxAuthTries (6 --> 1);MaxSessions (10 --> 2);PermitRootLogin (WITHOUT-PASSWORD --> NO);Port (22 --> );TCPKeepAlive (YES --> NO);UseDNS (YES --> NO);UsePrivilegeSeparation (YES --> SANDBOX);X11Forwarding (YES --> NO) |
16 | LOGG-2190-Deleted files 已删除文件 | 检查那些仍在使用的已删除文件并查找原因 |
17 | BANN-7126-Banner /etc/issue 添加banner | 给/etc/issue文件和/etc/issue.net文增加一个声明以警告非授权的用户,咨询公司内的法律联络人,或使用一个预定义的版本。 |
18 | ACCT-9622 - Linux process accounting Linux进程统计 | Enable process accounting |
2.2.1 自动保存审查报告
一旦扫描完毕,系统的审查报告就会自动生成,并保存在/var/log/lynis.log中。如上图所示,具体的审查流程可以查看var/log/lynis-report.dat
审查报告含有该工具检测到的潜在安全漏洞方面的警告信息。比如说:
#grep Warning /var/log/lynis.log 用来检查报告内容
审查报告还含有许多建议措施,有助于加固你的Linux系统。比如说:
#grep Suggestion /var/log/lynis.log 用来检查建议内容
扫描你系统的安全漏洞,作为一项日常计划任务
2.2.2 设置日常计划任务
想最充分地利用lynis,建议经常来运行它,比如说将它安排成一项日常计划任务。在用“–cronjob”选项来运行时,lynis在自动的非交互式扫描模式下运行。
下面是日常计划任务脚本,在自动模式下运行lynis,以便审查你的系统,并且将每日扫描报告进行归档。
#sudo vim /etc/cron.daily/scan.sh
#chmod 755 /etc/cron.daily/scan.sh
三、使用lynis检查系统是否足够安全
Lynis是一个为系统管理员提供的 Linux和Unix的审计工具 。 Lynis扫描系统的配置,并创建概述系统信息与安全问题所使用的专业审计。当用户启动该软件后,Lynis会会逐次扫描系统的内核、用户目录、软件信息等,并最后生成一个全面的报告。需要说明的是,该工具只能生成一个扫描检测后的报告,对用户起到提醒作用,本身并不能提高系统的安全性。但是该工具却可以成为其他安全软件、系统测评软件的模块。