Centos

在 Centos 上為 Postgres 配置防火牆規則的問題

  • December 22, 2020

我正在嘗試按照本指南允許遠端連接到 postgres http://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 5432Ncat: 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

centos7 使用開箱即用的 firewall-cmd,除非你禁用它。我假設你沒有,因為否則你會提到它。

有了這個假設,你就可以簡單地在你的 postgresql 主機上執行它:

firewall-cmd --add-service=postgresql

一旦你確認它可以工作,那麼你可以使用永久開關再次執行它,使其在重新啟動後保持不變:

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

如果您安裝了 bash-completion 包,在重新登錄後,firewall-cmd 會自動完成,使其非常易於使用。

編輯:OP表示他不使用firewall-cmd。所以假設他使用的是舊的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 服務

引用自:https://serverfault.com/questions/789014