防火墙
种类
1.包过滤技术 「 静态防火墙 动态防火墙 」
netfilter 真正的配置
位于linux内核的包过滤功能体系
称为linux防火墙的“内核态”
iptables 防火墙的配置 工具
主要针对 网络层 针对IP数据包 「体现在对包的IP地址、端口等信息处理」
- 链表结构
链 ---- 容纳 规则
表 ---- 容纳 规则链 - 规则链
规则的作用:对数据包进行过滤或处理
链的作用:容纳各种防火墙规则
链的分类依据:处理数据包的不同时机 - 默认规则链
INPUT: 处理入站 数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING: 在进行路由选择 后 处理数据包
PREROUTING: 在进行路由选择 前 处理数据包 - 规则表
表的作用: 容纳各种规则链
表的划分依据:防火墙规则作用相似 - 默认规则表
raw表 – 确定是否对该数据包进行状态跟踪
mangle表 – 为数据包设置标记
nat表 – 修改数据包中的源、目标IP地址或端口
filter表 – 确定是否放行该数据包(过滤)
2.应用代理技术
3.状态检测技术
默认链表结构
iptables -t filter -L | grep -i chain | grep -i policy
规则表之间的顺序
raw -> mangle -> nat -> filter
入站:PREROUTING -> INPUT
出站:OUTPUT -> POSTROUTING
转发:PREROUTING -> FORWARD -> POSTROUTING
规则链内的匹配顺序
按顺序依次检查,匹配即停止(LOG策略例外)
若找不到相匹配的规则,则按该链的默认策略处理
基本语法
语法构成:iptables 「-t 表名」 选项 「链名」 「条件」 「-j 控制类型」
例如: iptables -t filter -I INPUT -p icmp -j REJECT
- 注意:
不指定 表名时,,默认指filter表
不指定 链名时,,默认指表内 所有的链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
数据包常见控制类型:
ACCEPT: 允许通过
DROP:直接丢弃,不给任何回应
REJECT:拒绝通过,必要时会给回应
LOG:记录日志信息,传给下一个规则继续匹配
写链时,只有 ACCEPT DROP 两种
-A 末尾追加 -I在链开头 指定 -L 列出条目 -n 以数字形式显示地址、端口
-v 更详细信息显示 --line-numbers 查看规则时,显示规则的序号
-D 删除指定 -F 清空所有 -P 为指定链设置默认规则 -Z 清空数据统计
- 规则匹配条件
1.通用匹配(正常 普通)
可直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件
协议匹配:-p 协议名
地址匹配:-s 源地址 -d 目的地址
接口匹配:-i 入站网卡 -o 出站网卡
iptables -I
2.隐含匹配(隐藏 特定)
特定协议匹配作为前提,包括 端口、TCP、ICMP类型等条件
端口匹配:–sport 源端口 --dport 目的端口
TCP标记类型:–tcp-flags 检查范围 被设置的标记
ICMP类型匹配:–icmp-type ICMP类型
3.显示匹配(加 扩展)
-m 扩展模块 ,多端口、mac地址、IP范围、数据包状态
防火墙的选择
iptables() firewalld(daemon 动态防火墙)
不允许两者同时使用
systemctl mask firewalld.service 禁用该服务(mask禁用后,enable start都没用了)
systemctl unmask firewalld.service 解禁该服务
禁掉iptables,启用firewalld
防火墙的状态及配置
内存状态下 能支持的服务,永久状态下能支持的服务
列端口
[root@localhost ~]# firewall-cmd --list-ports
[root@localhost ~]# firewall-cmd --list-ports --permanent
放行一个服务 ,就相当于 放行了该服务的端口
直接加 重载服务
永久加 重载服务
两者都加 不需重载 都能查看
两边都增加
移除服务或端口
- 加 端口时 ,注意后面写上端口所属的协议类型,否则会报错
富规则
添加服务
添加端口
图形化的firewall
firewall-cmd --state
firewall-config 启动防火墙配置
默认区域 有9个
可自己添加
端口转发
[root@localhost ~]# ls /usr/lib/firewalld/zones/
block.xml dmz.xml drop.xml external.xml home.xml internal.xml public.xml trusted.xml work.xml
[root@localhost ~]# firewall-cmd --set-
–set-default-zone= --set-log-denied=
设置默认区域
block.xml 拒绝大多数 (没有明确的允许就是拒绝)dmz.xml 军事管理区 与网络内容进行交互
drop.xml 丢弃规则 (大多数请求不做响应)
external.xml 外部区域
home.xml 常用 在家里设置一条规则
internal.xml 内部区域
public.xml 公共开放 防火墙 的规则一般所写的都在这里
trusted.xml 非常信任的环境 没有端口被拒绝
work.xml 工作环境