美文网首页
iptables防攻击

iptables防攻击

作者: 水平号 | 来源:发表于2020-03-15 22:55 被阅读0次

Limit模块

作用:限速,控制流量
例: iptables -A INPUT -m limit --limit 3/hour
--limit-burst 默认值为5

如果处于半开放状态的连接绑定服务器上的资源,则可能通过向服务器大量发送SYN消息来占用所有这些资源。Syn flood是常见的攻击,可以通过以下iptables规则进行阻挡:

iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j RETURN

所有进入的连接是允许的,直到达到极限:
-limit 1/s:以秒为单位的最大平均匹配率
-limit-burst 3:要匹配的包的最大初始数量

举例1:限制 ssh连接数

iptables -I INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport 22 -m state --state NEW,ESTABLISHED -m recent --set -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 600 --hitcount 11 -j DROP
iptables -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport 22 --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT

假设您需要限制到ssh服务器(端口22)的传入连接在10分钟内不超过10个连接:

举例2:防范DoS攻击

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

上面的iptables规则将帮助您防止拒绝服务(DoS)攻击您的web服务器。

在上面的例子中:
-m limit:它使用limit iptables扩展名
–limit 25/minute:这限制了每分钟最多25个连接。根据您的具体需求更改此值
-limit-burst 100:这个值表示只有当连接总数达到了limit-burst级别时才会执行limit/min。

connlimit模块

作用:用于限制每一个客户端IP的并发连接数
参数 :-connlimit-above n #限制并发个数
例:iptables -I INPUT -p tcp -syn -dport 80 -m connlimit -connlimit-above 100 -j REJECT

举例3:限制每个IP /主机的SSH连接

iptables  -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

每个客户端主机只允许3个ssh连接:

举例4:限制每个IP /主机的HTTP连接

iptables -A INPUT -p tcp --syn --dport 80 -d ! 1.2.3.4 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset
#请注意,大型代理服务器可能会合法地创建大量到您的服务器的连接,跳过代理服务器IP 1.2.3.4这种限制
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset
#每个IP只允许20个http连接

脚本例子:限制每秒连接数

如果IP在100秒内尝试了10次以上的80端口连接(将规则添加到iptables shell脚本中),下面的示例将删除传入的连接

#!/bin/bash
IPT=/sbin/iptables 
# Max connection in seconds
SECONDS=100
# Max connections per IP
BLOCKCOUNT=10
# ....
# ..
# default action can be DROP or REJECT
DACTION="DROP"
$IPT -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
$IPT -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds ${SECONDS} --hitcount ${BLOCKCOUNT} -j ${DACTION}
# ....
# ..

如何测试防火墙规则
使用下面的shell脚本连接到202.1.2.3托管的web服务器:

#!/bin/bash
ip="202.1.2.3"
port="80"
for i in {1..100} 
do
  # do nothing just connect and exit
  echo "exit" | nc ${ip} ${port};          #使用nc建立端口连接,而且传给服务端exit
done

nc命令是一个功能强大的网络工具,通过它不仅可以探测端口,还能作为客户端连接服务。

相关文章

  • iptables防攻击

    Limit模块 作用:限速,控制流量例: iptables -A INPUT -m limit --limit 3...

  • iptables常用命令

    iptables是linux最常用的防火墙管理服务,其功能很多,比如端口开放,网络转发,防DDos攻击等,本文只是...

  • iptables详解及一些常用规则

    iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防...

  • iptables介绍(偷了个懒,复制)

    iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防...

  • iptables详解

    iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防...

  • 3 Hadoop完全分布式配置

    1.关闭防火墙 service iptables stopchkconfig iptables off //禁止防...

  • iptables系列三

    iptables系列之nat及其过滤功能 自定义规则链 利用iptables的recent模块来抵御DOS攻击 下...

  • iptables防火墙

    标签(空格分隔): Linux 运维 防火墙 iptables iptables 是一个配置 Linux 内核 防...

  • iptables(防火墙)

    iptables 附件CC攻击器-邪恶十六进制2.0 模拟cc攻击python写的暴力破解的脚本 模拟...

  • 防重放攻击

    使用时间戳方式在请求参数中添加时间戳参数,服务器端首先验证时间戳timestamp是否有效,比如是服务器时间戳5分...

网友评论

      本文标题:iptables防攻击

      本文链接:https://www.haomeiwen.com/subject/fzbbehtx.html