# 获取系统发行版详情
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 查看网卡状态,如发现有异常的大流量发送情况,就很有可能是挖矿病毒