Linux应急响应

# 获取系统发行版详情  
cat /etc/os-release  
# 检查当前内核版本  
uname -r
# 监控活跃网络连接  
netstat -tulnp  
# 检查当前防火墙配置  
iptables -L -n -v

定时任务

# 检查系统计划任务  
cat /etc/crontab  
# 审查用户计划任务  
crontab -l -u <username>

入侵排查

账号安全

cat /etc/passwd 查看是否存在多个用户 id 用户组 id 为 0 的用户(一般只有 root 用户的用户 id 和用户组 id 为 0) 是否存在陌生用户

who 查看当前登录用户(tty 本地登陆 pts 远程登录)

w 查看系统信息,想知道某一时刻用户的行为

uptime 查看登陆多久、多少用户,负载

1、查询特权用户特权用户 (uid 为 0)

awk -F: '$3==0{print $1}' /etc/passwd

2、查询可以远程登录的帐号信息

awk '/\$1|\$6/{print $1}' /etc/shadow

3、除 root 帐号外,其他帐号是否存在 sudo 权限。如非管理需要,普通帐号应删除 sudo 权限

more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"

4、禁用或删除多余及可疑的帐号

usermod -L user    	禁用帐号,帐号无法登录,/etc/shadow 第二栏为! 开头
userdel user       	删除 user 用户
userdel -r user    	将删除 user 用户,并且将/home 目录下的 user 目录一并删除

日志分析

注意:/var/log/secure 是 centos 系统, Debian 需要替换为 /var/log/auth.log

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|perl -e 'while ($_=<>){ /for (.*?) from/; print "$1\n";}'|uniq -c|sort -nr

2、登录成功的 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}' 

历史命令

查看历史命令:histroy

通过打开 .bash_history 文件查看(或者用 zsh 的话就是 .zsh_history

清除历史命令:history -c,但此命令并不会清除保存在文件中的记录,因此需要手动删除文件中的记录。

进程和端口

通过 top、netstat、ps 命令进行排查

通过进程 pid 找到所对应的进程文件路径

# 注意:$PID 为对应的 pid 号
ls -l /proc/$PID/exe
file /proc/$PID/exe
lsof -p $PID

流量状态:使用 ifconfig 查看网卡状态,如发现有异常的大流量发送情况,就很有可能是挖矿病毒