当前位置: 首页 > 科技观察

使用Lynis扫描Linux安全

时间:2023-03-13 14:44:58 科技观察

你有没有想过你的Linux机器是否安全?有许多Linux发行版,每个发行版都有自己的默认设置,并且您正在其上运行数十个不同的版本。软件包,以及我们几乎不知道或不关心的后台运行的众多服务。要确定您的安全态势(在您的Linux机器上运行的软件、网络和服务的整体安全状态),您可以运行一些命令并获取零散的相关信息,但您需要解析的数据量是巨大的。如果能够运行一个生成机器安全状态报告的工具,那就更好了。幸运的是,有这样一个软件:Lynis。它是一种非常流行的开源安全审计工具,有助于强化基于Linux和Unix的系统。根据该项目的描述:“它在系统本身上运行,可以执行深度安全扫描。主要目标是测试安全防御并为进一步加固系统提供提示。它还会扫描一般系统信息、易受攻击的软件包和可能存在的问题。”配置问题。Lynis经常被系统管理员和审计员用来评估他们系统的安全防御。”安装Lynis您的Linux存储库中可能有Lynis。如果可用,您可以安装它:dnfinstalllynis或aptinstalllynis但是,如果您存储库中的版本不是最新的,您最好从GitHub安装它。(我使用的是RedHatLinux系统,但您可以在任何Linux发行版上运行它)。与所有工具一样,首先在虚拟机上试用它是有意义的。从GitHub安装:$cat/etc/redhat-releaseRedHatEnterpriseLinuxServerrelease7.8(Maipo)$$uname-r3.10.0-1127.el7.x86_64$$gitclonehttps://github.com/CISOfy/lynis.gitCloninginto'lynis'...远程:枚举对象:30,完成。远程:计数对象:100%(30/30),完成。远程:压缩对象:100%(30/30),完成。远程:Total12566(delta15),reused8(delta0),pack-reused12536Receivingobjects:100%(12566/12566),6.36MiB|911.00KiB/s,done.Resolvingdeltas:100%(9264/9264),done.$一旦你克隆了这个存储库,进入这个目录,看看有什么可用的里面。主要工具位于一个名为lynis的文件中。它实际上是一个shell脚本,所以你可以打开它看看它在做什么。事实上,Lynis主要是用shell脚本实现的:$cdlynis/$lsCHANGELOG.mdCONTRIBUTING.mddbdeveloper.prfFAQincludeLICENSElynis.8READMESECURITY.mdCODE_OF_CONDUCT.mdCONTRIBUTORS.mdCONTRIBUTORS..prfextrasHAPPY_USERS.mdINSTALLlynispluginsREADME.md$$filelynislynis:POSIXshellscript,ASCIItextexecutable,withverylonglines$运行Lynis通过给Lynis一个-h选项查看帮助部分的概述:$./lynis-h你会看到一个简短的信息屏幕,然后是Lynis支持的所有子命令。接下来,尝试一些测试命令来感受一下。要查看您使用的是哪个版本的Lynis,请运行:$./lynisshowversion3.0.0$要查看Lynis中可用的所有命令:$./lynisshowcommandsCommands:lynisauditlynisconfigurelynisgeneratelynisshowlynisupdatelynisupload-only$要审核系统的安全状况,请运行以下命令:$./lynisauditsystem此命令运行速度很快并返回详细报告,输出结果乍一看可能很吓人,但我将在下面引导您阅读。此命令的输出也保存到日志文件中,因此您可以随时返回并检查可能感兴趣的任何内容。Lynis在此处保存日志:Files:-Testanddebuginformation:/var/log/lynis.log-Reportdata:/var/log/lynis-report.dat您可以验证日志文件是否已创建。它确实创建了:$ls-l/var/log/lynis.log-rw-r-----.1rootroot341489Apr3005:52/var/log/lynis.log$$ls-l/var/log/lynis-report.dat-rw-r-----.1rootroot638Apr3005:55/var/log/lynis-report.dat$探索报告Lynis提供了相当全面的报告,因此我将涵盖一些重要部分。作为初始化的一部分,Lynis做的第一件事是找出机器上运行的操作系统的完整信息。之后查看是否安装了系统工具和插件:[+]Initializingprogram----------------------------------DetectingOS...[DONE]-检查配置文件...[DONE]-------------------------------------------------程序版本:3.0.0Operatingsystem:LinuxOperatingsystemname:RedHatEnterpriseLinuxServer7.8(Maipo)Operatingsystemversion:7.8Kernelversion:3.10.0Hardwareplatform:x86_64Hostname:example-------------------------------------------------<<截断>>[+]SystemTools-------------------------------------扫描可用工具...-检查系统二进制文件。..[+]Plugins(phase1)------------------------------------注意:插件有更多大量测试,可能需要几分钟才能完成-Plugin:pam[..]-Plugin:systemd[................]接下来,报告分为不同的部分,每个部分其中以[+]号开头。一些章节可以在下面看到。(哇,有这么多地方可以审计,Lynis是完美的工具!)]Storage[+]NFS[+]Nameservices[+]Portsandpackages[+]Networking[+]PrintersandSpools[+]Software:e-mailandmessaging[+]Software:firewalls[+]Software:webserver[+]SSHSupport[+]SNMPSupport[+]数据库[+]LDAPServices[+]PHP[+]SquidSupport[+]Loggingandfiles[+]Insecureservices[+]Bannersandidentification[+]Scheduledtasks[+]Accounting[+]TimeandSynchronization[+]Cryptography[+]Virtualization[+]Containers[+]Securityframeworks[+]Software:fileintegrity[+]Software:Systemtooling[+]Software:Malware[+]FilePermissions[+]Homedirectories[+]KernelHardening[+]Hardening[+]CustomtestsLynis使带有颜色编码的报告更容易解释。绿色的。一切都好。黄色的。跳过,没找到,可能有建议Red。你可能想仔细看看这个在我的例子中,大部分危险信号都在“内核强化”部分中找到。内核具有定义内核功能的各种可调设置,其中一些可调设置可能具有其安全上下文。由于各种原因,发行版可能没有默认设置这些,但是您应该检查每一个以查看是否需要根据您的安全状况更改其值:[+]KernelHardening------------------------------------比较sysctlkeypairswithscanprofile-fs.protected_hardlinks(exp:1)[OK]-fs.protected_symlinks(exp:1)[OK]-fs.suid_dumpable(exp:0)[OK]-kernel.core_uses_pid(exp:1)[OK]-kernel.ctrl-alt-del(exp:0)[OK]-kernel.dmesg_restrict(exp:1)[不同]-kernel.kptr_restrict(exp:2)[不同]-kernel.randomize_va_space(exp:2)[OK]-kernel.sysrq(exp:0)[不同]-kernel.yama.ptrace_scope(exp:123)[不同]-net.ipv4.conf.all.accept_redirects(exp:0)[不同]-net.ipv4.conf.all.accept_source_route(exp:0)[OK]-net.ipv4.conf.all.bootp_relay(exp:0)[OK]-net.ipv4.conf.all.forwarding(exp:0)[OK]-net.ipv4.conf.all.log_martians(exp:1)[不同]-net.ipv4.conf.all。mc_forwarding(exp:0)[OK]-net.ipv4.conf.all.proxy_arp(exp:0)[OK]-net.ipv4.conf.all.rp_filter(exp:1)[OK]-net.ipv4。conf.all.send_red直接(exp:0)[不同]-net.ipv4.conf.default.accept_redirects(exp:0)[不同]-net.ipv4.conf.default.accept_source_route(exp:0)[OK]-net.ipv4.conf.default.log_martians(exp:1)[不同]-net.ipv4.icmp_echo_ignore_broadcasts(exp:1)[OK]-net.ipv4.icmp_ignore_bogus_error_responses(exp:1)[OK]-net.ipv4.tcp_syncookies(exp:1)[OK]-net.ipv4.tcp_timestamps(exp:01)[OK]-net.ipv6.conf.all。accept_redirects(exp:0)[不同]-net.ipv6.conf.all.accept_source_route(exp:0)[OK]-net.ipv6.conf.default.accept_redirects(exp:0)[不同]-net.ipv6。conf.default.accept_source_route(exp:0)[OK]查看SSH示例,因为它是需要保护的关键字段这里没有什么红色的东西,但是Lynis对我的环境给了很多强化SSH服务的建议:[+]SSHSupport--------------------------------------CheckingrunningSSHdaemon[找到]-SearchingSSHconfiguration[找到]-OpenSSHoption:AllowTcpForwarding[建议]-OpenSSHoption:ClientAliveCountMax[建议]-OpenSSHoption:ClientAliveInterval[确定]-OpenSSHoption:压缩[建议]]-OpenSSHoption:FingerprintHash[OK]-OpenSSHoption:GatewayPorts[OK]-OpenSSHoption:IgnoreRhosts[OK]-OpenSSHoption:LoginGraceTime[OK]-OpenSSHoption:LogLevel[建议]-OpenSSHoption:MaxAuthTries[建议]-OpenSSHoption:MaxSessions[建议]-OpenSSHoption:PermitRootLogin[建议]-OpenSSHoption:PermitUserEnvironment[OK]-OpenSSHoption:PermitTunnel[OK]-OpenSSHoption:端口[建议]-OpenSSHoption:PrintLastLog[OK]-OpenSSHoption:StrictModes[OK]-OpenSSHoption:TCPKeepAlive[建议]-OpenSSHoption:UseDNS[SUGGESTION]-OpenSSHoption:X11Forwarding[SUGGESTION]-OpenSSHoption:AllowAgentForwarding[SUGGESTION]-OpenSSHoption:UsePrivilegeSeparation[OK]-OpenSSHoption:AllowUsers[NOTFOUND]-OpenSSHoption:AllowGroups[NOTFOUND]我的系统上没有运行虚拟机或容器,所以这些显示结果都是空的:[+]Virtualization------------------------------------[+]容器--------------------------------Lynis检查一些从安全角度来说很重要的文件的文件权限:[+]FilePermissions----------------------------------StartingfilepermissionscheckFile:/boot/grub2/grub.cfg[SUGGESTION]File:/etc/cron.deny[OK]File:/etc/crontab[建议]文件:/etc/group[确定]文件:/etc/group-[确定]文件:/etc/hosts.allow[确定]文件:/etc/hosts.deny[确定]文件:/etc/issue[OK]File:/etc/issue.net[OK]File:/etc/motd[OK]File:/etc/passwd[OK]File:/etc/passwd-[OK]File:/etc/ssh/sshd_config[确定]目录:/root/.ssh[建议]目录:/etc/cron.d[建议]目录:/etc/cron.daily[建议]目录:/etc/cron.hourly[建议]]]目录:/etc/cron.weekly[建议]目录:/etc/cron.monthly[建议]在报告的底部,Lynis根据报告的发现提出建议,每条建议后面都有一个“TEST-ID”(用于Saveitfornextpart)。建议(47):----------------------------*如果不需要,考虑显式禁用coredumpin/etc/security/limits。conffile[KRNL-5820]https://cisofy.com/lynis/controls/KRNL-5820/*CheckPAMconfiguration,addroundsifapplicableandexpirepasswordstoencryptwithnewvalues[AUTH-9229]https://cisofy.com/lynis/controls/AUTH-9229/Lynis提供了一个用于查找每个建议的选项有关建议的更多信息,您可以使用showdetails命令和TEST-ID编号访问它:./lynisshowdetailsTEST-ID这将显示有关测试的其他信息。例如,我检查了SSH-7408的详细信息:$./lynisshowdetailsS??SH-74082020-04-3005:52:23PerformingtestIDSSH-7408(CheckSSHspecificdefinedoptions)2020-04-3005:52:23Test:Checkingspecificdefinedoptionsin/tmp/lynis0Kc04Jwaz2-3005:52:23Result:addedadditionaloptionsforOpenSSH<7.52020-04-3005:52:23Test:CheckingAllowTcpForwardingin/tmp/lynis.k8JwazmKc62020-04-3005:52:23Result:OptionAllowTcpForwardingfound2020-04-3005:52:23Result:OptionAllowTcpForwardingvalueisYES2020-04-3005:52:23结果:OpenSSHoptionAllowTcpForwardingisinaweakconfigurationstateandshouldbefixed2020-04-3005:52:23建议:考虑加强SSH配置[test:SSH-7408][details:AllowTcpForwarding(setYEStoNO)][solution:-]如果你想了解更多关于你的Linux机器的信息,请尝试莱尼斯。如果你想了解Lynis是如何工作的,你可以研究它的shell脚本,看看它是如何收集这些信息的。