firewalld

firewalld防火墙

firewalld简述

firewalld:防火墙,其实就是一个隔离工具:工作于主机或者网络的边缘

对于进出本主机或者网络的报文根据事先定义好的网络规则做匹配检测,

对于能够被规则所匹配的报文做出相应处理的组件(这个组件可以是硬件,也可以是软件):

  • 主机防火墙
  • 网络防火墙

 

功能(也叫表)

filter:过滤,防火墙
nat:network address translation,网络地址转换
mangle:拆分报文,做出修改,在封装起来
raw:关闭nat表上启用的连接追踪功能

 

链(内置):

PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING

 

数据报文的流向

流入:PREROUTING --> INPUT
流出:OUTPUT --> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING

 

各功能可以在哪些链上实现

filter: INPUT,FORWARD,OUTPUT
nat:PREROUTING(DNAT),OUTPUT,INPUT,POSTROUTING(SNAT)
mangle: PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
raw:PREROUTING,OUTPUT

 

路由发生的时刻(PREROUTING,POSTROUTING)

报文进入本机后:
判断目标主机
报文发出之前:
判断经由哪个借口送往下一跳

 

添加规则时的考量点

(1)要实现什么功能:判断添加在哪张表上;
(2)报文流经的路径:判断添加在哪个链上;

firewalld优先级

策略应用优先级:raw, mangle, nat, filter
策略常用优先级:filter,nat,mangle,raw

链管理

-F: flush,清空规则链:省略链,表示清空指定表上的所有的链
-N: new,  创建新的自定义规则链:
-X: drop, 删除用户自定义的空的规则链-P: Policy, 为指定链这是默认策略,对filter表中的链而言,默认策略通常有ACCEPT,DROP,REJECT;

规则管理

-A:append,将新规则追加于指定链的尾部
-I:insert,将新规则插入至指定链的指定位置
-D:delete,删除指定链上的指定规则:

查看防火墙策略

-L:list, 列出指定链上的所有规则:
-n:number,以数字格式显示地址和端口号
-v:verbose,显示详细信息
-vv,-vvv
--line-numbers:显示规则编号:

匹配条件

-s, source:检查报文中源ip地址是否符合此处指定的地址范围
-d, destination:检查报文中ip地址是否符合此处指定的地址范围
-p, protocol(udp|tcp|icmp):检查报文中的协议
-i, input-interface:数据报文的流入接口:仅能用于PREROUTING,INPUT,FORWARD链上
-o, out-interface:数据报文的流出接口:仅能用于POSTROUTING,OUTPUT,FORWARD链上

-j target:jump至指定的target

ACCEPT:接受

DROP:丢弃

REJECT:拒绝

RETURN:返回调用链

REDIRECT:端口重定向

LOG:记录日志

MARK:做防火墙标记

DNAT:目标地址转换

SNAT:源地址转换

MASQUERADE:地址伪装

....

自定义链:由自定义链中的的规则进行匹配

 

firewalld:

四表五链:

表:

filter

nat

mangle

raw

链:

PREROUTING

INPUT

FORWARD

OUTPUT

POSTROUTING

 

#查看filter表上面的所有规则(-t是指定表,默认是filter表)

iptables -t filter -L -n  

 

 

#清空所有规则(fileter)

iptables -F

#删除所有自定义链

iptables -X

#凡是ping 192.168.254.74主机都拒绝

iptables -t filter -A INPUT -d 192.168.254.74 -p icmp -j REJECT|DROP|ACCEPT

#以行数字来显示

iptables -L -n --line-number

#删除filter表上INPUT链上的第一条规则

iptables -D INPUT 1

例子

 

filter表:

清空所有策略:                                        iptables -F
清空自定义链:                                        iptables -X
自定义一个链                                         iptables -N old_forward
修改自定义链的名字                                    iptables -E old_forward new_forward
把filter中forward链的默认策略打成drop                  iptables -P FORWARD DROP               
查看filter表中的策略并且显示行数:                    iptables -L -n --line-number   
删除filter表中forward链中的第9条策略:                iptables -t filter -D FORWARD 9

限制所有主机(0.0.0.0)拒绝ping本主机                    iptables -t filter -A INPUT -s 0.0.0.0 -d 192.168.254.24 -p icmp -j REJECT   
显示所有主机(0.0.0.0)拒绝通过ens33网卡ping本主机    iptables -t filter -A INPUT -d 192.168.254.24 -i ens33 -p icmp -j REJECT

 nat表:

    #源地址为192.168.250.0网段的ip地址经过防火墙都转换成192.168.31.100这个ip地址(SNAT:源地址转换)
    iptables -t nat -A POSTROUTING -s 192.168.250.0/24 ! -d 192.168.250.0/24 -j SNAT --to-source 192.168.31.100
   
    #访问目标地址为192.168.31.200这个机器并且是tcp协议80号端口的都转发给192.168.250.1(DNAT目标地址转换)
    iptables -t nat -A PREROUTING -d 192.168.31.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.250.1:80

#访问目标地址为192.168.31.200这个机器并且是tcp协议80号端口的都转发给192.168.31.100的9999号端口(DNAT目标端口地址转换)
    iptables -t nat -A PREROUTING -d 192.168.31.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.31.100:9999

firewalld 是 Linux 系统中用于管理网络连接的安全工具,其提供基于区域(zone)的防火墙规则管理机制。在使用过程中,可能会出现一些警告信息,这些信息通常提示配置中的潜在问题或安全隐患。 ### 警告信息解释 一个常见的警告是 `WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release.`,这个警告表示 `AllowZoneDrifting` 选项被启用。该选项允许网络连接在不同区域之间漂移,这可能带来安全风险,因为它使得防火墙规则可能不会按预期应用[^4]。 另一个可能遇到的错误是在启动 firewalld 服务时出现的 DBus 异常,例如 `ERROR: Exception DBusException: org.freedesktop.DBus.Error.AccessDenied: Connection ":1.10" is not allowed to own the service "org.fedoraproject.FirewallD1" due to security policies in the configuration file`,这通常表明权限配置问题,即当前连接没有权限拥有指定的服务[^3]。 ### 解决方法 对于 `AllowZoneDrifting` 警告,可以通过编辑 firewalld 的配置文件来禁用此功能。具体操作是找到 firewalld 配置文件(通常位于 `/etc/firewalld/firewalld.conf`),并将 `AllowZoneDrifting=yes` 更改为 `AllowZoneDrifting=no`。 针对 DBus 异常导致 firewalld 启动失败的问题,可以尝试重新安装 firewalld 或者检查 SELinux 设置是否阻止了 firewalld 的正常运行。此外,确保系统上的所有软件包都是最新的,因为此类问题有时可能是由于已知的 bug 被修复后的版本缺失所致[^3]。 ### Ansible playbook 示例 如果使用 Ansible 来管理 firewalld 配置,可以参考以下 playbook 示例来启用特定端口: ```yaml - name: firewalld test hosts: webservers tasks: - name: firewall enabled firewalld: port: 20 permanent: true immediate: true state: enabled ``` 此 playbook 将针对名为 `webservers` 的主机列表执行任务,启用端口 20 并将其设置为立即生效以及永久生效[^1]。 ### 注意事项 确保在修改任何配置之前备份原始文件,并测试更改后的效果以确认问题已被解决。同时,保持系统更新可以帮助避免已知的问题和安全漏洞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值