PgSQL-安全加固实践-如何设置非全零监听

news/2024/5/19 21:29:15/文章来源:https://blog.csdn.net/yanzongshuai/article/details/132913613

PgSQL-安全加固实践-如何设置非全零监听

1、介绍

PgSQL在启动前需要配置listen_addresses配置项,该配置项表示允许PgSQL服务监听程序绑定的IP。我们知道一个host上可以有多个网卡,每个网卡可以绑定多个IP,该参数就是控制PgSQL服务绑定在哪个或者哪几个IP上。即控制服务使用哪个网络接口进行监听连接请求。对于网络接口而言,这样可以有效阻止大量恶意重复的连接。

2、问题

在高可用环境中,通常使用虚拟IP(VIP)作为向外服务的监听IP,当主机挂掉无法提供服务时,会动态将这个VIP切换到备机上,即备机绑定该IP,通过该监听IP向外提供服务。对于用户来说,是无感的,它仍旧使用该VIP来连接服务。VIP并不是在PgSQL启动时就已经绑定到本机网卡的。

PgSQL服务为使用VIP作为监听连接的IP,需要配置listen_addresses为“*”或者“0.0.0.0”即全链路监听。即监听本机所有网卡上的IP,这也就意味着易遭受恶意连接的风险。所以,需要进行安全加固,避免全零监听。

那么,PgSQL如何做到提前绑定VIP作为监听IP,即绑定一个本机不存在的IP呢?

3、PgSQL监听连接机制

46f3affa3b7985e1711a2bf6de6a24ec.png

由函数StreamServerPort函数完成绑定并监听的操作。SO_REUSEADDR标签表示允许同一个端口绑定多个不同的IP,即PgSQL的listen_addresses可以配置成多个IP形式:

listen_addresses= '10.200.89.123,10.200.89.124'

但是,当绑定一个非本地IP,即网卡没有绑定的IP时,bind函数会返回-1,即bind失败,报错errno为99:Cannot assign requested address

4、绑定非本地IP

1)需修改操作系统的配置/etc/sysctl.conf:

      net.ipv4.ip_nonlocal_bind=1

该配置项默认是0,表示不允许服务绑定一个不存在的IP

2)重启机器。也可以不重启机器,通过命令sysctl -p使修改后的sysctl.conf生效

3)此时,PgSQL配置listen_addresses为VIP,即本机不存在的IP后,可以重启服务成功绑定该IP,并监听成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_550688.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

容器的数据卷

容器的数据卷 操作数据卷 # 基本格式 docker volume [common] # 创建一个volume docker volume create # 显示一个或多个volume docker volume inspect # 列出所以的volume docker volume ls # 删除未使用的volume docker volume prune # 删除一个或多个volume docker volume…

C++笔记之引用折叠规则

C笔记之引用折叠规则 文章目录 C笔记之引用折叠规则1. 当两个左值引用结合在一起时,它们会折叠成一个左值引用。2. 当一个左值引用和一个右值引用结合在一起时,它们会折叠成一个左值引用。3. 当两个右值引用结合在一起时,它们也会折叠成一个右…

typeof的作用

typeof 是 JavaScript 中的一种运算符,用于获取给定值的数据类型。 它的作用是返回一个字符串,表示目标值的数据类型。通过使用 typeof 运算符,我们可以在运行时确定一个值的类型,从而进行相应的处理或逻辑判断。 常见的数据类型…

9月19日上课内容 zabbix监控系统与部署Zabbix5.0监控

本章结构 前言 监控软件的作用 作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果和网站的健康状态 利用一个优秀的监控软件,我们可以: ●通过一个友好的界面进行浏览整…

Renko图表发展史,一次说清楚

Renko图表的发展史,很多交易者都不清楚,今天FPmarkets澳福一次说清楚。 自从几百年前,大米交易商在记录他们产品每一次价格变动的同时,也可以节省时间、纸张和墨水,也是他们建立了一个系统,也就是Renko图。…

springboot线程池简单用法及配置解析

定义线程池 package com.example.demo.start.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.sche…

【深度学习框架格式转化】【CPU】Pytorch模型转ONNX模型格式流程详解【入门】

【深度学习框架格式转化】【GPU】Pytorch模型转ONNX模型格式流程详解【入门】 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习框架格式转化】【GPU】Pytorch模型转ONNX模型格式流程详解【入门】前言PyTorch模型环境搭建(CPU)安装onn…

开源日报 0825 | 简化开发过程,提升Swift应用性能的扩展工具库

OpenZeppelin/openzeppelin-contracts Stars: 22.8k License: MIT OpenZeppelin Contracts 是一个用于安全智能合约开发的库。它建立在社区验证过的代码基础上,具有以下主要功能: 实现了 ERC20 和 ERC721 等标准。灵活的基于角色的权限控制方案。可重…

【Springboot】整合Xxl-job

目录 一,下载1.1 官方文档地址1.2 源码仓库地址 二, 配置部署 "调度中心"2.1 初始化 "调度数据库"2.2 修改配置文件2.3 启动调度中心 三,springboot项目整合3.1 添加依赖3.2 修改配置文件3.3 执行器组件配置4.4 编写测试…

spring的ThreadPoolTaskExecutor装饰器传递调用线程信息给线程池中的线程

概述 需求是想在线程池执行任务的时候,在开始前将调用线程的信息传到子线程中,在子线程完成后,再清除传入的数据。 下面使用了spring的ThreadPoolTaskExecutor来实现这个需求. ThreadPoolTaskExecutor 在jdk中使用的是ThreadPoolExecutor…

LabVIEW开发航天器模拟器的姿态控制和反作用轮动量管理

LabVIEW开发航天器模拟器的姿态控制和反作用轮动量管理 在过去十年中,航天器一直是现代技术进步的先决条件。迄今为止,为了更好地完成各种实际任务,已经在航天器姿态控制领域进行了大量研究。航天器一旦进入太空,就容易出现不确定…

Linux 编译安装中的 configure 命令

用了这么久的 Linux 系统,也许你会发现,在编译安装中,有的服务编译安装需要执行 configure 命令,而有的却不需要,这是为什么呢?也是不是像我一样一头雾水呢?其实这取决于服务的构建系统和配置方…

简单聊聊G1垃圾回收算法整个流程 --- 理论篇 -- 下

简单聊聊G1垃圾回收算法整个流程 --- 理论篇 -- 下 软实时性预测转移时间预测可信度GC 暂停处理的调度并发标记中的暂停处理 分代 G1 GC 模式不同点新生代区域分代对象转移具体转移流程分代选择回收集合设置最大新生代区域数 GC的切换GC执行的时机 总结 上一篇 文章我们简单看了…

linux 磁盘命令之du和df命令

du相关的命令: du -ah 显示所有目录或文件所占空间 du -KG 显示所有目录或文件所占空间 块大小K为单位 du -BM 显示所有目录或文件所占空间 块大小M为单位 du -BG 显示所有目录或文件所占空间 块大小G为单位du -sh [目录名] 返回该目录的大小 du -sm [文件夹] 返回该文…

记录一些奇怪的报错

错误:AttributeError: module distutils has no attribute version 解决方案: 第一步:pip uninstall setuptools 第二步:conda install setuptools58.0.4 错误:ModuleNotFoundError: No module named _distutils_hac…

0020Java程序设计-ssm供销社管理系统

文章目录 摘 要目 录系统设计开发环境 摘 要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也日益突出,人类的生存和思考方式也产生了变化。传统购物管理采取了人工的…

CRM软件系统对企业保护数据安全的重要性

当下无论是国家层面,还是用户都越来越重视CRM数据安全,如果企业客户数据被泄露,会导致用户信任度下降、企业品牌声誉受损甚至还将面临市场监管的高额罚款。今天我们就来分享CRM系统保护企业数据安全的重要性。 当下企业正在承受巨大的数据合…

爬虫异常处理技巧分享

在进行爬虫数据采集的过程中,我们常常会遇到网络波动和自动化验证等异常情况。这些问题可能导致爬虫运行中断或被识别为机器请求而受到限制。本文将分享一些实用的爬虫异常处理技巧,帮助您规避网络波动和自动化验证,提高数据采集的稳定性和成…

Java web基础知识

Servlet Servlet是sun公司开发的动态web技术 sun在API中提供了一个接口叫做 Servlet ,一个简单的Servlet 程序只需要完成两个步骤 编写一个实现了Servlet接口的类 把这个Java部署到web服务器中 一般来说把实现了Servlet接口的java程序叫做,Servlet 初步…

如何修复msvcp140.dll文件,msvcp140.dll丢失的解决方法

在使用电脑的过程中,可能会遇到提示“msvcp140.dll丢失”的错误。这通常是由于某些程序或游戏在运行时需要调用msvcp140.dll文件,但由于某种原因(如病毒感染、误删等),该文件被删除或损坏,导致程序无法正常…