centos入侵溯源

2024-08-19 14:46:29 浏览数 (2)

一. 查看服务器安装的服务

代码语言:shell复制
#使用命令查看服务器安装的服务,需要重点查看可以对公网开放的常见业务

systemctl list-unit-files --type=service

#或者进行过滤

systemctl list-unit-files --type=service | egrep 'httpd|nginx|mysql|redis|tomcat|jboss|node|java|squid|apache'

二、查看服务日志

apache的日志排查

apache的日志默认路径是/var/log/httpd/ 或 /var/log/apache2

#注:日志名称根据相应环境而不同

分析方式:

1、统计访问量较高的来源IP,参考命令

代码语言:shell复制
#awk '{print $1}' 主要是为了获取日志中的访问来源IP这列
#head -20 是统计访问量较高的前20个IP
cat /var/log/httpd/access_log |awk '{print $1}'|sort | uniq -c | sort -
nr|head -20

2、过滤日志中是否有高危或者漏洞利用记录,参考命令

代码语言:shell复制
cat /var/log/httpd/access_log | egrep 'eval|cmd|func|cgibin|
jndi|excute| |system|exec|passthru|shell_exec|popen|proc_open'

再过滤一下执行恶意命令的IP、执行的恶意请求、响应码,命令如下

代码语言:shell复制
cat /var/log/httpd/access_log | egrep 'eval|cmd|func|cgibin|
jndi|excute| |system|exec|passthru|shell_exec|popen|proc_open'|awk
'{print$1" "$7" "$9}'

3、排查apache的web服务中,后台是否存在恶意登陆情况,参考命令

代码语言:shell复制
cat /var/log/httpd/access_log | egrep 'admin|login'|grep POST
cat /var/log/httpd/access_log | egrep 'admin|login'|grep GET

nginx的日志排查

nginx的日志默认路径是/var/log/nginx/

分析方式:

1、统计访问量较高的来源IP

代码语言:shell复制
#awk '{print $1}' 主要是为了获取日志中的访问来源IP这列
#head -20 是统计访问量较高的前20个IP
cat /var/log/nginx/access.log |awk '{print $1}'|sort | uniq
-c | sort -nr|head -20

2、过滤日志中是否有高危或者漏洞利用记录,参考命令

代码语言:shell复制
cat /var/log/nginx/access.log | egrep 'eval|cmd|func|cgibin|
jndi|excute| |system|exec|passthru|shell_exec|popen|proc_open'

三、 查看系统日志

分析登陆日志

继续分析登陆日志,查看失陷主机是否有其他被入侵的途径

分析方式:

思路是:先查看登陆失败最多的top 20 IP(登陆次数大于5次),然后查看成功登陆的IP中有没有

这20和IP

1、查看登陆失败最多的top 20 IP(登陆次数大于5次)

代码语言:shell复制
grep "Failed password" /var/log/secure | grep -oE "b([0-9]{1,3}.){3}
[0-9]{1,3}b" | sort | uniq -c | sort -nr|head -20

2、其中,/var/log/secure 主要查ssh暴力破解登陆的情况,通过awk、grep这些命令,可以快速的统计和汇总那些ip进行了暴力破坏并成功,下面命令可以快速的过滤出想要的信息

代码语言:shell复制
##1、定位有多少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 | grep -oE "b([0-9]{1,3}.){3}[0-9]
{1,3}b" | sort | uniq -c | sort -nr
#爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/;
print "$1n";}'|uniq -c|sort -nr
##2、登录成功的IP有哪些:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr
| more
##3、增加非法用户如somebody日志:
grep "useradd" /var/log/secure
'''
Jul 10 00:12:15 localhost useradd[2382]: new group: name=somebody, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=somebody, UID=1001,
GID=1001, home=/home/somebody , shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed
for somebody
'''
##4、sudo授权执行日志:
sudo -l
'''
Jul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root ;
COMMAND=/sbin/shutdown -r now
'''
##5、爆破用户名字典(按照登陆失败次数排序)
grep "Failed password" /var/log/secure | awk '{if ($9 == "invalid") print $11;
else print $9}' | sort | uniq -c | sort -nr

四、扫描异常文件

我们对服务器进行扫描,检测是否存在异常的文件(如webshell文件或者其他挖矿脚本文件),从文件中尝试分析服务器被入侵原因

主要借助工具,但是通常情况下从文件中尝试分析服务器被入侵原因成功率不高,因为攻击者通常不会在文件里面留下入侵痕迹

参考命令

代码语言:shell复制
egrep 'eval|$_POST|$_REQUEST|$_GET|assert' /usr/share/nginx/html/*/*
egrep 'eval|$_POST|$_REQUEST|$_GET|assert' /usr/share/nginx/html/*
egrep 'eval|$_POST|$_REQUEST|$_GET|assert' /var/www/html/*/*
egrep 'eval|$_POST|$_REQUEST|$_GET|assert' /var/www/html/*

检测redis配置文件/etc/redis.conf 的安全策略

代码语言:shell复制
cat /etc/redis.conf |grep bind
cat /etc/redis.conf |grep requirepass
cat /etc/redis.conf |grep protected-mode

五、网络设备

网络安全设备如防火墙、行为监测,安全平台如EDR平台、势态感知平台,或者旁路流量记录中查找失陷主机的南北和东西流量日志信息,找到攻击来源

0 人点赞