目录
1.什么是防火墙
1.1分类
1.2.Netfilter(数据包过滤)
1.2.1定义
1.2.2Netfilter分析内容
1.3防火墙无法完成的任务
1.4iptables 与firewalld区别
2.iptables
2.1iptables执行原则
2.1.1原则
2.1.2防火墙规则
2.2规则链
2.2.1概念
2.2.2分析
2.2.3规则链分类
2.2.4规则链之间的匹配顺序
2.2.5iptables流量处理动作
2.3iptables表
2.3.1四种规则表
2.4安装iptables
2.4.1预处理
2.4.2管理命令
2.4.3规则链存储文件
2.5iptables命令
2.5.1原则
2.5.2格式
2.5.3参数
2.5.4示例
2.5.5实验
3.firewalld
3.1概述
3.1.1概念
3.1.2firewalld特点
1.什么是防火墙
•防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。
1.1分类
•硬件防火墙:由厂商设计好的主机硬件,其操作系统主要以提供数据包数据的过滤机制为主,并去掉不必要的功能
•软件防火墙:保护系统网络安全的一套软件(或称为机制),如Netfilter(数据包过滤机制)
1.2.Netfilter(数据包过滤)
1.2.1定义
onetfilter是一个工作在Linux内核的网络数据包处理框架,用于分析进入主机的网络数据包,将数据包的头部数据(硬件地址软件地址,TCP、UDP、ICMP等)提取出来进行分析,以决定该连接为放行或抵挡的机制,主要用于分析OSI七层协议的2、3、4层。
1.2.2Netfilter分析内容
•拒绝让lnternet的数据包进入主机的某些端口
•拒绝某些来源lP的数据包进入
•拒绝让带有某些特殊标志(flag)的数据包进入,如:带有SYN的主动连接标志
•分析MAC地址决定是否连接
1.3防火墙无法完成的任务
•防火墙并不能杀毒或清除木马程序(假设主机开放了www服务,防火墙的设置是一定要将www服务的port开放给client端的。假设www服务器软件有漏洞,或者请求www服务的数据包本身就是病每的一部分时,防火墙止不了的)
•防火墙无法阻止来自内部LAN的攻击(防火墙对于内部的规则设置通常比较少,所以就很容易造成内部员工对于网络无用或滥用的情况)
1.4iptables 与firewalld区别
•onetfilter数据包过滤机制是由linux内核内建的,不同的内核版本使用的设置防火墙策略的软件不一样,从红帽7系统开始firewalld服务取代了iptables服务
•iptables 与firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,即只是一种服务,而真正使用规则干活的是内核的netfilter
•总之,当前Linux系统中存在多个防火墙管理工具,旨在方便运维人员管理Linux系统中的防火墙策略,我们只需要配置妥当其中的一个就足够了。虽然这些工具各有优劣,但它们在防火墙策略的配置思路上是保持一致的
2.iptables
•早期的Linux系统中,默认使用iptables防火墙来管理服务和配置防火墙,虽然新型的
firewalld防火墙管理服务已经被投入使用多年,但iptables在当前生产环境中还继续使用,具有顽强的生命力
2.1iptables执行原则
2.1.1原则
•防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行
匹配项中定义的行为(即放行或阻止)。
•如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略
2.1.2防火墙规则
•通(放行、允许)
•堵(阻止、拒绝)
•当默认策略为拒绝时,就要设置允许规则,否则数据包都进不来;若默认策略为允时,就要设置拒绝规则,否则数据包都能进来防火墙也就失去了作用
2.2规则链
2.2.1概念
iptables服务把用于过滤流量的策略条目称之为规则,多条规则组成一个规则链
2.2.2分析
•数据包经过iptables处理必须闯过5个控制关卡,每个关卡放置5个规则链用于检查规则和处理,每一道关卡中有多个规则,数据报文必须按顺序一个一个匹配这些规则,这些规则串起来就像一条链,所以我们把这些关卡都叫规则链
2.2.3规则链分类
• INPUT链:数据包流入时,即数据包从内核流入用户空间
• OUTPUT链:向外发送数据包(流出)时,即数据包从用户空间流出到内核空间,一般不配置
•FORWARD链:处理数据包转发时,即在内核空间中,从一个网络接口进入,到另一个网络接口去
•PREROUTING链:在对数据包作路由选择之前,即互联网进入局域网
•POSTROUTING链:在对数据包作路由洗择之后,即局城网出互联网
注意:从内网向外网发送的流量-般都是可控且良性的,因此使用最多的是INPUT规则链,该规
则链可以增大黑客人员从外网入侵内网的难度
例:物业管理公司有两条规定
。禁止小商小贩进入社区;
。各种车辆在进入社区时都要登记。
。这两条规定是用于社区正门的(流量必须经过的地方),而不是每家的防盗门。根据防火墙策
略的匹配顺序,可能会存在多种情况。
o如:来访人员是小商小贩,则会被保安拒之门外,也就无需再对车辆进行登记。若来访人员乘
坐一辆汽车进入社区正门,则"禁止小商小贩进入社区""的第一条规则就没有被匹配到,因此按照顺序匹配第二条策略,即需要对车辆进行登记。如果是社区居民要进入正门,则这两条规定都不会匹配到,因此会执行默认的放行策略
2.2.4规则链之间的匹配顺序
**主机型防火墙:
。入站数据(来自外界的数据包,且目标地址是防火墙本机):PREROUTING-->INPUT -->本机的应用程序
。出站数据(从防火墙本机向外部地址发送的数据包):本机的应用程序->OUTPUT -->POSTROUTING
·网络型防火墙:转发数据(需要经过防火墙转发的数据包):PREROUTING --> FORWARD -->POSTROUTING
·规则链内的匹配顺序
。自上向下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略例外,表示记录相关日志)
。若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许)
2.2.5iptables流量处理动作
•当规则链匹配后应采用以下几种动作来处理匹配流量
• ACCEPT:允许流量通过
•REJECT:拒绝流量通过,拒绝后回复拒绝信息
• LoG:记录日志信息
•DROP:拒绝流量通过,流量丢弃不响应
•例:若某天您正在家里看电视,突然听到有人敲门,透过防盗门的猫眼一看是推销商品的,便会
在不需要的情况下开门并拒绝他们(REJECT)。但如果您看到的是债主带了十几个小弟来讨债,此时不仅要拒绝开门,还要默不作声,伪装成自己不在家的样子(DROP)
2.3iptables表
•规则链容纳了各种流量匹配规则规则表则存储了不同功能对应的规则链,总之表里有链,链里
有规则
2.3.1四种规则表
**filter表:用于对数据包过滤,根据具体的规则决定是否放行该数据包(如DROP、ACCEPT、REJECT、LOG),包含三个规则链,INPUT、FORWARD、OUTPUT,所谓的防火墙其实基本
上是指这张表上的过滤规则,常用*
nat表: network address translation,网络地址转换功能,主要用于修改数据包的源、目
标IP地址、端口,包含三个规则链,OUTPUT、PREROUTING、POSTROUTING
mangle表:拆解报文,做出修改,并重新封装,主要用于修改数据包的TOS(Type of
Service,服务类型)、TTL(Time To Live,生存周期)指以及为数据包设置Mark标记,由于需要相应的路由设备支持,因此应用并不广泛,包含全部五个规则链
raw表:是自1.2.9以后版本的iptables新增的表,用于是否对该数据包进行状态跟踪,在匹配数据包时,raw表的规则要优先于其他表,包含两个规则链,OUTPUT、PREROUTING
·注意:最终定义的防火墙规则链都会添加到这四张表中的其中一张表中
2.4安装iptables
2.4.1预处理
。RHEL(Centos)9中默认使用的是firewalld,且与iptables之间有冲突,如果需要使用iptables需要先停止firewalld再进行安装
2.4.2管理命令
2.4.3规则链存储文件
2.5iptables命令
2.5.1原则
•iptables命令根据流量的源地址目的地址、传输协议、服务类型等信息进行匹配,若匹配成,
则iptables 会根据策略规则所预设的动作来处理这些流量,由于策略规则的匹配顺序是从上至下,则要把较为严格、优先级较高的策略规则放到前面,以免发生错误
2.5.2格式
•简化:
•详细:
2.5.3参数
2.5.4示例
•查看已有的防火墙规则链
•清空规则
2.5.5实验
•实验1:搭建web服务器,设置任何人都能通过80端口访问http服务
•实验2:禁止所有人使用ssh进行远程登录
3.firewalld
3.1概述
3.1.1概念
•firewalld (Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,从RHEL 7开始,用firewalld服务替代了iptables服务RHEL 9采用firewalld管理netfilter子系统,默认情况,firewalld则是交由内核层面的nftables包过滤框架来处理
3.1.2firewalld特点
•firewalld可以动态修改单条规则不需要像iptables那样,修改规则后必须全部刷新才可生效
firewalld默认动作是拒绝,则每个服务都需要去设置才能放行,而iptables里默认是每个服务是允许,需要拒绝的才去限制
•iptables防火墙类型为静态防火墙firewalld 防火墙类型为动态防火墙
firewall必和iptables一样自身并不具备防火墙功能,它们的作用都是用于维护规则,而真正使用规则干活的是内核防火墙模块
firewalld 加入了区域(zone)概念