加入收藏 | 设为首页 | 会员中心 | 我要投稿 武陵站长网 (https://www.50888.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

unix数据库 PostgreSql 认证方式-Idnet 认证

发布时间:2022-10-17 13:31:18 所属栏目:Unix 来源:转载
导读: 一、概述
ident 认证方法通过从一个 ident 服务器获得客户端的操作系统用户名并且用它作为被允许的数据库用户名(和可选的用户名映射)来工作。它只在 TCP/IP 连接上支持。
当为一个本地(

一、概述

ident 认证方法通过从一个 ident 服务器获得客户端的操作系统用户名并且用它作为被允许的数据库用户名(和可选的用户名映射)来工作。它只在 TCP/IP 连接上支持。

当为一个本地(非 TCP/IP)连接指定 ident 时,将实际使用 peer 认证。 

“Identification Protocol(标识协议)”在 RFC 1413 中描述。实际上每个类 Unix 操作系统都带着一个默认监听 TCP 113 端口的 ident 服务器。ident 服务器的基本功能是回答类似这样的问题:“哪个用户从你的端口X发起了连接并且连到了我的端口Y?” 。因为当一个物理连接被建立后,PostgreSQL既知道X也知道Y,所以它可以询问尝试连接的客户端主机上的 ident 服务器并且在理论上可以判断任意给定连接的操作系统用户。 简单来说unix数据库,ident 服务能够告知 socket 被连接端当前操作系统用户信息。

这个过程的缺点是它依赖于客户端的完整性:如果客户端机器不可信或者被攻破,攻击者可能在 113 端口上运行任何程序并且返回他们选择的任何用户。因此这种认证方法只适用于封闭的网络, 这样的网络中的每台客户端机器都处于严密的控制下并且数据库和操作系统管理员操作时可以方便地联系。换句话说,你必须信任运行 ident 服务器的机器。

二、配置示例 2.1 数据库服务器配置参数文件

pg_ident.conf 文件
# MAPNAME    SYSTEM-USERNAME    PG-USERNAME
      ss                aaa            test
      ss                syd             syd
      
pg_hba.conf 文件
# TYPE       DATABASE      USER        ADDRESS      METHOD
 local            all       all                        md5
  host            all       all   127.0.0.1/32         md5
  host            all       all      0.0.0.0/0         idnet map=ss
  host            all       all        ::1/128         md5
 local    replication       all                        md5
  host    replication       all   127.0.0.1/32         md5
  host    replication       all        ::1/128         md5
重新加载即可生效
pg_ctl reload

2.2 客户端配置并测试连接

客户端服务器要装有 PostgreSql 数据库客户端,可通过命令行方式连接远程服务器端的数据库。

--linux 客户端安装 oidentd,并启动该服务
yum -y install epel-release
yum clean all && yum makecache
yum install -y oidentd
systemctl start oidentd.service
systemctl status oidentd.service
--开放防火墙端口或关闭防火墙
firewall-cmd --add-port=113/tcp
firewall-cmd --permanent --add-port=113/tcp
firewall-cmd --reload
firewall-cmd --list-ports  | grep 113
systemctl stop firewalld.service
systemctl status firewalld.service
systemctl disable firewalld.service

--aaa 操作系统用户,使用 test 数据库用户,免密连入数据库。
[root@dj ~]# su - aaa
[aaa@dj ~]$ psql -U test -h 192.168.100.10 -p 5432
psql (12.4)
Type "help" for help.
test=> select user;
user
------
test
(1 row)
--syd 操作系统用户,使用 syd 数据库用户,免密连入数据库
[root@dj ~]# su - syd
[syd@dj ~]$ psql -U syd -h 192.168.100.10 -p 5432
psql (12.4)
Type "help" for help.
syd=> select user;
user
------
syd
(1 row)

(编辑:武陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!