本文介绍了 Linux 服务器入侵排查的思路,包括账号安全、历史命令、端口、进程、开机启动项、定时任务、服务和系统日志等方面。通过分析这些方面,可以更好地发现和解决安全问题。
当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。
针对常见的攻击事件,结合工作中应急响应事件分析和解决的方法,总结了一些 Linux 服务器入侵排查的思路。
一、账号安全:
- 用户信息文件
/etc/passwd
- 用户密码文件
/etc/shadow
- 几个常用命令
who
//查看当前登录用户(tty 本地登陆 pts 远程登录)w
//查看系统信息,想知道某一时刻用户的行为uptime
//查看登陆多久、多少用户,负载
入侵排查:
- 查询特权用户(特权用户uid 为 0)
- 查询可以远程登录的帐号信息
- 除 root 帐号外,其他帐号是否存在 sudo 权限
/etc/sudoers
- 禁用或删除多余及可疑的帐号
二、历史命令
历史操作命令的清除:
history -c
入侵排查:但此命令并不会清除保存在文件中的记录,因此需要手动删除 /用户名/.bash_profile 文件中的记录。
三、端口
使用 netstat 网络连接命令,分析可疑端口、IP、PID
netstat -antlp | more
四、进程
使用 ps 命令,分析进程
ps aux | grep pid
//输入想查看的pid数字入侵排查:也可以使用top查看高使用率的进程进行分析。
五、开机启动项
查看运行级别命令:
runlevel
系统默认允许级别:
vi /etc/inittab
开机启动配置文件:
/etc/rc.local /etc/rc.d/rc[0~6].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 + 路径目录 //查看目录下所有文件
七、服务
服务自启动
第一种修改方法:
chkconfig [--level 运行级别][独立服务名][on|off]
chkconfig –level 2345 httpd on
开启自启动
chkconfig httpd on
(默认 level 是 2345)
第二种修改方法:
- 修改 /etc/re.d/rc.local 文件 加入 /etc/init.d/httpd start
入侵排查:
查询已安装的服务:
chkconfig --list
查看服务自启动状态,可以看到所有的RPM包安装的服务
systemctl list-unit-files
- 查看源码包安装的服务安装位置 ,一般是在 /user/local/
八、系统日志
- 日志默认存放位置:/var/log/
- 查看日志配置情况:more /etc/rsyslog.conf
主要日志文件介绍:
- /var/log/messages 内核及公共消息日志
- /var/log/cron 计划任务日志
- /var/log/dmesg 系统引导开机自检日志
- /var/log/maillog 邮件系统日志
- /var/log/boot.log 记录系统在引导过程中发生的时间
- /var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,用lastlog命令查看
- /var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件,用last命令来查看
- /var/run/utmp 当前用户登录、注销及系统开、关等事件,用w,who,users命令查看
- /var/log/secure 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH多录, su切换用户, sudo授权,甚至添加用户和修改用户密码都会记录
- /var/log/btmp 记录错误登录日志,用lastb命令查看