我正在为安全环境中的高可用性 Web 应用程序设置一个带有 DRBD 挂载的 Pacemaker/Corosync 集群。这是在 CentOS 7 上运行的。集群正在运行。然而,为了让这个系统为安全审计做好准备,我必须禁止所有应用程序监听 IPV6 并强制使用 IPV4。
我在系统范围内禁用了 IPV6:
# Contents of /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
我还采取了在网络级别禁用 IPV6 的额外步骤:
# Contents of /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6_AUTOCONF=no
但是 PCSD 坚持监听 IPV6 端口:
# netstat -lnptu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1206/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1837/master
tcp6 0 0 :::2224 :::* LISTEN 486/ruby
udp 0 0 192.168.4.100:60618 0.0.0.0:* 10932/corosync
udp 0 0 0.0.0.0:5353 0.0.0.0:* 460/avahi-daemon: r
udp 0 0 192.168.4.100:5405 0.0.0.0:* 10932/corosync
udp 0 0 0.0.0.0:57120 0.0.0.0:* 460/avahi-daemon: r
udp 0 0 192.168.4.100:40891 0.0.0.0:* 10932/corosync
没有 IPV6 接口:
ip a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:8d:d1:76 brd ff:ff:ff:ff:ff:ff
inet 192.168.4.100/24 brd 192.168.4.255 scope global ens160
valid_lft forever preferred_lft forever
inet 192.168.4.110/24 brd 192.168.4.255 scope global secondary ens160
valid_lft forever preferred_lft forever
我按照另一个论坛的建议从 /etc/hosts 中删除了 IPV6 环回:
# Contents of /etc/hosts
192.168.4.100 node1 node1.network.dmn
192.168.4.101 node2 node2.network.dmn
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
我还看到了一个旧的错误报告,即禁用 IPV6 时 PCSD 无法启动。这已解决,我可以确认我的实例启动得很好,但是正如关于此错误的评论中所述,当 IPV6 被禁用时,PCSD 应该在 IPV4 上侦听,但它没有这样做。所以这似乎是异常行为:
来源: https ://bugzilla.redhat.com/show_bug.cgi?id=1104359
Created attachment 933288 [details] proposed fix
测试:
- 禁用 ipv6,将 ipv6.disable=1 添加到内核引导行并重新启动
- 启动 pcsd 服务 systemctl start pcsd.service
- 验证 pcsd 正在运行并在 0.0.0.0 netstat --inet -anp46 上侦听 | grep 2224 tcp 0 0 0.0.0.0:2224 0.0.0.0:* 听 1746/ruby
- 在启用 ipv6 的情况下重新启动。
- 启动 pcsd 服务 systemctl start pcsd.service
- 验证 pcsd 是否正在运行并正在侦听 :: netstat --inet -anp46 | grep 2224 tcp6 0 0 :::2224 :::*
LISTEN 356/ruby
谷歌搜索在配置中强制使用 IPV4 的方法没有产生任何结果。所以我现在卡住了。我必须将此端口强制为 0.0.0.0:2224 以通过安全合规性。
谁能告诉我怎么做?
很晚了,但是如果您希望 pcsd 仅在 IPv4 中运行,您需要修改文件
/etc/sysconfig/pcsd
并替换默认值(并注释)对于这样的事情:
接下来你需要重新启动 pcsd 服务,如果你运行
netstat -tulpn
你应该看到: