在 Centos 上为 Postgres 配置防火墙规则的问题

在 Centos 上为 Postgres 配置防火墙规则的问题

我正在尝试按照本指南允许远程连接到 postgreshttp://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html
目前我遇到了防火墙问题。
我已经设置了防火墙,因此我/tmp/v4可以修改防火墙规则并从中恢复防火墙规则。
我尝试了 2 种设置。
指南推荐的是:

-A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 00.000.000.00  --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -s 00.000.000.00 --sport 5432 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

当我使用此设置并运行时nc ipofserver 5432我得到Ncat: connection timed out
如果我尝试设置

-I INPUT -p tcp -s 00.000.000.00  --dport 5432 -j ACCEPT
-I INPUT -p tcp -s 00.000.000.00  --dport 5432 -j ACCEPT

我运行相同的 ncat 命令,得到Ncat: Connection refused

我在另一台服务器上使用相同的基础防火墙(不是上面列出的)来提供 redis 服务,并且它运行正常。

为了熟悉起见,此机器上的firewalld已被禁用,取而代之的是iptables。

两台机器都是 CentOS 7

00.000.000.00 替换我实际使用的计算机的 IP

答案1

centos7 开箱即用,除非您已禁用它。我假设您没有禁用它,因为否则您会提到它。

有了这个假设,您就可以简单地在 postgresql 主机上运行它:

firewall-cmd --add-service=postgresql

一旦您验证它可以正常工作,您就可以使用永久开关再次运行它,以使其在重新启动后继续运行:

firewall-cmd --add-service=postgresql --permanent

如果您安装了 bash-completion 包,重新登录后,firewall-cmd 会自动完成,非常方便使用。

编辑:OP 表示他不使用防火墙命令。因此,假设他使用旧的 iptables 服务,则修改的规范方法是编辑 /etc/sysconfig/iptables。

如果要允许该主机中的端口 5432/tcp 的传入连接,则需要添加此行

-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

然后重新加载 iptables 服务。这当然会允许任何主机到数据库服务器的所有连接。

如果您想限制可以连接的主机(我们将其限制为一个,111.222.111.222),那么:

-A INPUT -p tcp -s 111.222.111.222 --sport 1024:65535 --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT

这样就可以了,当然,删除另一个,然后重新加载 iptables 服务

相关内容