Linux 防火墙

2023-01-31 02:52:48 阅读:1038 评论:0 点赞:0
所属分类: Linux

一、前言

Linux 中常用的软件级防火墙管理服务是 IptablesFirewalld

二、Iptables 和 Firewalld 的区别

在早期的 Linux 系统中,默认使用的是 Iptables 防火墙管理服务来配置和管理防火墙。但是他们都是 Linux 中防火墙的管理程序,主要是对于策略的管理上不同,最终的执行者都是位于内核中的 netfilter

  • iptables 是基于接口设置规则,从而判断网络的安全性,firewalld 是基于区域,根据不同的区域设置不同的规则,从而保证网络的安全。
  • iptables 是静态防火墙,firewalld 是动态防火墙。
  • iptables 修改某一条规则会删除旧的规则,并从 /etc/sysconfig/iptables 加载所有新的规则。firewalld 修改时不会创建新的规则,而是仅仅运行规则中新加的部分,因此 firewalld 可以在运行时间内,改变设置而不丢失现行连接。
  • iptables 在 /etc/sysconfig/iptables 中储存配置。firewalld 将配置储存在 /etc/firewalld/ (优先加载) 和 /usr/lib/ firewalld/ ( 默认的配置文件) 中的各种 XML 文件里。

Iptables
netfilter/iptables(简称为 iptables)组成 Linux 平台下的包过滤防火墙,与大多数的 Linux 软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

Firewalld
firewalld 防火墙是 Centos7 系统默认的防火墙管理工具,取代了之前的 iptables 防火墙,也是工作在网络层,属于包过滤防火墙。firewalld 和 iptables 都是用来管理防火墙的工具 (属于用户态) 来定义防火墙的各种规则功能,内部结构都指向 netfilter 网络过滤子系统 (属于内核态) 来实现包过滤防火墙功能。firewalld 提供了支持网络区域所定义的网络连接以及接口安 | 全等级的动态防火墙管理工具。

三、Firewalld

在RHEL7里有几种防火墙共存:firewalld、iptables、ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等。firewalld跟iptables比起来至少有两大好处:
1、firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;
2、firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。

3.1 特性

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

firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。

3.2 区域的概念

区域 代码 描述
阻塞区域 block 任何传入的网络数据包都将被阻止。
工作区域 work 相信网络上的其他计算机,不会损害你的计算机。
家庭区域 home 相信网络上的其他计算机,不会损害你的计算机。
公共区域 public 不相信网络上的任何计算机,只有选择接受传入的网络连接。
隔离区域 DMZ 隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。
信任区域 trusted 所有的网络连接都可以接受。
丢弃区域 drop 任何传入的网络连接都被拒绝。
内部区域 internal 信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
外部区域 external 不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。

默认区域是 public。

firewalld默认提供了九个zone配置文件:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml,他们都保存在 /usr/lib/firewalld/zones/ 目录下。

3.3 配置方法

firewalld的配置方法主要有三种:firewall-config、firewall-cmd和直接编辑xml文件,其中 firewall-config是图形化工具,firewall-cmd是命令行工具,而对于linux来说大家应该更习惯使用命令行方式的操作

3.3.1 安装

Centos7 默认防火墙管理服务就是 firewalld, 无需安装。

yum install firewalld firewall-config

3.3.2 管理服务

# 启动
systemctl start firewalld

# 停止
systemctl stop firewalld

# 禁用
systemctl disable firewalld

# 查看状态 
systemctl status firewalld

常用参数说明

# firewall-cmd [OPTIONS...]

--state # 查看状态

# 查看版本
--version

# 查看帮助
--help

# 查看区域信息
--get-active-zones

# 查看指定网络接口所在区域
--get-zone-of-interface=eth0

# 拒绝/取消拒绝所有的包
--panic-on
--panic-off

# 查看是否拒绝
--query-panic

# 更新防火墙规则
--reload # 修改后需要执行才能生效,无需断开
--complete-reload # 需要断开,类似重启
--permanent # 让配置永久生效(服务器重启后还有效)

# 添加网络接口
--add-interface=eth0

# 设置接口默认区域
--set-default-zone=public

# 查看所有打开的端口
--list-ports

# 添加端口
--add-port=8080/tcp

# 指定操作区域
--zone=work
 
# 添加/移除服务
--add-service=smtp
--remove-service=smtp

# 添加富规则
--add-rich-rule

四、Iptables

iptables 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。

4.1 规则分类

iptables 用于处理或者过滤流量的策略那些条目成为规则,多条规则可以组成一条规则链,我们可以将规则链在数据包按不同位置处理进行分类,大致如下:
PREROUTING:路由选择前
INPUT:流量进入前
OUTPU:流量放出前
FORWARD:流量转发前
POSTROUTING:路由选择后

4.2 处理动作

1、ACCEPT 允许通过
2、REJECT 拒绝通过(回恢复消息被抛弃了)
3、LOG 仅记录日志信息
4、DROP 拒绝通过(直接抛弃,不做任何响应)

4.1 基本命令参数

根据OSI七层模型的定义,iptables 属于数据链路层的服务,所以可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配;一旦匹配成功,iptables 就会根据策略规则所预设的动作来处理这些流量。另外,再次提醒一下,防火墙策略规则的匹配顺序是从上到下的,因此要把较为严格、优先级较高的策略规则放到前面,以免发生错误。

参数 作用
-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如TCP、UDP、ICMP
–dport num 匹配目标端口号
–sport num 匹配来源端口号
# 查看已有防火墙规则链
iptables -L

# 清空规则链
iptalbes -F

# 设置进入规则的默认策略为拒绝【慎用】
iptables -P INPUT DROP

不拘一格

职业:后端开发工程师
学校:重庆师范大学
城市:重庆
文章:165
一个喜欢学习的人,快来和我成为朋友吧....

登录逐梦笔记

注册逐梦笔记

已有账号?