由于拒绝服务攻击工具的泛滥,及所针对的协议层的缺陷短时无法改变的事实,拒绝服务攻击也就成为流传广泛、极难防范的一种攻击方式。虽然到目前为止,没有一个绝对的方法可以制止这类攻击;但对于不同的攻击方式,还是有一些解决方法的。本文以Redhat Linux 9.0为例,介绍如何分类防范DoS。

Linux服务器的两种守护进程

1.stand-alone模式

stand-alone方式是Unix传统的C/S模式的访问模式。服务器监听(Listen)在一个特点的端口上等待客户端的联机。如果客户端产生一个连接请求,守护进程就创建(Fork)一个子服务器响应这个连接,而主服务器继续监听,以保持多个子服务器池等待下一个客户端请求。Stand-alone模式的工作原理如图1所示。

工作在stand-alone模式下的网络服务有route、gated。大家比较熟悉的Web服务器是Apache和邮件服务器Sendmail。在Apache这种负载很大的服务器上,预先创子服务器可以提高客户的服务速度。

在Linux系统中通过stand-alone工作模式启动的服务由/etc/rc.d/下面对应的运行级别当中的符号链接启动。

2.xinetd模式

从守护进程的概念可以看出,对于系统所要通过的每一种服务都必须运行一个监听某个端口连接所发生的守护进程,这通常意味着资源浪费。为了解决这个问题,Linux引进了“网络守护进程服务程序”的概念。

Redhat Linux 9.0使用的网络守护进程是xinetd(eXtended InterNET daemon)。和stand-alone模式相比,xinetd模式也称Internet Super-Server(超级服务器)。xinetd能够同时监听多个指定的端口,在接受用户请求时能根据用户请求端口的不同,启动不同的网络服务进程来处理这些用户请求。我们可以把xinetd看成一个管理启动服务的管理服务器,它决定把一个客户请求交给哪个程序处理,然后启动相应的守护进程。xinetd模式的工作原理如图2所示。

和stand-alone工作模式相比,系统不想要每一个网络服务进程都监听其服务端口,运行单个xinetd就可以同时监听所有服务端口,这样就降低了系统开销,保护了系统资源。但是对于访问量大、经常出现并发访问时,xinetd想要频繁启动对应的网络服务进程,反而会导致系统性能下降。

察看系统为Linux服务提供哪种模式方法,在Linux命令行下使用pstree命令,可以看到两种不同方式启动的网络服务。一般来说系统一些负载高的服务,如Sendmail、Apache服务是单独启动的,而其他服务类型都可以使用xinetd超级服务器管理,系统默认使用xinetd的服务可以分为如下几类:

标准互联网服务:telnet、ftp

信息服务:finger、netstat、systat

RPC服务:rquotad、rstatd、rusersd、sprayd、walld

BSD服务:comsat、exec、login、ntalk、shell、talk

内部服务:chargen、daytime、echo、servers、services time

安全服务:irc

其他服务:name、tftp、uucp

小提示:从原理上Apache、sendmail也可以使用xinetd模式启动,但是您需要硬件档次非常高的服务器。

针对xinetd模式的DoS防范

xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全,能有效防止DoS:

1.限制同时运行的进程数

通过设置instances选项设定同时运行的并发进程数。例如:

instances=20

说明:当服务器被请求连接的进程数达到20个时,xinetd将停止接受多出部分的连接请求,直到请求连接数低于设定值为止。

2.限制一个IP地址的最大连接数

通过限制一个主机的最大连接数来防止某个主机独占某个服务。例如:

per_source=5

说明:单个IP地址的连接数是5个。

3.限制日志文件大小,防止磁盘空间被填满

许多攻击者知道大多数服务需要写入日志。入侵者可以构造大量的错误信息发送出来,服务器记录这些错误,很可能就造成日志文件非常庞大,甚至会塞满硬盘。管理员面对大量的日志,也很难发现入侵者真正的入侵途径。因此,限制日志文件大小是防范DoS的一个方法。例如:

log_type FILE.1 /var/log/myservice.log 8388608 15728640

说明:这里设置的日志文件FILE.1临界值为8MB,到达此值时syslog文件中会出现警告,到达15兆,系统会停止所有使用这个日志系统的服务。

4.限制负载

xinetd还可以使用限制负载的方法防范DoS。用一个浮点数作为负载系数,当负载达到这个数目时,该服务将暂停处理后续的连接。例如:

max_load=2.8

说明:当一项系统负载达到2.8时,所有服务将暂时终止,直到系统负载下降到设定值以下。

当然,要使用这个选项,编译时要加入-with-loadavg,xinetd将处理max-load配置选项,从而在系统负载过重时关闭某些服务进程,来实现某些拒绝服务攻击。

5.限制所有服务器数目(连接速率)

xinetd可以使用cps选项设定连接速率。例如:

cps=25 60

说明:第一个参数表示每秒可以处理的连接数,如果超过了这个连接数,进入的连接将被暂时停止处理;第二个参数表示停止处理多少秒后继续处理先前暂停处理的连接。即服务器最多启动25个连接,如果达到这个数目将停止启动新服务60秒。在此期间不接受任何请求。

6.限制对硬件资源的利用

通过rlimit_as和rlimit_cpu两个选项可以有效限制一种服务对内存、中央处理器的资源占用。例如:

rlimit_as=8M

rlimit_cpu=20

说明:此设定限制了对服务器硬件资源的占用,最多可用内存为8M,CPU每秒处理20个进程。

总结:xinetd的一个重要功能是它能够控制从属服务可以利用的资源量,通过以上设置可以达到这个目的,有助于防止某个xinetd服务大量占用系统,从而导致“拒绝服务”情况的出现。

针对stand-alone的DoS防范

Linux下以stand-alone模式运行的服务器主要是Apache、Sendmail。

1.Apache服务器防范DoS措施

Apache服务器对拒绝攻击的防范主要通过软件Apache DoS Evasive Maneuvers Module来实现。它是一款mod_access的替代软件,可以对抗DoS攻击。该软件可以快速拒绝来自相同地址对同一URL的重复请求,这是通过内部一张各子进程的哈希表查询来实现的。软件下载链接:http://online.securityfocus.com/data/tools/dospatch.tar.gz,软件安装的配置可以查看相关页面。

另外,在Apache配置文件中,有一些安全相关的指令可以使用。http://httpd.apache.org/docs/mod/directives.html。使用以下指令可以帮助您减小DoS的威胁:

LimitRequestBody:数字参数,控制HTTP请求的大小。

LimitRequestFields:数字参数,控制请求头的数目。

KeepAlive:设置连接的生存期。

KeepAliveTimeout:限制等待请求的时间。

使用以下指令可以帮助您减少缓冲区溢出的危险:

LimitRequestFieldSize:限制每个请求头的大小。

LimitRequestLine:限制每个请求行的大小。

此外,Apache服务器管理员还应该经常去http://www.apache.org/dist/httpd/查看、下载补丁程序,以确保Web服务器的安全。

2.Sendmail服务器防范DoS措施

由于电子邮件的性质,一个要攻击邮件服务器的攻击者可以轻易地使用邮件来充斥服务器,从而导致DoS。通过设置/etc/mail/sendmail.mc以下目录的限度,这类攻击的有效性就会大受限制。

confCONNECTION_RATE_THROTTLE:服务器每秒能够接受的连接数量。按照默认设置,Sendmail是不限制连接数量。如果连接数量达到限度,以后的连接就会被延迟。推荐值:40。

confMAX_DAEMON_CHILDREN:服务器能够Fork出的子进程的最大数量。按照默认设置,Sendmail不限制子进程的数量。如果限度被设置,达到限度后的连接就会被延迟。推荐根据内存容量设置:128M内存建议值为40。

confMIN_FREE_BLOCKS:文件系统用来接受标准SMTP(简单邮件传输协议)邮件的队列中的最少自由块数,越小越容易被攻击致命。默认为100块,推荐值为4000或者更大。

confMAX_HEADERS_LENGTH:消息头可接受的最大限度(以字节为单位)。默认为不限制,推荐值是64。

confMAX_MESSAGE_SIZE:单个消息可接受大小的最大限度(以字节为单位)。越大越容易被攻击致命。默认为不限制,推荐值为5242880。

另外,不要把邮件假脱机目录/var/spool/mail/放在NFS共享文件卷上。因为NFS对用户组群ID没有控制,几个UID相同的用户可以收到和阅读彼此的邮件。

限制整体资源的占用

还可以对系统资源做限制,使得系统增强抗DoS能力。

编辑/etc/security/limits.conf文件,添加下面几行:

* hard core 0

* hard rss 10000

* hard nproc 30

说明:“core 0”表示禁止创建core文件;“nproc 30”把最多进程数限制到30;“rss 10000”表示除了root之外,其他用户都最多只能用10MB内存。 “*”表示的是所有登录到系统中的用户。

上面这些对登录到系统中的用户有效。通过这些限制,就能更好地控制系统中的用户对进程、core文件和内存的使用情况。最后编辑“/etc/pam.d/login”文件,在文件末尾加入:

session required /lib/security/pam_limits.so

来源:赛迪网

linux用什么软件dos攻击,分类防范对Linux的DoS攻击相关推荐

  1. linux 加速播放软件,VirtualBox 6.1首次推出Linux 5.4支持,加速的视频播放及更多功能...

    VirtualBox 6.1首次推出Linux 5.4支持,加速的视频播放及更多功能 Mark Do 2019年12月14日 暂无评论 阅读 7,329 次 现在可以下载VirtualBox的主要更新 ...

  2. linux分割图片软件,桌面应用|5 种拆分 Linux 终端的方法

    本文介绍了 Linux 提供的拆分终端的方法,它能够帮助你完成多任务工作.那么,你最喜欢哪一款终端复用工具呢? 没有什么问题是不能用一个 Linux 终端解决的,如果不行,那就用两个. 很早以前,终端 ...

  3. linux 工作笔记软件下载,最新为知笔记linux版本下载地址电脑版-CC软件

    为知笔记Linux版是一款文字编辑软件,帮你记录生活.工作点点滴滴到云端储存,随用随取,支持文字.图片.语音.视频等信息,所有数据在电脑.手机.平板.网页可通过同步保持一致,感兴趣的朋友快来下载体验吧 ...

  4. Linux杂志排版软件,推荐!三款适合Linux电脑的简单好用流程图软件

    原标题:推荐!三款适合Linux电脑的简单好用流程图软件 在平常工作流程上,文字记录与图像思考,就像双剑合一,有举重若轻,事半功倍之效.因此,这篇文章为你整理几款我觉得好用的图表工具流程图,推荐给需要 ...

  5. linux卸载360软件下载,在Deepin及其他Linux系统中使用命令卸载360安全卫士的方法...

    如果你需要在Deepin系统及其他Linux系统中卸载360安全卫士,请看本文的方法,只需要在终端中运行一段命令即可.有些用户在深度商店中安装了360安全卫士,但是总有一些问题,想把它卸载掉,在启动器 ...

  6. linux 远程 更新 软件下载,rdesktop下载-rdesktop(Unix/Linux下面的远程桌面客户端)下载 v1.8.2 官方最新版-IT猫扑网...

    rdesktop是一款超级好用的桌面远程攻击,帮你你随时远程办公,帮助传送文件.数据等!好用的不得了!喜欢就快来IT猫扑网下载! rdesktop介绍 rdesktop是一个在Unix/Linux下访 ...

  7. linux超频软件,GreenWithEnvy 0.11 发布,Linux上NVIDIA GPU的超频工具

    GreenWithEnvy v0.11已经发布,这个第三方开源实用程序的最新版本,用于改变Linux上NVIDIA显卡的功率限制,以及比通过NVIDIA设置面板和NVIDIA专有驱动程序曝光的更多超频 ...

  8. 深度Linux13,Ubuntu 13.04安装Linux Deepin特色软件

    最新版本的 Linux Deepin 12.12 RC 已经将基础仓库升级到了 Ubuntu Raring,Linux Deepin 开发的特色软件,简单易用,其他发行版本的开发者应该尽量移植.因为 ...

  9. 使用 CrossOver 在 Linux运行 Windows 软件(金测OK)

    使用 CrossOver 在 Linux运行 Windows 软件 即便是最忠实的 Linux 用户,有时候也需要运行一下 Windows  软件.有的用户为此保留了一台旧的 Windows PC,有 ...

最新文章

  1. pyqt5实战之简陋的计算器
  2. CTF-PWN环境搭建
  3. 中国版“Twilio”何在?
  4. linux python软连接_Linux软链接的创建,删除,修改
  5. Leo的AR代码学习之create-react-class
  6. android布局中画圆角矩形,Android 自定义View之圆角矩形轨迹图
  7. 为什么Alpha多样性的输入数据会是它?
  8. sql2005 分页 ROW_NUMBER()
  9. python安装mysql模块_Python:使用pip安装MySQL-python模块
  10. C语言全局变量与局部变量
  11. iPhone 12 Pro测量人的身高竟然如此简单
  12. Exclusively Dark (ExDark) Image Dataset 数据集下载
  13. 2021中国山地自行车哪个品牌好全球十大顶级自行车品牌排行榜
  14. virtualbox与windows共享文件夹
  15. 网络对时设备(NTP校时)如何守护安全日志
  16. 利用-flat.vmdk文件恢复ESXI虚拟机的vmdk文件
  17. matlab fpga 移植,使用MATLAB,Simulink以及基于模型的设计实现把电机控制算法移植到Zynq平台...
  18. 环境部署经验老衲悄悄的
  19. oracle出现“无法为表空间 XX 中的段创建 INITIAL 区”错误
  20. AbsoluteLayout

热门文章

  1. 安装mysql1067_安装MySQL时,出现的1067问题详解
  2. rabbitmq开启web界面教程
  3. 华清远见-重庆中心-JAVA面向对象阶段技术总结
  4. 转:深度 | 深度学习与神经网络全局概览:核心技术的发展历程
  5. linux 头文件 位置
  6. 串口的同步和异步,全双工和半双工
  7. mybatis中大于等于,小于等于,like等特殊符号写法
  8. SnackBar 简单使用
  9. jsbridge实现及原理_Android JSBridge的原理与实现
  10. MATLAB的图像融合设计