如何检查服务器是否被入侵,这个不是一句两句能够说得清楚的,因为入侵包括的范围是相当的大的。单靠自己对服务器的一些手动上的基本分析是有一定难度的。基本上大的服务器服务提供运营商一般都会有自己的防御体系和完善的日志,这些系统监控和安全日志即使作为安全人员来说全部看懂,也是非常海量的,因此很多时候都是有着自己的防御系统会进行定期分析,并且会有各种风险操作的评估和提示,但是作为网络运维人员和安全管理人员一般的检查思维是通过如下步骤进行的。
首先判断服务器是什么操作系统,不同操作系统检查方法不一样。
一、windows server 服务器入侵检查
1.检测不正常账号
查找被新增的账号,特别是管理员群组的(Administrators group)里的新增账户:
C:\lusrmgr.msc
C:\>net localgroup administrators
C:\>net localgroup administrateurs
2.检查注册表启动项
在Windoows 注册表里查看开机启动项是否正常,特别一下注册表项:
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\Runonce
HKLM\Software\Microsoft\Windows\CurrentVersion\RunonceEx
3.检查不正常的服务
检查所有运行的服务,是否存在伪装系统服务和未知服务,查看可执行文件的路径。
4.检查账户启动文件夹
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup
5.查看正在连接的会话
C:\net use
6.检查系统不正常网络连接
C:\netstat –nao 5
7.检查自动化任务
C:\schtasks
8.检查windows日志中的异常
检查防火墙、杀毒软件的事件,或任何可疑的记录。检查大量的登入尝试错误或是被封锁的账户。www服务器导入Web访问日志,并查看分析Web访问日志是否完整有攻击痕迹。检查www目录是否存在webshell网页木马,重点检查类似upload目录。
二、linux服务器入侵检查
1.检查谁在登录
运行 w 会输出如下结果:
12:32:00 up 12 days, 5:43, 2 users, load average: 0.05, 0.03, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 110.174.161.11 12:26 0.00s 0.03s 0.02s ssh root@test
root pts/1 178.31.109.12 12:26 0.00s 0.01s 0.00s w
2.检查历史登录用户
使用 last 命令可以查看这些信息。
输出类似这样:
root pts/1 178.31.109.12 Thu Nov 30 12:26 still logged in
root pts/0 110.174.161.11 Thu Nov 30 12:26 still logged in
检查历史运行命令
运行 history 命令会显示他们曾经执行的命令。留意有没有用 wget 或 curl 命令来下载类似垃圾邮件机器人或者挖矿程序之类的非常规软件。
4.检查哪些进程在消耗CPU
只需要运行 top ,系统会显示最消耗cpu的前面几个进程。
5.检查哪些进程在监听网络连接
执行 lsof -i 、netstat -plunt命令,需要留意那些处于 LISTEN 和 ESTABLISHED 状态的进程,这些进程要么正在等待连接(LISTEN),要么已经连接(ESTABLISHED)。如果遇到不认识的进程,使用 strace 和 lsof 来看看它们在做什么东西。
6.检查系统登录日志
Linux用户登录信息放在三个文件中:
/var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间;
/var/log/wtmp:记录当前正在登录和历史登录系统的用户信息,默认由last命令查看;
/var/log/btmp:记录失败的登录尝试信息,默认由lastb命令查看。
三、检查系统的密码文件
查看一下passwd文件,尤其是查看passwd当中是否有一些特权用户,一般系统中Uid为0的用户特权权限较高,可能会存在拿到控制权的可能性,但是能到这一步,我觉得这个入侵的黑客也太傻了,居然还给你留个你能看到的账户。另外还有查看空口令账号,一把这些账号都是用来提升权限用的。
四、就是查看一下进程,看看有没有特殊的进程,最好用进程分析工具来协助分析
一般网络运维人员不论是win系统还是linux运维,系统进程是必须要分析的,因为有些木马工具和病毒都会有自己的进程,隐藏比较深的病毒和木马会将自己的线程挂到正常的进程下面,因此要善于应用进程分析工具。比如inetd进程,需要重点查看,看看是否有用这个进程去启动一些奇怪的程序,一旦有基本上都是被入侵了。
五、检查网络连接和监听端口
检查网络连接和对各个监听端口的分析,也是必须要走的程序。比如:
通过查询访问的端口和异常IP地址进行异常分析也是常用的一种手段。
六、检查系统日志
查看在正常情况下登录到本机的所有用户的历史记录,通过登录账户的时间和登录用户名可以判断是由于系统自身因鉴权或者其他操作登录,还是人为性质的登录,虽然登录日志比较多,但是也会为入侵分析带来一些辅助性的判断依据。一般情况下linux系统下输入在linux下输入ls –al /var/log,既可以看到登录操作日志,对了还要看下系统的syslog进程是否被停用了,因为如果但凡有点技术的黑客都会停止这个进程,来防止log记录。
七、.rhosts和
.forward
这是两种比较著名的后门文件,如果想检查你的系统是否被入侵者安装了后门,不妨全局查找这两个文件,分别进行这两个文件和正常内容的对比。一般要是于异常,说明你的系统已经被攻破。
八、检查系统文件完整性
检查文件的完整性有多种方法,通常我们通过输入ls –l 文件名来查询和比较文件。另外还有很多工具可以帮助你检查系统文件的完整性。另外网上也有很多运维网管写的shell脚本,直接运行脚本就可以很方便的检查系统文件的完整性的,大家可以去找找进行尝试。主要是通过检查读取每个文件的checksum值来判定。
九、内核级后门的检查
对于内核级后门的检查,一般情况下是比较麻烦的,除非你有着很好的技术手段,否则还不如我重新把系统干了重新安装呢。因为需要模块一个个的分析,非常麻烦,而且其关键文件隐藏的也比较深。