博客

  • RHEL 9.0 主要变化

    RHEL 9.0 主要变化

    RHEL 9 生命周期

    Kernel

    版本

    • RHEL 9 kernel 5.14.0-70
    • RHEL 8 kernel 4.18.0
    • RHEL 7 kernel 3.10.0
    • RHEL 6 kernel 2.6.32

    现在完全支持使用 nvme_tcp.ko 的 NVMe/TCP 主机

    KTLS 不支持将 TLS 1.3 卸载到 NIC

    内核传输层安全(kTLS)不支持将 TLS 1.3 卸载到 NIC。因此,即使 NIC 支持 TLS 卸载,软件加密也会与 TLS 1.3 一起使用。要临时解决这个问题,如果需要卸载,禁用 TLS 1.3。因此,您只能卸载 TLS 1.2。当使用 TLS 1.3 时,性能较低,因为无法卸载 TLS 1.3。

    虚拟化

    • virt-manager 已被弃用, RHEL web 控制台(Cockpit)旨在在以后的版本中成为它的替代
    • libvirtd 已被弃用
    • qcow2-v2 镜像格式已弃用 红帽强烈建议您使用 qcow2-v3,而不是 qcow2-v2。要将 qcow2-v2 镜像转换为更新的格式版本,请使用 qemu-img amend 命令。

    NFS

    NFS 客户端不再支持使用 UDP 传输挂载文件系统。

    Systemd

    RHEL 9 中默认启用 cgroup-v2

    弃用了将 SHA-1

    生成 ECDSA 密钥

    ssh-keygen -t ecdsa -b 521 -f selboo

    在 RHEL 9 系统上,激活默认策略之上的 SHA1 加密策略:

    update-crypto-policies –set DEFAULT:SHA1

    诊断

    # ssh -v rhel6.server.test debug1: kex: host key algorithm: ssh-rsa … ssh_dispatch_run_fatal: Connection to 1.2.3.4 port 22: error in libcrypto https://access.redhat.com/mt/zh-hans/solutions/711953https://access.redhat.com/mt/zh-hans/solutions/6868611https://access.redhat.com/mt/zh-hans/solutions/6954602

    SELinux

    在内核中删除了通过 /etc/selinux/config 文件中的 SELINUX=disabled 选项禁用 SELinux 的支持。当您只通过 /etc/selinux/config 禁用 SELinux 时,系统会在启用 SELinux 的情况下启动,但不会载入策略。如果您需要禁用 SELinux,请在内核命令行中添加 selinux=0 参数。

    network-scripts 软件包已被删除

    network-scripts 软件包已被删除。使用 NetworkManager 配置网络连接。有关不是 RHEL 一部分的功能的更多信息,请参阅使用 RHEL 9 文档中的 Networking 一节。

    iptables-nft 和 ipset 已被弃用

    iptables-nft 和 ipset 已被弃用。这些软件包包括了相关的工具,如 iptables、ip6tables、ebtables 和 arptables。使用 nftables 框架配置防火墙规则。

    有关已弃用功能的更多信息,请参阅 已弃用功能 – 网络

    OpenSSL-3.0.1

    • 支持 enable-ktls Linux Kernel TLS(KTLS)的支持。
    • 对 nginx 卸载SSL 有性能提升

    OpenSSH-8.7p1

    • 支持使用 SFTP 协议作为之前使用 SCP/RCP 协议的替换。SFTP 提供更可预测的文件名处理,不需要由远程端的 shell 扩展 glob(3)模式。
    • 支持 Include 方式加载其他配置文件
    • 默认禁止 root 登录, 开启方法

    转载请注明:爱开源 » RHEL 9.0 主要变化

  • Red Hat Enterprise Linux 9.0 正式版发布

    Red Hat Enterprise Linux 9.0 正式版发布

    链接: https://pan.baidu.com/s/120lwyDFMWTdsWKymYMXUZg 提取码:wsdj

    File SHA-256
    rhel-baseos-9.0-x86_64-dvd.iso a387f3230acf87ee38707ee90d3c88f44d7bf579e6325492f562f0f1f9449e89
    rhel-baseos-9.0-x86_64-boot.iso 40c272e0dfad509ab2b088899d33ef6376a0280feaf53723a1bc42322068f699
    rhel-baseos-9.0-x86_64-kvm.qcow2 92862e085e4d5690cfa57de7155aa29bfdf21feec3d46dd4b61ca63293312af7
    virtio-win-1.9.25.iso 2b95e416daa471ae2765d27cac69bbb790ef1b7c5457f83d6d3e489f29e34aa9

    RHEL 9.0 的主要变化

    安全性

    在 RHEL 9 中弃用了将 SHA-1 消息摘要用于加密目的。SHA-1 生成的摘要不被视为安全,因为有很多记录的、基于查找哈希冲突的攻击。RHEL 核心加密组件不再默认使用 SHA-1 创建签名。RHEL 9 中的应用程序已更新,以避免在安全相关用例中使用 SHA-1。

    在例外中,仍然可以使用 SHA-1 创建 HMAC-SHA1 消息验证代码和 Universal Unique Identifier(UUID)值,因为这些用例目前不会产生安全风险。SHA-1 也可以在连接重要互操作性和兼容性问题(如 Kerberos 和 WPA-2)的有限情况下使用。如需了解更多详细信息,请参阅使用 与 FIPS 140-3 相符的 RHEL 应用程序 列表。

    有关仍需要 SHA-1 的系统兼容性问题的解决方案,请查看以下 KCS 文章:

    OpenSSL 现在在 3.0.1 中提供,它添加了一个提供程序概念、一个新的版本方案、一个改进的 HTTP(S)客户端,支持新协议、格式和算法以及许多其他改进。

    对系统范围的加密策略进行了调整,以提供最新的安全默认值。

    OpenSSH 在版本 8.7p1 中发布,它提供很多改进、错误修复和安全性改进,与版本 8.0p1 相比,它在 RHEL 8.5 中发布。

    SFTP 协议取代了 OpenSSH 中的之前使用 SCP/RCP 协议。SFTP 提供更可预测的文件名处理,不需要由远程端的 shell 扩展 glob(3) 模式。

    SELinux 性能显著提高,包括将 SELinux 策略加载到内核、内存开销和其他参数的时间。如需更多信息,请参阅验证 SELinux 博客文章的性能和空间效率

    RHEL 9 在上游版本 1.1 中提供 fapolicyd 框架。在其他改进中,您现在可以使用新的 rules.d/trust.d/ 目录、fagenrules 脚本和 fapolicyd-cli 命令的新选项。

    SCAP 安全指南(SSG)软件包在 0.1.60 版本中提供,它引入了 delta 定制、更新的安全配置集和其他改进。

    如需更多信息,请参阅 第 4.7 节 “安全性”

    在 DEFAULT 加密策略中限制使用 SHA-1 进行签名。除了 HMAC 外,TLS、DTLS、SSH、IKEv2、DNSSEC 和 Kerberos 协议中不再允许使用 SHA-1。

    如果您的场景需要使用 SHA-1 来验证现有或第三方加密签名,您可以输入以下命令启用它:

    # update-crypto-policies --set DEFAULT:SHA1
    

    或者,您可以将系统范围的加密策略切换到 LEGACY 策略。请注意,LEGACY 也启用了很多不安全的其他算法。

    Cyrus SASL 现在使用 GDBM 而不是 Berkeley DB,而网络安全服务(NSS)库不再支持信任数据库的 DBM 文件格式。

    在内核中删除了通过 /etc/selinux/config 文件中的 SELINUX=disabled 选项禁用 SELinux 的支持。当您只通过 /etc/selinux/config 禁用 SELinux 时,系统会在启用 SELinux 的情况下启动,但不会载入策略。如果您需要禁用 SELinux,请在内核命令行中添加 selinux=0 参数。

    有关 RHEL 9 和 RHEL 8 之间的安全区别的更多信息,请参阅 RHEL 9 文档中的安全性部分。https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/considerations_in_adopting_rhel_9/assembly_security_considerations-in-adopting-rhel-9

    网络

    您可以使用新的 MultiPath TCP 守护进程(mptcpd)配置 MultiPath TCP(MPTCP)端点,而无需使用 iproute2 实用程序。

    默认情况下,NetworkManager 现在使用密钥文件存储新的连接配置集。请注意,ifcfg 格式仍被支持。

    有关本版本中引入的功能以及现有功能更改的更多信息,请参阅 新功能 – 网络

    WireGuard VPN 技术现在作为技术预览提供。详情请查看 技术预览 – 网络

    teamd 服务和 libteam 库已弃用。作为替换,配置绑定而不是网络组。

    iptables-nftipset 已被弃用。这些软件包包括了相关的工具,如 iptablesip6tablesebtablesarptables。使用 nftables 框架配置防火墙规则。

    有关已弃用功能的更多信息,请参阅 已弃用功能 – 网络

    network-scripts 软件包已被删除。使用 NetworkManager 配置网络连接。有关不是 RHEL 一部分的功能的更多信息,请参阅使用 RHEL 9 文档中的 Networking 一节。

    动态编程语言、网页和数据库服务器

    RHEL 9.0 提供以下动态编程语言:

    • Node.js 16
    • Perl 5.32
    • PHP 8.0
    • Python 3.9
    • Ruby 3.0

    RHEL 9.0 包括以下版本控制系统:

    • Git 2.31
    • Subversion 1.14

    以下 web 服务器随 RHEL 9.0 一起发布:

    • Apache HTTP Server 2.4.51
    • nginx 1.20

    以下代理缓存服务器可用:

    • Varnish Cache 6.6
    • Squid 5.2

    RHEL 9.0 提供以下数据库服务器:

    • MariaDB 10.5
    • MySQL 8.0
    • PostgreSQL 13
    • Redis 6.2

    如需更多信息,请参阅 第 4.13 节 “动态编程语言、网页和数据库服务器”

    编译器和开发工具

    系统工具链

    RHEL 9.0 提供了以下系统工具链组件:

    • GCC 11.2.1
    • glibc 2.34
    • binutils 2.35.2

    RHEL 9 系统工具链组件包括对 POWER10 的支持。

    性能工具和调试器

    RHEL 9.0 提供了以下性能工具和调试器:

    • GDB 10.2
    • Valgrind 3.18.1
    • SystemTap 4.6
    • Dyninst 11.0.0
    • elfutils 0.186
    性能监控工具

    RHEL 9.0 有以下性能监控工具:

    • PCP 5.3.5
    • Grafana 7.5.11
    编译器工具集

    RHEL 9.0 提供以下编译器工具集:

    • LLVM Toolset 13.0.1
    • Rust Toolset 1.58.1
    • Go Toolset 1.17.7

    具体更改请查看 第 4.14 节 “编译器和开发工具”

    RHEL 9 中的 Java 实现

    RHEL 9 AppStream 软件仓库包括:

    • java-17-openjdk 软件包,提供 OpenJDK 17 Java 运行时环境和 OpenJDK 17 Java 软件开发组件。
    • java-11-openjdk 软件包,提供 OpenJDK 11 Java 运行时环境和 OpenJDK 11 Java 软件开发组件。
    • java-1.8.0-openjdk 软件包,提供 OpenJDK 8 Java 运行时环境和开源 JDK 8 Java 软件开发组件。

    如需更多信息,请参阅 OpenJDK 文档

    Java 工具

    RHEL 9.0 提供以下 Java 工具:

    • Maven 3.6
    • Ant 1.10

    如需更多信息,请参阅 第 4.14 节 “编译器和开发工具”

    虚拟化

    在 RHEL 9 中,libvirt 库使用 modular 守护进程来处理您主机上的单个虚拟化驱动程序集。这样便可对涉及虚拟化驱动程序的各种任务进行微调,如资源负载优化和监控。

    QEMU 模拟器现在使用 Clang 编译器构建。这可让 RHEL 9 KVM 管理程序使用许多高级安全和调试功能。其中一个功能是 SafeStack,它可以使在 RHEL 9 上托管的虚拟机(VM)显著减小了针对基于面向返回编程(ROP)的攻击风险。

    另外,虚拟受信任的平台模块(vTPM)现已获得全面支持。使用 vTPM,您可以将 TPM 虚拟加密处理器添加到虚拟机,然后可用于生成、存储和管理加密密钥。

    最后,virtiofs 功能已经实现,可用于更有效地在 RHEL 9 主机及其虚拟机间共享文件。

    转载请注明:爱开源 » Red Hat Enterprise Linux 9.0 正式版发布

  • ldap密码加密算法(userPassword属性)

    homeDirectory: /home/admin
    userPassword:: e01ENX1JQ3k1WXF4WkIxdVdTd2NWTFNOTGNBPT0=
    mail: root@aikaiyuan.com
    

    这里的 userPassword 是如何加密的呢? 方法如下

    1. 原文进行 MD5 加密, 将以16字节长度转换原始二进制格式
    2. 进行 base64_encode 加密
    3. 对上面 base64 添加 {MD5} 字符串前缀
    4. 在进行 base64_encode 加密

    php 案例

    # cat ldap_pass.php
    <?php
    $password = "123";
    
    $step1 = md5($password, true);
    $step2 = base64_encode($step1);
    $step3 = "{MD5}".$step2;
    $step4 = base64_encode($step3);
    
    echo $step4;
    ?>
    
    # php ldap_pass.php
    e01ENX1JQ3k1WXF4WkIxdVdTd2NWTFNOTGNBPT0=
    

    转载请注明:爱开源 » ldap密码加密算法(userPassword属性)

  • VMware ESXi 7.0.0 升级到 VMware ESXi 8.0.0

    VMware ESXi 7.0.0 升级到 VMware ESXi 8.0.0

    下载地址

    ESXi Build Date Size MD5
    7.0U1 16850804 2020/10/6 357.07 MB 5f787e2f30eee48fd121220b317f6c47
    7.0U1c 17325551 2020/12/17 368.94 MB 4829a336445741bf13f10bcb79723d40
    7.0U2 17630552 2021/3/9 390.53 MB a085686c3fc8a438a40382118448a846
    7.0U2a 17867351 2021/4/29 390.11 MB 5491860344ce79fcf2ffec2e72b79245
    7.0U3 18644231 2021/10/5 395.27 MB 482fcb20aef71740e88d0c360cd6b277
    7.0U3b 18905247 2021/11/12 395.42 MB d5af3b6697f3da311a88d8498f3b52ca
    7.0U3c 19193900 2022/01/27 395.34 MB eebe0ff3f993853d108c70697df1c611
    7.0U3d 19482537 2022/03/29 395.52 MB 4e7533462ebfa1858a7338c15bc82597
    8.0.0 20513097 2022/10/11 619.13 MB ecfa2f24c2f808c327a8eb83af11272e
    8.0b 21203435 2023/2/14 620.61 MB 3f216edfc132a9606d8e8332d3ae34a6
    9.0 24755229 2025/6/17 608.3 MB 3c4cbc401ccb0b8f0722f3cf931d3a72
    ESXi Offline Build Date Size MD5
    7.0U1 16850804 2020/10/6 343.91 MB 3c12872658250d3bd12ed91de0d83109
    7.0U1c 17325551 2020/12/17 498.94 MB d1410e6c741ada23c3570e07b94bd8c7
    7.0U2 17630552 2021/3/9 424.75 MB 4eae7823678cc7c57785e4539fe89d81
    7.0U2a 17867351 2021/4/29 372.47 MB 9b676a33ef191221f8e456b63d46dd55
    7.0U2d 18538813 2021/9/13 390.7 MB 2bad3934527592684841c0ef10d40eb5
    7.0U3 18644231 2021/10/5 377.44 MB e7546846bbec21d76b5a6a90cc206300
    7.0U3b 18905247 2021/11/12 377.53 MB ce9b14639295e42c440883d1dc06f4ca
    7.0U3c 19193900 2022/01/27 377.53 MB e39a951f4e96e92eae41c94947e046ec
    7.0U3d 19482537 2022/03/29 559.63 MB 22fca2ef1dc38f490d1635926a86eb02
    8.0.0 20513097 2022/10/11 632.65 MB daaa85f7d377e0c97b0d416f906c1d4d
    8.0b 21203435 2023/2/14 947.79 MB 3311032dada17653a5b017b3f2f0d3e4

    链接: https://pan.baidu.com/s/1SOZVrDi_CQ7W3nDuZPVlVw 提取码: 4hax

    开启SSH

    后台 -> 管理 -> 服务 找到 SSH 启动

    上传更新包

    [root@esxi:~] md5sum /vmfs/volumes/datastore1/Upgrade/VMware-ESXi-7.0U3b-18905247-depot.zip
    ce9b14639295e42c440883d1dc06f4ca /vmfs/volumes/datastore1/Upgrade/VMware-ESXi-7.0U3b-18905247-depot.zip
    

    SSH登陆 ESXi 主机

    [root@esxi:~] vmware -v
    VMware ESXi 7.0.0 build-16324942
    [root@esxi:~] vmware -l
    VMware ESXi 7.0 GA
    

    当前 版本是 16324942

    [root@esxi:~] esxcli software sources profile list -d /vmfs/volumes/datastore1/Upgrade/VMware-ESXi-7.0U3b-18905247-depot.zip
    Name Vendor Acceptance Level Creation Time Modification Time
    ----------------------------- ------------ ---------------- ------------------- -----------------
    ESXi-7.0U3b-18905247-standard VMware, Inc. PartnerSupported 2021-11-12T00:00:00 2021-11-12T00:00:00
    ESXi-7.0U3b-18905247-no-tools VMware, Inc. PartnerSupported 2021-11-12T00:00:00 2021-11-11T04:48:45
    
    [root@esxi:~] esxcli software profile update -d /vmfs/volumes/datastore1/Upgrade/VMware-ESXi-7.0U3b-18905247-depot.zip -p ESXi-7.0U3-18644231-standard
    Update Result
    Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
    Reboot Required: true
     VIBs Installed: VMW_bootbank_iavmd_2.7.0.1157-2vmw.703.0.10.18905247, VMware_bootbank_bmcal_7.0.3-0.10.18905247
    ... ...
    .......
    .......
    [root@esxi:~]
    [root@esxi:~] /sbin/reboot
    

    提示升级成功, 需要重启生效

    [root@esxi:~] vmware -vl
    VMware ESXi 7.0.3 build-18905247
    VMware ESXi 7.0 Update 3
    

    ESXi 7.0 升级 ESXi 8.0

    升级方法跟上面一样

    1. esxcli software sources profile list -d /xxxx/VMware-ESXi-8.0-20513097-depot.zip
    2. esxcli software profile update -d /xxxx/VMware-ESXi-8.0-20513097-depot.zip -p ESXi-8.0.0-20513097-standard
    [root@esxi:~] vmware -lv
    VMware ESXi 8.0.0 build-20513097
    VMware ESXi 8.0 GA
    [root@esxi:~]
    

    ESXi 8.0 许可码

    • vSphere 8 Enterprise Plus (推荐)

    • 4V492-44210-48830-931GK-2PRJ4

    • HG00K-03H8K-48929-8K1NP-3LUJ4
    • vSphere 8 Enterprise

    • 4F40H-4ML1K-M89U0-0C2N4-1AKL4

    • vSphere 8 for Virtual SAN Witness for Embedded OEMs

    • JF61H-48K8K-488X9-W98Z0-1FH24

    ESXi 8.0 升级 ESXi 9.0

    转载请注明:爱开源 » VMware ESXi 7.0.0 升级到 VMware ESXi 8.0.0

  • ifcfg-ethX ETHTOOL_OPTS

     # ethtool -g eth3
    Ring parameters for eth3:
    Pre-set maximums:
    RX: 4096
    RX Mini: 0
    RX Jumbo: 0
    TX: 4096
    Current hardware settings:
    RX: 256
    RX Mini: 0
    RX Jumbo: 0
    TX: 256
    
     # ethtool -k eth3 | grep generic-receive-offload
    generic-receive-offload: on
    
    # cat /etc/sysconfig/network-scripts/ifcfg-eth3 | grep ETHT
    ETHTOOL_OPTS="-K ${DEVICE} gro off"
    ETHTOOL_OPTS="${ETHTOOL_OPTS} ; -G ${DEVICE} rx 4096 "
    ETHTOOL_OPTS="${ETHTOOL_OPTS} ; -G ${DEVICE} tx 4096 "
    
    # /etc/init.d/network restart
    
    # ethtool -g eth3
    Ring parameters for eth3:
    Pre-set maximums:
    RX: 4096
    RX Mini: 0
    RX Jumbo: 0
    TX: 4096
    Current hardware settings:
    RX: 4096
    RX Mini: 0
    RX Jumbo: 0
    TX: 4096
    # ethtool -k eth3 | grep generic-receive-offload
    generic-receive-offload: off
    

    转载请注明:爱开源 » ifcfg-ethX ETHTOOL_OPTS

  • prometheus bind_exporter

    prometheus bind_exporter

    named.conf

    [root@aikaiyuan ~]# cat /etc/named.conf | more
    
    statistics-channels {
        inet 127.0.0.1 port 58053 allow { 127.0.0.1; };
    };
    

    bind_exporter

    https://github.com/prometheus-community/bind_exporter/releases

    [root@aikaiyuan ~]# wget https://github.com/prometheus-community/bind_exporter/releases/download/v0.3.0/bind_exporter-0.3.0.linux-amd64.tar.gz
    [root@aikaiyuan ~]# tar zxvf bind_exporter-0.3.0.linux-amd64.tar.gz
    [root@aikaiyuan ~]# cd bind_exporter-0.3.0.linux-amd64/
    [root@aikaiyuan bind_exporter-0.3.0.linux-amd64]#  ./bind_exporter -bind.stats-url="http://127.0.0.1:58053/" -web.listen-address="192.168.1.3:59100"
    
    • -bind.stats-url=”http://127.0.0.1:58053/” 指向 named.conf statistics-channels
    • -web.listen-address=”192.168.1.3:59100″ 监听本地端口, 由 Prometheus 调用

    Make sure BIND was built with libxml2 support. You can check with the following command: named -V | grep libxml2.

    Prometheus

    https://grafana.com/grafana/dashboards/12309

    [root@aikaiyuan ~]# cat prometheus.yml
      - job_name: 'dns'
        scrape_interval: 30s
        static_configs:
        - targets:
          - 192.168.1.3:59100
          labels:
            alias: localdns
    

    转载请注明:爱开源 » prometheus bind_exporter

  • 获取 阿里/google/amazon/Azure/github/fastly 所有IP

    阿里

    地址:https://regionip.aliyun.com/publish/abtn-ip2location.csv

    说明:阿里集团已规划的公网IP信息,可帮助全球各大云厂商提升对阿里巴巴骨干网、阿里云各大region的ip地址归属地识别精度。格式说明

    google

    # dig _spf.google.com TXT | grep TXT
    "v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"
    
    # dig _netblocks.google.com TXT | grep TXT
    "v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all"
    
    # dig _netblocks2.google.com TXT | grep TXT
    "v=spf1 ip6:2001:4860:4000::/36 ip6:2404:6800:4000::/36 ip6:2607:f8b0:4000::/36 ip6:2800:3f0:4000::/36 ip6:2a00:1450:4000::/36 ip6:2c0f:fb50:4000::/36 ~all"
    
    # dig _netblocks3.google.com TXT | grep TXT
    "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
    

    获取 Google IP 地址范围

    https://support.google.com/a/answer/10026322?hl=zh-Hans

    curl -s https://www.gstatic.com/ipranges/goog.json | jq
    {
      "syncToken": "1621875794139",
      "creationTime": "2021-05-24T10:03:14.139",
      "prefixes": [
        {
          "ipv4Prefix": "8.8.4.0/24"
        },
        {
          "ipv4Prefix": "8.8.8.0/24"
        },
    

    amazon

    https://ip-ranges.amazonaws.com/ip-ranges.json

    https://docs.aws.amazon.com/zh_cn/general/latest/gr/aws-ip-ranges.html

    # curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.service=="S3") | .ip_prefix'
    52.95.154.0/23
    52.219.64.0/22
    52.92.72.0/22
    52.92.64.0/22
    

    https://aws.amazon.com/cn/premiumsupport/knowledge-center/s3-find-ip-address-ranges/

    Azure IP Ranges and Service Tags – Public Cloud

    https://www.microsoft.com/en-us/download/details.aspx?id=56519

    GItHub

    https://docs.github.com/cn/github/authenticating-to-github/keeping-your-account-and-data-secure/about-githubs-ip-addresses

    curl \
      -H "Accept: application/vnd.github.v3+json" \
      https://api.github.com/meta
    

    cloudflare

    https://www.cloudflare.com/zh-cn/ips/

    fastly CDN

    To help you allowlist Fastly’s services through your firewall, we provide access to the list of Fastly’s assigned IP ranges at this URL:

    https://api.fastly.com/public-ip-list

    You can use the API endpoint to programmatically detect when the IP ranges change (for example, by running a script as a cron job).

    To make sure you have plenty of time to stay in sync, we post IP address announcements along with other service announcements to our status page, which you can subscribe to.

    https://docs.fastly.com/en/guides/accessing-fastlys-ip-ranges

    转载请注明:爱开源 » 获取 阿里/google/amazon/Azure/github/fastly 所有IP

  • DNS什么时候使用TCP?什么时候使用UDP?

    DNS什么时候使用TCP?什么时候使用UDP?

    DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议;

    DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器。在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。

    为什么既使用TCP又使用UDP?

    首先了解一下TCP与UDP传送字节的长度限制:
    UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。

    区域传送时使用TCP,主要有一下两点考虑:

    1. 辅助域名服务器会定时(一般是3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。区域传送将使用TCP而不是UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多。
    2. TCP是一种可靠的连接,保证了数据的准确性。

    域名解析时使用UDP协议:

    客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。虽然从理论上说,客户端也可以指定向DNS服务器查询的时候使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。

    如何使用 TCP

    默认使用UDP,我们也可以添加 options use-vc 使用TCP,也可以根据需求是否开启轮训 rotate https://man7.org/linux/man-pages/man5/resolv.conf.5.html

    cat /etc/resolv.conf
    options use-vc
    options rotate
    nameserver 114.114.114.114
    nameserver 114.114.115.115
    

    use-vc (since glibc 2.14)
    Sets RES_USEVC in _res.options. This option forces the
    use of TCP for DNS resolutions.
    rotate Sets RES_ROTATE in _res.options, which causes round-
    robin selection of name servers from among those
    listed. This has the effect of spreading the query
    load among all listed servers, rather than having all
    clients try the first listed server first every time.

    dig www.aikaiyuan.com +tcp
    
    queries: info: client @0xxxxxxxxxxxxx 1.1.1.1#51829 (www.aikaiyuan.com): view wangtong: query: www.aikaiyuan.com IN A + (1.1.1.1)
    queries: info: client @0xxxxxxxxxxxxx 1.1.1.1#39739 (www.aikaiyuan.com): view wangtong: query: www.aikaiyuan.com IN A +T (1.1.1.1)
    

    dns日志会添加一个 T 标志 https://kb.isc.org/docs/aa-00434

    转载请注明:爱开源 » DNS什么时候使用TCP?什么时候使用UDP?

  • cronshell 多台服务器相同 crontab 只执行一次

    https://github.com/selboo/cronshell

    cronshell

    多台服务器相同 crontab 只执行一次

    cronshell 安装

    # go build
    

    cronshell 配置

     # cat /etc/cronshell.conf
    [Log]
    logfile=/var/log/cronshell.log
    
    [Redis]
    host=192.168.15.100
    port=6379
    
    • logfile 日志路径
    • host redis 地址
    • port redis 端口

    crontab 配置

    服务器 Server A01

    # cat /etc/cron.d/cronshell
    MAILTO=""
    SHELL=/bin/cronshell
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    
    * * * * * root d=$(date); echo $d run ok >> /tmp/t.log
    

    查看执行结果

    # cat /tmp/t.log
    Sat May 30 22:47:01 CST 2020 run ok
    Sat May 30 22:48:01 CST 2020 run ok
    Sat May 30 22:51:01 CST 2020 run ok
    Sat May 30 22:54:01 CST 2020 run ok
    

    服务器 Server B01

    # cat /etc/cron.d/cronshell
    MAILTO=""
    SHELL=/bin/cronshell
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    
    * * * * * root d=$(date); echo $d run ok >> /tmp/t.log
    

    查看执行结果

    # cat /tmp/t.log
    Sat May 30 22:49:01 CST 2020 run ok
    Sat May 30 22:50:01 CST 2020 run ok
    Sat May 30 22:52:01 CST 2020 run ok
    Sat May 30 22:53:01 CST 2020 run ok
    Sat May 30 22:55:01 CST 2020 run ok
    Sat May 30 22:56:01 CST 2020 run ok
    

    转载请注明:爱开源 » cronshell 多台服务器相同 crontab 只执行一次

  • 使用 auditd 监控目录变化

    使用 auditd 针对 /data/logs 进行监控

    # auditctl -w /data/logs -p wxa -k watchdata
    
    • -w

    监控目录
    – -p

    r=read, w=write, x=execute, a=attribute
    – -k

    名称

    查看 auditd 任务

     # auditctl -l
    -w /data/logs -p wxa -k watchdata
    

    测试

     # date && echo test > /data/logs/w.log
    Tue May 26 17:43:20 CST 2020
     #
     # stat /data/logs/w.log
      File: ‘/data/logs/w.log’
      Size: 5           Blocks: 8          IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 936663      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2020-05-26 17:42:22.091560497 +0800
    Modify: 2020-05-26 17:43:20.542095768 +0800
    Change: 2020-05-26 17:43:20.542095768 +0800
     Birth: -
    

    查看

     # ausearch -k watchdata
    
    time->Tue May 26 17:43:20 2020
    type=PROCTITLE msg=audit(1590486200.542:1483346): proctitle="-bash"
    type=PATH msg=audit(1590486200.542:1483346): item=1 name="/data/logs/w.log" inode=936663 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
    type=PATH msg=audit(1590486200.542:1483346): item=0 name="/data/logs/" inode=920223 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 objtype=PARENT cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
    type=CWD msg=audit(1590486200.542:1483346):  cwd="/root"
    type=SYSCALL msg=audit(1590486200.542:1483346): arch=c000003e syscall=2 success=yes exit=3 a0=20fd8e0 a1=241 a2=1b6 a3=0 items=2 ppid=4726 pid=4727 auid=1009 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=211247 comm="bash" exe="/usr/bin/bash" key="watchdata"
    

    删除任务

     # auditctl -D -k watchdata
    

    linux 的 audit 服务
    使用 auditd 监控目录变化

    转载请注明:爱开源 » 使用 auditd 监控目录变化