详解Linux开源安全审计和渗透测试工具Lynis
转载自FreeBuf.COM
Lynis是一款Unix系统的安全审计以及加固工具,能够进行深层次的安全扫描,其目的是检测潜在的时间并对未来的系统加固提供建议。这款软件会扫描一般系统信息,脆弱软件包以及潜在的错误配置。扫描完成后,Lynis还会为我们生成一份包含所有扫描结果的安全报告。
Lynis是Unix/Linux系统用于软件补丁管理,恶意软件扫描和漏洞检测的最值得信赖的自动化审计工具之一。此工具非常适合于安全审计人员,网络安全专家,渗透测试人员,网络和系统管理人员以及安全工程师使用。
与Lynis兼容的操作系统包括:
AIX
Arch Linux
BackTrack Linux
CentOS
Debian, DragonFlyBSD
Fedora Core, FreeBSD
Gentoo
HPUX
Kali, Knoppix
Linux Mint
MacOS X, Mageia, Mandriva
NetBSD
OpenBSD, OpenSolaris, openSUSE, Oracle Linux
PcBSD, PCLinuxOS
Red Hat Enterprise Linux (RHEL) and derivatives
Sabayon, Scientific Linux, Slackware, Solaris 10, SuSE
TrueOS
Ubuntu and derivatives
Lynis也可以被用于软件审计
Database servers: MySQL, Oracle, PostgreSQL
Time daemons: dntpd, ntpd, timed
Web servers: Apache, Nginx
一旦lynis开始扫描你的系统,它将执行多个类别的审计:
系统工具:系统二进制文件
启动和服务:启动加载程序,启动服务
内核:运行级别,加载模块,内核配置,核心转储
内存和进程:僵尸进程,IO等待进程
用户,组和身份验证:组ID,sudoers,PAM配置,password aging,默认掩码
Shells
文件系统:挂载点,/tmp文件, root文件系统
存储:usb-storage,firewire ohci
NFS
软件:名称服务:DNS搜索域,BIND
端口和软件包:易受攻击/可升级软件包,安全存储库
网络:名称服务器,混杂接口(promiscuous interfaces),连接
打印机和spools: cups配置
软件:电子邮件和消息
软件:防火墙:iptables,pf
软件:webserver:Apache,nginx
SSH支持:SSH配置
SNMP支持
数据库:MySQL root密码
LDAP服务
软件:php:php选项
Squid支持
日志记录和文件:Syslog daemon,日志目录
不安全服务:inetd
Banners和标识
计划任务:crontab/cronjob,atd
Accounting:sysstat数据,auditd
时间和同步:ntp daemon
加密:SSL证书过期
虚拟化
安全框架:AppArmor,SELinux,安全状态
软件:文件完整性
软件:恶意软件扫描器
主目录:shell历史文件
第一次运行Lynis建议使用-c参数,-c表示对系统进行最全面的检查。如果你想要添加审计员的名字,可以使用–auditor参数。
从GitHub下载和安装Lynis。
git clone https://github.com/CISOfy/lynis
$ cd lynis-1.3.8
# ./lynis
使用示例:
# lynis -c –auditor “BALAJI”
图1.初始化
图2.系统工具
图3. Boot&Services和Kernel
图4.用户和组
图5.Shell和存储
图6.软件,端口和软件包
图7.网络和打印机
图8.电子邮件,防火墙和Web服务器
图9. SSH,SNMP和数据库
图10. PHP,Squid代理和日志记录
图11. Inetd,Banner和Cron
图12.Accounting,NTP和密码学
图13.虚拟化,安全框架和文件完整性
图14.恶意软件扫描程序,系统工具和主目录
图15.内核加固
图16.加固,自定义测试和结果
图17.index加固
自定义测试
你的当前测试的系统可能并不需要对所有内容进行测试,例如你的系统并没有运行Web服务器,那么我们可以使用-tests参数,语法如下:
# lynis –tests “Test-IDs”
有超过100个我们可以做的测试。以下是Lynis Tests-ID的部分列表。
FILE-7502 (检查系统所有的二进制文件)
BOOT-5121 (GRUB boot loader存在检查).
BOOT-5139 (LILO boot loader存在检查)
BOOT-5142 (检查SPARC Improved boot loader (SILO))
BOOT-5155 (检查YABOOT boot loader配置文件)
BOOT-5159 (OpenBSD i386 boot loader存在检查)
BOOT-5165 (检查FreeBSD boot services)
BOOT-5177 (检查Linux boot和正在运行的services)
BOOT-5180 (检查Linux boot services (Debian style))
BOOT-5184 (检查引导文件/脚本的权限)
BOOT-5202 (检查系统的正常运行时间)
KRNL-5677 (检查CPU选项和支持)
KRNL-5695 (确定Linux内核版本和版本号)
KRNL-5723 (确定Linux内核是否为单内核)
KRNL-5726 (检查Linux加载的内核模块)
KRNL-5728 (检查Linux内核配置)
KRNL-5745 (检查FreeBSD加载的内核模块)
KRNL-5770 (检查活动内核模块)
KRNL-5788 (检查新内核的可用性)
KRNL-5820 (检查核心转储配置)
以下是运行“检查系统正常运行时间”和“检查核心转储配置”测试的命令示例。
# ./lynis –tests “BOOT-5202 KRNL-5820”
想要获得更多Tests-ID,可以在/var/log/lynis.log中找到。这里有一个窍门。
1.首先,我们使用-c (check-all)参数运行lynis。
# ./lynis -c -Q
2.然后看看/var/log/lynis.log文件。使用cat命令并与grep结合使用。假设你想搜索与Kernel相关的Test-ID。则可以使用关键字KRNL找到它。
# cat /var/log/lynis.log | grep KRNL
以下是Lynis提供的完整的Test-ID关键字。
BOOT
KRNL (kernel)
PROC (processor)
AUTH (authentication)
SHLL (shell)
FILE
STRG (storage)
NAME (dns)
PKGS (packaging)
NETW (network)
PRNT (printer)
FIRE (firewall)
HTTP (webserver)
SSH
SNMP
DBS (database)
PHP
LDAP
SQD (squid proxy)
LOGG (logging)
INSE (insecure services – inetd)
SCHD (scheduling – cron job)
ACCT (accounting)
TIME (time protocol – NTP)
CRYP (cryptography)
VIRT (virtualization)
MACF (AppArmor – SELINUX)
MALW (malware)
HOME
HRDN (hardening)
如果你觉得输入Test-ID是件非常麻烦的事,那么你可以使用-test-category参数。使用该选项,Lynis将运行包含在特定类别内的Test-ID。例如,你想运行防火墙和内核测试。你可以输入以下命令:
# ./lynis –tests-category “firewalls kernel”
将Lynis作为Cronjob运行
除了以上的方便之外,我们还可以将Lynis作为Cronjob定期自动运行。以下是每月运行一次的示例:
#!/bin/sh
AUDITOR=”automated”
DATE=$(date +%Y%m%d)
HOST=$(hostname)
LOG_DIR=”/var/log/lynis”
REPORT=”$LOG_DIR/report-${HOST}.${DATE}”
DATA=”$LOG_DIR/report-data-${HOST}.${DATE}.txt”
cd /usr/local/lynis
./lynis -c –auditor “${AUDITOR}” –cronjob > ${REPORT}
mv /var/log/lynis-report.dat ${DATA}
# End
将脚本保存到/etc/cron.monthly/lynis。还有千万不要忘记添加相关路径(/usr/local/lynis和/var/log/lynis),否则脚本将无法正常工作。
*参考来源:gbhackers,FB小编 secist 编译,转载自FreeBuf.COM
详解Linux开源安全审计和渗透测试工具Lynis的更多相关文章
- 详解linux运维工程师入门级必备技能
详解linux运维工程师入门级必备技能 | 浏览:659 | 更新:2013-12-24 23:23 | 标签:linux it自动化运维就是要很方便的运用各种工具进行管理维护,有效的实施服务器保护 ...
- 详解Linux安装GCC
为你详解Linux安装GCC方法 2009-12-11 14:05 佚名 博客园 字号:T | T 现在很多程序员都应用GCC,怎样才能更好的应用GCC.本文以在Redhat Linux安装GCC4. ...
- 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路
做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...
- 详解Linux运维工程师高级篇(大数据安全方向).
hadoop安全目录: kerberos(已发布) elasticsearch(已发布)http://blog.51cto.com/chenhao6/2113873 knox oozie ranger ...
- 详解Linux运维工程师
运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火……(相对表示就是 Python 比较火) 之前写过运维 ...
- (转)linux traceroute命令参数及用法详解--linux跟踪路由命令
linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通 ...
- 详解Twitter开源分布式自增ID算法snowflake(附演算验证过程)
详解Twitter开源分布式自增ID算法snowflake,附演算验证过程 2017年01月22日 14:44:40 url: http://blog.csdn.net/li396864285/art ...
- Linux下ps命令详解 Linux下ps命令的详细使用方法
http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
随机推荐
- linux如何查看所有的用户和组信息
[步骤一]cat /etc/passwd cat /etc/passwd查看所有的用户信息,详情如下图 [步骤二]cat /etc/passwd|grep 用户名 cat /etc/passwd|gr ...
- .NET Core 3时代DevExpress Winforms v19.2增强TreeList控件
DevExpress Winforms Controls内置140多个UI控件和库,完美构建流畅.美观且易于使用的应用程序.无论是Office风格的界面,还是分析处理大批量的业务数据,DevExpre ...
- P2272 [ZJOI2007]最大半连通子图 tarjan+DP
思路:$tarjan+DP$ 提交:1次 题解:首先对于一个强连通分量一定是一个半连通分量,并且形成的半连通分量的大小一定是它的$size$,所以我们先缩点. 这样,我们相当于要在新的$DAG$上找一 ...
- 8月清北学堂培训 Day 7
当天走得太兴奋了,忘记保存就关电脑了o(╥﹏╥)o,现在补上( p′︵‵.) 今天是杨思祺老师的讲授~ 练习题 首先求出最短路: 如果选择的边不是最短路上的边,那么毫无影响: 对于最短路径上的边,我们 ...
- linux下如何设置日志级别?
答: echo $level > /proc/sys/kernel/printk 如: echo 8 4 1 7 > /proc/sys/kernel/printk
- <JavaScript> 普通函数与构造函数的区别
JavaScript中存在构造函数与函数两个概念. 这可能会给初学者造成一定的困扰,难不成存在两种函数. 然而事实这两种函数的构成完全一样,无论从长相还是气质都是一模一样的. 区别点在于,所扮演觉得不 ...
- SQL-W3School-高级:SQL CHECK 约束
ylbtech-SQL-W3School-高级:SQL CHECK 约束 1.返回顶部 1. SQL CHECK 约束 CHECK 约束用于限制列中的值的范围. 如果对单个列定义 CHECK 约束,那 ...
- Class.ForName()读取配置文件
榨汁机(Juicer)榨汁的案例 分别有水果(Fruit)苹果(Apple)香蕉(Banana)桔子(Orange)榨汁(squeeze) public class Demo_Reflect { /* ...
- centos6.5安装mysql(转载,亲测可用)
如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--Cen ...
- hadoop2.7.7+habse2.0.5+zookeeper3.4.14+hive2.3.5单机安装
环境 腾讯云centos7 1.hadoop下载 http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar ...