PostgreSQL 配置远程链接和 SSL
因为最近有需要需要把数据库拆分然后研究了一下
配置系统防火墙
首先是建议先安装 ufw 然后关闭非必要端口,同时为需要连接的服务器保留端口
apt install ufw
ufw allow ssh
ufw allow from 127.0.0.1 to any port 5524 # 为指定服务器开启端口
ufw enable
同时也是为了方便之后在 PostgreSQL 只需要修改一个配置文件就可以了
配置 PostgreSQL
创建新用户和对应数据库
按道理这里是不需要写的,但是为了完整性还是写一下
sudo -i -u postgres psql -d postgres # 以 postgres 登录进数据库
CREATE USER myuser WITH PASSWORD 'mypassword'; # 创建用户
CREATE DATABASE mydb; # 创建数据库
ALTER DATABASE mydb OWNER TO myuser; # 把 mydb 归属者修改为 myuser
\list # 数据库概览
配置 PostgreSQL.conf
首先我们需要去 /etc/postgresql/17/main 中修改 postgresql.conf,将 listen_addresses = ‘127.0.0.1’,修改为 ‘*’
listen_addresses = '*'
PS: 这当然不安全,所以我使用 ufw
之后找到配置文件中 SSL 部分,修改如下
ssl = on
ssl_ca_file = '你的证书文件'
ssl_cert_file = '你的证书文件'
ssl_key_file = '你的证书文件'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
ssl_prefer_server_ciphers = on
ssl_min_protocol_version = 'TLSv1.2'
踩坑点
这里一定要的是你存放的证书文件保证权限所有者是 PostgreSQL 以及保持 600
chown -R postgresql:postgresql 你的证书目录
chmod 600 你的证书目录
配置 pg_hda.conf
首先出于安全考虑,先把 postgresql 的远程登录给禁掉
host all postgres 0.0.0.0/0 reject
host all postgres ::1/128 reject
然后是开启对应服务器的连接权限
hostssl mydb myuser 127.0.0.1/32 scram-sha-256
需要额外强调的是规则的是从上到下依次生效,所以根据需要自己排序
额外的,PostgreSQL 日志的存放地址是 /var/log/postgresql,启动不起来务必查看日志