firewalld学习--service的使用和配置

service配置文件

firewalld默认给我们提供的ftp的service配置文件ftp.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>FTP</short>
  <description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You need the vsftpd package installed for this option to be useful.</description>
  <port protocol="tcp" port="21"/>
  <module name="nf_conntrack_ftp"/>
</service>

service相对于zone来说结构要简单的多,其整体配置文件结构如下

<service [version="string"]>
     [<short>short description</short>]
     [<description>description</description>]
     [<port [port="portid[-portid]"] protocol="protocol"/>]
     [<module name="helper"/>]
     [<destination ipv4="address[/mask]" ipv6="address[/mask]"/>]
</service>

firewall-cmd分别提供了两个命令来创建和删除service

firewall-cmd --permanent --new-service='service'
firewall-cmd --permanent --delete-service='service'

如果直接编辑xml文件应该更简单,

大部分服务在“/usr/lib/firewalld/services/”目录下都可以找到,不过我们不要直接修改而要复制一份到“/etc/firewalld/services/”中然后再进行修改,

更好的做法是在“/usr/lib/firewalld/services/”中找一个类似的服务复制一份到“/etc/firewalld/services/”目录中,然后修改文件名和其中的内容。

service文件中的标签解释

version

version是service节点的一个可选属性,用于表示service的版本。

short

short在zone、icmptype等配置文件中也存在,其作用是简介,主要是让我们对所配置的内容有所了解,类似于注释的作用。

description

作用跟short相同,不过描述信息更加详细。

port

服务所对应的端口,这项是service中非常重要的一个配置项,大部分service主要就是对port进行绑定的,当一个service绑定了指定端口之后,该端口接收到的连接就会当成这个service,然后到所对应的zone中去查询规则,从而判断是否可以放行。

一个service中可以配置多个port节点,这在有的时候是非常有用的,比如

port节点有两可个配置的属性:port和protocol

port属性

port用来配置所使用的端口号,可以是单个端口也可以是一个端口段,比如port=100-105表示100到105之间的端口号,另外,port属性是个可选属性,可以不进行设置。

protocol属性

protocol属性用于指定所对应的协议,如果port属性不为空,那么protocol应该设置为tcp或者udp,如果port属性为空(没设置),那么protocol可以设置为/etc/protocols中所包含的任意协议。

module

module用于设置netfilter的helper。学生前面给大家介绍过,firewalld其实是基于netfilter进行工作的,netfilter中的helper主要用于连接的跟踪,这样就可以实现“有状态的防火墙”,也就是将相关的连接管理到一起。一个典型的例子就是ftp的连接,我们知道一般来说ftp使用的是21号端口,不过21号端口主要是用来传输命令的,实际传输文件又会使用一个其他的端口,不过这两个连接还有内在的联系,这种情况就可以使用netfilter中的helper来处理,在我们这里service中就是module节点。

destination

destination非常简单,他就表示目标地址,也就是根据目标地址来绑定服务,他有两个属性:ipv4和ipv6,分别用于绑定ipv4和ipv6的地址,可以使用单个地址也可以使用掩码。

另外,在一个service中destination最多只能出现一次。

转载于:https://www.cnblogs.com/a-s-m/p/11303006.html

### 如何在 Linux 中配置 Firewalld 防火墙规则 Firewalld 是一种动态管理防火墙的工具,支持 zones services 的概念,相比传统的 iptables 提供了更灵活的方式来管理调整防火墙策略[^1]。 #### 添加服务到防火墙规则 可以通过简单的命令允许特定的服务通过防火墙。例如,要允许 HTTP 服务访问服务器: ```bash firewall-cmd --permanent --add-service=http firewall-cmd --reload ``` 上述命令中的 `--permanent` 参数表示永久生效,而 `--reload` 则重新加载配置以使更改立即生效[^2]。 #### 创建自定义链并添加规则 为了实现更加复杂的网络控制需求,可以创建一个新的 IPv4 原始表链(raw table)。以下是具体的操作方法: ```bash firewall-cmd --direct --add-chain ipv4 raw blacklist ``` 这条命令的作用是在 IPv4 协议下,在原始表中新增一条名为 `blacklist` 的链。此功能适用于需要低层处理的情况,比如高级网络配置或特殊的数据包过滤场景[^3]。 #### 设置 IP 黑名单 对于需要屏蔽单个或多台设备的需求,可通过富规则的形式指定源地址进行拒绝连接操作。下面是一个例子展示如何阻止来自三个不同 IP 地址的所有流量: ```bash firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject" firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.101' reject" firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.102' reject" firewall-cmd --reload ``` 这些命令会针对每一个给定的 IP 地址设置独立的拒绝规则,并确保修改后的配置能够持久保存[^4]。 #### 注意事项 - 所有涉及 `--permanent` 的变更都需要执行一次 `firewall-cmd --reload` 来激活新设定。 - 使用 `--direct` 方式的指令直接影响底层规则集,因此需谨慎对待以免造成不必要的安全风险或者连通性问题。 ```python print("以上即为 firewalld 配置的一些基本示例") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值