目录
防火墙基本概念
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
POSTROUTING
FORWARD
数据包到达防火墙根据下图进行匹配
iptables进行数据处理关心的是四表五链以及流量的进出
iptables控制类型
ACCEPT
DROP
REJCET
SNAT
DNAT
MASQUERADE
LOG
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进行数据处理只关心区域
- 根据数据包的源IP地址匹配,根据源地址绑定区域的区域规则进行匹配(如果没有绑定区域则匹配默认区域的规则)
- 根据传入的网络接口匹配,进入此接口绑定区域的区域规则进行匹配(如果没有绑定区域则匹配默认区域的规则)
绑定源地址的区域规则>网卡绑定的区域规则>默认区域的规则
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
将网卡/子网与区域绑定(允许/拒绝此子网通过)
firewall-cmd --zone=drop --add-source=192.168.20.0/24 将此子网与drop区域绑定(拒绝从此子网发来的流量)
firewall-cmd --zone=trusted --add-interface=ens160
--remove-source 删除子网与区域的绑定
--change-source 更改子网与区域的绑定
配置区域允许/拒绝的协议/端口号
firewall-cmd --list-all 显示当前区域的端口号、网卡、服务等信息
--list-all-zones 显示所有区域的
firewall-cmd --get-services
firewall-cmd --zone=public --add-service 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
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源(软件仓库)
安装软件 dnf install firewall-config
系统界面讲解
1:选择运行时(Runtime)或永久(Permanent)模式的配置
2:选择区域
3:当前正在使用的区域(黑色加粗)
4:管理当前被选中区域中的服务
5:管理当前被选中区域中的端口
6:设置允许被访问的协议
7:设置允许被访问的端口
8:开启或关闭SNAT(源网络地址转换)技术
9:设置端口转发策略
10:控制请求icmp服务的流量
11:被选中区域的服务,若勾选了相应服务前面的复选框,则表示允许与之相关的流量
12:管理防火墙的富规则
13:网卡信息(网卡与区域绑定信息)
14:子网信息(子网与区域绑定信息)
15:查看常用的服务协议列表
16:主机地址的黑白名单