欢迎投稿

今日深度:

Oracle最佳替代者PostgreSQL数据库的整体安全性(1)(6)

Ident

Ident 服务器回答了一个简单的问题:哪些用户从您的端口 X 发起连接并连接到我的端口 Y? 在 PostgreSQL 服务器的环境下,它将通知正在尝试登录的用户帐户的 Identity 所在的 DBMS。PostgreSQL 随后获得这个问题的答案,并根据由 DBA 在相应配置文件中配置的规则集允许或拒绝登录。

PostgreSQL Ident 服务器身份验证机制的工作原理是使用主机自己的 Ident 服务器,将 PostgreSQL 用户帐户映射到 UNIX 用户帐户。

下 面的例子假设所有 UNIX 用户帐户都已经被映射到 PostgreSQL 中,能够登录到任何数据库,前提是它们在 PostgreSQL 中使用相同的帐户名。如果 UNIX 用户名在 PostgreSQL 服务器中不存在对应的用户名,或者如果尝试使用另一个 用户帐户名登录,那么登录将失败。

假设您已经通过 SSH 连接到主机:ssh -l robert wolf。


清单 20. 失败的和成功的登录

robert@wolf:~$ psql -U robert robertWelcome to psql 8.2.4, the PostgreSQL interactive terminal.Type:  \copyright for distribution terms       \h for help with SQL commands       \? for help with psql commands       \g or terminate with semicolon to execute query       \q to quitrobert@wolf:~$ psql -U postgres robertpsql: FATAL:  Ident authentication failed for user "postgres"-- This works, su to become the UNIX user account postgres            

PostgreSQL 使用两个文件管理并控制已通过 Ident 服务器身份验证的用户的所有登录会话:

pg_hba.conf
通过一个文件中定义的记录控制访问。
pg_Ident.conf
当 Ident 服务被用作用户帐户的认证者authenticator)时发挥作用。比如,METHOD 在 pg_hba.conf 文件中被识别为 Ident。

清单 21. 简单配置示例

Example 1: A LOCALHOST connection enforces unix account robert to access database robert exclusively.  There is no authentication on UNIX domain sockets.(pg_hba.conf)# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD    OPTION  host    all         all         127.0.0.1/32        Ident     mymap  local   all         all                             trust(pg_Ident.conf)# MAPNAME     Ident-USERNAME    PG-USERNAME  mymap       robert            robertExample 2: A domain socket connection enforces unix account robert to access any database as pg account robert; unix account postgres can access any database as user robert.(pg_hba.conf)# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD    OPTION  local   all         all                             Ident     mymap  host    all         all         127.0.0.1/32        trust(pg_Ident.conf)# MAPNAME     Ident-USERNAME    PG-USERNAME  mymap       robert            robert  mymap       postgres          robertExample 3: A domain socket connection enforces that unix account can connect to any database with its postgres database namesake using thekeyword "sameuser".  pg_Ident.conf is not necessary here. Local host connections via TCP-IP are rejected.(pg_hba.conf)# TYPE  DATABASE                USER        CIDR-ADDRESS          METHOD    OPTION  local   template0,template1    all                             Ident     sameuser  host    all                    all         127.0.0.1/32        rejectEx4: (all users can connect with their own user names only to the databases postgres and robert)(pg_hba.conf)# TYPE  DATABASE                USER        CIDR-ADDRESS          METHOD    OPTION  local   template0,template1    all                             Ident     sameuser            

牢记下面的注意事项:

•配置修改在您重新加载文件后立即生效,比如重新加载 pg_ctl -D mycluster。
•不同的配置设置会引起奇怪的行为。在日志中查看失败的配置消息。
•当机器本身被认为是安全的时,将设计并实现 Ident。任何试图进行身份验证的远程服务器都应当被认为是可疑对象。
•Ident 服务器只用于对本地主机连接进行身份验证。
数据加密

有许多种方式会使您不经意地将自己暴露给 intranet 内部的骇客。

让我们来执行一次嗅探sniff)。假设您在自己的本地主机 192.168.2.64 上执行以下命令:tcpdump -i eth0 -X -s 3000 host 192.168.2.100 and port 5432。

在一个远程主机 192.168.2.100 上,您连接到您的本地主机的 PostgreSQL 服务器,后者已经在侦听端口 5432:psql -h 192.168.2.64 -p 5432 -U postgres postgres。注意修改您的超级用户帐户 postgres 的密码:ALTER USER postgres WITH ENCRYPTED PASSWORD 'my_new_password';。


清单 22. 在被嗅探的数据转储中识别密码

16:39:17.323806 IP wolf.56336 > laptop.postgresql: P 598:666(68) ack 470 win 3068 0x0000: 4500 0078 4703 4000 4006 6d88 c0a8 0264 E..xG.@.@.m....d 0x0010: c0a8 0240 dc10 1538 6a4f 7ada 6a71 e77c ...@...8jOz.jq.| 0x0020: 8018 0bfc 1a9d 0000 0101 080a 0094 a187 ................ 0x0030: 0092 53a2 5100 0000 4341 4c54 4552 2055 ..S.Q...CALTER.U 0x0040: 5345 5220 706f 7374 6772 6573 2057 4954 SER.postgres.WIT 0x0050: 4820 454e 4352 5950 5445 4420 5041 5353 H.ENCRYPTED.PASS 0x0060: 574f 5244 2027 6d79 5f6e 6577 5f70 6173 WORD.'my_new_pas        0x0070:  7377 6f72 6427 3b00                      sword';.            


www.htsjk.Com true http://www.htsjk.com/shujukuaq/16816.html NewsArticle Ident Ident 服务器回答了一个简单的问题:哪些用户从您的端口 X 发起连接并连接到我的端口 Y? 在 PostgreSQL 服务器的环境下,它将通知正在尝试登录的用户...
评论暂时关闭