Centos7.4 安装Postgres SQL及安全加固

一、服务器基础设置

关闭防火墙

#关闭selinux
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/sysconfig/selinux
#关闭firewalld防火墙
systemctl disable firewalld
systemctl stop firewalld

添加postgresql数据库源,本文通过yum安装的方式

yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

二、安装PostgresSQL

使用yum进行安装

yum -y install postgresql11-contrib postgresql11-server

修改数据目录,默认是/var/lib/pgsql

mkdir -p /var/data/postgres-data
chown -R postgres:postgres /var/data/postgres-data
chmod 750 /var/data/postgres-data

修改配置文件,更改数据目录

vim /usr/lib/systemd/system/postgresql-11.service
    Environment=PGDATA=/var/data/postgres-data

添加环境变量

vim /etc/profile
    export PATH=/usr/pgsql-11/bin:$PATH
    export PGDATA=/var/data/postgres-data
​
#使变量生效
source /etc/profile

初始化并启动数据库

#初始化数据库
/usr/pgsql-11/bin/postgresql-11-setup initdb
​
#启动
systemctl start postgresql-11.service
systemctl enable postgresql-11.service
systemctl status postgresql-11.service
​
#查看端口
netst -lntp|grep 5432

设置登录密码

su - postgres        #进入postgres用户
-bash-4.2$ psql
psql (11.7)
Type "help" for help.
postgres=# ALTER USER postgres WITH PASSWORD 'Abc@123';     #设置密码为:Abc@123
ALTER ROLE
postgres=# \q
​
备注:\q退出数据库;\l列出所有用户;\du列出库下所有表
#添加信任的连接IP段
vim /var/data/postgres-data/pg_hba.conf
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            ident
    host    all             all             0.0.0.0/0               md5
​
#设置允许通过的IP地址连接
vim /var/data/postgres-data/postgresql.conf
    listen_addresses = '*'      #修改为*
​
#重启服务生效
systemctl restart postgresql-11.service

三、数据库安全加固

1.设置密码应符合复杂度

密码应至少包含大写字母、小写字母、数字、特殊符号 中的三种,并且密码长度应大于8位。

2. 限制用户连接数

max_connections根据应用并发量设置合理的值,对普通数据库用户设置限制连接数,并设置少量的保留超级用户登录连接数。

postgres=# create user app1 connection limit 5;
CREATE ROLE

3.修改默认端口(根据场景修改,建议默认)

postgres=# select * from current_setting('port');
 current_setting 
-----------------
 5432
(1 row)

4.修改默认用户

1)建议删除默认超级用户postgres,可在initdb时使用-U指定超级用户。
initdb -D /var/data/pg-data -U test -W
​
2)或者删除默认的超级用户,新建不同名称超级用户
DROP ROLE IF EXISTS 用户名;
​
创建超级用户命令
CREATE ROLE 用户名 WITH SUPERUSER LOGIN PASSWORD '密码';

5.修改监听地址(根据场景修改)

根据业务场景设置,比如设置为localhost或服务器IP,意思为从哪个网卡可以进入并进行访问。

vim /var/data/pg-data/postgresql.conf
#listen_addresses = 'localhost'     #仅当前主机,建议
#listen_addresses = '*'  #从所有地方来的IP都能监听
#listen_addresses = 'localhost,192.168.9.100,172.17.0.1'  #多个IP

6.配置客户端认证

vim /var/data/pg-data/pg_hba.conf
​
# 服务端本地数据库用户免密登录
local      all   all       trust   
# 拒绝超级用户从网络登录(设置后无法远程连接,根据情况修改)   
#host      all   postgres  0.0.0.0/0     reject
# 用户密码验证登陆(如果认证方式为scram-sha-256,则通过navicat无法连接)
host      all   all      0.0.0.0/0  md5
# 流复制用户密码验证登录
host      replication  replica  192.168.100.101/32     md5

几种常见的密码认证说明

1)trust
无条件地允许连接。这种方法允许任何可以与PostgreSQL数据库服务器连接的用户以他们期望的任意PostgreSQL数据库用户身份登入,而不需要口令或者其他任何认证。
​
2)reject
无条件地拒绝连接。这有助于从一个组中"过滤出"特定主机,例如一个reject行可以阻塞一个特定的主机连接,而后面一行允许一个特定网络中的其余主机进行连接。
​
3)md5
要求客户端提供一个双重 MD5 加密的口令进行认证。
​
4)password
要求客户端提供一个未加密的口令进行认证。因为口令是以明文形式在网络上发送的,所以我们不应该在不可信的网络上使用这种方式。
​
5)ident
通过联系客户端的 ident 服务器获取客户端的操作系统名,并且检查它是否匹配被请求的数据库用户名。Ident 认证只能在 TCIP/IP 连接上使用。当为本地连接指定这种认证方式时,将用 peer 认证来替代。
​
6)peer
从操作系统获得客户端的操作系统用户,并且检查它是否匹配被请求的数据库用户名。这只对本地连接可用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值