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服务。

这个链接是iptables的基础用法
以下是iptables的一些扩展应用,主要用于防御各种网络攻击。

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

3.-m limit:(流量限制) 
           --limit       
   流量限制         
                       iptables -A INPUT -m limit --limit 3/hour
          为limit match设置最大平均匹配速 率,也就是单位时间内limit match可以匹配几个包。它的形式是一个数值加一个时 间单位,可以是/second /minute /hour /day 。默认值是每小时3次(用户角度),即3/hour ,也就是每20分钟一次(iptables角度)。
           --limit-burst    触发条件

iptables -A INPUT -m limit --limit 3/m --limit-burst 5 -j ACCEPT
                   单位时间超过5个包后,触发 3个/每分钟 的限制

         这里定义的是limit match的峰值, 就是在单位时间(这个时间由上面的--limit指定)内最多可匹配几个包(由此可 见,--limit-burst的值要比--limit的大)。默认值是5。

Iptables netstat 防御简单dos攻击的更多相关文章

  1. dos攻击与防御

    SYN Flood攻击 标准的TCP三次握手过程如下: 客户端发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号:  服 ...

  2. 简单的DOS攻击之死亡之ping详解

    DOS攻击之死亡之ping详解,dos攻击,俗称拒绝服务攻击,通过发送大量的无用请求数据包给服务器,耗尽服务器资源,从而无法通过正常的访问服务器资源,导致服务器崩溃. 如果多个ip通过发起对一个服务器 ...

  3. iptables 防止DoS攻击

    SYN洪水是攻击者发送海量的SYN请求到目标服务器上的一种DoS攻击方法,下面的脚本用于预防轻量级的DoS攻击:ipt-tcp.sh: iptables -N syn-flood (如果您的防火墙默认 ...

  4. DDOS攻击与防御简单阐述,列出DDOS的攻击方法和防御方法

    参考1:https://www.hi-linux.com/posts/50873.html#%E7%BD%91%E7%BB%9C%E5%B1%82-ddos-%E6%94%BB%E5%87%BB 什么 ...

  5. dos攻击

    概念理解 DoS到底是什么?接触PC机较早的同志会直接想到微软磁盘操作系统的DOS--DiskOperationSystem?不,此DoS非彼DOS也,DoS即DenialOfService,拒绝服务 ...

  6. TCP/IP具体解释--三次握手和四次握手 Dos攻击

    TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个telnet建立连接,断开连接的使用wireshark捕获的packet截图. 1.建立连接协议(三次握手) (1) ...

  7. 真实故事:网站遭遇DOS攻击

     网站遭遇DOS攻击 一个.事件背景 长假对于IT人员来说是个短暂的休整时期,可IT系统却一时也不能停.越是节假日,越可能出大问题,以下要讲述的就是一起遭受DOS攻击的案例. 春节长假刚过完,小李 ...

  8. TCP协议三次握手连接四次握手断开和DOS攻击

    转载:http://blog.csdn.net/fw0124/article/details/7452695 TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个tel ...

  9. 转帖:对linux中半增加半连接数量和防止服务器被dos攻击

    .增大队列SYN最大半连接数 在Linux中执行命令"sysctl -a|grep net.ipv4.tcp_max_syn_backlog",在返回的"net.ipv4 ...

随机推荐

  1. 76.纯 CSS 创作一组单元素办公用品

    原文地址:https://segmentfault.com/a/1190000015607676 学习后效果地址:https://scrimba.com/c/c8PQ3PTB 感想:利用css的制图. ...

  2. java.sql.SQLException: connection holder is null 问题处理

    问题描述 上上个周测试的时候突然报系统异常,于是我立即查看日志,发现是一个数据库异常:java.sql.SQLException: connection holder is null我第一想到的就是可 ...

  3. PageHelper踩坑

    刚开始死活分不了页,只显示默认的前 10条.搞了一下午,打了无数个断点都试不出毛病在哪. 下班又死磕到快8点,就在我已经绝望的时候,最后终于试出来了,把page.getTotal()给传到前端就好了. ...

  4. Kaggle竞赛丨入门手写数字识别之KNN、CNN、降维

    引言 这段时间来,看了西瓜书.蓝皮书,各种机器学习算法都有所了解,但在实践方面却缺乏相应的锻炼.于是我决定通过Kaggle这个平台来提升一下自己的应用能力,培养自己的数据分析能力. 我个人的计划是先从 ...

  5. python StringIO和ByteIO

    一.StringIO 1.作用:在内存在读写str # 导入模块 from io import StringIO # 实例化StringIO对象 str_io = StringIO() # 向内存中写 ...

  6. Djaingo 日志配置

    1.setting.py文件 # 项目级别的日志配置 BASE_LOG_DIR = os.path.join(BASE_DIR, "log") LOGGING = { 'versi ...

  7. 嵩天老师python网课爬虫实例1的问题和解决方法

    一,AttributeError: 'NoneType' object has no attribute 'children', 网页'tbody'没有子类 很明显,报错的意思是说tbody下面没有c ...

  8. 第二阶段冲刺个人任务——five

    今日任务: 合并程序(统计团队博客). 昨日成果: 优化统计团队博客结果界面的显示.

  9. 双指针,BFS与图论(一)

    (一)双指针 1.日志统计 小明维护着一个程序员论坛.现在他收集了一份”点赞”日志,日志共有 N 行. 其中每一行的格式是: ts id 表示在 ts 时刻编号 id 的帖子收到一个”赞”. 现在小明 ...

  10. Dynamics 365 CRM 配置field service mobile

    配置field service mobile其实微软是有官方文档的, 但是没有坑的微软产品不是好产品. 一些细节设置文中还是没有考虑到的. 所以这里带大家配置一下field service mobil ...