攻击期间使用 Iptables 阻止 mac 地址

攻击期间使用 Iptables 阻止 mac 地址

我必须设置 Iptables 来阻止一分钟内发出 10 个请求的每个 mac 地址。(ssh 或 http 登录)

可以使用以下方法阻止 IP:

iptables -A INPUT -p tcp --dport 22 -m hashlimit --hashlimit-mode srcip --hashlimit-above  10/minute -j DROP

要阻止已知的 mac 地址,可以使用

iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP

但是如果不知道 MAC 地址该怎么办呢?

也许用arp -a 命令?

如何结合iptablesarp

有没有更聪明的方法?

编辑:

操作模式客户 被攻击者连接到 WiFi 子网,攻击者可以连接到同一子网

操作模式热点 被攻击者充当热点,生成自己的 WiFi 子网,供攻击者连接。

答案1

您采取的方法错误,正如其他人所说,基于 MAC 地址的阻止是行不通的。

相反,你应该使用 fail2ban 和 ipset

另一种方法可能是:

在加载 iptables 条目之前,该集合必须存在。

ipset create ban hash:net 

这将删除已在禁止列表中的数据包

iptables -I INPUT 1 -m set --match-set ban src -j DROP

这会将 IP 添加到禁止列表中。

iptables -I INPUT 2 -p tcp --dport 22 -m hashlimit --hashlimit-mode srcip --hashlimit-above  10/minute -j SET --add-set ban src 

答案2

一般情况下,港口22 (同1194正因为如此,它永远不应该暴露在 WAN 中,因为它每天会收到数千次连接尝试,除非22暴露在 WAN 中,否则所有防火墙都会自动阻止这些连接尝试(使用数万个更高的端口,因为端口扫描器通常不会扫描所有 65,535 个端口)

有很多方法可以通过速率限制来阻止流量,只需iptables

  • MAC 地址过滤从来都不是有效的,因为 MAC 地址是动态的,很容易改变
  • IP 过滤效果更好,但可以通过 VPN 进行更改

  • 端口过滤往往是最好、最有效的:
    # Establish Zone: Port_Log
      iptables  -N  Port_Log
    
    # Establish rule for traffic on port 22 for Zone: Port_Log
      iptables  -A  Port_Log      -p  tcp   --dport     22          -m  limit       --limit 3/min     --limit-burst   3     -j  REJECT
      iptables  -A  Port_Log                                                                                                -j  DROP
      # Integrated into firewall.user script below:
        ## $PL $tcp $SSH $limit3 -j REJECT
    
    # Establish rule for new incoming traffic on port 22 for Zone: INPUT
      iptables  -I  INPUT         -p  tcp   --dport     22          -m  conntrack   --ctstate NEW                           -j  REJECT
      # Integrated into firewall.user script below:
        ## $IN $tcp $SSH $New -j REJECT
    

  • iptables我在 OpenWrt 上开始使用的默认基础脚本 [ /etc/firewall.user]:
    #
    
            ##::[[---  OpenWrt Firewall Script  ---]]::##
    
    #===========================================================
                      ##----- IPtables -----##
    #===========================================================
    
    
        # Paramaters #
    #-----------------------------------------------------------
    
    # Chains:
      IN="iptables  -I  INPUT"
      PL="iptables  -A  Port_Log"
    
    # Limit:
      limit3="-m  limit   --limit 3/min     --limit-burst   3"
      limit4="-m  limit   --limit 4/sec"
      New="-m  conntrack   --ctstate NEW"
    
    # Ports:
      echR="--icmp-type echo-request"
      SSH="--dport     22"
    
    
    # Protocols:
      icmp="-p  ICMP"
      tcp="-p  tcp"
      udp="-p  udp"
    
    
        # Establish Custom Zones #
    #-----------------------------------------------------------
    
    # Limit:
      iptables  -N  Port_Log
    
    
        # Establish Rate Limit #
    #-----------------------------------------------------------
    # ICMP:
      $PL      $icmp  $echR         $limit4     -j  ACCEPT
    
    # SSH:
      $PL      $tcp   $SSH          $limit3     -j  REJECT
    
    # Default:
      $PL      $tcp                             -j  REJECT    --reject-with   tcp-reset
      $PL      $udp                             -j  REJECT    --reject-with   icmp-port-unreachable
      $PL    ! $icmp                            -j  LOG       --log-prefix    "<[[--- Connection DROPPED ---]]> : "
      $PL                                       -j  DROP
    
    
        # Apply Rate Limit #
    #-----------------------------------------------------------
    
    # ICMP:
      $IN      $icmp                            -j  Port_Log
    
    # SSH:
      $IN      $tcp   $SSH          $New        -j  REJECT
    

相关内容