Linux 防火墙配置(iptables和firewalld)

文章详细介绍了Linux系统中的两种防火墙工具——iptables和firewalld。iptables是一个静态防火墙,主要用于网络层数据包过滤,而firewalld则是动态防火墙,支持更灵活的规则管理和区域概念。iptables包括四表五链,firewalld则引入了区域概念,允许更细粒度的内网管理。文章还提供了iptables和firewalld的配置方法,包括命令行和图形化界面操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

防火墙基本概念

iptables讲解

iptables四表

iptables五规则链

iptables控制类型

iptables命令配置

firewalld讲解

firewalld区域概念

firewalld两种配置方法

firewall-cmd命令行基础配置

firewall-config图形化配置


防火墙基本概念

防火墙就是根据系统管理员设定的规则来控制数据包的进出,主要是保护内网的安全

目前Linux系统的防火墙类型主要有两种:分别是iptables和firewalld

iptables-静态防火墙

早期的Linux系统中默认使用的是iptables防火墙,配置文件在/etc/sysconfig/iptables,主要工作在网络层

该防火墙使用链式规则,只可以过滤互联网的数据包,无法过滤从内网到内网的数据包

iptables只可以通过命令行进行配置

iptables默认是允许所有,需要通过拒绝去做限制

iptables在修改了规则之后必须得全部刷新才可以生效,还会丢失连接(无法守护进程)

firewalld-动态防火墙

取代了之前的iptables防火墙,配置文件在/usr/lib/firewalld和/etc/fiewalld中,主要工作在网络层

新增区域概念,不仅可以过滤互联网的数据包,也可以过滤内网的数据包

firewalld不仅可以通过命令行进行配置,也可以通过图形化界面配置

firewalld默认是拒绝所有,需要通过允许去放行

firewalld可以动态修改单条规则,动态管理规则集(允许更新规则而不破环现有会话和连接,可以守护进程)

注意事项

iptables和firewaldl不是真正的防火墙,是指用来定义防火墙规则功能的"防火墙管理工具/程序",将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能

即:真正的防火墙执行者是位于内核的netfilter,只不过firwalld和iptables的使用方法以及效果等不同

在配置防火墙时,不建议两种配置方法结合使用(建议只使用其中的一种)


iptables讲解

iptables配置防火墙依靠四个部分实现:表、规则链、规则(匹配条件)、控制类型组成

iptables四表

处理优先级由高到低,表与表之间都是独立的

raw

是否对某个数据包进行状态追踪(包含OUTPUT、PREAUTING两个规则链)

mangle

修改数据包内容;可以做流量整形、对数据包设置标记(包含所有规则链)

nat

负责地址转换功能;修改数据包中的源目IP地址或端口(包含IN、OU、PR、PO三个规则链)

filter

负责过滤数据包;对数据包时允许放行还是不允许放行(包含IN、OU、FO三个规则链)

iptables五规则链

什么是规则链

 很多个规则组成一个规则链

 数据包从上往下做匹配,匹配成功就结束匹配,并执行相应的控制类型(建议需要将精准的策略放在上面)

 如果没有找到相匹配的规则,则执行该规则链的默认控制类型

规则链类型

INPUT                     处理入站的数据包(处理目标是本机的数据包)

OUTPUT                  处理出站的数据包(处理源是本机的数据包,一般不在此链上做规则)

PREROUTING        在进行路由选择前处理数据包(一般用来做NAT Server)

POSTROUTING      在进行路由选择后处理数据包(一般用来做源NAT)

FORWARD              处理转发的数据包(处理经过本机的数据包)

数据包到达防火墙根据下图进行匹配

iptables进行数据处理关心的是四表五链以及流量的进出

iptables控制类型

ACCEPT                 允许数据包通过

DROP                     丢弃数据包(不给对方回应,一般工作时用这个)

REJCET                 拒绝数据包通过(会给对方回应,对方知道自己被拒绝)

SNAT                      修改数据包的源地址

DNAT                      修改数据包的目的地址

MASQUERADE      伪装程一个非固定的公网IP地址

LOG               在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

iptables命令配置

配置iptables防火墙时需要将防火墙服务开启

systemctl start firewalld            开启防火墙

systemctl status firewalld          查看防火墙状态

iptables命令查看防火墙

iptables -nL -t nat  查看nat表的规则链

  -n 使用数字形式显示输出结果(如:通过IP地址)

  -L 查看当前防火墙有哪些策略

  -t 指定查看iptables的哪个表(默认是filter表)

iptables命令配置防火墙

iptables -P INPUT DROP    将INPUT规则链的默认流量更改为拒绝

  -P  设置/修改默认策略

iptables -t filter -I INPUT -s 192.168.10.0/24 -j ACCEPT  在filter表下的INPUT规则链中配置规则

  -I    num 插入规则(大写i,默认在链的开头加入规则,可以指定序号)

  -i    从这块网卡流入的数据    

  -o   从这块网卡流出的数据

  -s   源地址(加!表示取反)

  -d   目的地址  

  -j    限制动作

iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT 拒绝 tcp端口号为1000~1024的数据包

  -A         在链的末尾加入规则

  -p         指定协议类型

  --sport  源端口   

  --dport  目的端口

  -N         新建(new-chain)一条用户自己定义的规则链

  -X         删除指定表中用户自定义的规则链(delete-chain)

iptables -D INPUT 1  删除INPUT规则链的第一条规则

  -D num 删除规则链

  -R 修改规则

iptables -F         清空已有的策略

iptables-save     来保存防火墙策略

注意事项

当创建的规则内容与已有规则一致时,不会覆盖原先的规则,会直接加入到现有规则链中(即此时此规则链下有两条一摸一样的规则,只是顺序不同)

以上关于防火墙的配置是runtime模式,即配置成功后立即生效,但是重启后会失效(需要将配置保存,重启后才不会失效)


firewalld讲解

frewalld是服务名称,firewall-cmd和firewall-config是配置工具名称

firewall-cmd  基于命令行配置

firewall-config基于图形化界面配置(这两个配置方式实时同步)

firewalld区域概念

默认所有网卡都是public区域,可以根据需要将网卡设置为不同的区域

Trust      信任区域

 允许所有流量(所有的网络连接都可以接受)

Public     公共区域

 仅接受ssh、dhcpv6-client服务连接(默认区域)

External  外部区域

 仅接收ssh服务连接(默认通过此区域转发的IPv4流量将会进行地址伪装)

Home     家庭区域

 仅接受ssh、msdns、ipp-client、samba-client、dhcpv6-client服务网络连接

Internal  内部区域

 同home区域

Work      工作区域

 仅接受ssh、ipp-client、dhcpv6-client服务连接

Dmz       隔离区域(非军事区域)

 仅接收ssh服务连接

Block      限制区域

 拒绝所有传入流量(有回应)

Drop       丢弃区域

 丢弃所有传入流量(无回应)

数据包到达防火墙匹配规则

firewall进行数据处理只关心区域

  1. 根据数据包的源IP地址匹配,根据源地址绑定区域的区域规则进行匹配(如果没有绑定区域则匹配默认区域的规则)
  2. 根据传入的网络接口匹配,进入此接口绑定区域的区域规则进行匹配(如果没有绑定区域则匹配默认区域的规则)

绑定源地址的区域规则>网卡绑定的区域规则>默认区域的规则

firewalld两种配置方法

临时配置(runtime 当前生效表)

立即生效,重启后失效

不中断现有连接

无法修改服务配置

永久配置(permanent 永久生效表)

不立即生效,重启后生效,或者立即同步后生效

会终端现有连接

可以修改服务配置

firewall-cmd命令行基础配置

如何实现永久配置

--permanent  表示此配置加入到永久生效(默认临时生效)

或者在配置结束后执行此命令 firewall-cmd --runtime-to-permanent将临时更改为永久

永久配置完成后需要立即同步 firewall-cmd --reload 立即同步永久配置

查看默认区域并进行更改

firewall-cmd --get-zones                            查询可用的区域

firewall-cmd --get-default-zone                  查询默认区域的名称

firewall-cmd --get-active-zone                    显示当前正在使用的区域与网卡名称

firewall-cmd --set-default-zone=trusted     设置默认区域为trusted区域

将网卡/子网与区域绑定(允许/拒绝此子网通过)

firewall-cmd --zone=drop --add-source=192.168.20.0/24 将此子网与drop区域绑定(拒绝从此子网发来的流量)

firewall-cmd --zone=trusted --add-interface=ens160   将此网卡与trusted区域绑定(允许从此网卡发来的流量)

   --remove-source  删除子网与区域的绑定

   --change-source  更改子网与区域的绑定

配置区域允许/拒绝的协议/端口号

firewall-cmd --list-all                   显示当前区域的端口号、网卡、服务等信息

                   --list-all-zones         显示所有区域的

firewall-cmd --get-services        列举出来当前所有被允许的协议

firewall-cmd --zone=public --add-service http            配置public区域允许通过http协议

                                           --remove-service ssh      拒绝通过ssh协议

                                           --add-port=123/tcp          允许通过tcp的123端口

                                           --remove-port=123/tcp    拒绝通过tcp的123端口

cat /etc/services                                保存的协议类型和端口号

配置协议端口转换(端口映射)

firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.1

将192.168.10.1主机的tcp 22端口号转为888端口号(public区域接收ssh)

  --remove-forward-port 删除此端口映射

其它配置

--panic-on  紧急模式,切断一切的网络连接(特殊情况去使用)

--panic-off  恢复一切的网络连接

配置富规则rich(更复杂、更详细的防火墙策略配置)

优先级最高(高于默认规则,两个并不冲突)

能够根据源目地址、端口号来限制用户

firewall-cmd  --zone=public --list-rich-rule    显示public区域已经配置的富规则

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.100.1/24" service name="ssh" accept"   允许来自192.168.100.1的主机访问22端口

 --add-rich-rule                 添加一个富规则

 --remove-rich-rule          删除一个富规则

 accept/reject                    允许/拒绝访问

firewall-config图形化配置

安装firewall-config

 配置Yum源(软件仓库)
Linux 软件包安装_静下心来敲木鱼的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_49864110/article/details/129150924?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22129150924%22%2C%22source%22%3A%22m0_49864110%22%7D

 安装软件 dnf install firewall-config

系统界面讲解

1:选择运行时(Runtime)或永久(Permanent)模式的配置

2:选择区域

3:当前正在使用的区域(黑色加粗)

4:管理当前被选中区域中的服务

5:管理当前被选中区域中的端口

6:设置允许被访问的协议

7:设置允许被访问的端口

8:开启或关闭SNAT(源网络地址转换)技术

9:设置端口转发策略

10:控制请求icmp服务的流量

11:被选中区域的服务,若勾选了相应服务前面的复选框,则表示允许与之相关的流量

12:管理防火墙的富规则

13:网卡信息(网卡与区域绑定信息)

14:子网信息(子网与区域绑定信息)

15:查看常用的服务协议列表

16:主机地址的黑白名单

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静下心来敲木鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值