在网络过载攻击中,一个共享的资源或者服务由于需要处理大量的请求,以至于无法满足从其他用户到来的请求。例如一个用户生成了大量的进程,那么其他用户就无法运行自己的进程。如果一个用户使用了大量的磁盘空间,其他用户就无法生成新的文件。有效保护系统免遭过载攻击的办法是划分计算机中的资源,将每个用户的使用量限制在自己的那一份中。另外,还可以让系统自动检查是否过载或者重新启动系统。
1.进程过载的问题
最简单的拒绝服务的攻击是进程攻击。在进程攻击中,?个用户可以阻止在同时间内另一个用户使用计算机。进程攻击通常发生在共享的计算机中,如果没有人与自己争夺使用计算机,就没有必要使用这种攻击方法。这种攻击对现在的UNIX系统没有多大效果,因为现在的UNIX系统限制任何UID(除了o)使用的进程数目。这个限制叫做MAXUPROC,当系统构筑时,在内核进行设置,一些系统允许在启动时设置这个值。
例如soIarts允许在/etc/system文件中设置这个值。set NAXUP助C;100进行这种攻击的用户消耗的是他自己的进程数目,而不是别人的。一个超级用户可以使用ps命令查看一个进程的子孙数目,使用kill命令来杀死那些无用进程。有时候不能一个又?个地杀死这些进程,因为剩余的进程会生成新的进程。一个好的办法是先用kill命令停止这些进程,然后杀死它们。另外可以同时杀死一组进程。在许多情况下,一个用户生成了许多进程,这些进程是同一组的。要找出进程组,可使用ps命令的选项,然后一次杀死这些进程。
在现在的UNIX系统中,一个具有超级用户权限的用户仍旧可以通过使用进程攻击的方法来使系统停机。这是因为对超级用户能使进程数目没有什么限制,但是作为一个超级用户,他还是可以关闭系统,或者执行其他命令,所以这不是一个很重要的问题。除非超级用户正在运行的程序有一个极值,没有人可以得到一个进程,哪怕仅仅是登录。还有其他一些情况可能使系统过载。虽然没使一个用户到达他自己的最大进程数目,但由于太多的用户在使用计算机,系统还是达到了一个可允许的最大进程数。另外一个可能性是系统配置错误,一个用户允许使用的进程树本身已等于或者超出了系统允许的最大进程数目。当系统中有太多的进程时,没有更好的办法来纠正,只有让系统重启。这是因为:用户无法运行ps命令来决定有多少进程需要杀死,因为执行ps命令也需要生成进程。如果网络管理员当前没有登录为超级用户,则也不能使用su或者是10gin命令,因为这两个命令同样要生成新的进程。针对这种情况,可以使用exec% exec /b 2n/su
Pass word:#需要注意的是,不要敲错了口令,因为程序会执行,但执行完毕之后,将自动地退出系统。
如果用户遇到了rk于太多进程而造成的系统饱和,重新启动系统。最简单的方法是按机箱上的RESET键。但是,这会破坏磁盘上的文件块,因为系统还没有来得及刷新磁盘。没有多少系统被设计得能在突然关闭
时,还执行正常关闭的那些工作。比较好的办法是杀死一些进程,然后进入单用户模式。
在现代的unix系统中,超级用户可以发送一个SIGTEBM信号给除了系统进程和自己进程之外的所有进程:#KILL-TERM-1#
如果当前使用的UNIX没有这一点可以执行如下命令:#KILL-TERM1向INIT进程发送一个SIGTERM信号。UNIX自动杀死所有的进程,进入单用户模式,这时,可以执行sync命令,然后重新启动系统。
2.系统过载攻击
另一种流行的基于进程的攻击是一个用户产生了许多进程,消耗了大量的cpu时间。这种攻击减少了其他用户可用的CPU处理时间。例如,某用户使用了十个find命令,并使用则在一些目录中查找文件,这些都可以使系统运行得像爬行一样慢。
比较好的办法是,教育用户合理地共享系统,鼓励用户使用nice命令降低后台运行的进程的优先级。另外,也可以使用at和batch命令,将一些长的任务安排在系统不是很繁忙的时候去执行。对那些故意或者重复这种行为的用户可以采取一些措施。
如果系统过载了,用root登录,将自己的优先纽设为较高的值。然后使用ps命令观察运行的进程,并使用kill命令。
3.磁盘攻击
攻击方式是填充磁盘空间个用户向磁盘填充了大量的文件,其他用户不能生成文件做其它有用的事。
磁盘满攻击
du命令可以发现系统中磁盘分区空间的使用情况。du命令递归地查找目录树,列出每一个使用了多少块。也可以使用flnd命令列出那些大文件的文件名。可以使用find命令的-size选项,列出文件大小超过一定慎的文件。
quot命令可以根据每一个用户来总结文件系统的使用情况。使用?f选项,quot打印出每一个用户使用的文件数量和使用的块数。
UNIX文件系统使用inode来存放文件的信息。一个可以便磁盘不能使用的途径是消耗所有磁盘上的空闲inode,使之不能生成新的文件。一个用户可能生成了上千个空文件。这是一个很令人困惑的问题,因为df命令提示有许多可用的空间,然而当生成文件时,却得到一个错误。这是因为每一个新文件、目录、管道文件都需要一个inode结构去描述。如果可用的inode消耗尽了,系统便无法生成新文件,但此时,系统还有可用的磁盘空间。
可以使用df命令的?I选项来查看有多少空闲的inode。通常,可以将磁盘划分成一些小的分区,保护磁盘满攻击。将不同用户的主目录放到不同的分区中。用这种方式,如果一个分区被充满了,别的用户并不受影响。
另一个有效的办法是,使用在许多现代unix系统中都有的quota系统,来保护系统不受这种攻击。通过磁盘配额系统,每一个用户可以确定有多少inode可用;有多少磁盘块可用。
防止拒绝服务的攻击
许多现代的UNIX允许管理员设置一些限制,如限制可以使用的最大内存、CPU时间以及可以生成的最大文件等。如果当前正在开发?个新的程序,而又不想偶然地使系统变得非常缓慢,或者使其它分享这台主机的用户无法使用,这些限制是很有用的。Korn Shell的ulimit命令和Shell的Iimit命令可以列出当前程的资源限制。