PostgreSQL的擴展 auth_delay

PostgreSQL的擴展 auth_delay

auth_delay 是 PostgreSQL 提供的一個安全相關擴展,主要用于防止暴力破解攻擊。它通過在認證失敗后引入人為延遲來增加暴力破解的難度。

一、擴展基礎

  • 功能:在認證失敗后增加延遲
  • 目的:減緩暴力破解和字典攻擊
  • 適用場景
    • 面向互聯網開放的 PostgreSQL 服務
    • 有高安全要求的數據庫環境
    • 多次認證失敗后的防護

二、安裝與配置

1. 安裝方法

-- 安裝擴展
CREATE EXTENSION auth_delay;-- 驗證安裝
SELECT * FROM pg_available_extensions WHERE name = 'auth_delay';

2. 配置參數

postgresql.conf 中設置:

# 認證失敗后的延遲時間(毫秒)
auth_delay.milliseconds = 1000  # 默認1000ms(1秒)# 失敗多少次后開始延遲(避免誤傷合法用戶)
auth_delay.failure_count = 3    # 默認3次

三、工作原理

  1. 觸發條件

    • 客戶端認證失敗
    • 連續失敗次數達到配置閾值
  2. 行為表現

    Client PostgreSQL auth_delay 認證請求(錯誤密碼) 記錄失敗計數 延遲 milliseconds 毫秒 alt [失敗次數 ≥ failure_count] 返回認證失敗 Client PostgreSQL auth_delay
  3. 特點

    • 僅對失敗認證延遲
    • 成功認證會重置失敗計數器
    • 延遲在服務端進行,客戶端無法繞過

四、使用示例

1. 基本配置

-- 修改配置后重載
ALTER SYSTEM SET auth_delay.milliseconds = 2000;
ALTER SYSTEM SET auth_delay.failure_count = 5;
SELECT pg_reload_conf();

2. 監控失敗嘗試

-- 查看當前失敗計數(需要超級用戶權限)
SELECT * FROM pg_stat_activity 
WHERE backend_type = 'client backend' 
AND state = 'failed';

五、性能與安全考量

優點

  • 顯著增加暴力破解的時間成本
  • 配置簡單,無需修改應用代碼
  • 對合法用戶影響有限(僅在多次失敗后觸發)

注意事項

  1. 連接池影響

    • 可能導致連接池耗盡
    • 建議配合連接超時設置:
      # postgresql.conf
      authentication_timeout = 60s  # 認證超時時間
      
  2. 分布式攻擊

    • 對分布式暴力破解效果有限
    • 應結合其他安全措施:
      # pg_hba.conf
      host all all 192.168.1.0/24 scram-sha-256
      
  3. 合法用戶影響

    • 可能影響忘記密碼的合法用戶
    • 建議設置合理的 failure_count

六、高級配置

1. 與 pg_hba 配合

# pg_hba.conf
# 對互聯網訪問強制使用auth_delay
host all all 0.0.0.0/0 scram-sha-256 auth_delay

2. 動態調整參數

-- 在攻擊期間臨時增加延遲
ALTER SYSTEM SET auth_delay.milliseconds = 5000;
SELECT pg_reload_conf();-- 攻擊結束后恢復
ALTER SYSTEM SET auth_delay.milliseconds = 1000;
SELECT pg_reload_conf();

七、生產環境建議

  1. 推薦配置

    auth_delay.milliseconds = 3000  # 3秒延遲
    auth_delay.failure_count = 5    # 5次失敗后觸發
    
  2. 監控設置

    # 監控認證失敗日志
    tail -f $PGDATA/log/postgresql-*.log | grep "authentication failed"
    
  3. 組合安全措施

    • 配合 fail2ban 自動封禁惡意IP
    • 使用證書認證提高安全性
    • 定期輪換數據庫密碼

八、限制與替代方案

當前限制

  1. 無法區分不同IP的失敗嘗試
  2. 不提供自動封禁功能
  3. 對分布式攻擊防護有限

替代/補充方案

  1. fail2ban

    # fail2ban 配置示例
    [postgresql]
    enabled  = true
    filter   = postgresql
    action   = iptables[name=PostgreSQL, port=5432, protocol=tcp]
    logpath  = /var/log/postgresql/postgresql-*.log
    maxretry = 3
    
  2. pg_ident

    # pg_ident.conf
    # 限制特定操作系統用戶映射
    
  3. 網絡層防護

    • 使用防火墻限制訪問IP
    • 通過SSL證書認證

auth_delay 是 PostgreSQL 安全防護體系中的一個簡單但有效的組件,特別適合作為防御暴力破解的基礎措施。對于高安全要求的場景,建議將其與其他安全機制結合使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83481.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83481.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83481.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Web前端為什么要打包?Webpack 和 Vite 如何助力現代開發?

一. 為什么要使用框架庫? 1.1 傳統網頁與現代前端的差異 在最早期的網頁開發中,我們只需要寫幾個.html文件,配上.css和.js文件,瀏覽器直接加載就能展現頁面,每個文件都是獨立的靜態資源,簡單且直觀 但現在網站越來越復雜了: 需要用到最新的js語法(比如ES6)使用框架(Vue…

使用pdm+uv替換poetry

用了好幾年poetry了,各方面都還挺滿意,就是lock實在太慢; 已經試用pdmuv一段時間了,確實是快,也基本能覆蓋poetry的功能。 至于為什么用pdmuv,而不是只用uv,原因很多,有興趣的可以…

java后端生成心電圖-jfreechart

用jfreechart生成心電圖 先上成功的圖片 上代碼 1.導入包 implementation org.jfree:jfreechart:1.5.4implementation org.jfree:jcommon:1.0.242.實現代碼 對數據進行濾波 轉換單位 package com.shinrun.infrastructure.util;import java.util.ArrayList; import java.ut…

微軟Build 2025:Copilot Studio升級,解鎖多智能體協作未來

微軟Build 2025大會圓滿落幕,作為年度科技盛會,它一直是開發與AI技術突破性創新的重要展示平臺。對于工程師、創作者和領域專家來說,這是了解微軟生態未來動向的關鍵時刻。今年,Microsoft Copilot Studio推出了一系列新功能&#…

LabVIEW雜草識別與精準噴灑

基于LabVIEW構建了一套集成機器視覺、智能決策與精準控制的農業雜草識別系統。通過高分辨率視覺傳感器采集作物圖像,利用 LabVIEW 的 NI Vision 模塊實現圖像顏色匹配與特征分析,結合 Arduino 兼容的工業級控制硬件,實現雜草定位與除草劑精準…

使用 Akamai 分布式云與 CDN 保障視頻供稿傳輸安全

作者簡介:David Eisenbacher 是 EZDRM 公司的首席執行官兼聯合創始人,該公司是首家提供 "DRM 即服務" 的企業。作為 CEO,David 始終秉持為企業確立的使命:為視頻服務商提供簡潔有效的數字版權管理方案,助力其…

javascript 實戰案例 二級聯動下拉選框

本案例完全使用原生javascript實現,使用時只需填充platform_list二維數組即可,platform_list填充規則如下: [‘一級選項1’,‘二級選項11’,‘二級選項12’,‘二級選項13’,‘二級選項14’,…], [‘一級選項2’,‘二級選項21’,‘二級選項22’…

Elasticsearch集群最大分片數設置詳解:從問題到解決方案

目錄 前言 1 問題背景:重啟后設置失效 2 核心概念解析 2.1 什么是分片(Shard)? 2.2 cluster.max_shards_per_node的作用 2.3 默認值是多少? 3 參數設置的兩種方式 3.2 持久性設置(persistent) 3.2 臨時設置(transient) 4 問題解決方…

Redis Sorted Set 深度解析:從原理到實戰應用

Redis Sorted Set 深度解析:從原理到實戰應用 在 Redis 豐富的數據結構家族中,Sorted Set(有序集合)憑借獨特的設計和強大的功能,成為處理有序數據場景的得力工具。無論是構建實時排行榜,還是實現基于時間的…

Java并發編程:讀寫鎖與普通互斥鎖的深度對比

在Java并發編程中,鎖是實現線程安全的重要工具。其中,普通互斥鎖(如synchronized和ReentrantLock)和讀寫鎖(ReentrantReadWriteLock)是兩種常用的同步機制。本文將從多個維度深入分析它們的區別、適用場景及…

《云原生安全攻防》-- K8s網絡策略:通過NetworkPolicy實現微隔離

默認情況下,K8s集群的網絡是沒有任何限制的,所有的Pod之間都可以相互訪問。這就意味著,一旦攻擊者入侵了某個Pod,就能夠訪問到集群中任意Pod,存在比較大的安全風險。 在本節課程中,我們將詳細介紹如何通過N…

Log4j2、Fastjson特征流量分析

文章目錄 一、Log4j2流量特征分析1. 漏洞原理簡述2. 核心流量特征(1)請求特征(2)響應特征(3)日志特征 3.檢測與防御建議 二、fastjson流量特征分析1.漏洞原理簡述2.核心流量特征(1)請…

Java編程之建造者模式

建造者模式(Builder Pattern)是一種創建型設計模式,它將一個復雜對象的構建與表示分離,使得同樣的構建過程可以創建不同的表示。這種模式允許你分步驟構建一個復雜對象,并且可以在構建過程中進行不同的配置。 模式的核…

Spring AI之RAG入門

目錄 1. 什么是RAG 2. RAG典型應用場景 3. RAG核心流程 3.1. 檢索階段 3.2. 生成階段 4. 使用Spring AI實現RAG 4.1. 創建項目 4.2. 配置application.yml 4.3. 安裝ElasticSearch和Kibana 4.3.1. 安裝并啟動ElasticSearch 4.3.2. 驗證ElasticSearch是否啟動成功 …

mysql數據庫實現分庫分表,讀寫分離中間件sharding-sphere

一 概述 1.1 sharding-sphere 作用: 定位關系型數據庫的中間件,合理在分布式環境下使用關系型數據庫操作,目前有三個產品 1.sharding-jdbc,sharding-proxy 1.2 sharding-proxy實現讀寫分離的api版本 4.x版本 5.x版本 1.3 說明…

運維視角下的廣告系統之理解廣告索引級聯

廣告索引中為什么要級聯 這里的“級聯”一般指的是多層索引結構,也叫級聯索引(Cascade Index 或 Multi-level Index)。 在廣告系統的索引中,級聯設計有重要作用,主要原因如下: 1. 多維特征篩選的需求 廣…

2025年5月24日系統架構設計師考試題目回顧

當前僅僅是個人用于記錄&#xff0c;還未做詳細分析&#xff0c;待更新… 綜合知識 設 x,y 滿足約束條件&#xff1a;x-1>0, x-y<0, x-y-x<0, 則 y/x 的最大值是()。 A. 3 B. 2 C. 4 D. 1 申請軟件著作權登記時應當向中國版本保護中心提交軟件的鑒別材料&#xff…

3D-激光SLAM筆記

目錄 定位方案 編譯tbb ros2humble安裝 命令 colcon commond not found 柵格地圖生成&#xff1a; evo畫軌跡曲線 安裝gtsam4.0.2 安裝ceres-solver1.14.0 定位方案 1 方案一&#xff1a;改動最多 fasterlio 建圖&#xff0c;加閉環優化&#xff0c;參考fast-lio增加關…

貪心算法應用:分數背包問題詳解

貪心算法與分數背包問題 貪心算法&#xff08;Greedy Algorithm&#xff09;是算法設計中一種重要的思想&#xff0c;它在許多經典問題中展現出獨特的優勢。本文將用2萬字篇幅&#xff0c;深入剖析貪心算法在分數背包問題中的應用&#xff0c;從基礎原理到Java實現細節&#x…

PyTorch——非線性激活(5)

非線性激活函數的作用是讓神經網絡能夠理解更復雜的模式和規律。如果沒有非線性激活函數&#xff0c;神經網絡就只能進行簡單的加法和乘法運算&#xff0c;沒法處理復雜的問題。 非線性變化的目的就是給我們的網絡當中引入一些非線性特征 Relu 激活函數 Relu處理圖像 # 導入必…