本文总结Linux服务器入侵排查的基本思路与方法...
0x01 系统排查
1. 系统信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $ lscpu #查看CPU信息
$ uname -a #操作系统信息
$ cat /proc/version #系统版本信息
$ cat /etc/redhat-release #查看系统发行版
$ lsmod #查看模块信息
$ lsblk #列出块设备信息
$ ifconfig eth0 | grep -w inet #显示网卡IP信息
$ curl cip.cc #查看主机公网IP信息
$ hostname #查看系统主机名称
$ cat /etc/resolv.conf #DNS配置查看
|
2. 用户账号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| (1) 查看系统用户信息
$ cat /etc/passwd
用户名:密码加密:用户ID:用户组ID:注释:用户主目录:默认登录shell
最后一列:/bin/bash表示用户状态可登录; /sbin/nologin表示账户状态不可登录
(2) 查询超级权限账户: UID为0
$ awk -F: '{if($3==0)print $1}' /etc/passwd
(3) 查看可登录账户
$ grep '/bin/bash' /etc/passwd
(4) 查看空口令账户
$ awk -F: 'length($2)==0 {print $1}' /etc/shadow
(5) 登录信息查看
$ lastlog | more #查看用户最后登录信息
$ lastb | more #显示用户错误的登录信息
$ last | more #查看用户最近登录信息
$ uptime #查看登陆多久、多少用户,负载
$ who #查看当前登录用户(tty本地登陆 pts远程登录)
$ w #查看系统信息,想知道某一时刻用户的行为
/var/log/wtmp: 存储登录成功的信息
/var/log/btmp: 存储登录失败的信息
/var/log/utmp: 存储当前正在登录的信息
(6) 查看除root账号外其他帐号是否存在sudo权限
$ more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
(7) 禁用或删除多余及可疑的帐号
$ usermod -L user #禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头
$ userdel user #删除user用户
$ userdel -r user #将删除user用户,并且将/home目录下的user目录一并删除
|
3. 启动项
1 2 3 4 5
| $ cat /etc/init.d/rc.local
$ cat /etc/rc.local
$ ls -alt /etc/init.d/ | head
|
4. 定时任务
crontab -u <-l, -r, -e>
1 2 3 4
| -u 指定一个用户 -l 列出某个用户的任务计划 -r 删除某个用户的任务 -e 编辑某个用户的任务
|
1 2 3
| $ crontab -u root -l # 列出root用户的任务计划
$ ls /etc/cron* # 查看/etc目录下任务计划相关文件
|
重点关注目录
1 2 3 4 5 6 7 8 9
| /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/*
|
0x02 进程排查
1. 进程查看
ps
1 2 3 4 5 6 7
| $ ps -elf | grep pid # 以长格式显示系统中的进程信息
$ ps -aux --sort -pcpu | less # 根据cpu使用率进行排序
$ ps -aux --sort -pmem | less # 根据内存使用来升序排序
$ ps -axjf # 以树形结构显示进程
|
top
动态查看进程状态, 可分析CPU占用较高的进程, 排查挖矿木马
实用选项
1 2 3 4 5 6 7 8
| -c: 显示完整命令
-d: 设置信息更新时间, 以秒为单位
-u<用户名>:指定用户名
-p<进程号>:显示指定进程信息
|
交互命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| b: 高亮显示当前运行进程
c: 切换显示命令名称和完整命令行
M: 根据驻留内存大小进行排序
P: 根据CPU使用百分比大小进行排序
T: 根据时间/累计时间进行排序
i: 忽略闲置和僵死进程,这是一个开关式命令
s: 改变两次刷新之间的延迟时间(单位为s)
l: 切换显示平均负载和启动时间信息
m: 切换显示内存信息
t: 切换显示进程和CPU状态信息
w: 将当前设置写入~/.toprc文件中
|
pstree
以树状图的方式展现进程之间的派生关系
实用选项
1 2 3 4 5 6 7 8 9
| -a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示
-h:列出树状图时,特别标明现在执行的程序
-l:采用长列格式显示树状图
-p:显示程序识别码
-u:显示用户名称
|
lsof
查看进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| $ lsof -p pid # 查看指定进程ID已打开的内容
$ lsof -i # 显示所有连接
$ lsof -i:port # 查看与指定端口相关的网络信息
$ lsof -i@ip # 查看与指定IP相关的网络信息
$ lsof -i -sTCP:LISTEN # 找出正等待连接的端口
$ lsof -i | grep -i ESTABLISHED # 找出已经建立的连接
$ lsof -u user # 使用-u显示指定用户打开哪些文件
$ lsof -u ^root # 查看除指定用户以外的其它所有用户所做的事情
$ lsof -c command # 查看指定的命令正在使用的文件和网络连接
$ lsof | grep deleted # 查看被删除的文件信息
$ kill -9 `lsof -t -u user` # 杀死指定用户运行的所有进程
$ lsof -u user -i @ip # 显示用户user连接到指定IP所做的一切
$ lsof +L1 # 显示所有打开的链接数小于1的文件,多表示某个攻击者正尝试通过删除文件入口来隐藏文件内容
|
/proc 文件系统
1
| Linux 内核提供了一种通过 proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制,它以文件系统的方式为访问系统内核数据的操作提供接口,用户和应用程序可以通过 proc 得到系统的信息
|
进程相关项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| /proc/N pid为N的进程信息
/proc/N/cmdline 进程启动命令
/proc/N/cwd 链接到进程当前工作目录
/proc/N/environ 进程环境变量列表
/proc/N/exe 链接到进程的执行命令文件
/proc/N/fd 包含进程相关的所有的文件描述符
/proc/N/maps 与进程相关的内存映射信息
/proc/N/mem 指代进程持有的内存,不可读
/proc/N/root 链接到进程的根目录
/proc/N/stat 进程的状态
/proc/N/statm 进程使用的内存的状态
/proc/N/status 进程状态信息,比stat/statm更具可读性
/proc/self 链接到当前正在运行的进程
|
隐藏进程显示
1 2 3 4 5 6 7 8 9
| step 1: ps -ef | awk '{print}' | sort -n | uniq >1
step 2: ls /proc | sort -n | uniq >2
step 3: diff 1 2
// 有时无法通过ps,top等命令根据pid进行查询,可能是因为攻击者将/proc/pid/ 进行了隐藏
使用 cat /proc/$$/mountinfo 来查看挂载信息
|
2. 线程查看
根据pid查看由进程起的线程
1 2 3 4 5 6 7 8 9 10 11
| ps H -T -p pid
ps -Lf pid
其中SPID就是线程ID,而CMD栏则显示了线程名称
top -H -p pid -H 选项可以显示线程
pstree -acU 推荐,非常全面展示进程与线程间的关系
ps -eLFa # 查看全部线程
|
3. 进程查杀
kill进程
1 2 3 4 5 6 7 8 9
| $ kill -9 pid #强制终止进程
$ killall name #依据进程名称杀死进程
$ killall -u user #杀死指定用户的进程
$ kill -9 -pid # 如果进程起子进程,可以使用此命令,这里pid前有个减号,表示杀掉这个进程组
$ pkill name #杀死指定进程名的进程
|
先挂起再删除
1
| $ ps -elf | grep 'root' | grep '{*}' | grep -v grep | xargs kill -STOP # 针对因存在守护进程无法删除的情况,可先把进程挂起,查杀守护进程后,再将进程删除
|
解除文件占用
1 2 3 4 5
| #针对设置了不可更改权限的文件,先移除i、a属性,再进行删除 lsattr file chattr -i file chattr -a file rm -rf file
|
通过inode删除文件
从windows向linux传输的文件或者攻击者恶意制造的文件,很多会有文件名乱码,无法直接通过乱码的文件名进行删除,可以使用inode来确定文件名,之后删除使用 inode 进行删除
查看inode
删除文件
1 2 3 4 5 6 7 8 9 10 11
| find ./* -inum 12327526 -delete
find ./ -inum 12327526 -exec rm {} \;
find ./* -inum 12327526 -exec rm -i {} \; # 会有一步确认是否删除
find ./* -inum 12327526 -exec rm -f {} \; # 不进行确认直接强制删除)
find ./* -inum 12327526 |xargs rm -f
rm `find ./* -inum 12327526`
|
4. 调试分析
strace
跟踪进程执行时的系统调用和所接收的信号,可跟踪用户进程与 Linux内核之间的交互
1
| 系统调用system call是程序从内核请求服务的一种编程方式,系统调用进入内核,使用trap机制从用户空间切换到内核空间,通过使用glibc系统库完成系统调用
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $ strace -p `pidof AliYunDun` # 依据pid跟踪进程正在进行的系统调用
$ strace -o trace.log ls testdir/ #将输出记录到文件中
$ strace -v ls testdir #在每个系统调用中提供附加信息\
$ strace -f ls testdir #对当前正在跟踪的进程创建的任何子进程进行跟踪
$ strace -e open ls testdir #使用-e标志跟上系统调用的名称
$ strace -e write,getdents ls testdir #查看多个系统调用
$ strace -t ls testdir/ #查看所有的系统调用的时间戳
$ strace -r ls testdir/ #显示执行每个系统调用所花费的时间
|
ltrace
库调用跟踪器,用来跟踪进程调用库函数的情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 用法:ltrace [option ...] [command [arg ...]]
-d 打印调试信息
-f 跟踪子进程
-i 打印指令指针,当库调用时
-p PID 附着在值为PID的进程号上进行ltrace
-S 显示系统调用
-T 输出每个调用过程的时间开销
|
pstack
显示每个进程的栈跟踪
1
| $ pstack pid #pstack 命令必须由相应进程的属主或 root 运行,唯一选项是要检查的进程的 PID
|
0x03 网络排查
netstat/ss
分析可疑端口、可疑IP、可疑PID及程序进程
1 2 3 4 5 6 7 8 9 10 11
| $ sudo netstat -ltpe | more # 查看监听中的网络连接并显示进程ID、进程所有者用户名
$ sudo netstat -antp | grep "ESTABLISHED'' # 查看正在通信中的连接信息
$ sudo netstat -antpe # -n 和 -e 选项连用,显示进程所有者的用户ID 号
$ netstat -ts # 打印出tcp协议下的收发包数量等统计数据
$ watch -d -n0 "netstat -atnp | grep "ESTA" # 监视active状态的连接
$ ss -plat # 检查哪些进程在监听端口
|
网络占用查看
1 2 3 4 5 6 7 8
| # Debian/Ubuntu apt-get install nethogs
# Centos/RHEL yum -y install epel-release yum -y install nethogs
nethogs
|
0x04 服务排查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $ chkconfig --list #查看系统运行的服务
# 0-6表示等级
1 单用户模式
2 无网络连接的多用户命令模式
3 有网络连接的多用户命令模式
4 表示不可用
5 带图形界面的多用户模式
6 重新启动
$ service --status-all | grep running | more #显示正在运行的服务
$ systemctl list-unit-files | grep enabled | more #列出 systemd 下正在运行服务
|
0x05 文件查找
1. 基础命令
locate
1 2 3 4 5 6
| -b 只搜索文件名,不搜索文件夹名 -i 忽略大小写 -r "" 正则匹配
安装命令:yum -y install mlocate 执行前先运行:updatedb
|
find
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 默认文件和目录都会进行搜索,名称要准确 ,支持正则,可以使用通配符
-type 参数指定
d 目录 f 文件 l 符号链接 s socket
基础使用 find / -name evil.sh
忽略大小写 find / -iname evil.sh
查找时排除某个/类文件 find / -name *evil* ! -name *.log
查找时排除目录 find / -name *evil* -path "/root/home/aaa" -prune
查找目录 find / -type d -name eval
|
2. 敏感目录
1 2 3 4 5 6 7 8 9
| (1) 临时目录/tmp、/var/tmp、/dev/shm下的文件,目录权限是1777,容易被上传木马文件
(2) 命令目录/usr/bin、/usr/sbin等下的二进制文件容易被替换,替换后可下载busybox使用被替换命令
$ ls -alt /usr/bin | head #按照最新修改时间显示,排查可疑文件
(3) ~/.ssh、/etc/ssh 经常作为一些后门配置的路径,需重点排查
$ cat ~/.ssh/authorized_keys #检查公钥是存在否异常写入
|
3. 基于时间点查找
1 2 3 4 5 6 7 8 9 10 11 12
| 列出攻击日志内变动的文件,排查恶意软件
$ ls --full-time ./ | sed -n '/2019-01-01/p' #查找当前文件夹下的某个日期产生的文件
$ find / -ctime 0 -name ".sh" #查找一天内新增的sh文件
-type b/c/d/f/l/p: 查找快设备、字符设备、目录、普通文件、符号链接、管道 -mtime -n +n # 按文件更改时间来查找文件,-n 指 n 天以内,+n 指 n 天前 -atime -n +n # 按文件访问时间来查找文件,-n 指 n 天以内,+n 指 n 天前 -ctime -n +n # 按文件创建时间来查找文件,-n 指 n 天以内,+n 指 n 天前
$ find /tmp -type f -amin -10 -print #打印出10分钟内访问的所有文件
|
4. 根据文件大小搜索
按照大小寻找文件 -size ,参数后单位可以为:
1 2 3 4 5 6
| b 512-byte block c bytes w two-byte words k M G
|
1 2 3 4 5
| $ find / -size -1223124c -size +1223122c -exec ls -id {} \; #搜索1223123大小的文件,盖茨木马
$ find /usr/bin -type f -size 2k # 查找大小等于2KB的文件
$ find / -size +10MB -20M # 寻找 10M到20M之间的文件
|
5. 查找文件内容
grep [OPTIONS] PATTERN [FILE…]
正则表达式相关参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| -E 扩展了正则表达式,支持了以下几种规则:
+ ? a|b () x{m} x{m,} x{m,n}
-F 该参数后的正则表达式字符串中所有字符串都没有特殊含义,仅仅是其本身
-P 使用 perl 正则表达式
-e 正则表达式中存在 -- 的,默认会被识别为参数,使用 -e 参数可以将 -- 认定为正则表达式中的字符
-f file 从文件中加载正则
-i 忽略大小写
-w 只匹配完整的单词
-x 匹配整行
-z 跨行匹配
|
杂项
1 2 3
| -s 禁止输出因文件不存在或文件没有读权限而产生的错误信息 -v 反转结果,不显示制定的正则 -V 版本信息
|
输出控制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| -m NUM 匹配到NUM行后停止 -b 打印匹配的行在文件中的字节偏移量 -n 显示匹配的行号 -H 批量匹配时,显示匹配的文件名,默认参数 -h 与 H 相反,不显示文件名 -o 只输出匹配到的字符 -q 不显示任何东⻄ -a 匹配二进制数据 -I 不匹配二进制的内容 -d action 目录操作,读取(read),递归(recurse),跳过(skip) -D action 设置对设备,FIFO,管道的操作,读取(read),跳过(skip) -r 递归,不会搜索符号连接内的内容,所以可以尽量使用 -R -R 递归的同时可以设置一些选项,比如排除一些目录等 -L 显示未匹配到的文件名 -l 只显示匹配到的文件名 -c 打印每一个文件中匹配结果的行数
|
文本控制
1 2 3
| -B <NUM> 显示查找到的行前的N行的内容 -A <NUM> 显示查找到的行后的N行的内容 -C <NUM> 显示查找都的行前后各N行的内容
|
常⻅使用方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| 查找某个文件中的字符串 grep "str" evil.sh 在某个目录中的文件中搜索某个正则表达式 grep "str" /root/xxx/* 递归在某个目录下所有文件中进行查找 grep -rn "str" /root/xxxx/ 查找多个字符 grep "str1\|str2" /root/xxxx/* grep -E "str1|str2" /root/xxxx/* grep -e "str1" -e "str2" /root/xxxx/* 查找同时存在两个字符 grep -E 'str1.*str2' /root/xxxx/* 只搜索部分文件 grep 'abc' -r --include=*.conf /root/xxxx grep 'abc' -r --include="*.{conf,config}" /root/xxxx 排除部分文件 grep 'abc' --exclude=*.elf /root/xxxx grep 'abc' --include=*.conf --exclude=*demo.conf 全盘搜索某个表达式 grep -Rn -i "str" /
|
6. 特殊文件匹配
webshell匹配
1
| $ find /var/www/ -name "*.php" |xargs egrep 'assert|phpspy|c99sh|milw0rm|eval|\(gunerpress|\(base64_decoolcode|spider_bc|shell_exec|passthru|\(\$\_\POST\[|eval \(str_rot13|\.chr\(|\$\{\"\_P|eval\(\$\_R|file_put_contents\(\.\*\$\_|base64_decode'
|
特殊权限文件查找
1 2 3 4 5 6 7 8
| $ find /tmp -perm 777 # 打印出权限为777的文件, -perm选项指明find应该只匹配具有特定权限值的文件
$ find / -type f -user root -print # 打印出用户root拥有的所有文件, 选项-user USER找出由某个特定用户所拥有的文件
$ find / -type f -perm -04000 -ls -uid 0 2>/dev/null # 查找具有SUID位文件 $ find / -perm -u=s -type f 2>/dev/null
$ find / -perm -g=s -type f 2>/dev/null # 查看具有SGID位文件
|
隐藏文件查找
1
| $ ls -art /var/www/html | grep "^\." # 查找web目录下以"."开头的具有隐藏属性的文件
|
7. 二进制文件分析
1 2 3 4 5 6 7 8 9 10 11 12 13
| (1) file: 确定文件类型
(2) ldd: 打印共享对象依赖关系, 即查询可执行程序所依赖的库和所在路径
(3) strings: 打印二进制文件中的可打印字符的字符串
(4) readelf: 显示有关ELF文件的信息
(5) hexdump: 以 ASCII、十进制、十六进制或八进制显示文件内容
(6) objdump: 从对象文件中显示信息,读取二进制或可执行文件,并将汇编语言指令转储到屏幕上
(7) nm: 列出对象文件中的符号,从二进制文件中识别变量和函数
|
0x06 日志分析
1. 日志介绍
日志默认存放位置:/var/log/
查看日志配置情况:less /etc/rsyslog.conf
日志文件 |
说明 |
/var/log/cron |
系统定时任务相关的日志 |
/var/log/secure |
记录用户登录验证和授权的信息,涉及账号和密码的程序都会记录 |
/var/log/auth.log |
记录系统授权信息,如用户登录和权限机制等 |
/var/log/btmp |
记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看 |
/var/log/lastlog |
记录系统中所有用户最后一次登录时间的日志,使用lastlog命令查看 |
/var/log/wtmp |
永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件,使用last命令来查看 |
/var/log/utmp |
记录当前已经登录的用户信息,用w,who,users等命令来查询 |
/var/log/dmesg |
记录系统在开机时内核自检的信息 |
/var/log/messages |
记录系统启动后的信息和错误日志 |
2. 登录分析
1 2 3 4 5 6 7 8 9 10 11
| (1) 登录成功IP统计
$ grep -i Accepted /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
(2) 查看登录成功的日期、用户名、IP
$ grep "Accepted" /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
(3) 定位有多少IP在爆破主机的root帐号
$ grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
|
3. Web日志分析
Apache 日志
1 2 3 4 5 6 7 8 9 10 11
| (1) apache日志文件位置 /var/log/httpd/access.log # Red Hat/CentOS Apache访问日志位置 /var/log/apache2/access.log # Debian/Ubuntu Apache访问日志文件位置
(2) 日志位置定位
$ grep -i CustomLog /etc/httpd/conf/httpd.conf
$ locate access.log access_log | grep httpd
$ locate access.log access_log | grep apache
|
Nginx 日志
1 2 3 4 5 6 7 8 9
| 日志定位
$ yum install mlocate && updatedb #安装locate所在文件包并更新搜索数据库
$ locate access.log | grep nginx #定位nginx访问日志
$ locate error.log | grep nginx #定位nginx错误日志
$ grep 'access.log' `locate nginx.conf` #根据配置文件定位日志
|
日志分析技巧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| (1) 列出当天访问次数最多的10个IP
$ awk -F '-' '{print $1}' log_file | uniq -c | sort -rn | head -10
(2) 查看当天有多少个IP访问
$ awk '{print $1}' log_file | sort -u | wc -l
(3) 查看每一个IP访问了多少个页面:
$ awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file
(4) 将每个IP访问的页面数进行从小到大排序:
$ awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n
(5) 查看某一个IP访问了哪些页面:
$ grep ^1.1.1.1 log_file| awk '{print $1,$7}'
(6) 去掉搜索引擎统计当天的页面
$ awk '{print $12,$1}' log_file | grep ^\"Mozilla | awk '{print $2}' |sort | uniq | wc -l
(7) 查看2018年11月11日11时这一个小时内有多少IP访问
awk '{print $4,$1}' log_file | grep 11/Nov/2018:11 | awk '{print $2}'| sort -u | wc -l
(8) IP 统计
$ grep '11/Nov/2018' /tmp/myid.access.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -r -n | head -n 10
(9) 网段统计
$ cat /www/logs/www/access.2018-11-11.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3".0"}' | sort | uniq -c | sort -r -n | head -n 20
(10) 统计浏览器
$ cat /www/logs/example.com/access.2018-11-11.log | grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko|Maxthon' | sort | uniq -c | sort -r -n | head -n 100 | more
(11) URL访问量统计
$ cat /www/logs/access.2018-11-11.log | awk '{print $7}' | egrep '\?|&' | sort | uniq -c | sort -rn | more
(12) 删除一个月前日志
$ rm -f /www/logs/access.log.$(date -d '-1 month' +'%Y-%m')*
|
0x07 工具总结
1. Busybox
Busybox 静态编译,可检测劫持了动态链接库的隐藏病毒
安装运行
1 2 3 4 5
| $ wget https://busybox.net/downloads/binaries/1.30.0-i686/busybox
$ chmod +x busybox
$ ./busybox commond
|
2. Rootkit查杀
chkrootkit Linux下rootkit检测工具
下载运行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $ wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
$ tar zxf chkrootkit.tar.gz
$ cd chkrootkit-*
$ make sense
$ cd ..
$ cp -r chkrootkit- /usr/local/chkrootkit
$ rm -r chkrootkit-
$ /usr/local/chkrootkit/chkrootkit
|
rkhunter 一款用于检测Liunx系统是否感染rootkit的工具
下载运行
1 2 3 4 5 6 7
| $ wget https://jaist.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.6/rkhunter-1.4.6.tar.gz
$ tar zxvf rkhunter-1.4.6.tar.gz
$ cd rkhunter-1.4.4
$ ./install.sh --install
|
rootkit检测
1 2 3
| $ rkhunter -checkall #执行rootkit预定库,来检测本地系统文件
$ rkhunter --checkall --skip-keypress #--skip-keyperss参数来自动持续检测,一直到结束
|
3. 病毒查杀
ClamAV Linux平台上的开源反病毒引擎,病毒库较丰富,更新频率高
下载运行
1 2 3 4 5 6 7
| $ yum install epel-release -y
$ yum -y install clamav
$ freshclam # 更新病毒库
$ clamscan -r /opt # 扫描目录
|
病毒库更新
1 2 3 4 5 6
| $ cd /var/lib/clamav $ wget http://database.clamav.net/main.cvd $ wget http://database.clamav.net/daily.cvd $ wget http://database.clamav.net/bytecode.cvd $ chown clamav:clamav *
|
4. 威胁取证
5. webshell查杀
6. 审计检查
Lynis:用于UNIX系统的安全审计工具
1 2 3 4 5 6 7
| $ lynis show commands # 查看 Lynis 中所有可用的命令
$ lynis audit system # 审计系统的安全状况,返回一份详细的报告 Lynis 使用颜色编码使报告更容易解读 绿色:一切正常 黄色:跳过、未找到,可能有个建议 红色:你可能需要仔细看看这个
|
7. 工具合集