web-dev-qa-db-ja.com

Centos上のPostgresのファイアウォールルールの構成に関する問題

このガイドに従って、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 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を置き換えます

7
Jon Heckman

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

もちろん、これでうまくいき、もう1つは削除して、iptablesサービスをリロードします。

12
natxo asenjo