1. 程式人生 > 其它 >PostgreSql資料庫安全加固

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,則符合要求

本文版權歸作者所有,歡迎轉載,請務必新增原文連結。