美文网首页pg
pg pg_hba.conf 设置IP白名单

pg pg_hba.conf 设置IP白名单

作者: 饱饱想要灵感 | 来源:发表于2022-10-24 20:08 被阅读0次
    1. 首先找到 找到pg路径
      ps -ef|grep postgre |grep -- -D
      pg位置.png
    1. 然后修改路径下的pg_hba.conf, 一般都是在IPv4下修改
      pg_hba.png
    # PostgreSQL Client Authentication Configuration File
    # ===================================================
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    
    # "local" is for Unix domain socket connections only
     local   all             all                                     trust
    # IPv4 local connections:
     host    all     postgres        127.0.0.1/32            trust
    
     host   test        popo        192.168.0.1     md5
    
    # IPv6 local connections:
     host    all             all             ::1/128                 md5
    
    1. 最后找到pg服务, 重新加载
    systemctl |grep postgre
    service postgresql-10 reload
    
    pg-service.png

    pg_hba.conf 文件说明

    pg_hba中hba的意思是 host-based authentication 即基于主机的认证。它用于控制安全访问,管理客户端的访问权限,包括:

    • 哪些用户可以连接哪个数据库
    • 哪些IP或者哪个网段的IP可以连接到本服务器
    • 连接时的身份验证模式

    它的常用格式是一组记录,每行一个。一个记录由多个空格或者制表符分隔的域组成。如果域值被加上引号,域可以包含空格。记录不能跨越多行。
    每一行格式:
    {连接方式} {连接的数据库} {连接的用户} {连接的主机IP} {认证方式}

    每一个远程客户端访问记录具有如下的格式:
    host database role CIDR-address authentication-method

    每一个UNIX域套接字记录具有如下的格式:
    local database role authentication-method

    连接方式

    选项 解释
    local 这条记录匹配通过 Unix 域套接字进行的联接企图, 没有这种类型的记录,就不允许 Unix 域套接字的联接。
    host 这条记录匹配通过TCP/IP网络进行的联接尝试。他既匹配通过ssl方式的连接,也匹配通过非ssl方式的连接。<br />注意:要使用该选项你要在postgresql.conf文件里设置listen_address选项,不在listen_address里的IP地址是无法匹配到的。因为默认的行为是只在localhost上监听本地连接。
    hostssl 这条记录匹配通过在TCP/IP上进行的SSL联接企图。<br />要使用该选项,服务器编译时必须使用–with-openssl选项,并且在服务器启动时ssl设置是打开的,具体内容可见这里。
    hostnossl 这个和上面的hostssl相反,只匹配通过在TCP/IP上进行的非SSL联接企图。

    数据库

    指定这一记录匹配的数据库名。all匹配所有数据库。可以提供多个数据库名,用逗号分隔它们。在文件名前面放一个@,可以指定一个含有数据库名的单独的文件。

    用户名

    指定这一记录匹配的数据库角色名。all匹配所有角色。如果指定的角色是一个组并且希望该组中的所有成员都被包括在内,在该角色名前面放一个+。可以提供多个角色名,用逗号分隔它们。在文件名前面放一个@,可以指定一个含有角色名的单独的文件。

    主机IP

    指定这一记录匹配的客户端机器的IP地址范围。本选项只能在连接方式是host, hostssl或者hostnossl的时候指定。

    它包含一个标准点分十进制表示的IP地址和一个CIDR掩码长度。IP地址只能用数字指定,不能写成域或者主机名。

    掩码长度指示客户端IP地址必须匹配的高位位数。给定IP地址中,在这些位的右边必须是零。IP地址、/和CIDR掩码长度之间不能有任何空格。

    典型的CIDR地址例子是:192.0.2.89/32是一个单一主机,192.0.2.0/24是一个小网络,10.6.0.0/16是一个大网络。

    要指定单一的主机,IPv4的掩码是32,IPv6是128。

    ip地址(ip-address)、子网掩码(ip-mask)
    这两个字段包含可以看成是标准点分十进制表示的 IP地址/掩码值的一个替代。
    例如,使用255.255.255.0 代表一个24位的子网掩码。它们俩放在一起,声明了这条记录匹配的客户机的 IP 地址或者一个IP地址范围。

    认证方法

    方法 解释
    trust 无条件地允许联接,这个方法允许任何可以与PostgreSQL 数据库联接的用户以他们期望的任意 PostgreSQL 数据库用户身份进行联接,而不需要口令。
    reject 联接无条件拒绝,常用于从一个组中"过滤"某些主机。
    md5 要求客户端提供一个 MD5 加密的口令进行认证,这个方法是允许加密口令存储在pg_shadow里的唯一的一个方法。
    password 和"md5"一样,但是口令是以明文形式在网络上传递的,我们不应该在不安全的网络上使用这个方式。

    例子1: IP地址为10.10.56.17的所有用户可以通过MD5的密码验证方式连接主机上所有的数据库。

    host all all 10.10.56.17/32 md5

    例子2: 允许地址为 10.10.56.17 的用户 pgtest通过 MD5加密方式连接主机上的 test 数据库。

    host test pgtest 10.10.56.17/32 md5

    例子3: 任意IP地址的用户 pgtest 无需密码验证可直接连接访问该主机的 test 数据库。

    host test pgtest 0.0.0.0/0 trust

    相关文章

      网友评论

        本文标题:pg pg_hba.conf 设置IP白名单

        本文链接:https://www.haomeiwen.com/subject/jdsozrtx.html