最近新上了一台PostgreSQL数据库服务器,研发提出了部分建议:

  1. 所有开发人员只能访问PostgreSQL数据库,不能远程ssh登录该数据库服务器
  2. DBA组的成员可以ssh访问PostgreSQL数据库服务器
  3. DBA的管理服务器可以ssh访问PostgreSQL服务器
  4. 补充:服务器所在网段可以不受限制的访问该PostgreSQL服务器

考虑使用防火墙来实现该安全访问需求。

  1. 启动防火墙前的检查操作

首先查看该服务器防火墙状态,并确定防火墙默认的zone。这里需要注意的是,千万不要查看防火墙是关闭状态后就第一时间启动防火墙,因为还不清楚防火墙的zone以及对应过滤规则,贸然启动可能会让服务器下线。

查看防火墙状态

# systemctl status firewalld● firewalld.service - firewalld - dynamic firewall daemon   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)   Active: inactive (dead)     Docs: man:firewalld(1)

查看默认的zone

# cat /etc/firewalld/firewalld.conf......DefaultZone=public......

查看默认的zone规则,这里可以看到默认的public zone已经包含允许ssh服务,这时,我们可以放心启动防火墙服务。这里需要注意的是:防火墙zone的配置文件读取顺序为/etc/firewalld/zones/*.xml--->/usr/lib/firewalld/zones/*.xml,如果/etc下的对应zone的位置文件不存在,则防火墙会读取/usr/lib下的对应zone的配置文件。

# cat /etc/firewalld/zones/public.xml<?xml version="1.0" encoding="utf-8"?>PublicFor use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.

启动防火墙

# systemctl enable firewalld# systemctl start firewalld# systemctl status firewalld

防火墙状态查看

  1. 配置准备使用的zone。

查看防火墙内置的zone有哪些

# firewall-cmd --get-zonesblock dmz drop external home internal public trusted work

如果想以详细的方式显示每个zone的信息,可以使用如下命令

# firewall-cmd --list-all-zonesblock  target: %%REJECT%%  icmp-block-inversion: no  interfaces:   sources:   services:   ports:   protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: dmz  target: default  icmp-block-inversion: no  interfaces:   sources:   services: ssh  ports:   protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: drop  target: DROP  icmp-block-inversion: no  interfaces:   sources:   services:   ports:   protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: external  target: default  icmp-block-inversion: no  interfaces:   sources:   services: ssh  ports:   protocols:   masquerade: yes  forward-ports:   source-ports:   icmp-blocks:   rich rules: home  target: default  icmp-block-inversion: no  interfaces:   sources:   services: dhcpv6-client mdns samba-client ssh  ports:   protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: internal  target: default  icmp-block-inversion: no  interfaces:   sources:   services: dhcpv6-client mdns samba-client ssh  ports:   protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: public (active)  target: default  icmp-block-inversion: no  interfaces: eth0  sources:   services: dhcpv6-client ssh  ports:   protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: trusted  target: ACCEPT  icmp-block-inversion: no  interfaces:   sources:   services:   ports:   protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: work  target: default  icmp-block-inversion: no  interfaces:   sources:   services: dhcpv6-client ssh  ports:   protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: 

这里,我们选择使用“internal”zone作为我们配置防火墙的默认zone,查看该zone的详细信息,可以看到默认的zone“internal”已经包含部分规则,我们将这些规则清空,然后写入我们自己定义的规则

# firewall-cmd  --zone="internal" --list-allinternal  target: default  icmp-block-inversion: no  interfaces:   sources:   services: dhcpv6-client mdns samba-client ssh  ports:   protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: 

清空规则,这里需要注意的是--permanent参数指定从配置文件永久清除规则,如果不加--permanent条件,只是从当前载入内存的配置文件中清除规则,重启防火墙后还是会存在。

firewall-cmd --zone="internal" --permanent --remove-service=sshfirewall-cmd --zone="internal" --permanent --remove-service=mdnsfirewall-cmd --zone="internal" --permanent --remove-service=samba-clientfirewall-cmd --zone="internal" --permanent --remove-service=dhcpv6-clientfirewall-cmd --reload

再次查看,说明内置的规则已经被我们清空

# firewall-cmd  --zone="internal" --list-allinternal  target: default  icmp-block-inversion: no  interfaces:   sources:   services:  ports:   protocols:   masquerade: yes  forward-ports:   source-ports:   icmp-blocks:   rich rules: 

下面我们写入自定义规则

firewall-cmd --zone="internal" --permanent --add-rich-rule="rule family="ipv4" source address="172.16.41.0/24" port protocol="tcp" port="22" accept"firewall-cmd --zone="internal" --permanent --add-rich-rule="rule family="ipv4" source address="10.188.104.168/32" port protocol="tcp" port="22" accept"firewall-cmd --zone="internal" --permanent --add-rich-rule="rule family="ipv4" source address="10.189.101.160/32" port protocol="tcp" port="22" accept"firewall-cmd --zone="internal" --permanent --add-rich-rule="rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="5432" accept"firewall-cmd --zone="internal" --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/8" accept"firewall-cmd --reload

规则说明:

第一条规则允许172.16.41.0网段的IP地址访问PostgreSQL的22端口,即为ssh指定源IP,DBA组成员的网段

第二条和第三条规则指定具体的两台主机可以访问PostgreSQL服务器的22端口,该两台主机为DBA的管理服务器地址。

第四条允许任何源地址访问PostgreSQL服务器的5432端口。

第五条允许服务器网段10.0.0.0访问该PostgreSQL物理服务器。

规则添加完成后我们查看一下

# firewall-cmd  --zone="internal" --list-allinternal (active)  target: default  icmp-block-inversion: no  interfaces: eth0  sources:   services:   ports:   protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: rule family="ipv4" source address="172.16.41.0/24" port port="22" protocol="tcp" accept  rule family="ipv4" source address="10.188.104.168/32" port port="22" protocol="tcp" acceptrule family="ipv4" source address="10.189.101.160/32" port port="22" protocol="tcp" acceptrule family="ipv4" source address="0.0.0.0/0" port port="5432" protocol="tcp" acceptrule family="ipv4" source address="10.0.0.0/8" accept
  1. 将配置好的zone设置为默认的zone

查看当前默认的zone

# firewall-cmd --get-default-zonepublic

设置默认的zone

# firewall-cmd --set-default-zone=internal

此时防火墙就已经开始生效了。

设置访问权限_CentOS7利用Firewall对PostgreSQL设置安全的访问权限相关推荐

  1. linux acl 权限 给任何用户或用户组设置任何文件/目录的访问权限

    ACL 是什么 ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表.它在UGO权限管理的基础上为文件系统提供一个额外的.更灵活的权限管理机制. ...

  2. PostgreSQL下如何修改用户权限的介绍以及hook机制对超级用户的权限修改

    2019独角兽企业重金招聘Python工程师标准>>> 要想修改PG的用户权限,那么首先要对PG权限控制做一下了解: PG的权限控制是针对到各个对象的.大家可以看一下,所有系统表(p ...

  3. PostgreSQL学习手册(角色和权限) 转

    原文 PostgreSQL学习手册(角色和权限)   PostgreSQL是通过角色来管理数据库访问权限的,我们可以将一个角色看成是一个数据库用户,或者一组数据库用户.角色可以拥有数据库对象,如表.索 ...

  4. linux怎么开启iis管理员权限,为每个站点的IIS设置权限

    为每个站点的IIS设置权限 [日期:2006-11-24] 来源: 作者: [字体:大 中 小] 现在绝大多数的虚拟主机都禁用了 ASP 的标准组件:ileSystemObject,因为这个组件为 A ...

  5. 利用CMS漏洞渗透并获取某服务器权限

    利用CMS漏洞渗透并获取某服务器权限 在phpmyadmin漏洞与利用专题中,我们从多个角度介绍了如何获取webshell并获取服务器权限的案例和情形,但在实际渗透过程中还有一种情况,即服务器上存在p ...

  6. PostgreSQL 创建用户并赋予权限

    PostgreSQL 创建用户并赋予权限 1.创建一个test用户 2.创建COMPANY表 3.设置权限 3.1.postgresql权限说明 3.2.设置权限语法 3.3.设置用户scheam的使 ...

  7. centos系统ftp服务器的目录权限,CentOS7 添加FTP用户并设置权限

    step 1 安装配置Vsftp服务器 一.配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewal ...

  8. Redis未授权访问漏洞的利用及防护

    什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP访问等,这样会使Redis服务完全暴露 ...

  9. 网络访问:本地账号的共享和安全模式设置身份验证后自动更改其他验证的处理方法 ...

    网络访问:本地账号的共享和安全模式 设置成为"仅来宾-本地用户以来宾身份验证"后自动更改成"经典:本地用户以自己的身份验证"的处理方法 我们为何要修改网络访问: ...

最新文章

  1. AI一分钟|潘建伟团队首次实现18个量子比特纠缠;特斯拉第二季度共交付40740辆汽车...
  2. get方法 服务器响应,HTTP请求方法及响应码详解(http get post head)
  3. MKCMS6.2.3视频程序源码修复列表页
  4. 音乐无界限,听见好时光—网易云音乐Linux版震撼来袭!
  5. python学了基础之后方向_学习了解python基础后,该进去哪一个方向呢?
  6. 记element + xlsx 导出表格数据重复的坑
  7. 【安卓的一个进程等级】
  8. Java学习6——基本数据类型及其转换
  9. 东农计算机网络技术离线作业,东农16秋《电力系统分析》在线作业
  10. 在WINDOWS XP环境下部署基于网络的开源入侵监测平台——snort
  11. 手机充当电脑 麦克风 扬声器 摄像头
  12. GROMOS力场文件解读手册第5章阅读笔记I
  13. 关于计算机学院 公众号的名字,好听的微信公众号名字
  14. npm install WARN package.json not exists: E:\SpringBoot\workplace\D4_pc_ui\.idea\package.json
  15. 鸿蒙是什么动物,悟空是猴,八戒是猪,沙和尚是什么动物?乌巢禅师一句话说出答案...
  16. 信奥中的数学 组合篇 相关资料汇总(2022.07.08)
  17. 【软件2.0】软件2.0时代来了!特斯拉AI负责人说:神经网络正在改变编程
  18. 我爱你,与你无关 【没有我的可怜人儿】
  19. 国外网站设计与浏览习惯特点
  20. winform 下拉框(自定义下拉框控件)

热门文章

  1. python抓取数据包_利用python-pypcap抓取带VLAN标签的数据包方法
  2. mybatis 原理_Mybatis大揭秘:plugin插件设计原理
  3. java 限时线程_Java线程中的七种状态
  4. html给图片设置编剧,漫画简明编剧教程【4】如何设计角色
  5. 计算机大学一个专业几个班,2016年兰州大学计算机类(含基地班、计算机科学与技术等4个专业)专业最低分是多少?...
  6. 使用动态SQL获取具有非空字段的自定义表结构
  7. Debian 26 岁生日快乐!Happy DebianDay!
  8. cocos2d-x 调用java_cocos2d-x中通过Jni实现Java与C++的互相调用
  9. chrome浏览器安装vue调试插件dev-tools
  10. Error creating bean with name ‘tokenBean‘ defined spring找不到Bean