0x00 前言
当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。
针对常见的攻击事件,结合工作中应急响应事件分析和解决的方法,总结了一些Linux服务器入侵排查的思路。
0x01 入侵排查思路
一、账号安全
基本使用:
1、用户信息文件/etc/passwd
1 | root:x:0:0:root:/root:/bin/bash |
2、影子文件/etc/shadow
1 | root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7::: |
入侵排查:
1、查询特权用户特权用户(uid 为0)
1 | [root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd |
2、查询可以远程登录的帐号信息
1 | [root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow |
3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
1 | [root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" |
4、禁用或删除多余及可疑的帐号
1 | usermod -L user 禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头 |
二、历史命令
基本使用:
通过.bash_history查看帐号执行过的系统命令
1、root的历史命令
histroy
2、打开/home各帐号目录下的.bash_history,查看普通帐号的历史命令
为历史的命令增加登录的IP地址、执行命令时间等信息:
1)保存1万条命令
1 | sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile |
2)在/etc/profile的文件尾部添加如下行数配置信息:
1 | ######jiagu history xianshi######### |
3)source /etc/profile让配置生效
生成效果: 1 2018-07-10 19:45:39 192.168.204.1 root source /etc/profile
3、历史操作命令的清除:history -c
但此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录。
入侵排查:
进入用户目录下
cat .bash_history >> history.txt
三、端口
使用netstat 网络连接命令,分析可疑端口、IP、PID
netstat -antlp|more
查看下pid所对应的进程文件路径,
1 | 运行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为对应的pid 号) |
四、进程
使用ps命令,分析进程
ps aux | grep pid
五、开机启动项
基本使用:
系统运行级别示意图:
1 | 运行级别 含义 |
查看运行级别命令
runlevel
系统默认允许级别
vi /etc/inittab
id=3:initdefault 系统开机后直接进入哪个运行级别
开机启动配置文件
/etc/rc.local
/etc/rc.d/rc[0~6].d
例子:当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软链接即可
root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh
此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动;如果是K开头的脚本文件,代表运行级别加载时需要关闭的。
入侵排查:
启动项文件:
more /etc/rc.local
/etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/
六、定时任务
基本使用
1、利用crontab创建计划任务
基本命令
crontab -l 列出某个用户cron服务的详细内容
Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务)
crontab -e 使用编辑器编辑当前的crontab文件
如:*/1 * * * * echo “hello world” >> /tmp/test.txt 每分钟写入文件
2、利用anacron实现异步定时任务调度
使用案例
每天运行 /home/backup.sh脚本:
1 | vi /etc/anacrontab |
当机器在 backup.sh 期望被运行时是关机的,anacron会在机器开机十分钟之后运行它,而不用再等待 7天。
入侵排查
重点关注以下目录中是否存在恶意脚本
1 | /var/spool/cron/* |
小技巧:
more /etc/cron.daily/* 查看目录下所有文件
七、服务
服务自启动
第一种修改方法:
chkconfig [–level 运行级别] [独立服务名] [on|off]
chkconfig –level 2345 httpd on 开启自启动
chkconfig httpd on (默认level是2345)
第二种修改方法:
修改/etc/re.d/rc.local 文件
加入 /etc/init.d/httpd start
第三种修改方法:
使用ntsysv命令管理自启动,可以管理独立服务和xinetd服务。
入侵排查
1、查询已安装的服务:
RPM包安装的服务
chkconfig –list 查看服务自启动状态,可以看到所有的RPM包安装的服务
ps aux | grep crond 查看当前服务
系统在3与5级别下的启动项
中文环境
chkconfig –list | grep “3:启用|5:启用”
英文环境
chkconfig –list | grep “3:on|5:on”
源码包安装的服务
查看服务安装位置 ,一般是在/user/local/
service httpd start
搜索/etc/rc.d/init.d/ 查看是否存在
八、系统日志
日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
1 | 日志文件 说明 |
日志分析技巧:
1、定位有多少IP在爆破主机的root帐号:
1 | grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more |
定位有哪些IP在爆破:
1 | 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 |
爆破用户名字典是什么?
1 | grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr |
2、登录成功的IP有哪些:
1 | grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more |
登录成功的日期、用户名、IP:
1 | grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' |
3、增加一个用户kali日志:
1 | Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001 |
4、删除用户kali日志:
1 | Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali' |
5、su切换用户:
1 | Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0) |
sudo授权执行:
1 | sudo -l |
0x03 工具篇
一、Rootkit查杀
chkrootkit
1 | 网址:http://www.chkrootkit.org |
rkhunter
1 | 网址:http://rkhunter.sourceforge.net |
二、病毒查杀
Clamav
1 | ClamAV的官方下载地址为:http://www.clamav.net/download.html |
三、webshell查杀
linux版:
河马webshell查杀:http://www.shellpub.com
深信服Webshell网站后门检测工具:http://edr.sangfor.com.cn/backdoor_detection.html
四、RPM check检查
系统完整性可以通过rpm自带的-Va来校验检查所有的rpm软件包,查看哪些命令是否被替换了:
./rpm -Va > rpm.log
如果一切均校验正常将不会产生任何输出,如果有不一致的地方,就会显示出来,输出格式是8位长字符串,每个字符都用以表示文件与RPM数据库中一种属性的比较结果 ,如果是. (点) 则表示测试通过。
验证内容中的8个信息的具体内容如下:
1 | S 文件大小是否改变 |
如果命令被替换了,如何去还原回来:
文件提取还原过程:
1 | rpm -qf /bin/ls 查询ls命令属于哪个软件包 |