firewalld防火墙(二)

一:firewalld高级配置

1:关于iptables的知识

iptables 是Linux系统中传统的命令行防火墙管理工具,它基于内核的netfilter框架工作,用于配置和管理网络规则集,比如过滤(允许/拒绝)进出的数据包、网络地址转换(NAT)等。iptables使用链(chains)和规则(rules)的概念来处理数据包,有五个预定义的链(INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING)对应不同的数据包处理阶段。每条规则由匹配条件(如源IP、目的IP、端口等)和目标动作(如ACCEPT, DROP, REJECT等)组成。

  • 表(Table) : iptables包含四个主要表:filter, nat, mangle, 和 raw,分别用于不同的数据包处理任务,如过滤、网络地址转换、特殊标记等。
  • 链(Chain) : 每个表内含有一系列预设的链,如INPUT, OUTPUT, FORWARD, PREROUTING, 和 POSTROUTING。用户还可以创建自定义链来组织规则。
  • 规则(Rule) : 规则定义了对匹配特定条件的数据包执行的动作,例如允许 (ACCEPT)、拒绝 (DROP) 或重定向 (REDIRECT)。
  • 匹配(Match)目标(Target): 规则由匹配条件和目标动作组成,匹配条件决定了哪些数据包适用此规则,目标动作指定了数据包如何被处理。
用户自定义链

自定义链允许你根据特定需求组织规则,提高可读性和管理效率。创建自定义链的命令如下:

  iptables -N MyCustomChain

然后,可以在预设链中引用这个自定义链,例如:

  iptables -A INPUT -j MyCustomChain
使用 -m (match) 扩展模块

iptables 提供多种扩展模块来实现更细致的匹配条件,如 -m state --state ESTABLISHED,RELATED 用于状态检查,只允许已建立连接的数据包通过。

日志记录

利用 -j LOG 目标可以将匹配特定规则的数据包记录下来,便于故障排查。

  iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "S

2:firewalld中理解直接规则

firewalld 中,直接规则(Direct Rules) 允许用户直接在底层的iptables规则集中插入、删除或修改规则,而不通过firewalld的区域和服务概念。这意味着直接规则提供了更底层、更灵活的控制,但同时也需要对iptables有一定的了解。直接规则的执行优先级高于firewalld的区域规则和富规则,适合进行精细的调整或兼容特定的iptables配置需求。

  • 直接接口(Direct Interface) : 使用直接规则时,你需要指定规则将应用于哪个表和链,以及规则的具体内容。这通常涉及到使用firewall-cmd--direct选项,以及add-ruleremove-rule子命令。
查看直接规则
  • 使用firewall-cmd--list-all-rules选项查看当前所有直接规则。

    firewall-cmd --direct --get-all-rules
    
删除直接规则
  • 若要删除某条直接规则,首先需确定其位置索引,然后使用remove-rule操作。

    firewall-cmd --direct --remove-rule ipv4 filter INPUT 0
    

3:使用富语言

富语言规则(Rich Rules) 是firewalld提供的一个高级特性,允许用户以一种更易读和更强大的方式来定义防火墙规则,而不需要直接操作iptables命令。富规则结合了源地址、目的地址、端口、协议等元素,并且支持复杂的逻辑判断(如AND, OR),使得配置更加直观和灵活。例如,你可以用一条富规则来指定某个IP范围内的用户只能访问特定的服务端口,或者设置端口转发规则。相比于基本的firewalld服务和端口配置,富规则提供了更多的定制选项,使得防火墙策略更加适应复杂网络环境的需求。使用firewall-cmd命令加上--add-rich-rule--permanent选项来添加永久性的富规则到相应的配置中。

  • 端口转发:

    firewall-cmd --permanent --add-rich-rule='rule family=ipv4 forward-port port=80 protocol=tcp to-port=8080 to-addr=192.168.1.10'
    

这条命令永久性地设置了一个富规则,将所有流向公共IP地址80端口的TCP请求转发到内部IP地址192.168.1.10的8080端口。

  • 源地址限制:

    firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=22 protocol=tcp accept'
    

此命令允许来自192.168.1.0/24子网的所有主机通过TCP协议访问SSH服务(默认端口22)。

记住,在使用--permanent标志后,需要重启firewalld服务使更改生效。不加--permanent参数的规则是即时生效但重启后会丢失的。

以上示例展示了如何利用Firewalld的富语言功能来实现复杂的网络策略配置,相比基本配置,富规则提供了更多定制化和灵活性。

相关推荐
__雨夜星辰__1 小时前
Linux 学习笔记__Day2
linux·服务器·笔记·学习·centos 7
大耳朵土土垚1 小时前
【Linux】日志设计模式与实现
linux·运维·设计模式
学问小小谢1 小时前
第26节课:内容安全策略(CSP)—构建安全网页的防御盾
运维·服务器·前端·网络·学习·安全
yaoxin5211232 小时前
第十二章 I 开头的术语
运维·服务器
ProgramHan2 小时前
1992-2025年中国计算机发展状况:服务器、电脑端与移动端的演进
运维·服务器·电脑
马立杰5 小时前
H3CNE-33-BGP
运维·网络·h3cne
云空6 小时前
《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》
运维·人工智能·web安全·网络安全·开源·网络攻击模型·安全威胁分析
没有名字的小羊7 小时前
Cyber Security 101-Build Your Cyber Security Career-Security Principles(安全原则)
运维·网络·安全
m0_465215798 小时前
TCP & UDP Service Model
服务器·网络·tcp/ip
千夜啊8 小时前
Nginx 运维开发高频面试题详解
运维·nginx·运维开发