AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 701226
Accepted
JK Laiho
JK Laiho
Asked: 2015-06-25 01:08:39 +0800 CST2015-06-25 01:08:39 +0800 CST 2015-06-25 01:08:39 +0800 CST

iptables 在不应该阻止端口 80 和 443 上的一些流量时?

  • 772

我正在管理的 Web 服务器显示奇怪的 iptables 拒绝来自目标端口 443 上的 IPv4 地址,尽管明确允许 HTTPS 流量。同一规则中也允许使用端口 80,但该站点仅支持 HTTPS,并且 nginx 会立即将 80 重定向到 443。

事情是:浏览网站的作品。您可以加载所有页面,所有资源都很好等等。但是这里显然有些不对劲,这可能会损害页面加载性能。

/var/log/iptables_deny.log以下是分别针对端口 443 和 80登录的一些错误示例。tail -f根据我在日志文件中的判断,这些可以单独出现,也可以突然出现。绝大多数用于端口 443:

iptables denied: IN=eth0 OUT= MAC=f2:3c:91:26:1e:1f:84:78:ac:0d:8f:41:08:00 SRC=(redacted IP) DST=(redacted IP) LEN=40 TOS=0x08 PREC=0x00 TTL=53 ID=61266 DF PROTO=TCP SPT=49264 DPT=443 WINDOW=0 RES=0x00 RST URGP=0
iptables denied: IN=eth0 OUT= MAC=f2:3c:91:26:1e:1f:84:78:ac:0d:8f:41:08:00 SRC=(redacted IP) DST=(redacted IP) LEN=40 TOS=0x00 PREC=0x00 TTL=115 ID=11186 DF PROTO=TCP SPT=58445 DPT=443 WINDOW=254 RES=0x00 ACK FIN URGP=0
iptables denied: IN=eth0 OUT= MAC=f2:3c:91:26:1e:1f:84:78:ac:0d:8f:41:08:00 SRC=(redacted IP) DST=(redacted IP) LEN=40 TOS=0x00 PREC=0x00 TTL=116 ID=16941 DF PROTO=TCP SPT=16278 DPT=80 WINDOW=255 RES=0x00 ACK FIN URGP=0

快速 grepping 说拒绝中的数据包类型至少可以是 ACK、ACK FIN、ACK RST、ACK PSH 和 RST。也许是其他人,但他们没有引起我的注意。

下面是 iptables -nvL 的输出。基本模式(首先允许所有相关和建立,然后允许 80 和 443 上的所有新流量)根据我所阅读的所有内容应该是可靠的。LOG & DROP 规则是 INPUT 链中的最后一个,它们应该是。

Chain INPUT (policy ACCEPT 1 packets, 391 bytes)
 pkts bytes target     prot opt in     out     source          destination   
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0       0.0.0.0/0     
 8893  770K ACCEPT     all  --  *      *       0.0.0.0/0       0.0.0.0/0      ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      *       (redacted IP)   0.0.0.0/0      ctstate NEW tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       (redacted IP)   0.0.0.0/0      ctstate NEW tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       (redacted IP)   0.0.0.0/0      ctstate NEW tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       (redacted IP)   0.0.0.0/0      ctstate NEW tcp dpt:22
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0       0.0.0.0/0      icmptype 8
   63  3840 ACCEPT     tcp  --  *      *       0.0.0.0/0       0.0.0.0/0      ctstate NEW multiport dports 80,443
    0     0 DROP       udp  --  *      *       0.0.0.0/0       0.0.0.0/0      udp dpt:137
    0     0 DROP       udp  --  *      *       0.0.0.0/0       0.0.0.0/0      udp dpt:138
    0     0 DROP       udp  --  *      *       0.0.0.0/0       0.0.0.0/0      udp dpt:139
    0     0 DROP       udp  --  *      *       0.0.0.0/0       0.0.0.0/0      udp dpt:445
    1    40 LOG        all  --  *      *       0.0.0.0/0       0.0.0.0/0      limit: avg 15/min burst 5 LOG flags 0 level 7 prefix "iptables denied: "
    1    40 DROP       all  --  *      *       0.0.0.0/0       0.0.0.0/0     

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source          destination   
    0     0 DROP       all  --  *      *       0.0.0.0/0       0.0.0.0/0     

Chain OUTPUT (policy ACCEPT 1 packets, 65 bytes)
 pkts bytes target     prot opt in     out     source          destination   
 7311   19M ACCEPT     all  --  *      *       0.0.0.0/0       0.0.0.0/0

实际的相关规则,如果它们在该输出之后有任何用处:

-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 80,443 -j ACCEPT

很明显,总的来说,这不是恶意流量。我从几个不同的 IP 地址浏览了该站点,虽然该站点加载看起来不错,但我的 IP 也出现在拒绝日志中,没有任何我可以辨别的模式,并且浏览器中没有任何用户可见的错误情况。

任何想法这背后可能是什么?

iptables
  • 1 1 个回答
  • 1943 Views

1 个回答

  • Voted
  1. Best Answer
    MadHatter
    2015-06-25T01:13:47+08:002015-06-25T01:13:47+08:00

    RST 和 ACK,FIN 数据包是 TCP 连接尾端的一部分。

    我的理解是iptables,出于安全原因,连接跟踪引擎采用了一种非常强大的方法来删除状态表条目:一旦它看到连接的一端试图将其关闭,那么(知道这样的请求表示结束连接,因为它的一端现在认为连接已关闭)它会删除已允许该连接流量的状态表条目。

    如果其他一些类似的防火墙也在路径中,阻止 RFC 指定的其余整理数据包,那么等待更长的时间来执行此操作可能是不安全的;在看到状态表条目之前延迟获取状态表条目可能会在一段时间内将无效条目留在表中,这将带来潜在的漏洞。

    但是 RFC 指定了一些更多的整理工作,你看到的是那些被拒绝的数据包。是的,这意味着连接中的端点将使用更多内存,等待连接老化而不是看到完全关闭并能够更快地释放连接内存;但提高安全性通常需要资源,这是其中一种权衡。

    那些永远不会通过的数据包没有任何害处,因此您可以放心地忽略日志条目。

    编辑:如果您不想在日志中看到它们,请在日志行之前处理它们,例如

    iptables -I INPUT 13 -p tcp -m conntrack --ctstate INVALID --tcp-flags ACK,FIN ACK,FIN -j DROP
    
    • 3

相关问题

  • OpenVPN 的 Linux IP 转发 - 正确的防火墙设置?

  • iptables 单个规则中的多个源 IP

  • 存储 iptables 规则的规范方法是什么

  • 使用 iptables 和 dhcpd 进行端口转发

  • 根据 Apache 日志数据自动修改 iptables 以阻止行为不良的客户端

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve