PostgreSql數據庫安全加固


1.確保通過“主機” TCP / IP套接字登錄已正確配置
描述
大量的身份驗證方法可用於使用
TCP / IP套接字,包括:
?信任
? 拒絕
?md5
?scram-sha-256
?密碼
?gss
?sspi
?身份
?pam
?ldap
?半徑
?證書
方法trust,password和ident不能用於遠程登錄。 方法md5是
最受歡迎,可以在加密和未加密會話中使用,但是
容易受到數據包重播攻擊。 建議使用scram-sha-256
而不是md5。
使用gss,sspi,pam,ldap,radius和cert方法,但比md5更安全,
取決於外部認證過程/服務的可用性,因此
未包含在此基准測試中。

加固建議
在配置文件(pg_hba.conf)中如下配置

# TYPE     DATABASE     USER         ADDRESS              METHOD
    host           all            postgres    127.0.0.1/32    scram-sha-256

配置文件路徑可登錄postgres數據庫 show hba_file;進行查看

2.確保已禁用“ debug_print_plan”
描述
debug_print_plan設置啟用打印每個已執行查詢的執行計划。
這些消息在LOG消息級別發出。除非您另有指示
組織的日志記錄策略,建議通過將其設置為off來禁用此設置。

加固建議
1.進入postgresql數據庫,執行命令show debug_print_plan; 查看狀態
2.執行命令
alter system set debug_print_plan = 'off';
select pg_reload_conf();
3.重復執行步驟1,查看狀態是否為off(關閉) 請注意: 如果您的postgresql版本在9.3(或更早),請修改配置文件 postgresql.conf 中配置
debug_print_plan = 'off'

並重啟

3.確保已禁用“ debug_print_rewrite”
描述
debug_print_rewrite設置允許為每個輸出打印查詢重寫器輸出
執行查詢。這些消息在LOG消息級別發出。除非有指示
否則,根據您組織的日志記錄策略,建議禁用此設置
通過將其設置為關閉

加固建議
1.進入postgresql數據庫,執行命令 show debug_print_rewritten; 查看狀態
2.執行命令
alter system set debug_print_rewritten = 'off';
select pg_reload_conf(); 3.重復執行步驟1,查看狀態是否為off(關閉) 請注意: 如果您的postgresql版本在9.3(或更早),請修改配置文件 postgresql.conf 中配置 debug_print_rewritten= 'off'`

並重啟

4.確保已禁用“ debug_print_parse”
描述
debug_print_parse設置啟用為每次執行打印結果分析樹
查詢。 這些消息在LOG消息級別發出。 除非另有指示
您組織的日志記錄策略,建議通過設置禁用此設置
關閉。

加固建議
1.進入postgresql數據庫,執行命令 show debug_print_parse;
查看狀態 2.執行命令
alter system set debug_print_parse = 'off';
select pg_reload_conf();
3.重復執行步驟1,查看狀態是否為off(關閉) 請注意: 如果您的postgresql版本在9.3(或更早),請修改配置文件 postgresql.conf 中配置
debug_print_parse = 'off'

並重啟

5.確保正確設置了日志目標
描述
PostgreSQL支持多種記錄服務器消息的方法,包括stderr,
csvlog和syslog。 在Windows上,也支持eventlog。 這些中的一個或多個
應該為服務器日志輸出設置目的地。

加固建議
1.進入postgresql數據庫,執行命令 show log_destination; 查看狀態
2.執行命令 alter system set log_destination = 'csvlog'; select pg_reload_conf();
3.重復執行步驟1,查看狀態是否為'csvlog'

6.密碼復雜度檢查
描述
檢查密碼長度和密碼是否使用多種字符類型

加固建議
修改shared_preload_libraries參數

$ vi postgresql.conf
新增配置項

shared_preload_libraries = 'passwordcheck'

切換到數據庫啟動用戶:如 u -postgres
執行命令
pg_ctl -D $PGDATA restart
使配置生效(如未配置系統變量pg_ctl 默認在安裝的bin目錄下)
如果您沒有安裝配置passwordcheck(自帶的第三方插件,建議重新安裝) 如不能重裝,可考慮加白名單。

7.確保撤銷過多的管理特權
描述
關於PostgreSQL管理SQL命令,僅超級用戶應具有
特權提升。 PostgreSQL常規或應用程序用戶不應具備此能力
創建角色,創建新數據庫,管理復制或執行任何其他操作
被視為特權。 通常,普通用戶只應被授予
與管理應用程序相對應的特權:
?DDL(創建表,創建視圖,創建索引等)
?DML(選擇,插入,更新,刪除)
此外,為DDL和DML創建單獨的角色已經成為最佳實踐。 給定一個
名為“工資單”的應用程序,將創建以下用戶:
?payroll_owner
?payroll_user
DML特權僅授予“ payroll_owner”帳戶,而DML
特權將僅授予“ payroll_user”帳戶。 這樣可以防止意外
通過作為應用程序運行的應用程序代碼創建/更改/刪除數據庫對象
“ payroll_user”帳戶

加固建議
1.進入postgresql數據庫,執行select usename from pg_user;,查看用戶
2.執行\du 用戶名;,分別查看用戶權限,要求除超級用戶,審計員,管理員外,盡可能的降低普通用戶的權限
3.確保只有一個超級用戶(例:postgres),普通用戶的權限應比超級用戶更低
4.找到您需要限制的用戶(username),執行以下一條或多條命令

8.禁止以root用戶直接啟動數據庫
描述
以postgres用戶啟動,降低數據庫在系統中的權限占比

加固建議
建議以postgres用戶啟動

9.建議修改數據庫的默認端口
描述
避免使用熟知的端口,降低被初級掃描的風險

加固建議
在配置文件(postgresql.conf)中修改端口 如:
port = 5433

修改后連接時也需更改對應端口

10.確保文件權限掩碼正確
描述
始終使用默認權限集創建文件。文件權限可以是
通過應用稱為umask的權限掩碼進行限制。 Postgres用戶帳戶
應該使用umask 077拒絕對除所有者以外的所有用戶帳戶的文件訪問。

加固建議

whoami
postgres
$ cd ~
$ ls -ld .{bash_profile,profile,bashrc}
$ echo "umask 077" >> .bash_profile
$ source .bash_profile
$ umask
0077

如上述示例,在~/.bash_profile, ~/.profile , ~/.bashrc的任意一個文件末尾添加umask 077並執行 source ~/.bash_profile | ~/.profile | ~/.bashrc使其生效在postgres用戶下輸入umask查看返回值驗證,弱返回值為077或0077,則符合要求


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM