安全运维 - Linux系统攻击回溯
入侵排查思路 (1)- 日志分析
日志分析 默认日志路径: /var/log 查看日志配置情况: more /etc/rsyslog.conf 重要日志: 登录失败记录: /var/log/btmp 最后一次登录: /var/log/lastlog 登录成功记录: /var/log/wtmp 登录日志记录: /var/log/secure 日志分析常用命令: grep -rn "hello,world!" cat input_file | tail -n + 1000 | head -n 2000(显示1000-2999行) find /etc -name init #在目录/etc中查找文件init sed -i '153,$d' .bash_history #删除历史操作记录,只保留前153行 grep -C 5 foo file #显示file文件里匹配foo那行以及上下5行 定位有多少IP在爆破主机的root账号 grep "Failed password for root" /var/log/secure | awk '{print $11}'| sort | uniq -c | sort -nr | more 爆破用户名字典 grep "Failed password" /var/log/secure|perl -e 'while($_=<>){/for(.*?) from/;print "$1\n";}'|uniq -c | sort --nr 登录成功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}' 软件安装升级卸载日志: more /var/log/yum.log
入侵排查思路(2)- 账号安全
用户信息文件: /etc/passwd 影子文件: /etc/shadow who #查看当前登录用户(tty本地登录,pts远程登录) w #查看系统信息,想知道某一时刻用户的行为
入侵排查:
查询特权用户(uid为0): awk -F: '$3==0{print $1}' /etc/passwd
查询可以远程登录的账号信息: awk '/\$1|\$6/{print $1}' /etc/passwd
禁用或删除多余可疑的账号:
usermod -L user #禁用账号,账号无法登录
userdel -r user #将删除user用户,并且将/home目录下的user目录一并删除
入侵排查思路(3)- 历史命令
root的历史命令: history 其他账号的历史命令: /home各账号目录下的 .bash_history 历史操作命令的清除: history -c 入侵排查: 进入用户目录: cat .bash_history >> history.txt
入侵排查思路(4)- 端口&进程&开机启动项
检查异常端口: 使用netstat网络连接命令,分析可疑端口、IP、PID netstat -antlp|more 检查异常进程: 使用ps命令,分析进程 ps aux | grep pid 使用 netset 和 ps 等命令时,可以灵活配合 grep命令获取信息 netstat -anp | grep -i listen lsof -i:port #进程和端口对应关系 ps -aux查看进程信息(ps -ef 对于反弹shell,更便于发现) 检查开机启动项: 系统默认运行级别: vi /etc/inittab 开机启动配置文件: /etc/rc.local 入侵排查: 启动项文件: more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/ 定时任务 crontab -l 列出某个用户cron服务的详细内容 crontab -r 删除某个用户 cront任务(删除所有的计划任务) crontab -e 使用编辑器编辑当前的crontab文件 重点关注以下目录是否存在恶意脚本: /var/spool/cron/* /etc/crontab /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/ /etc/anacrontab /var/spool/anacron/* more /etc/cron.daily/* #查看目录下所有文件 系统服务 服务自启动: 修改 /etc/re.d/rc.local 文件,加入 /etc/init.d/httpd start 查询RPM包安装的服务: chkconfig --list #查询服务自启动状态,可以看到所有的RPM包安装的服务 ps aux | grep crond #查看当前服务 系统在3和5级别下的启动项 中文环境 chkconfig --list | grep "3:启动\|5:启动" 英文环境 chkconfig --list | grep "3:on\|5:on" 查询源码包安装的服务: 查看服务安装位置,一般在 /user/local/ 搜索 /etc/rc.d/init.d/ 查看是否存在 检查异常文件 查看敏感目录,如 /tmp目录下的文件,同时注意隐藏文件夹,以“..”为名称的文件夹具有隐藏属性 得到发现WEBSHELL、远控木马的创建时间,找出同一时间创建的文件 find /opt -iname "*" -atime 1 -type f #找出 /opt 下一天前访问过的文件 针对可疑文件可以使用 stat进行创建修改时间