我正在为安全环境中的高可用性 Webapp 设置带有 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:* LISTEN 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 以通过安全合规性。
谁能告诉我怎么做?
答案1
很晚了,但是如果您希望 pcsd 仅在 IPv4 中运行,您需要修改该文件/etc/sysconfig/pcsd
并替换默认值(并注释掉)
# PCSD_BIND_ADDR='::'
对于这样的事情:
PCSD_BIND_ADDR='192.168.23.65'
接下来您需要重新启动 pcsd 服务,如果您运行,netstat -tulpn
您应该会看到:
tcp 0 0 192.168.23.65:2224 0.0.0.0:* LISTEN 5191/ruby