当前位置: 首页 > article >正文

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 安全防护体系中的一个简单但有效的组件,特别适合作为防御暴力破解的基础措施。对于高安全要求的场景,建议将其与其他安全机制结合使用。

相关文章:

PostgreSQL的扩展 auth_delay

PostgreSQL的扩展 auth_delay auth_delay 是 PostgreSQL 提供的一个安全相关扩展,主要用于防止暴力破解攻击。它通过在认证失败后引入人为延迟来增加暴力破解的难度。 一、扩展基础 功能:在认证失败后增加延迟目的:减缓暴力破解和字典攻击…...

[Java 基础]Java 是什么

Java 是一门编程语言。 查看编程语言热门排行:https://www.tiobe.com/tiobe-index/ Java 的特点: 面向对象:Java 是面向对象的语言,支持封装、继承和多态等特性。 平台无关性:Java 通过“一次编写,到处…...

Qt学习2

跟学视频 1.菜单栏和工具栏 //菜单栏最多只能有一个//菜单栏创建QMenuBar * bar menuBar();//将菜单栏放到窗口中setMenuBar(bar);//创建菜单QMenu * fileMenu bar->addMenu("开始");QMenu * editMenu bar->addMenu("编辑");//创建菜单项QAction…...

C++ 内存泄漏检测器设计

文章目录 1. C中的动态内存分配2. 什么是内存泄漏3. 内存泄漏的代码案例4. 内存泄漏检查器的设计模块1:位置信息捕获:模块2:内存分配跟踪:模块3:内存释放跟踪:模块4:泄漏记录存储:模…...

在 Linux 上安装 Nmap 工具

📦 在 Linux 上安装 Nmap 工具指南 Nmap(Network Mapper)是功能强大的网络扫描工具,以下是各种 Linux 发行版的安装方法: 🧩 通用安装方法 1. 使用包管理器安装(推荐) # Debian/…...

从零打造AI面试系统全栈开发

🤖 AI面试系统开发完整教程 📋 项目概述 本教程将带你从零开始构建一个完整的AI面试系统,包含前端、后端、AI集成和部署的全流程。 源码地址 技术栈 前端: React TypeScript Vite Vaadin Components后端: Spring Boot Spring Securi…...

破局与进阶:ueBIM 在国产 BIM 赛道的差距认知与创新实践

作为国产BIM领域的探索者,斯维尔ueBIM自诞生以来始终以追赶国际头部技术为目标,但不可否认的是,在核心功能覆盖、行业生态成熟度以及全球市场占有率等方面,我们与Autodesk Revit、Bentley Systems等国际巨头仍存在显著差距。这种差…...

分布式流处理与消息传递——向量时钟 (Vector Clocks) 算法详解

Java 实现向量时钟 (Vector Clocks) 算法详解 一、向量时钟核心原理 #mermaid-svg-JcZ1GT0r1ZNSy6W7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JcZ1GT0r1ZNSy6W7 .error-icon{fill:#552222;}#mermaid-svg-JcZ…...

20250603在荣品的PRO-RK3566开发板的Android13下的命令行查看RK3566的温度

20250603在荣品的PRO-RK3566开发板的Android13下的命令行查看RK3566的温度 2025/6/3 11:58 RK3566的cpu运行效率 top rk3566_t:/ # rk3566_t:/ # rk3566_t:/ # cd /sys/class/thermal/ rk3566_t:/sys/class/thermal # ls -l rk3566_t:/sys/class/thermal # cd thermal_zone0/ r…...

帝可得 - 设备管理

一. 需求说明 设备管理主要涉及到三个功能模块,业务流程如下: 新增设备类型: 允许管理员定义新的售货机型号,包括其规格和容量。 新增设备: 在新的设备类型定义后,系统应允许添加新的售货机实例,并将它们分配到特定的…...

FTXUI配置

对于 FTXUI 的安装与配置, 官方已经给出了三种方案. 第一种: 使用 FetchContent 远程拉取第二种: 在你本地安装 FTXUI 库, 然后通过 find_package 使用第三种: 使用 Git 子模块 FetchContent 无需手动下载安装 FTXUI, 通过 CMake 自动从 GitHub 拉取并编译依赖 include(Fet…...

Caliper压力测试

目前FISCO BCOS适配的Caliper版本为0.2.0,请在部署Caliper运行环境时确保Caliper的版本为0.2.0,如在部署或使用过程中遇到任何问题,请优先参考 https://github.com/FISCO-BCOS/FISCO-BCOS/issues/1248 中的解决方案进行排查。 1. 环境要求 …...

【iOS安全】使用LLDB调试iOS App | LLDB基本架构 | LLDB安装和配置

LLDB基本架构 参考: https://crifan.github.io/ios_re_dynamic_debug/website/debug_code/lldb_debugserver.html https://book.crifan.org/books/ios_re_debug_debugserver_lldb/website/ LLDB安装和配置 1. 让iPhone中出现/Developer/usr/bin/debugserver 最初…...

一、核心概念深入解析

一、核心概念深入解析 1. shared_ptr 的线程安全性澄清 引用计数是原子操作:shared_ptr 的引用计数(use_count)在多线程中递增 / 递减是安全的(原子操作),但对象本身的读写需额外同步(如 std:…...

python直方图

在Python中,绘制直方图(Histogram)是一项非常常见的任务,通常用于数据可视化,以展示数据的分布情况。Python中有多种库可以绘制直方图,其中最常用的两个库是Matplotlib和Seaborn。此外,Pandas库…...

[特殊字符] Unity 性能优化终极指南 — Text / TextMeshPro 组件篇

UGUI Text组件的不当使用及其性能瓶颈与优化 在Unity UGUI系统中,Text 组件(或其升级版 TextMeshPro)是显示文本信息的核心元素。然而,如果不当使用,它极易成为UI性能瓶颈的罪魁祸首,尤其是在预制体、属性…...

Idea 配置 Maven 环境

下载 Maven 官网:https://maven.apache.org/index.html 点击左侧 Downloads,然后选择 Files 中的 zip 包下载(下载慢可以使用迅雷) 配置 Maven 将压缩包解压,比如我解压后放到了 D:\developer\environment\apache-…...

git clone报错:SSL certificate problem: unable to get local issuer certificate

上述报错的完整信息是: Cloning into test... fatal: unable to access https://github.com/xxxx/xxxx.git/: SSL certificate problem: unable to get local issuer certificate 该报错表示 Git 在使用 HTTPS 协议克隆仓库时,无法验证 GitHub 的 SSL …...

Kafka 如何保证不重复消费

在消息队列的使用场景中,避免消息重复消费是保障数据准确性和业务逻辑正确性的关键。对于 Kafka 而言,保证不重复消费并非单一机制就能实现,而是需要从生产者、消费者以及业务层等多个维度协同配合。接下来,我们将结合图文详细解析…...

SpringBoot整合MyBatis完整实践指南

在Java企业级应用开发中,SpringBoot和MyBatis的组合已经成为主流的技术选型方案之一。本文将详细介绍如何从零开始搭建一个基于SpringBoot和MyBatis的项目,包括环境配置、数据库设计、实体类创建、Mapper接口编写以及实际应用等完整流程。 一、环境准备…...

RNN结构扩展与改进:从简单循环网络到时间间隔网络的技术演进

本文系统介绍 RNN 结构的常见扩展与改进方案。涵盖 简单循环神经网络(SRN)、双向循环神经网络(BRNN)、深度循环神经网络(Deep RNN) 等多种变体,解析其核心架构、技术特点及应用场景,…...

docker中,容器时间和宿机主机时间不一致问题

win11下的docker中有个mysql。今天发现插入数据的时间不正确。后来发现原来是docker容器中的时间不正确。于是尝试了各种修改,什么run -e TZ"${tzutil /g}",TZ"Asia/Shanghai",还有初始化时带--mysqld一类的,…...

Unity Shader编程】之高级纹理

一,立方体纹理 Cubemap 用途 用途说明反射贴图表面镜面高光或金属反射环境光采样模拟环境对物体的影响天空盒背景使用六张图拼接场景背景全景投影做360度相机渲染、投影等 二,创建立方体纹理 在 Unity 中创建和保存一个 立方体纹理(Cubema…...

类 Excel 数据填报

类 Excel 填报模式,满足用户 Excel 使用习惯 数据填报,可作为独立的功能模块,用于管理业务流程、汇总采集数据,以及开发各类数据报送系统,因此,对于报表工具而言,其典型场景之一就是利用报表模…...

vscode调试stm32,Cortex Debug的配置文件lanuch.json如何写,日志

https://blog.csdn.net/jiladahe1997/article/details/122046665 https://discuss.em-ide.com/blog/67-cortex-debug 第一版 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?li…...

Office文档图片批量导出工具

软件介绍 本文介绍一款专业的Office文档图片批量导出工具。 软件特点 这款软件能够批量导出Word、Excel和PPT中的图片,采用绿色单文件设计,体积小巧仅344KB。 基本操作流程 使用方法十分简单:直接将Word、Excel或PPT文件拖入软件&#xf…...

【iOS】ARC 与 Autorelease

ARC 与 Autorelease 文章目录 ARC 与 Autorelease前言何为ARC内存管理考虑方式自己生成的对象,自己持有非自己生成的对象,自己也可以持有不再需要自己持有的对象时释放非自己持有的对象无法释放 ARC的具体实现编译期和运行期ARC做的事情ARC实现: __autoreleasing 与 Autoreleas…...

人工智能在智能零售中的创新应用与未来趋势

随着电子商务的蓬勃发展和消费者需求的不断变化,零售行业正面临着前所未有的挑战和机遇。智能零售作为零售行业的重要发展方向,通过引入人工智能(AI)、物联网(IoT)、大数据和云计算等前沿技术,正…...

业务材料——半导体行业MES系统核心功能工业协议AI赋能

一、前置概念 半导体行业 半导体行业主要生产基于半导体材料(如硅、锗、化合物半导体等)的电子元器件及相关产品,广泛应用于计算、通信、能源、医疗等领域。 MES系统 MES系统(Manufacturing Execution System,制造…...

docker部署命令行 — 启动一个 MySQL 数据库服务 并且把它的数据存储挂载到卷(volume)里

挂载卷的配置写法: version: "3" services:db:image: mysqlvolumes:- mysql_data:/var/lib/mysqlvolumes:mysql_data:这段 docker-compose.yml 配置非常典型,是用来启动一个 MySQL 数据库服务 并且把它的数据存储挂载到卷(volume&…...