基本流程:
准备:制度制定、工具准备、日志准备
检测:什么类型的问题,受影响系统及严重程度
抑制:限制攻击波及范围:封堵外网IP
根除:对原因进行分析,避免同一个问题再犯
恢复:将业务恢复正常水平:备份数据,重装系统
跟踪:对整改措施进行落实,持续跟踪
P准备:即在事件为发生是的准备工作,包括策略、计划、规范文档即具体的技术工具和平台
D检测:初步判断是什么类型的问题,受影响的系统及严重程度。
C抑制:限制攻击、破坏所波及的范围,通俗讲叫止血
E根除:对事件原因进行分析,彻底解决问题,避免再次犯错。
R恢复:把业务恢复至正常水平
F跟踪:针对事件对整改措施进行落实并监控是有有异常,称之为安全运营中对持续改进。
基本思想
保护现场:做取证分析,虚机做快照,备份日志
默认不可信:自带命令(检查命令是否被替换,使用自己的命令做排查)
靠谱的人做事:能力问题
交叉检查:排查面
自动化工具辅助
对抗无止境、备份数据、重装系统
全面排查、总结反思:为什么出现这种情况,排查整个业务线上的风险点,推测验证各个隐蔽痕迹
lsof -c sshd 显示sshd进程现在打开的文件
lsof -p 1182 显示进程号文件的打开情况
lsof +d /tmp 显示目录下被进程打开的文件
lsof +D /tmp 递归显示目录下被进程打开的文件
lsof -i :22 显示22的连接信息
ps
a 显示当前终端下的进程
u 以用户为主的显示方式
x 显示所有进程
grep
-i 忽略大小写
-v 不包含匹配字符
grep root /etc/passwd 提取包含root的信息
egrep "root|cntf" /etc/passwd 过滤含有root或者cntf这两个关键字
find /etc/ -name passwd
find /etc/ -perm 777 查找权限为777的文件
find /etc/ -perm -700 -exec ls -l {} \; 查找文件权限为700的文件,并详细显示
find path -mtime +n 大于n天
find path -mtime -n 小于n天
md5计算md5值,比对系统文件命令是否被替换
strings 字符显示文件
strace 进程文件跟踪
查看计划任务
crondtab服务
systemctl status crond 查看服务状态
systemctl start crond
systemctl stop crond
systemctl enable crond 开机启动服务
systemctl disable crond 关闭开机启动服务
crontab
-l 列出crontab
-u 指定用户
-e 编辑crontab
系统默认的crontab目录
/etc/cron.d
/etc/cron.hourly
/etc/cron.daily
/etc/cron.monthly
/etc/cron.weekly
/etc/crontab
/etc/cron.d
/etc/cron.d
/var/spool/cron 用户添加的启动项
/var/log/cron cron日志 tali -n 30 /var/log/cron 查看最后30行日志
添加crontab(每分钟执行一次)
crontab -e
***** date >> /tmp/crontab
rsylog服务
日志类型
auth(security),authpriv:授权和安全的消息
kern:来自linux内核的消息
mail:来自mail子系统产生的消息
cron:cron守护进程相关的信息
daemon:守护进程产生信息
news:网络消息子系统
lpr:打印相关的日志信息
user:用户进程相关的信息
local10 to local17:保留,本地使用
配置文件
/etc/rsyslog.conf
/etc/rsyslog.d
登录相关的日志
secure 记录安全相关的信息
lastlog 用户最后一次登录时间,使用lastlog命令查看
wtmp 永久记录每个用户登录、注销及系统启动、关机的事件,使用last命令查看
btmp 尝试登录且失败的日志 使用lasttb命令查看
message 各种系统守护进程、用户程序和内核相关信息
cron crontab日志
audit/* audit日志,监控系统调用,查webshell调用比较好用
boot.log 启动信息相关的日志
yum.log yum安装rpm的日志
查看开机启动服务
systemctl list-unit-files --type=service | grep enabled
systemctl stop/start rsyslog 停止/启动服务
systemctl disable/enable rsyslog 开机不启动/启动服务
启动脚本
vim /usr/lib/systemd/system/rsyslog.service
vim /etc/init.d/network
关注 /etc/init.d /usr/lib/systemd/system/两个目录
计算MD5值,作比对,判断脚本是否被修改
1.系统基本信息
1.1.内核版本&系统版本
uname -a >>tmp
cat /etc/redhat-release >>tmp
1.2.安装时间
stat /lost+found/
stat /root/anaconda-ks.cfg >>tmp
1.3.主机名
cat /etc/hostname >>tmp
1.4.系统目前安装的rpm安装包
获取当前系统所有的rpm安装包
rpm -qa >>rpm.all
校验所有rpm包,修改过的文件会输出出来
rpm -V -a >>rpm.check
校验个别使用的rpm包
rpm -V -f /bin/ls
1.5.防火墙规则
iptables-save >path
1.6.当前进程
ps -aux >>ps
ls /proc
二者对比可以发现隐藏的进程
1.
1.7.查看当前内核加载的模块,查rookit
lsmod >>lsmod
2.网络相关信息
2.1.网卡信息
ip addr
2.2.DNS信息
cat /etc/resolv.conf 将流量引到恶意地址
2.3.路由表
route -n
2.4.arp表 确认arp攻击
arp -a
2.5.当前网络的连接状态
netstat -anlpteu >network
2.6.hosts文件
cat /etc/hosts
3.日志信息
3.1crontab日志
cp -R /var/log/cron* . 递归拷贝
3.2 mail日志
cp -R /var/log/mail* .
3.3 mysql日志
cp -R /var/log/mysqld.log* .
3.4 yum日志
cp -R /var/log/yum.log* .
3.5 登录信息
cp /var/log/secure* .
cp /var/log/lastlog . lastlog
cp /var/log/wtmp . last
cp /var/log/btmp . lastb
4.用户信息
4.1
mkdir /tmp/user
cp /etc/passwd .
cp /etc/shadow .
cp /etc/group .
4.2
/home/下的目录
cp -Ra /home/* .
cp -Ra /root/* .
5.关键文件
5.1.一下关键命令的md5、三个time时间
ls、ps、lsof、netstat、ss、pstree、sshd、ssh
检查步骤
which ps
md5sum /usr/bin/ls
stat /usr/bin/ls
md5sum `which ps`
stat `which ps` ---------查看modify时间
5.2.关键目录(所有用户可读可写)
ls -laR /tmp
ls -laR /var/tmp
ls -laR /dev/shm
5.3.系统关键文件
vim /etc/profile等等
6.服务、开机启动服务、计划任务相关
6.1.系统支持的服务
chkconfig --list
systemctl list-unit-files --type=service
6.2系统支持的开机启动的服务
chkconfig --list |grep 'on'
systemctl list-unit-files --type=service |grep enabled --图形界面下开机启动的服务
6.3.开机启动脚本
ls -l /etc/init.d
/etc/systemd/system/multi-usr.target.wangts/* --------------图形模式
/etc/systemd/system
6.4./etc/rc.local
cat /etc/rc.local
6.5./etc/rc*.d下的内容
ls -R /etc/rc*.d
6.6.系统和每个用户的crontab内容(计划任务)
cat /var/spool/cron/* ---用户添加的crontab
cat /etc/crontab
cat /etc/cron.d/*
cat /etc/cron.daily/*
cat /etc/cron.hourly/*
cat /etc/cron.weekly/*
cat /etc/cron.monthly/*
7.历史命令
7.1
history >/tmp/history
7.2
每个用户目录下的.bash_history
cp /root/.bash_history /tmp/root_bash_history
cp /home/test/.bash_history /tmp/test_bash_history
8.用户登录相关
8.1每个用户目录下的.ssh文件
cd /root
ls -al
cat .ssh
8.2登录(退出)时间、登录用户、来源IP(last)
8.3每个用户登录之后的环境变量
8.4用户退出时执行的命令
8.5当前有哪些用户登录
9.PAM检查---认证机制
9.1配置文件检查
cp /etc/pam.d/sshd .
cp /etc/pam.d/login.
cp /etc/pam.d/passwd .
cp /etc/pam.d/password-auth .
cp /etc/pam.d/password-auth-ac .
9.2对应so文件的md5和3个time,看是否被替换
ls /lib64/security/*
stat 文件,查看modify时间
10.mysql操作相关
每个用户家目录下是否存在.mysql_history