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的富语言功能来实现复杂的网络策略配置,相比基本配置,富规则提供了更多定制化和灵活性。

相关推荐
群联云防护小杜32 分钟前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
PyAIGCMaster1 小时前
ubuntu装P104驱动
linux·运维·ubuntu
奈何不吃鱼1 小时前
【Linux】ubuntu依赖安装的各种问题汇总
linux·运维·服务器
爱码小白1 小时前
网络编程(王铭东老师)笔记
服务器·网络·笔记
zzzhpzhpzzz1 小时前
Ubuntu如何查看硬件型号
linux·运维·ubuntu
蜜獾云1 小时前
linux firewalld 命令详解
linux·运维·服务器·网络·windows·网络安全·firewalld
陌北v11 小时前
Docker Compose 配置指南
运维·docker·容器·docker-compose
只会copy的搬运工2 小时前
Jenkins 持续集成部署——Jenkins实战与运维(1)
运维·ci/cd·jenkins
娶不到胡一菲的汪大东2 小时前
Ubuntu概述
linux·运维·ubuntu
阿里嘎多学长2 小时前
docker怎么部署高斯数据库
运维·数据库·docker·容器