欢迎光临
我们一直在努力

Iptablesnetstat防御简单dos攻击

DoS攻击或者DDoS攻击是试图让机器或者网络资源不可用的攻击。这种攻击的攻击目标网站或者服务通常是托管在高防服务器比如银行,信用卡支付网管,甚至根域名服务器,DOS攻击的实施通常迫使目标重启计算机或者消耗资源,使他们不再提供服务或者妨碍用户,访客访问。

在这篇小文章中,你可以知道在受到攻击之后如何在终端中使用netstat命令检查你的服务器。

一些例子和解释

netstat -na

显示所有连接到服务器的活跃的网络连接

netstat -an | grep :80 | sort

只显示连接到80段口的活跃的网络连接,80是http端口,这对于web服务器非常有用,并且对结果排序.对于你从许多的连接中找出单个发动洪水攻击IP非常有用

netstat -n -p|grep SYN_REC | wc -l

这个命令对于在服务器上找出活跃的SYNC_REC非常有用,数量应该很低,最好少于5.
在dos攻击和邮件炸弹,这个数字可能非常高.然而值通常依赖于系统,所以高的值可能平分给另外的服务器.

netstat -n -p | grep SYN_REC | sort -u

列出所有包含的IP地址而不仅仅是计数.

netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'

列出所有不同的IP地址节点发送SYN_REC的连接状态

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

使用netstat命令来计算每个IP地址对服务器的连接数量

netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

列出使用tcp和udp连接到服务器的数目

netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

检查ESTABLISHED连接而不是所有连接,这可以每个ip的连接数

netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1

显示并且列出连接到80端口IP地址和连接数.80被用来作为HTTP

如何缓解DDoS攻击

当你发现攻击你服务器的IP你可以使用下面的命令来关闭他们的连接:

iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT

请注意你必须用你使用netstat命令找到的IP数替换$IPADRESS

在完成以上的命令,使用下面的命令杀掉所有httpd连接,清除你的系统,然后重启httpd服务。

1. iptables -m connlimit       (连接数量限制) 
                              
 (
注:2.6.23以前的内核版本默认不支持 connlimit)

                                         --connlimit-above n  #限制数 >n 时触发规则
                                         --connlimit-upto n                #限制数在 n 范围内触发规则
                                         --connlimit-mask n  #这组主机的掩码,默认是connlimit-mask 32 ,
                                                                                           对服务器而言就是限制每个ip发起的连接数
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT

                            #允许单个IP对80端口最大连接数为 50,超过即拒绝   
或者这样  iptables -I INPUT -p tcp --syn --dport 80 -m connlimit ! --connlimit-above 50 -j ACCEPT
                            #不超过50个就接受

iptables -A INPUT -p tcp -m multiport --dport 80,443 -m connlimit --connlimit-above 50 -j DROP
                           #允许单个IP对80、443端口最大连接数为 50,超过即丢弃
 iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 --connlimit-mask 24 -j REJECT
                            #允许一段IP 对80端口的新连接最大为100,超过即拒绝

iptables -A INPUT -s 222.222.222.222 -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT

                           #允许某个ip 222……对服务器最大连接为100,超过拒绝

iptables -I FORWARD -p tcp -s !XXX.XXX.XXX.XXX -m connlimit --connlimit-above 50 -j REJECT
                          #除xxx外,其它ip最大连接数为50
iptables -A INPUT -s 192.186.1.0/24 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
                 #此ip tcp状态为 ESTABLISHED和RELATED  允许通过

       2.iptables -m recent    (时间范围内限制)                     

 --name #设定列表名称,默认DEFAULT。 --rsource #源地址,此为默认。 --rdest #目的地址 --set #将地址添加进列表,并更新信息,包含地址加入的时间戳。 --rcheck #检查地址是否在列表,以第一个匹配开始计算时间。 --update #和rcheck类似,以最后一个匹配计算时间。每次建立连接都更新列表 --seconds #指定时间内 必须与--update同时使用 --hitcount # 命中次数 必须与--update同时使用 --remove #在列表里删除相应地址,后跟列表名称及地址。 iptables -A INPUT -p tcp --dport 5000 --syn -m recent --remove --name webpool --rsource -j REJECT --reject-with tcp-reset --syn 跟 -m state --state NEW 差不多一个意思,三次握手中的第一个包  iptables -A INPUT -p tcp --dport 80 -m recent --name HTTP_ACCESS --update --seconds 60 --hitcount 100 -j REJECT  #限制每IP在一定的时间(比如60秒)内允许新建立最多100个http连接数,超过拒绝 iptables -I INPUT  -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH001 #记录访问tcp 22端口的新连接,记录名称为SSH001 #--set 记录数据包的来源IP,如果IP已经存在将更新已经存在的条目 iptables -I INPUT  -p tcp --dport 22 -m state --state NEW -m recent --update --seconds  300 --hitcount 3 --name SSH -j DROP # 指SSH001记录中的IP,300s内发起超过3次连接则拒绝此IP的连接  iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --name SSH --second 300 --hitcount 3 -j LOG --log-prefix "SSH Attack" # 300秒内访问22端口达到3次的 ip 记录到日志中 

 

Examples:

      # allow 2 telnet connections per client host
              iptables -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT
      # you can also match the other way around:
              iptables -p tcp --syn --dport 23 -m connlimit ! --connlimit-above 2 -j ACCEPT
      # limit the nr of parallel http requests to 16 per class C sized network (24 bit netmask)
              iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 --connlimit-mask 24 -j REJECT

 

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《Iptablesnetstat防御简单dos攻击》
文章链接:https://www.456zj.com/21345.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址