centos防火墙firewall-cmd限定特定的ip访问

文章目录

firewall-cmd是什么?

firewall-cmd是centos防火墙的命令行管理客户端,提供了接口来管理运行时和持久的防火墙配置。

在firewalld中,运行时配置与永久配置是分开的。这意味着您可以在运行时配置或永久配置中进行更改。

启动firewalld服务

并设置开机自动启动(如果尚未启动)

bash 复制代码
systemctl enable firewalld  
systemctl start firewalld

查看默认区域

bash 复制代码
[root@localhost ~]# firewall-cmd --get-default-zone
public

如果不是public,改为public

更改防火墙默认区域为public

bash 复制代码
[root@localhost ~]# firewall-cmd --set-default-zone=public
success

关闭端口访问

确保端口关闭。如果已开放则关闭端口。此处区域中的端口如果开放,是所有ip都可以进行访问。

bash 复制代码
#查询打开的端口
firewall-cmd --zone=public --list-ports

关闭区域端口,如果端口未开启则无需关闭。

bash 复制代码
#关闭端口9001
firewall-cmd --zone=public --remove-port=9001/tcp --permanent
#重新载入一下防火墙设置,使设置生效
firewall-cmd --reload
#查询打开的端口
firewall-cmd --zone=public --list-ports

添加富规则

只有富规则能进行精细化限制。区域规则会覆盖掉富规则。

bash 复制代码
#允许192.168.1.118访问8081端口
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.118" port protocol="tcp" port="8081" accept'



#重新载入一下防火墙设置,使设置生效
firewall-cmd --reload
#查看已设置规则
firewall-cmd --zone=public --list-rich-rules

这样就可以限定特定的ip才能访问

查看区域

bash 复制代码
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:
        rule family="ipv4" source address="192.168.1.118" port port="8081" protocol="tcp" accept

删除规则

bash 复制代码
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.119" port protocol="tcp" port="8081" accept'

firewall-cmd的区域概念

trusted(信任区域)| 允许所有的传入流量。

public(公共区域) 允许与ssh或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝。是新添加网络接口的默认区域。

external(外部区域) 允许与ssh预定义服务匹配的传入流量其余均拒绝。

home(家庭区域) 允许与ssh、mdns、samba-client或dhcpv6-client预定义服务匹配的传入流量,其他均拒绝。

internal(内部区域) 默认值与home区域相同。

work(工作区域) 允许与ssh、dhcpv6-client预定义服务匹配的传入流量,其他均拒绝

dmz(隔离区域也称非军事区域) 允许与ssh预定义服务匹配的传入流量,其他均拒绝。

block(限制区域) 拒绝所有传入流量。

drop(丢弃区域) 丢弃所有传入流量,并且不产生包含icmp的错误响应。

firewall-cmd的常用选项

通用选项:

bash 复制代码
-h, --help:
这个选项用于打印简短的帮助文本并退出程序。当您不确定如何使用某个命令或需要查看其支持的功能时,可以使用此选项来获取帮助信息。

-V, --version:
这个选项用于打印firewalld的版本字符串。它不会与其他选项组合使用,也就是说,当您使用此选项时,其他选项将被忽略。通过查看版本信息,您可以了解当前安装的firewalld的版本和可能的特性。

-q, --quiet:
这个选项用于禁止打印状态消息。默认情况下,firewalld在执行某些操作时可能会输出状态消息,告诉您操作是否成功或提供了其他相关信息。如果您不想看到这些消息,可以使用此选项来静默执行命令。这在脚本或自动化任务中特别有用,因为您可能只想获取结果而不关心中间的过程信息。

状态选项:

bash 复制代码
--state:
这个选项用于检查firewalld守护进程是否处于活动状态(即正在运行)。如果守护进程处于活动状态,则返回退出代码0;如果启动时出现故障,则返回RUNNING_BUT_FAILED;否则返回NOT_RUNNING。同时,它还会将状态信息打印到标准输出(STDOUT)。这可以帮助您快速了解firewalld的当前状态。

--reload:
这个选项用于重新加载防火墙规则,同时保持状态信息。当前的永久配置将变为新的运行时配置,也就是说,重新加载之前所做的仅针对运行时的更改(如果它们没有同时保存在永久配置中)将会丢失。请注意,通过直接接口应用的运行时更改不会受到影响,并将保持原样,直到firewalld守护进程完全重启。

--complete-reload:
这个选项用于完全重新加载防火墙,包括netfilter内核模块。这很可能会终止活动连接,因为状态信息会丢失。这个选项只应在出现严重的防火墙问题时使用,例如当存在状态信息问题导致无法建立正确防火墙规则的连接时。同样,通过直接接口应用的运行时更改不会受到影响,并将保持原样,直到firewalld守护进程完全重启。

--runtime-to-permanent:
这个选项用于保存当前的活动运行时配置,并用它覆盖永久配置。这通常是在配置firewalld时进行的,您只进行运行时更改,并在您对配置满意且测试了其按预期工作时,将配置保存到磁盘上。

--check-config:
这个选项用于对永久配置进行检查。这包括XML的有效性和语义检查。这可以帮助您在将配置应用到防火墙之前发现并修复潜在的问题。

永久选项:

bash 复制代码
--permanent:
这个选项用于设置永久选项。使用--permanent选项所做的更改不会立即生效,而是在服务重启/重新加载或系统重新启动后生效。如果不使用--permanent选项,更改将仅作为运行时配置的一部分。

如果您想在运行时和永久配置中都进行更改,请使用相同的命令,一次包含--permanent选项,一次不包含。

--permanent选项可以可选地添加到下面所有支持该选项的命令中。这意味着,当您想要更改防火墙的规则或设置时,如果想要这些更改在重启后仍然保持,您应该添加--permanent选项。这样,您就可以确保即使系统重新启动,您的防火墙配置也会保持不变。

总的来说,--permanent选项允许您管理防火墙的持久配置,确保更改在系统重启后仍然有效。这对于维护长期稳定的防火墙设置非常有用。

区域选项:

bash 复制代码
--get-default-zone:
这个选项用于打印连接和接口的默认区域。默认区域是当没有为连接或接口选择特定区域时所使用的区域。通过此选项,您可以查看当前设置的默认区域。

--set-default-zone=zone:
这个选项用于设置连接和接口的默认区域。当没有为连接或接口指定区域时,将使用此默认区域。设置默认区域会更改那些使用默认区域的连接或接口的区域设置。这是一个运行时和永久性的更改,意味着更改将立即生效,并且在系统重启后仍然保持。

--get-active-zones:
这个选项用于打印当前活动的区域,以及这些区域中使用的接口和源。活动区域是那些与接口或源有绑定的区域。输出格式将列出每个区域,并显示该区域中的接口和源。如果某个区域没有绑定任何接口或源,则相应的行将被省略。这可以帮助您了解哪些区域当前处于活动状态,以及这些区域中使用了哪些接口和源。

这些区域选项提供了对firewalld中区域配置的灵活管理,使您能够查看和更改默认区域,以及了解哪些区域当前处于活动状态。
相关推荐
cpsvps_net3 小时前
美国服务器环境下Windows容器工作负载智能弹性伸缩
windows
甄超锋4 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cpsvps6 小时前
美国服务器环境下Windows容器工作负载基于指标的自动扩缩
windows
网硕互联的小客服9 小时前
Apache 如何支持SHTML(SSI)的配置方法
运维·服务器·网络·windows·php
etcix9 小时前
implement copy file content to clipboard on Windows
windows·stm32·单片机
许泽宇的技术分享9 小时前
Windows MCP.Net:基于.NET的Windows桌面自动化MCP服务器深度解析
windows·自动化·.net
非凡ghost10 小时前
AMS PhotoMaster:全方位提升你的照片编辑体验
windows·学习·信息可视化·软件需求
M1A111 小时前
TCP协议详解:为什么它是互联网的基石?
后端·网络协议·tcp/ip
mortimer12 小时前
一次与“顽固”外部程序的艰难交锋:subprocess 调用exe踩坑实录
windows·python·ai编程
gameatp14 小时前
从 Windows 到 Linux 服务器的全自动部署教程(免密登录 + 压缩 + 上传 + 启动)
linux·服务器·windows