Bootstrap

Linux服务器防火墙白名单访问策略的配置示例

       最近在做Linux系统应用部署配置过程中,为了确保应用的安全,简单学习了解了一些Linux中的动态防火墙管理工具的使用方法。本文测试实验主要采用Linux服务器的动态防火墙管理工具(即firewalld),来实现服务或端口的访问控制,firewalld主要用于管理 Linux 系统中的防火墙规则,firewalld不是一个独立的防火墙软件,他基于 Linux 内核的 netfilter 框架的前端工具,firewalld 适用于需要灵活管理防火墙规则的环境,例如服务器安全、网络隔离、服务访问控制等。它通过简化规则管理,降低了配置复杂性,同时提供了强大的动态管理能力,支持动态更新防火墙规则,无需重启防火墙服务或中断现有连接(这一点比iptables强),firewalld提供了服务的概念,允许管理员通过服务名称来管理防火墙规则,而无需手动配置每个端口或协议,比如可以通过添加 ssh 服务来允许 SSH 连接,而无需指定端口 22,也可以指定端口进行访问控制,firewalld 支持两种配置模式:

  • 运行时配置:仅在当前会话中生效,重启后失效,默认(不加永久关键词)
  • 永久配置:保存在配置文件中,重启后仍然有效,关键词:--permanent
    测试环境:Redhat7.5及以上环境。下面是具体防火墙设置的相关命令和配置示例,供大家参考学习,注意记得每次增加或删除规则后,要执行下面第四步命令才能立即生效
一、启动防火墙
# 启动firewall
systemctl start firewalld
二、关闭防火墙
# 停止irewall
systemctl stop firewalld
三、列出所有规则
# 列车所有的规则
firewall-cmd --list-all
四、设置立即生效
# 设置立即生效
firewall-cmd --reload
五、配置示例
# 1.增加:指定ip范围(C段),允许访问本机指定端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.64.101.0/24" port protocol="tcp" port="3000" accept"
# 2.增加:指定ip范围(B段),允许访问本机指定端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.64.0.0/16" port protocol="tcp" port="9202" accept"

# 增加:指定ip(如10.66.101.107、10.66.102.183等),允许访问本机指定端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.66.101.107" port protocol="tcp" port="3000" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.66.102.183" port protocol="tcp" port="3000" accept"

# 3.删除:指定ip范围(B段),取消访问本机指定端口
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="10.64.0.0/16" port protocol="tcp" port="9202" accept"
# 4.删除:指定ip范围(C段),取消访问本机指定端口
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="10.64.101.0/24" port protocol="tcp" port="3000" accept"
# 5.删除:指定ip,取消访问本机指定端口
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="10.66.102.183" port protocol="tcp" port="3000" accept"
# 6.删除:指定ip范围(B段),取消访问本机所有端口
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="10.64.0.0/16"  accept"

# 7.运行访问指定服务
firewall-cmd --zone=public --add-service=ssh
# 8.临时允许来自 IP 地址 `192.168.1.100` 的流量。
firewall-cmd --zone=public --add-source=192.168.1.100

source address指定值的ip地址解释

  • 10.64.101.0 是一个 IP 地址,10.64.0.0 是一个 IP 地址。
  • CIDR(无类别域间路由)表示法来定义 IP 地址范围。
  • /24 是子网掩码的 CIDR 表示法,表示子网掩码为 255.255.255.0
  • /16 是子网掩码的 CIDR 表示法,表示子网掩码为 255.255.0.0
  • 10.64.101.0/24:匹配从 10.64.101.0 到 10.64.101.255 的所有 IP 地址,总共256个IP地址,简称C段。
  • 10.64.0.0/16:匹配从 10.64.0.0 到 10.64.255.255 的所有 IP 地址,总共65,536 个 IP 地址,简称B段。
;