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
    • 最新
    • 标签
主页 / user-261951

Aaron's questions

Martin Hope
Aaron
Asked: 2018-04-11 13:26:11 +0800 CST

环回上第一次同步确认的随机时间戳

  • 4

前言

我们正在测试一些基于主机的 IPS。在这个测试用例中,我们的应用程序正在侦听环回,并且应用程序正在以明文形式接收流量。我们使用 nginx 或 haproxy 来终止公共接口上的 TLS。我们的 IDP 将监视环回,以便它可以看到未加密的流量。

我们的 IDP 看到格式错误/不正确的日期,因此我们开始深入挖掘。

[更新 2]正如@kasperd 提到的,tcpdump 正在从操作系统获取时间戳。也就是说,事实证明,除了 tcpdump 之外,这个 bug 实际上还会触发 IDP。它看到了 connection_established,但没有看到有效的 http 会话,因为 syn-ack 无效。

已在 redhat.com 和 centos.org 上提交了一个错误。

观察

环回上的第一个同步确认总是有一个接近纪元开始的日期,或者在虚拟机上的 2 年内。从1970 年 12 月到1973年 2 月,这在 VM 上变化很大,而在裸机 Xeon 服务器上则远未到来。 NTP在我们所有的虚拟机和裸机服务器上都是正确的,漂移小于 50 毫秒。

这只发生在环回上。我们从未在服务器上的 bond0 或 VM 上的 eth0 上看到这一点。

测试服务器和笔记本电脑

操作系统: CentOS 7

平台:

戴尔 20 核至强服务器(裸机主机操作系统)

HP 20 Core Xeon 服务器(裸机主机操作系统)

MacOS 上的 VirtualBox

具有 6 个虚拟内核的 Lenovo P50 上的 Windows 10 Enterprise 上的 Hyper-V。

一台基于 Celeron 4 Core 1.6 GHz 的路由器(无法在 Celeron 上重现)

重现步骤

在每个平台上,我们在环回的 80 端口上启动一个 Web 侦听器。

./simple_python 127.0.0.1 &

上面的代码在这里

然后我们启动tcpdump

tcpdump -p -NNnn -XXxx -tttt -vv -s0 -c2 -i lo &

然后我们 curl 到 localhost

curl -s -o /dev/null http://127.0.0.1/

输出

2018-04-10 21:05:30.087769 IP (tos 0x0, ttl 127, id 49233, offset 0, flags [DF], proto TCP (6), length 60)
    127.0.0.1.25134 > 127.0.0.1.80: Flags [S], cksum 0xfe30 (incorrect -> 0xce27), seq 4053136920, win 65495, options [mss 65495,sackOK,TS val 22951497 ecr 0,nop,wscale 13], length 0
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  003c c051 4000 7f06 3d68 7f00 0001 7f00  .<.Q@...=h......
    0x0020:  0001 622e 0050 f195 f618 0000 0000 a002  ..b..P..........
    0x0030:  ffd7 fe30 0000 0204 ffd7 0402 080a 015e  ...0...........^
    0x0040:  3649 0000 0000 0103 030d                 6I........
1973-02-14 22:12:10.785902 IP (tos 0x0, ttl 127, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    127.0.0.1.80 > 127.0.0.1.25134: Flags [S.], cksum 0xfe30 (incorrect -> 0x2f28), seq 3928063281, ack 4053136921, win 65483, options [mss 65495,sackOK,TS val 22951497 ecr 22951497,nop,wscale 13], length 0
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  003c 0000 4000 7f06 fdb9 7f00 0001 7f00  .<..@...........
    0x0020:  0001 0050 622e ea21 7d31 f195 f619 a012  ...Pb..!}1......
    0x0030:  ffcb fe30 0000 0204 ffd7 0402 080a 015e  ...0...........^
    0x0040:  3649 015e 3649 0103 030d                 6I.^6I....

在任何情况下,syn-ack 在 VM 上总是在 1970 到 1973 年之间的某个日期,而在 Xeon 上则是未来的某个日期。

  • 我可以在每个平台上100%地重现这个,除了赛扬。我们不在数据中心使用赛扬。我只是想找到一些不受影响的东西。

我还试图让这一切消失吗?

  • 我曾尝试使用taskset.
  • 我尝试设置影响 libc 的不同变量,例如 TZ、LANG、LC_ALL 等...
  • 我已经尝试禁用接口的所有卸载功能,尽管它是一个环回并且那些实际上不应该做任何事情。
  • 我尝试了一些不同的 sysctl 设置。
  • 我尝试在 tcpdump 中使用不同的 snaplen。(我知道有关 snaplength 的一些历史问题)
  • 我验证了硬件时钟是正确的。

我没有尝试过的

  • 我没有尝试设置接收流转向,因为我们不会在没有充分理由的情况下在我们的数据中心执行此操作。
  • 可能还有很多其他的事情我可以尝试,但这看起来真的像是某种 libc / 缓冲区 / 竞争条件错误。

关于这可能发生在 Linux 代码中的什么位置的任何想法?由于我不是 C 开发人员,因此我对深入研究 glibc 犹豫不决。

[更新] @jackthecoiner似乎发现了其他人也遇到了这个问题,并且到目前为止还没有收到关于 Redhat 网站的任何反馈。

centos7
  • 1 个回答
  • 511 Views
Martin Hope
Aaron
Asked: 2017-07-01 17:31:10 +0800 CST

在 CentOS 7 上禁用 polkit.service 的正确方法

  • 7

为什么?

我的服务是通过适当的单元文件或初始化脚本启动的。我不需要普通用户在我的服务器上做任何特别的事情su。我正在寻找一种完全关闭 polkit 的方法,而不会在其他服务重新启动时自行启动。

我预见到在我们的 PCI 环境中向审计员解释这一点也会出现问题。我们必须描述每项服务的目的。我们没有在 PCI 环境中使用 polkit 的合法用例。

附加说明:我没有安装 polkit。这些服务器的安装量非常小,大约为 670MB / 这是一个似乎已安装 polkit 的 systemd 更新,并且该规范显然依赖于所有 systemd 托管服务。安装后,我必须重建机器才能将其删除,就像nss安装后尝试删除一样。我担心的是,如果我强制卸载,它可能会留下一些文件,这些文件会导致 systemd 假定它在那里。

我试过的:

创建/etc/polkit-1/rules.d/99-deny-all.rules与

polkit.addRule(function(action, subject) {
    return polkit.Result.YES;
});

然后

systemctl daemon-reload && systemctl daemon-reexec

这什么都不做,/usr/lib/polkit-1/polkitd --no-debug当 systemd 下的其他服务重新启动时继续启动。

[更新]正如亚历山大所说,重新启动 polkit 会将设置应用于 polkit 本身,这很好,但我正在寻找一种方法来告诉 polkit 不启动不会破坏其他服务。

[更新 2] 这实际上可能会阻止某些服务正确重新启动。


屏蔽或禁用服务:

这会导致其他服务在启动和关闭时挂起,等待 polkit。


编辑/usr/share/dbus-1/sstem-services/org.freedesktop.PolicyKit1.service:

[snip]
Exec=/bin/false
[snip]

然后

systemctl daemon-reload && systemctl daemon-reexec

这什么都不做,/usr/lib/polkit-1/polkitd --no-debug当 systemd 下的其他服务重新启动时继续启动。


我已经阅读了几次手册页。这可能是我想念的非常简单的事情。我的偏好是在 systemd 包更新后仍然存在的方法。

我正在寻找的最终目标是让 polkit.service 在其他守护进程重新启动时不启动,例如 unbound、bind、dhcp 等。

centos
  • 3 个回答
  • 37312 Views
Martin Hope
Aaron
Asked: 2016-02-01 11:50:48 +0800 CST

递归转发绑定 DNS 服务器未从缓存中应答

  • 0

问题陈述

我有一个几乎按预期运行的绑定缓存和转发服务器。所有查询都被转发,它们的 TTL 被缓存。乍一看,一切似乎都很正常,直到我看到响应时间从未低于我的 VPN 的 150 毫秒。

执行 tcpdump 后,我发现即使 bind 清楚地知道 TTL 大于 0(在本例中为 14000 的 TTL),解析器仍在转发每个请求。响应的 TTL仍按预期递减,但无论缓存记录中剩余的 TTL 如何,每个请求仍会向上游转发。

如果我禁用转发,此行为将停止并且缓存按预期工作。

版本

Bind 9.9.4-29  (Redhat forked)
OS: CentOS 7

配置的相关部分

allow-query { local; };
recursion yes;
allow-recursion { local; };
max-cache-size unlimited;
stacksize unlimited;
datasize unlimited;

    zone "." IN {
    type forward;
    forward first;
    forwarders { 192.168.120.3; 192.168.120.2; };
    };

我都试过了forward first;,forward only;这个解析器几乎没有负载,有几 GB 的可用内存。在任何给定时间,它都不会缓存超过几百条记录。

我是否可能对绑定中的行为有错误的期望?使用 Unbound 我没有看到这种行为,但出于其他原因我想切换回 bind。

bind
  • 1 个回答
  • 1394 Views

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