检测Linux系统是否被入侵
入侵者在入侵成功后,往往会留下后门以便再次访问被入侵的系统,而创建系统账号是一种比较常见的后门方式。在做入侵排查的时候,用户配置文件/etc/passwd和密码配置文件/etc/shadow是需要去重点关注的地方。
查询特权用户特权用户(uid 为0)
1 | > awk -F: '$3==0{print $1}' /etc/passwd |
查找远程可以登录的账户
1 | > awk '/\$1|\$5|\$6/{print $1}' /etc/shadow |
- $1:MD5(长度 22个字符)
- $5:SHA-256(长度 43 个字符)
- $6:SHA-512(长度86 个字符)
检查sudo权限
1 | > cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL" |
删除或锁定账号
通过上面的步骤可以找到可疑的账号
1 2 3 4 | > usermod -L rooot #禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头 > userdel rooot #删除user用户 > userdel -r rooot #将删除root用户,并且将/home目录下的root目录一并删除 |
查看当前登录系统的信息
1 2 3 4 | > who #查看当前登录用户(tty本地登陆 pts远程登录) > w #查看系统信息,想知道某一时刻用户的行为 > uptime #查看登陆多久、多少用户,负载 |
检查异常端口
使用netstat 网络连接命令,分析可疑端口、IP、PID等信息。
1 | > netstat -tunlp | less |
抓包分析
1 | > tcpdump -c 10 -q //精简模式显示 10个包 |
使用ps命令检查可疑的进程
1 | > ps -ef |
查超系统中占用资源最高的资源
1 | > top |
发现异常进一步检查
1 2 3 4 5 | > ps eho command -p $PID #查看该进程启动的完整命令行 > readlink /proc/$PID/cwd #查看该进程启动时候所在的目录 > ls -l /proc/$PID/exe #查看下pid所对应的进程文件路径 > strings -f /proc/$PID/environ | cut -f2 -d '' #查看该进程启动时的完整环境变量: > lsof -p $PID #列出该进程所打开的所有文件 |