预防云主机被攻击的措施:1. 登录系统查询用户是否异常,判断用户是否为非法用户。2. 锁定不正常或不熟悉的用户,把不正常的用户踢出网络。3. 查询系统事件记录,查看和关闭异常处理,审查文件系统软件完整性。
具体内容如下:
登录系统查询用户是否异常
基于 root用户登录,随后执行“w”命令可以列出显示所有已登录系统软件的用户。之后,可以根据这些信息检查是否存在异常用户,或者登录了一个陌生用户,另外还可以根据用户名及其登录的源地址和已经运行的过程判断用户是否为非法用户。
锁定不正常或不熟悉的用户
当发现一个异常或不熟悉的用户时,需要立即锁定它,例如在执行了前面的“w”命令之后,发现 nobody用户应该是一个异常用户(因为 nobody在默认情况下是没有登录管理权限的),所以首先锁定这个用户,并执行以下操作:
[root@server ~]# passwd -l nobody
锁机之后,这个用户实际上还是有可能在线的,为了彻底驱逐这个用户,所以还要把这个用户强行拉下线,按照上边的“w”命令的输出,就可以得到这个用户登录进行的 pid值,具体操作如下:
[root@server ~]# ps -ef|grep @pts/3
531 6051 6049 0 19:23 ? 00:00:00 sshd: nobody@pts/3
[root@server ~]# kill -9 6051
这样会把不正常的用户 nobody踢出网络。如果这个用户试图再次登录很久,可能已经无法登录。
查询基于last命令的用户登录事件
last命令记录整个用户登录到系统的系统日志,可以用来搜索未授权用户的登录事件,而 last命令的输出结果来自于/var/log/wtmp文件,而且一般有攻击经验的攻击者会删除/var/log/wtmp来消除自己的行迹,这样只要做了就会有行迹,因此文件中仍然会暴露行迹。
在搜索攻击源时,查询事件日志是一种最好的方法,可以查找的事件日志包括/var/log/messages、/var/log/secure等,这两个系统日志文件可以统计软件的运行情况并远程控制用户的登录,还可以查询每个用户文件目录下的.bash_history文件,特别是/root文件目录下的.bash_history文件,它记录了用户执行的所有历史时间命令。有很多命令可以检查异常进程,如 ps, top,等等,但有时只知道进程的名称,无法知道路径,首先根据 pidof命令搜索运行中的进程 PID,然后进入运行内存文件目录,查询匹配 PID文件目录下 exe文件的信息内容。如此一来,就找到了实现过程细节匹配的过程。假设还具有查询文件的句柄,则可以查询下列文件目录:
[root@server ~]# ls -al /proc/13276/fd有些情况下,网络攻击的程序隐藏得很深,如 rootkits木马程序,在这种情况下, ps、 top、 netstat等命令很可能早就被替换掉了,如果再根据系统软件本身的命令检查异常进程,这将变得越来越不可靠,此时,就必须借助第三方的专用工具检查系统软件异常程序。对文件特性进行检查是验证文件系统软件完整性的一种简单而又最直观的方法,例如,检查网络云主机上/bin/ls文件的大小是否与所有正常系统软件上这个文件的大小相同,验证文件是否被替换,但是这种方法比较低级等等。这个时候就可以使用 Linux下的 rpm这个专用工具进行认证了,假设在输出结果中出现了“M”标识,那么相匹配的文件很可能早就被伪造或替换了,此时就可以通过卸载这个 rpm包来消除受到攻击的文件了。但这个命令有一个限制,即只能检查根据 rpm软件包方法安装的所有文件,而对于基于非 rpm软件包方法安装的文件则无能为力。此外,假设 rpm专用工具也遭到替换,则该方法不适用,此时可以从所有正常系统软件拷贝一个 rpm专用工具以进行检查。