DDoS和其他攻击与iptables(iptables中的Anti-DDoS安全性)

避免攻击 DDoS攻击iptables的 它有许多方法可以执行此操作,包括数据包大小,连接限制等。 在这里,我们将看到如何以一种简单,直观且易于解释的方式实现目标,并阻止对服务器的其他恼人攻击。

# Iptables

IPT="/sbin/iptables"
ETH="eth0"

#Todo el tráfico syn
$IPT -P INPUT DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -P OUTPUT DROP
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A OUTPUT -m state --state INVALID -j DROP
$IPT -P FORWARD DROP
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A FORWARD -m state --state INVALID -j DROP
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A FORWARD -i lo -o lo -j ACCEPT

#Cuando sube la carga
$IPT -A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable

#La que mejor va
$IPT -N syn-flood
$IPT -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
$IPT -A syn-flood -j LOG --log-prefix "SYN flood: "
$IPT -A syn-flood -j DROP

#Igual que el de arriba pero muy raw
$IPT -N syn-flood
$IPT -A INPUT -i eth0:2 -p tcp --syn -j syn-flood
$IPT -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A syn-flood -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT

#Descartar paquetes mal formados
$IPT -N PKT_FAKE
$IPT -A PKT_FAKE -m state --state INVALID -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 ! --syn -m state --state NEW -j DROP
$IPT -A PKT_FAKE -f -j DROP
$IPT -A PKT_FAKE -j RETURN

#Syn-flood
$IPT -N syn-flood
$IPT -A INPUT -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A FORWARD -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A syn-flood -m limit --limit 4/s --limit-burst 16 -j RETURN
$IPT -A syn-flood -m limit --limit 75/s --limit-burst 100 -j RETURN -A syn-flood -j LOG --log-prefix "SYN FLOOD " --log-tcp-sequence --log-tcp-options --log-ip-options -m limit --limit 1/second
$IPT -A syn-flood -j DROP

#Requiere módulo "recent"
modprobe ipt_recent
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP

# explicación:
# Se añade cada ip que se conecte a la tabla de recent
# Por por cada ip en la tabla de recent si hace mas de x hits en x segundos, se dropea.
$IPT -I INPUT -p tcp --syn -m recent --set
$IPT -I INPUT -p tcp --syn -m recent --update --seconds 10 --hitcount 30 -j DROP

#UDP Flood
$IPT -A OUTPUT -p udp -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -p udp -m limit --limit 100/s -j ACCEPT
$IPT -A OUTPUT -p udp -j DROP

它所做的是计算SYN数据包的数量(TCP连接开始)中的最后10秒中的每个IP地址。 如果达到30,则会丢弃该数据包,因此不会建立连接(TCP将重试几次,当它跌落到可以设置的限制以下时).

#Evitando Layer7 DoS limitando a 80 la máxima cantidad de conexiones
$IPT -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-upto 50/min --hashlimit-burst 80 --hashlimit-mode srcip --hashlimit-name http -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -j DROP

#Permitir el ping, pero a 1 paquete por segundo, para evitar un ataque ICMP Flood
$IPT -A INPUT -p icmp -m state --state NEW --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
$IPT -A INPUT -p icmp -j DROP

#Evitando que escaneen la máquina
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,RST SYN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,RST FIN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,FIN FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,URG URG –j DROP

这是我们粘贴中的脚本: 粘贴。DesdeLinux.net(以前的脚本)

参考文献:


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   KZKG ^ Gaara

    这就是为什么我在DDoS攻击之前放一个教程😉
    放置/解释原因或问题(上一教程),并提供解决方案(本教程)🙂

    1.    地塞潘

      完美的。

  2.   rat月

    儿童糖果...

  3.   雨果

    好文章

    我的两分钱:

    对于UDP数据包,SYN标志不存在,因为它是没有状态控制的协议。 但是,矛盾的是,确实存在NEW和ESTABLISHED状态,因为iptables内部为此目的携带表。

    另一方面,在我看来,最好使用DROP目的地而不是REJECT,这有两个原因:首先,在拒绝的情况下,它会将信息提供给可能的攻击者,并且计算机也在使用其连接的一部分进行发送通知攻击团队。

    另一件事是,在ICMP协议(以及一般而言)的情况下,可以方便地规范请求和响应,因为我们可能在某些时候对ping通自己感兴趣,并且通过启用此功能,某人可以使用僵尸网络并伪造源地址以ping通许多受感染的PC,而没有结束,并且响应将发送到我们的服务器,如果不加限制则将其折叠。

    我通常允许ICMP类型0,3,8,11、12、XNUMX、XNUMX和XNUMX的输入限制为每秒XNUMX个,最大突发为XNUMX或XNUMX个,其他所有内容都留给DROP。

    实际上,除了可以更好地调节的TCP协议外,所有其他协议都应通过最近的类型匹配以反DDoS措施加以保护。 出于好奇,本模块的作者喜欢先放置更新,然后放置更新。

    iptables确实非常灵活和强大,到目前为止,我提议做的但我尚未实现的唯一事情(尽管我已接近实现)是使psd模块避免使用portcans,但即使一切我已经了解了此工具,我想我还没有抓过表面。 😉

    无论如何,在这个世界上,您总是必须学习。

  4.   rat月

    雨果(Hugo)的要点在我们的词汇表中有记载:像往常一样,D学习...

    1.    雨果

      顺便说一句,我已经有了psd模块为我工作。 问题在于它最初依赖于不支持patch-o-matic的内核功能,因此默认情况下将其从netfilter的内置模块中删除。 因此,现在在Debian中使用psd扩展名,首先必须执行以下操作:


      aptitude -RvW install iptables-dev xtables-addons-{common,source} module-assistant
      module-assistant auto-install xtables-addons-source

      然后可以根据说明正常使用它:

      man xtables-addons

      1.   

        雨果,为什么不发布包含建议的iptables.sh来改善本文的脚本(很好),包括psd

        谢谢

  5.   纳尔逊

    优秀的文章,出色的iptables和@hugo的出色解释。 我越来越相信我还有很多东西要学习。

  6.   rat月

    并非只有你一个人,至少我...我想念一百万...😀

  7.   米格尔·安赫尔

    大家好,感谢您的贡献,但事实是我们很拼命,不知道现在该怎么办,我们来了解一下您是系统专家的iptables。
    我是西班牙反罢工来源社区的负责人,并且我们是为数不多的勉强站立的人之一,我们每隔一段时间就会收到来自计算机的持续攻击和其他攻击,持续不断地删除服务器但会损坏服务器一点点,但时间久了会造成更大的伤害。 我们的机器安装在6.2 centos上
    并且我们有tcadmin来控制服务器。 您可以为我们配置一个可以阻止这种攻击的配置,这是因为我们已经绝望了,
    而且我们不知道该找谁,我们知道有两个僵尸网络,一个是自制的,另一个是费时费力的。 因此,我们一直遭受这种类型的残酷攻击近一年,如果您能帮助我们,我们将永远感激,因为它现在已经不可持续了,我喜欢配置hoobie之类的服务器,而且我不是孩子,但我向您保证这对我来说很多。 如果您希望我的ts3进行交流,或者如果您希望我能帮助我们,我们将在这里发布结果以及为许多人的利益而解决的所有问题,我将向您保证,这将是该年度访问量最大的博客因为令人难以置信的是它如何使这些攻击ddos烦恼。 由于我们尝试自行配置它并阻止了对计算机的访问,因此我们不得不从BIOS对其进行格式化,因此请想象我们的状态。
    我致以亲切的问候。 我对缺少的博客表示祝贺,许多人发现其中的博客已更新。 -米格尔·天使-

    1.    KZKG ^ Gaara

      你好你好🙂
      写信给我的电子邮件,我们将很乐意为您提供帮助 😀 -» kzkggaara[@]desdelinux[。]网

  8.   亚瑟·谢尔比

    大家好,直到我工作之前,都采用此脚本,非常好……只是一个疑问:“ recent”模块是否不会降低性能?

    问候-谢谢/谁喜欢你?

  9.   何塞·塔皮亚

    出色的贡献,我的朋友,我将带您参考我们正在安装的教程视频的参考,该视频来自哥斯达黎加

  10.   克里斯蒂安·马菲尔·雷诺索

    你好,

    不能在多个端口上使用脚本吗?
    我有一台游戏服务器,并且同时受到Web和游戏服务器端口的攻击。

    问候。