如何判断服务器是否被入侵了?
前言
暴露在公网的服务器多多少少都会遇到被“侵犯”的机遇。如何深入了解“入侵”以及检查“入侵”,不着急,小编给大家简单Solo下。
什么叫“入侵”
服务器被入侵不是一件小事,一旦被入侵了重要的服务,会产生不可预估的风险。
服务器入侵可分为以下四种:
1.未经授权;
2.获取敏感数据;
3.篡改数据;
4.控制资产。
如何判断自己的服务器是否被入侵了呢?
小编先来简单介绍一下小编个人在用的云主机的配置情况。
云商:睿江云
节点选择:浙江B(经典网络、SSD磁盘性能高)
云主机配置:2核4G(2核2G也支持,但会存在内存不足情况)
网络选择:经典网络(方便快捷、实惠)
带宽:5M
系统版本:Centos7.6
01 查看服务器当前登录用户
最基础的方法之一,查看当前登录服务器的用户,如有异常用户或IP地址正在登录,说明服务器很可能被入侵(侵犯),命令的话,使用w,who,users等都可以:
02 查看服务器历史登录痕迹
服务器会记录曾经登录过的用户和IP,以及登录时间和使用时长,如果存在异常用户或IP地址曾经登录过,就要注意了,服务器很可能被入侵,当然,对方为了掩盖登录,会清空/var/log/wtmp日志文件,要是你运行了last命令,只有你一个人登录,而你又从来没清空过记录,说明被入侵了:
03 查看异常消耗CPU进程
非异常情况下,服务器被入侵后,对方通常会执行一些非常消耗CPU任务或程序,这时你就可以运行top命令,查看进程使用CPU的情况,如果有异常进程非常消耗CPU,而你又从来没有执行过这个任务,说明服务器很可能被入侵了:
04 检查服务器系统进程
消耗CPU不严重或者未经授权的进程,通常不会在top命令中显示出来,这时你就需要运行“ps auxf”命令检查所有系统进程,如果有异常进程在后台悄悄运行,而你又从来没有执行过,这时就要注意了,服务器很可能被入侵了:
05 查看端口、进程网络连接
通常攻击者会安装一个后门程序(进程)专门用于监听网络端口收取指令,这些进程在等待期间不会消耗CPU和带宽,top命令难以发现,这时你就可以运行“netstat -plunt”命令,查看当前系统端口、进程的网络连接情况,如果有异常端口开放,就需要注意了,服务器很可能被入侵:
检查网络连接和对各个监听端口的分析,也是必须要走的程序。比如:
输入netstat -an,列出本机所有的连接和监听的端口,查看有没有非法连接。
输入netstat –rn,查看本机的路由、网关设置是否正确。
输入 ifconfig –a,查看网卡设置。
通过查询访问的端口和异常IP地址进行异常分析也是常用的一种手段。
06 检查系统的密码相关文件
查看一下passwd文件,尤其是查看passwd当中是否有一些特权用户,一般系统中Uid为0的用户特权权限较高,可能会存在拿到控制权的可能性,但是能到这一步,我觉得这个入侵的黑客也太傻了,居然还给你留个你能看到的账户。另外还有查看空口令账号,一把这些账号都是用来提升权限用的。
首先从明显的入手,查看一下passwd文件,ls –l /etc/passwd查看文件修改的日期。
检查一下passwd文件中有哪些特权用户,系统中uid为0的用户都会被显示出来。
07 检查系统日志
查看在正常情况下登录到本机的所有用户的历史记录,通过登录账户的时间和登录用户名可以判断是由于系统自身因鉴权或者其他操作登录,还是人为性质的登录,虽然登录日志比较多,但是也会为入侵分析带来一些辅助性的判断依据。一般情况下linux系统下输入在linux下输入ls –al /var/log,既可以看到登录操作日志,对了还要看下系统的syslog进程是否被停用了,因为如果但凡有点技术的黑客都会停止这个进程,来防止log记录。
命令last | more查看在正常情况下登录到本机的所有用户的历史记录。但last命令依赖于syslog进程,这已经成为入侵者攻击的重要目标。入侵者通常会停止系统的syslog,查看系统syslog进程的情况,判断syslog上次启动的时间是否正常,因为syslog是以root身份执行的,如果发现syslog被非法动过,那说明有重大的入侵事件。
在linux下输入ls –al /var/log
在solaris下输入 ls –al /var/adm
检查wtmp utmp,包括messgae等文件的完整性和修改时间是否正常,这也是手工擦除入侵痕迹的一种方法。
08 .rhosts和.forward
这是两种比较著名的后门文件,如果想检查你的系统是否被入侵者安装了后门,不妨全局查找这两个文件,分别进行这两个文件和正常内容的对比。一般要是于异常,说明你的系统已经被攻破。
这是两种比较著名的后门文件,如果想检查你的系统是否被入侵者安装了后门,不妨全局查找这两个文件:
find / -name “.rhosts”
find / -name “.forward”
09 检查系统文件完整性
服务器检查相关文件的完整性有多种方法,通常我们通过输入ls -l 文件名来查询和比较文件,这种方法虽然简单,但还是有一定的实用性。但是如果ls文件都已经被替换了就比较难搞。在LINUX下可以用rpm -V rpm –qf 文件名 来查询,国家查询的结果是否正常来判断文件是否完整。在LINUX下使用rpm来检查文件的完整性的方法也很多,这里不做相关赘述,可以man rpm来获得更多的格式。
总结
目前,就分享这9个方面来判断服务器是否被入侵。服务器如果已经被入侵,你就需要赶在对方发现你之前夺回服务器的控制权,然后修改密码、设定权限、限定IP登录等。总之入侵分析是一个经验工作,只有不断提升攻防技术和分析各种攻防实际案例,你才能更好的做好服务器入侵检测以及服务器安全防御,因此这既是一个枯燥的工作,还需要你长期不断学习,很多时候技术经验是非常有用的。