组成 概念
所谓防火墙也称之为防护墙,它是一种位于内部网络与外部网络之间的网络安全系统。一项信息安全的防护系统。按照给定的规则,允许或者限制网络报文通过。
- 硬件防⽕墙:通过硬件和软件的组合,基于硬件的防⽕墙保护整个内部网络安全。(例如 华为E9000)
- 软件防⽕墙:通过纯软件,单独使⽤软件系统来完成防⽕墙功能,保护安装它的系统。
大型公司都是以硬件防火墙为主,软件防火墙为辅。软件防火墙根据情况来决定是否开启,如果服务器性能不够,可能会关闭软件防火墙。
Netfilter
用于管理网络数据包。不仅具有网络地址转换(NAT)的功能,也具备数据包内容修改、以及数据包过滤等防火墙功能。利用运作于用户空间的应用软件,如iptables、nftables、ebtables和arptables等,来控制Netfilter,系统管理者可以管理通过Linux操作系统的各种网络数据包。1990年代,Netfilter在Linux 2.3.15版时进入Linux内核,正式应用于Linux 2.4版。
firewalld
动态防火墙管理器。
firewalld 通过“网络/防火墙”空间的方式,为不同的网络连线或接口定义其自身的信任等级,通过这种方式达到了动态管理的效果。同时,它支持 IPv4、IPv6 防火墙的设置 、以太网网桥以及配置选项可为运行时或永久。另外,它还提供了接口,方便应用添加规则。
iptables
iptables是运行在用户空间的应用软件,通过控制Linux内核netfilter模块,来管理网络数据包的处理和转发。
Iptables
CentOS7默认使用firewalld防火墙,需先关闭
systemctl stop firewalld.service //关闭firewalld防火墙服务
systemctl disable --now firewalld.service //立即关闭服务 与 自启
systemctl enable --now firewalld.service //开启服务 与 自启
yum -y install iptables iptables-services //安装相关服务
systemctl start iptables.service
systemctl enable iptables.service
概念
规则 与 链
规则的作用:对数据包进行过滤或处理
链的作用:容纳各种防火墙规则
分类
链的分类:
处理数据包的不同时机默认包括5种规则链
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包
规则表
表的作用:容纳各种规则链
表的划分依据:防火墙规则的作用相似
默认包括4个规则表
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记·
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)
顺序
规则表之间的顺序
raw->mangle>nat->filter
规则链之间的顺序
入站: PREROUTING > INPUT
出站: OUTPUT > POSTROUTING
转发: PREROUTING > FGRWARD > POSTROUTING
规则链内的匹配顺序
按顺序依次检查,匹配即停止 (LOG策略例外)
若找不到相匹配的规则,则按该链的默认策略处理
使用iptables命令行配置规则
命令格式:
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
- 不指定表名时,默认指filter表
- 不指定链名时,默认指表内的所有链
- 除非设置链的默认策略,否则必须指定匹配条件
- 控制类型使用大写字母,其余均为小写
常用控制类型:
ACCEPT ----允许数据包通过(默认)
DROP ----直接丢弃数据包,不给出任何回应信息
REJECT ----拒绝数据包通过,会给数据发送端一个响应信息
SNAT ----修改数据包的源地址
DNAT ----修改数据包的目的地址
MASQUERADE ----伪装成一个非固定公网IP地址LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。
LOG ----只是一种辅助动作,并没有真正处理数据包
常用管理选项:
-A ----在指定链的末尾追加(--append)一条新的规则
-I----(大写i)在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则
-R ----修改、替换(--replace) 指定链中的某一条规则,可指定规则序号或具体内容
-P ----设置指定链的默认策略(--policy)
-D ----删除(--delete) 指定链中的某一条规则,可指定规则序号或具体内容
-F ----清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L ----列出(--list) 指定链中所有的规则,若未指定链名,则列出表中的所有链
-n ----使用数字形式(--numeric) 显示输出结果,如显示IP地址而不是主机名
-v ----显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers ----查看规则时,显示规则的序号
匹配条件:
-p指定要匹配的数据包的协议类型
-s指定要匹配的数据包的源IP地址
-d指定要匹配的数据包的目的IP地址
-i指定数据包进入本机的网络接口
-o指定数据包离开本机做使用的网络接口
–sport指定源端口号
–dport指定目的端口号
多端口匹配
-m multiport --sport 源端口列表
-m multiport --dport 目的端口列表
iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
IP范围匹配
-m iprange --src-range 源IP范围
-m iprange --dst-range 目的IP范围