首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux防火墙快速掌握精髓

概述

linux防火墙主要工作在网络层,属于典型的包过滤防火墙。在RHEL中常用的有两种火墙工具iptables和firewalld,但软件本身其实并不具备防火墙功能,他们的作用都是在用户空间中管理和维护规则,只不过规则结构和使用方法不一样罢了,真正利用规则进行过滤是由内核netfilter完成的。

netfilter IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。

iptables和firewalld的区别

与直接控制 iptables 相比,使用 FirewallD 有两个主要区别:

1. FirewallD 使用区域和服务而不是链式规则。

2. FirewallD可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效。

Firewalld 跟iptables比起来,不好的地方是每个服务都需要去设置才能放行,因为默认是拒绝。而iptables里默认是每个服务是允许,需要拒绝的才去限制。

iptables 服务在 /etc/sysconfig/iptables 中储存配置,而 FirewallD 将配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件里,使用 iptables 的时候每一个单独更改意味着清除所有旧有的规则和从 /etc/sysconfig/iptables 里读取所有新的规则,使用 firewalld 却不会再创建任何新的规则;仅仅运行规则中的不同。因此 FirewallD 可以在运行时改变设置而不丢失现行配置。

火墙策略之三链五表

netfilter是Linux 2.4内核引入的全新的包过滤引擎。由一些数据包过滤表组成,这些表包含内核用来控制信息包过滤的规则集。iptables等等都是在用户空间修改过滤表规则的便捷工具。

netfilter在数据包必须经过且可以读取规则的位置,共设有5个控制关卡。这5个关卡处的检查规则分别放在5个规则链中(有的叫钩子函数(hook functions)。也就是说5条链对应着数据包传输路径中的5个控制关卡,链中的规则会在对应的关卡检查和处理。任何一个数据包,只要经过本机,必然经过5个链中的某个或某几个。

iptables的使用

因为防火墙之间存在冲突,所以在使用iptables时须关闭并冻结firewalld

保存策略

方式一

方式二

iptables 命令参数

注意:火墙策略是由上到下读取,当第一条与第二条发生冲突时,第一条策略生效。

操作案例

1. 查看表filter策略

2. 清空所有策略

3. 指定INPUT链允许所有

查看策略(默认查看filter)

4. 删除INPUT链中的第一条策略

查看策略(默认查看filter)

5.改变INPUT链的默认状态为丢弃,执行完改行命令后linux客户端会断开连接

6. 指定协议为tcp,端口为22的被允许,这次可再次通过客户端连接linux

查看策略(默认查看filter)

firewalld的使用

开启

关闭

冻结

解冻

常用命令选项参数

--get-default-zone 显示当前默认区域

--set-default-zone= 设置某区域为默认区域

--get-active-zone 查看当前使用的区域和对应的网卡接口

--get-zone 显示所有可用区域

--get-zone-of-interface= :显示指定接口绑定的区域

--zone= --add-interface= :为指定接口绑定区域

--zone= --change-interface= :为指定的区域更改绑定的网络接口

--zone= --remove-interface= :为指定的区域删除绑定的网络接口

--get-zone-of-source=[/] :显示指定源地址绑定的区域

--zone= --add-source=[/] :为指定源地址绑定区域

--zone= --change-source=[/] :为指定的区域更改绑定的源地址

--zone= --remove-source=[/] :为指定的区域删除绑定的源地址

--list-all-zones :显示所有区域及其规则

[--zone=] --list-all :显示所有指定区域的所有规则,省略–zone=:时表示仅对默认区域操作

[--zone=] --list-services :显示指定区域内允许访问的所有服务

[--zone=] --add-service= :为指定区域设置允许访问的某项服务

补充内容:–add-service=

加上大括号可以一次性添加多个服务

[--zone=] --remove-service= :删除指定区域已设置的允许访问的某项服务

[--zone=] --list-ports :显示指定区域内允许访问的所有端口号

[--zone=] --add-port=[-]/ :为指定区域设置允许访问的某个/某段端口号(包括协议名)

[--zone=] --remove-port=[-]/ :删除指定区域已设置的允许访问的端口号(包括协议名)

[--zone=] --list-icmp-blocks :显示指定区域内拒绝访问的所有 ICMP 类型

[--zone=] --add-icmp-block= :为指定区域设置拒绝访问的某项 ICMP 类型

[--zone=] --remove-icmp-block= :删除指定区域已设置的拒绝访问的某项ICMP类型

firewall-cmd --get-icmptypes :显示所有 ICMP 类型

常用管理命令

高级规则

firewall-cmd --direct --get-all-rules :查看高级规则

firewalld中的NAT地址转换

firewall-cmd --add-masquerade

firewall-cmd --reload

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230606A00Y8Q00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券