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

2023-09-15 21:44:44

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,并监听成功。

更多推荐

快速搭建接口自动化测试框架

1接口测试接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。接口自动化相对于UI自动化来说,属于更底层的测试,这样带来的好处就是测试收益更大,且维护成本相对来说较低,是我们进行自动化测试的首选2框架选型目前接口自动化的框架比较多,比如jmeter,就可以集接口自动

企业数字化转型如何成功落地

企业数字化转型是当前趋势,是企业在面对日益变化的商业环境时必须采取的关键策略之一。然而,要实现数字化转型的成功落地并不容易,需要企业有明确的目标和正确的方法。数聚将探讨一些关键的步骤和策略,帮助企业实现数字化转型的顺利落地,并在竞争激烈的市场中取得优势。第一步是明确转型目标。企业在进行数字化转型时,必须清楚地知道自己的

【springMVC】高级部分

拦截器1拦截器(Interceptor)是一种动态拦截方法调用的机制#作用:1.在指定的方法调用前后执行预先设定后的的代码2.阻止原始方法的执行#核心原理:AOP思想#拦截器链:多个拦截器按照一定的顺序,对原始被调用功能进行增强2拦截器使用步骤1实现HandlerInterceptor接口/***三个方法的运行顺序为p

UI自动化测试用例管理平台搭建

用到的工具:python3+django2+mysql+RabbitMQ+celery+seleniumpython3和selenium这个网上很多教程,我不在这一一说明;平台功能介绍:项目管理:用于管理项目。每个项目可以设置多个环境,例如开发环境,测试环境,预发布环境,生产环境等。页面管理:主要用来方便对元素进行管理

通讯网关软件009——利用CommGate X2MQTT实现MQTT访问ODBC数据源

本文介绍利用CommGateX2MQTT实现MQTT访问ODBC数据源。CommGateX2MQTT是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。【案例】如下图所示,实现上位机通过MQTT来获取ODBC数据源的数据。【解决方案】设置网关机,与ODBC数据源

2023数A题——WLAN网络信道接入机制建模

A题——WLAN网络信道接入机制建模思路:该题主要考察的WLAN下退避机制建模仿真。资料获取问题1:假设AP发送包的载荷长度为1500Bytes(1Bytes=8bits),PHY头时长为13.6μs,MAC头为30Bytes,MAC头和有效载荷采用物理层速率455.8Mbps发送。AP之间的RSSI为-70dBm。大

git和github的入门操作

之前因为工作中用的都是SVN版本控制工具,没接触过git和github,现在开始深入自学Django框架技术后,看到官网推荐使用git,然后这两天网上查阅了很多文章教程,学到入门操作需要学习的点,太多的知识点要后面慢慢深入学习了。看到一个网上教程说的一段话:“如果你是一枚Coder,但是你不知道Github,那么我觉的

深入探讨Java面试中内存泄漏:如何识别、预防和解决

引言在编写和维护Java应用程序时,内存泄漏是一个重要的问题,可能导致性能下降和不稳定性。本文将介绍内存泄漏的概念,为什么它在Java应用程序中如此重要,并明确本文的目标,即识别、预防和解决内存泄漏问题。内存泄漏的概念内存泄漏是指应用程序中分配的内存(通常是堆内存)在不再需要时未能正确释放。这些未释放的内存块会积累,最

springboot+canal+mysql+redis缓存双写一致性

canal官网地址:https://github.com/alibaba/canal/wiki/QuickStart基本上按照官网的步骤来就行准备首先服务器上要安装好jdk,因为canal运行需要jdk,同时把canal对应的端口在服务中开放,否则连接不上对于自建MySQL,需要先开启Binlog写入功能,配置binl

【面试刷题】——堆栈窗口

“堆栈窗口”(StackWindow)通常不是一个特定的编程术语,但可以用来描述在编程和计算机科学领域中一些相关的概念。这些概念涉及到堆栈(stack)和窗口(window)等术语的组合。以下是一些可能涉及到的相关概念:堆栈窗口管理(StackWindowManagement):这是一种用于管理用户界面(UI)中不同窗

【Vue】模块基本语法「上篇」

【Vue】模块基本语法「上篇」一、插值1.1文本1.2v-html1.3数据双向绑定(v-model)二、指令2.1v-if|v-else|v-else-if2.2v-show2.3v-for2.4动态参数三、过滤器3.1局部过滤器3.2全局过滤器四、计算属性&监听属性4.1计算属性4.2监听属性五、案例实操5.1购物

热文推荐