web-dev-qa-db-ja.com

リモートアクセスのためにpostgresqlポートが閉じられました

ルートアクセス権を持つUbuntuサーバーのPostgreSQLデータベースに接続しようとしていますが、どういうわけか、ローカルアクセスのためにポート5432を開くことができません。これは、サーバーで「nmap」コマンドを使用するとどうなりますか(XXX.XXX.X.XXはサーバーのIPを表します)。

nmap -p 5432 localhost
PORT      STATE  SERVICE 
5432/tcp  open   postgresql


nmap -p 5432 XXX.XXX.X.XX
PORT      STATE  SERVICE 
5432/tcp  closed postgresql

ファイル「pg_hba.conf」と「postgresql.conf」をすでに編集しましたが、機能しませんでした。

変更点:

pg_hba.confファイル:

# IPv4 local connections:
Host    all             all             all            md5
# IPv6 local connections:
Host    all             all             all            md5

postgresql.confファイル:

listen_addresses = '*'

PgAdmin IIIで接続しようとすると、次のようになります。

サーバーはリッスンしません

サーバーに接続できませんでした:接続が拒否されました(0x0000274D/10061)サーバーはホスト "XXX.XXX.X.XX"で実行されており、ポート5432でTCP/IP接続を受け入れていますか?

「ufw」コマンドを使用してポートを開こうとしましたが、うまくいきませんでした。

誰か助けてもらえますか?

ファイアウォールがトラフィックをブロックしていないことを確認してください。

次のルールをiptablesに追加します(X.X.X.XをサーバーのIPアドレスに変更します)。

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

機能する場合は、iptablesを保存して再起動します。

# apt-get install iptables-persistent
# /etc/init.d/iptables restart

ネットワーク上に外部ファイアウォールがある場合は、そこにも接続を許可する必要があります。

セキュリティノート: PostgreSQLポートを公開することはセキュリティ上の懸念事項である可能性があります。最初のiptablesコマンドの-s 0/0パラメーターを-s X.X.X.X/Xに変更して、着信トラフィックを特定のIPアドレス/範囲に制限することを検討する必要があります。

2
adambg