Total Pageviews

Thursday, 7 November 2024

检查Linux服务器是否被入侵

(最好还是设置'private key+public key'登录大法,以彻底根绝后患)
检查root用户是否被纂改
awk -F: '$3==0{print $1}' /etc/passwd 
awk -F: '$3==0  {print}' /etc/passwd
查看空口令
awk -F: 'length(2)==0 {print}' /etc/shadow
查询可以远程登录的帐号,即:/bin/shell
awk '/\$1|\$6/{print $1}' /etc/shadow
检查sudo权限
more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)"
禁用或删除多余及可疑的帐号
usermod -L user ###禁用帐号,帐号无法登录,验证:/etc/shadow 第二栏为 ! 开头
userdel user    ###删除 user 用户
userdel -r user 将删除user用户,且将/home目录下的user家目录一并删除
检查当前及历史用户登录情况
who, whoami,last,lastb,cat .bash_history >> history.txt,lastlog
查看机器所有用户的连接时间(小时)
ac -dp

系统异常排查

检查当前主机系统负载
w、top、uptime
查看异常进程的端口
ss -antlp|less  ##分析可疑端口、IP、PID;如果发现异常,用以下命令查看下pid所对应的进程文件路径,
ls -l /proc/$PID/exe 或 file /proc/$PID/exe  #($PID 为对应的 pid 号)
ps aux | grep pid   ##分析异常进行,关联的子进程或线程
killall -9 可疑进程   ###杀掉所有可疑进程的关联进程/线程;
启动项配置文件查看是否异常
more /etc/rc.local /etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/
查看系统启动文件rc.local和/etc/init.d有无异常脚本文件;
或进去/etc/init.d/删除异常开机文件
查看异常计划任务执行
crontab -l
crontab -e ##进去删除异常的任务
more /etc/cron.daily/* 查看目录下文件
ps aux | grep crond
关注以下目录中是否存在恶意脚本
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
查看系统脚本异常
查看以下目录下脚本文件的修改时间和最近访问时间:
var/spool/cron/* /etc/crontab /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/ /etc/anacrontab /var/spool/anacron/*
服务查看
chkconfig --list 查看服务自启动状态,可以看到所有的RPM包安装的服务
查看日志
入侵者可能会删除机器的日志信息,可以查看日志信息是否还存在或者是否被清空
more /etc/rsyslog.conf #查看日志配置情况
ll -h /var/log/*
du -sh /var/log/*
cat /var/log/secure | grep -i "accepted password" ##尝试发现入侵者的信息
日志文件 说明
/var/log/cron 记录了系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog 记录邮件信息
/var/log/message 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件
/var/log/btmp 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看
/var/log/utmp 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询
/var/log/secure 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
定位有多少IP在爆破主机的 root 帐号
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
定位有哪些 IP 在爆破
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
登录成功的 IP 有哪些
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
登录成功的日期、用户名、IP
grep "Accepted " /var/log/secure | awk ‘{print $1,$2,$3,$9,$11}’
增加一个用户日志,删除用userdel grep -i "useradd" /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
查看sudo
visudo
sudo -l
异常文件查看
find . -name “muma.php” -type f -mtime -5 -exec ls -l {} ; ##如果怀疑muma.php
find常用:
find /home -size +512k; #查大于512k的文件
find /home -size -512k; #查小于512k的文件
find /home -mtime -2; # 在/home下查最近两天内改动过的文件
find /home -atime -1; # 查1天之内被存取过的文件
find /home -mmin +60; # 在/home下查60分钟前改动过的文件
find /home -amin +30; # 查最近30分钟前被存取过的文件
find /home -newer tmp.txt; # 在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt; # 在/home下查存取时间比tmp.txt近的文件或目录
ls -lc filename 列出文件的创建时间

注意:ctime 是在写入文件、更改所有者、权限或链接设置时随Inode的内容更改而更改的时间。
ls -l filename 列出文件的修改时间;
注意:mtime 是在写入文件时随文件内容的更改而更改的时间。如果ctime和mtime不一致时有可能是木马文件,黑客有可能会修改了mtime时间。

确认后删除木马文件:
find . -name “muma.php” -type f -mtime -5 -size -5k -exec rm -rf {} ;
查找目录下文件内容包含木马特定字符串(比如YLb)的文件列表,并删除处理:
#查找文件,并显示文件的ctime时间,比对文件信息
find . -name “.php" -exec grep -rl “YLb” {} ; -exec ls -lc {} ;
#确认没有问题后,删除掉
find . -name ".php” -exec grep -rl “YLb” {} ; -exec rm -rfv {} ;
如果杀不了,查看以下文件:
/usr/bin/killall
/usr/bin/wget
另外:木马也喜欢出现的目录/tmp,查看其下是否有异常文件;
查看cat /etc/resolv.conf,如果网页恶意重定向
安装杀毒软件
yum -y install clamav*
service clamd restart启动
freshclam ##更新病毒库
扫描方法:
clamscan -r /etc –max-dir-recursion=5 -l /root/etcclamav.log
clamscan -r /binmax-dir-recursion=5 -l /root/binclamav.log
clamscan -r /usr –max-dir-recursion=5 -l /root/usrclamav.log
clamscan -r –remove /bin/
clamscan -r –remove /usr/bin/
查看常用运维排查软件
psps,netstat,lsof等命令是否异常;如果ps命令,ls命令执行无输出,就该警惕被病毒感染替换为虚假命令工具;
/root/chattr -i -a /bin/ps && rm /bin/ps -f #删除这些可能被感染的命令,比如ps,ls,netstat,lsof,top等。可以通过ls -lh /bin/ps 查看这些命令的大小和正常程序是否一致;如果被感染,可去一个相同操作系统的的ps,ls, netstat,lsof命令,将这些命令复制到被感染的系统中,临时使用。
RPM check检查
 系统完整性可以通过rpm自带的-Va来校验检查所有的rpm软件包,查看哪些命令是否被替换了:./rpm -Va > rpm.log;如果一切均校验正常将不会产生任何输出,如果有不一致的地方,就会显示出来,输出格式是8位长字符串,每个字符都用以表示文件与RPM数据库中一种属性的比较结果 ,如果是. (点) 则表示测试通过。验证内容中的8个信息的具体内容如下:
S 文件大小是否改变
M 文件的类型或文件的权限(rwx)是否被改变
5 文件MD5校验是否改变(可以看成文件内容是否改变)
D 设备中,从代码是否改变
L 文件路径是否改变
U 文件的属主(所有者)是否改变
G 文件的属组是否改变
T 文件的修改时间是否改变

rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取rpm包中ls命令到当前目录的/bin/ls下
查看异常进程
top #仔细检查异常进程pid
ls -l /proc/pid/exe 查看异常进程命令所在地
若发现异常进程,可在虚拟文件系统目录查找该进程的可执行文件:
ll /proc/1850/ | grep -i exe ##1850是进程的pid
ps -eFH ##
对关键目录加锁,降低危害
chmod 000 /usr/bin/可疑文件
chattr +i /usr/bin
chattr +i /bin
chattr +i /tmp
linux查找被入侵后留下的后门文件
找/opt/下的所有jsp,拷贝到/dir(提前创建隔离目录)
linux下:find /opt -name *.jsp | xargs cp -a --target-directory=/dir/ --parents
或:find . -name *.jsp|xargs cp -a --target-directory=/dir/ --parents
流量异常

如果发现机器产生了异常流量,可以使用命令“tcpdump”抓取网络包查看流量情况或者使用工具”iperf”查看流量情况,使用命令iftop,查看查看网卡流量情况;

ctrl+shift+esc打开你Windows任务管理器查看CPU、内存、网络等情况;

原理介绍

如果确认机器已经被入侵,重要文件已经被删除,可以尝试找回被删除的文件

1>当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。

2>在/proc 目录下,其中包含了反映内核和进程树的各种文件。/proc目录挂载的是在内存中所映射的一块区域,所以这些文件和目录并不存在于磁盘中,因此当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。大多数与 lsof 相关的信息都存储于以进程的 PID 命名的目录中,即 /proc/1234 中包含的是 PID 为 1234 的进程的信息。每个进程目录中存在着各种文件,它们可以使得应用程序简单地了解进程的内存空间、文件描述符列表、指向磁盘上的文件的符号链接和其他系统信息。lsof 程序使用该信息和其他关于内核内部状态的信息来产生其输出。所以lsof 可以显示进程的文件描述符和相关的文件名等信息。也就是我们通过访问进程的文件描述符可以找到该文件的相关信息。

3>当系统中的某个文件被意外地删除了,只要这个时候系统中还有进程正在访问该文件,那么我们就可以通过lsof从/proc目录下恢复该文件的内容。
假设/var/log/secure文件被删除,用lsof命令查看当前是否有进程打开/var/log/secure,执行:lsof | grep /var/log/secure
结果示例:
rsyslogd 1264 root 4w REG 8,1 3173904 263917 /var/log/secure (deleted) ##其中4w的4表示:文件描述符未4

然后:在/proc/1264/fd/4(fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息来确认:tail -f /proc/1264/fd/4

安全建议

1)密码文件安全:

/etc/hosts.deny 和/etc/hosts.allow利用这2个文件建立白名单,控制主机访问;
或利用iptables规则;

对/etc/passwd、/etc/group、/etc/sudoers、/etc/shadow等用户信息文件进行加锁(chattr +ai),验证lsattr,一切非必要用户登录权限均设为/sbin/nologin

禁ping设置:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

紧急临时账户锁定:passwd -l 异常账户 ##-u解锁,对应-L锁定需要-U解锁

2)密码安全控制

设置密码有效期和复杂度

对新建用户,编辑/etc/login.defs,新增PASS MAX DAYS 30
对老用户,chage -M 30 zabbix;修改已存在用户zabbix的密码有效期为30天
chage -d 0 zabbix //强制zabbix用户下次登录时必须更改密码

3)历史命令记录

减少历史命令记录条数,注销时自动清空命令历史

编辑/etc/profile,修改HISTSIZE=5参数值,这里配置为5条或export HISTSIZE=5;

同上修改/etc/profile,修改TMOUT=100参数,即让系统终端闲置100s后自动注销;如果针对单个特定用户来进行,只需修改该用户下的.bash_profile的TMOUT=100参数。

4)限制su命令使用和sudo权限
将允许使用su命令的用户加入wheel组,启用pam_wheel模块;su的操作记录在/var/log/secure日志里;编辑/etc/login.defs,文末添加SU_WHEEL_ONLY yes

注:PAM认证一般遵循顺序:service—>pam配置文件—>pam_*.so;pam认证首先要确定当前求情的事哪一项服务,后加载响应的pam配置文件(位于/etc/pam.d/),找到后调用认证文件(/lib/security/)来安全认证;

pam常见4种控制类型:验证开始----->required—>requisite—>sufficient—>optional—>验证结束

sudo权限限制visudo或vim /etc/sudoers,记录格式:用户 主机名列表 = 命令程序列表

sudo默认日志/var/log/sudo;

5)禁止root从其他终端登录,只能从安全终端登录
编辑/etc/securetty,只保留tty1为安全终端,其他注释掉。

6)临时禁止普通用户登录
1.建立/etc/nologin文件,这样当普通用户登录时,login程序会检查/etc/nologin文件是否存在,如存在就拒绝普通用户登录系统,root不受此限制。

攻防演练工具

1)DDos演练工具:

1> windows:Hyenae

hyenae是在Windows平台上非常好用的一款ddos攻击工具,可以完成绝大多数的攻击操作。软件下载

使用简述:

●攻击源的IP,MAC地址以及端口号可以非常灵活的设置,按MAC-IP@port的格式书写,上图中的攻击源匹配模式%-172.17.14.158@80,其中:

% 代表任意,在此处代表任意的MAC地址
172.17.14.158为伪造的攻击源IP,可以修改为任意的合法IP
80为端口号,80同时也是网络服务器的默认端口

●攻击目标的设置方式与攻击源一致,图中的%-172.17.14.10@80,其中:

% 随机生成MAC地址
172.17.14.10代表被攻击的IP
80为攻击目标的被攻击端口号

上述图示的作用是产生MAC地址随机,IP为172.17.14.158,端口为80的伪造源,去攻击目的MAC随机,IP为172.17.14.10的web server。

由于目的MAC随机,当MAC地址首字节为奇数时,生成的数据包为广播包,此时将产生广播风暴,局域网内的所有设备都将收到大量的广播包,当速率很高时,很容易导致局域网瘫痪,这是需要注意的。本人当时年少轻狂,有次测试,使用全速率的广播式SYN/ACK攻击,直接导致部门的局域网瘫痪断网,幸好是晚上,后来找人重置了部门内的网络设备才恢复,想想真是罪过啊。

2> Linux:hping3

hping3是用于生成和解析TCPIP协议数据包的开源工具。hping3同样可用于产生ddos攻击包,但与hyenae不同的是,hping3无法手动设置MAC地址,而是根据IP地址自动获取。

使用介绍参见

hping3编译安装

软件下载:http://www.hping.org/hping3-20051105.tar.gz

对应windows版本:http://www.hping.org/hping2.win32.tar.gz

3> 其他工具:

免费DDOS攻击测试工具大合集

4> webshell查杀

河马webshell查杀:http://www.shellpub.com
深信服Webshell网站后门检测工具:http://edr.sangfor.com.cn/backdoor_detection.html

5>Rootkit查杀

网址:http://www.chkrootkit.org

wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz 
tar zxvf chkrootkit.tar.gz 
cd chkrootkit-0.52 
make sense #编译完成没有报错的话执行检查 
./chkrootkit

6>rkhunter

网址:http://rkhunter.sourceforge.net

wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz tar -zxvf rkhunter-1.4.4.tar.gz
cd rkhunter-1.4.4 
./installer.sh --install rkhunter -c

7>Clamav杀毒

官方下载地址为:http://www.clamav.net/download.html

#安装zlib依赖:
wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz
tar -zxvf zlib-1.2.7.tar.gz
cd zlib-1.2.7 
#安装一下gcc编译环境: 
yum install gcc CFLAGS="-O3 -fPIC"
./configure --prefix= /usr/local/zlib/
make && make install

#添加用户组clamav和组成员clamav:
groupadd clamav useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

#安装Clamav:
tar –zxvf clamav-0.97.6.tar.gz
cd clamav-0.97.6
./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib make
make install

#配置Clamav:
mkdir /opt/clamav/logs 
mkdir /opt/clamav/updata 
touch /opt/clamav/logs/freshclam.log
touch /opt/clamav/logs/clamd.log
cd /opt/clamav/logs
chown clamav:clamav clamd.log
chown clamav:clamav freshclam.log

#ClamAV 使用:
/opt/clamav/bin/freshclam  #升级病毒库
./clamscan –h  #查看相应的帮助信息
./clamscan -r /home #扫描所有用户的主目录就使用
./clamscan -r --bell -i /bin 扫描bin目录并且显示有问题的文件的扫描结果

#yum安装
yum install -y clamav 
freshclam #更新病毒库
clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log #扫描方法 
clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log 
clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log
clamscan -r --remove /usr/bin/bsd-port clamscan -r --remove /usr/bin/ #扫描并杀毒
clamscan -r --remove /usr/local/zabbix/sbin
cat /root/usrclamav.log |grep FOUND #查看日志发现

8>linux安全检查脚本

https://github.com/grayddq/GScan 
https://github.com/ppabc/security_check 
https://github.com/T0xst/linux
----------------------------------------------
Linux应急处置/信息搜集/漏洞检测工具,
支持基础配置/网络流量/任务计划/环境变量/用户信息/Services/bash/恶意文件/内核Rootkit
/SSH/Webshell/挖矿文件/挖矿进程/供应链/服务器风险等13类70+项检查.

LinuxCheck

Linux应急处置/信息搜集/漏洞检测工具,支持基础配置/网络流量/任务计划/环境变量/用户信息/Services/bash/恶意文件/内核Rootkit/SSH/Webshell/挖矿文件/挖矿进程/供应链/服务器风险等13类70+项检查

更新

更新日志:2024年4月20日

  • 调整输出为Markdown报告
  • 弃用ag,还是使用Linux原生的grep命令,避免额外安装
  • 优化代码格式,不在每条都要tee -a
  • 更新Webshell检测逻辑
  • 更新authorized_keys检测逻辑
  • 服务器风险检查添加JDWP和Python HTTP Server检查
  • 添加Docker 容器检测
  • 添加PAM后门检测
  • 添加本地报告上传能力,应对批量机器应急的情况。

更新日志:2022年08月05日

  • 修复内核模块检查日志过多问题

更新日志:2022年03月07日

  • 添加SSH软连接后门检测

更新日期:2021年10月17日

  • 添加Ntpclient/WorkMiner/TeamTNT挖矿木马检测
  • 添加Rootkit模块检测逻辑
  • 添加Python pip投毒检测
  • 添加$HOME/.profile查看
  • 添加服务器风险检查(Redis)

功能

  • 基础配置检查
    • 系统配置改动检查
    • 系统信息(IP地址/用户/开机时间/系统版本/Hostname/服务器SN)
    • CPU使用率
    • 登录用户信息
    • CPU TOP 15
    • 内存 TOP 15
    • 磁盘剩余空间检查
    • 硬盘挂载
    • 常用软件检查
    • /etc/hots
  • 网络/流量检查
    • ifconfig
    • 网络流量
    • 端口监听
    • 对外开放端口
    • 网络连接
    • TCP连接状态
    • 路由表
    • 路由转发
    • DNS Server
    • ARP
    • 网卡混杂模式检查
    • iptables 防火墙
  • 任务计划检查
    • 当前用户任务计划
    • /etc/系统任务计划
    • 任务计划文件创建时间
    • crontab 后门排查
  • 环境变量检查
    • env
    • path
    • LD_PRELOAD
    • LD_ELF_PRELOAD
    • LD_AOUT_PRELOAD
    • PROMPT_COMMAND
    • LD_LIBRARY_PATH
    • ld.so.preload
  • 用户信息检查
    • 可登陆用户
    • passwd文件修改日期
    • sudoers
    • 登录信息(w/last/lastlog)
    • 历史登陆ip
  • Services 检查
    • SystemD运行服务
    • SystemD服务创建时间
  • bash检查
    • History
    • History命令审计
    • /etc/profile
    • $HOME/.profile
    • /etc/rc.local
    • ~/.bash_profile
    • ~/.bashrc
    • bash反弹shell
  • 文件检查
    • ...隐藏文件
    • 系统文件修改时间检测
    • 临时文件检查(/tmp /var/tmp /dev/shm)
    • alias
    • suid特殊权限检查
    • 进程存在文件未找到
    • 近七天文件改动 mtime
    • 近七天文件改动 ctime
    • 大文件>200mb
    • 敏感文件审计(nmap/sqlmap/ew/frp/nps等黑客常用工具)
    • 可疑黑客文件(黑客上传的wget/curl等程序,或者将恶意程序改成正常软件例如nps文件改为mysql)
  • 内核Rootkit 检查
    • lsmod 可疑模块
    • 内核符号表检查
    • rootkit hunter 检查
    • rootkit .ko模块检查
  • SSH检查
    • SSH 爆破
    • SSHD 检测
    • SSH 后门配置
    • SSH inetd后门检查
    • SSH key
  • Webshell 检查
    • php webshell检查
    • jsp webshell检查
  • 挖矿文件/进程检查
    • 挖矿文件检查
    • 挖矿进程检查
    • WorkMiner检测
    • Ntpclient检测
  • 供应链投毒检查
    • Python PIP 投毒检查
  • 服务器风险检查
    • Redis弱密码检测
    • JDWP 服务检测
    • Python http.server 检测
  • Docker 权限检查

Usage

第一种方式:通过git clone 安装

git clone https://github.com/al0ne/LinuxCheck.git
chmod u+x LinuxCheck.sh
./LinuxCheck.sh  

第二种方式:直接在线调用【在线调用就没办法使用报告上传的能力】

bash -c "$(curl -sSL https://raw.githubusercontent.com/al0ne/LinuxCheck/master/LinuxCheck.sh)"  

文件会保存成ipaddr_hostname_username_timestamp.log 这种格式

报告自动上传

如果是批量机器下发,脚本执行后会自动提交到某一个url下,将脚本里面的webhook_url 改成你自己的地址

# 报告上报的地址
webhook_url='http://localhost:5000/upload'

upload_report() {

  # 上传到指定接口
  if [[ -n $webhook_url ]]; then
    curl -X POST -F "file=@$filename" "$webhook_url"
  fi

}

在你的服务器上用Flask起一个服务,接收服务器上报的Markdown报告。

from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    if 'file' not in request.files:
        return "No file part", 400
    file = request.files['file']
    if file.filename == '':
        return "No selected file", 400
    if file:
        filename = file.filename
        file.save(filename)
        return "File successfully uploaded", 200

if __name__ == '__main__':
    app.run(debug=True, host="0.0.0.0", port=9999)

参考

此工具的编写主要参考了以下几款工具/文章并结合个人经验完成

Linenum https://github.com/lis912/Evaluation_tools
https://ixyzero.com/blog/archives/4.html
https://github.com/T0xst/linux
https://github.com/grayddq/GScan

from https://github.com/al0ne/LinuxCheck

  

No comments:

Post a Comment