Linux系统的防火墙功能是由内核实现的:
2.0 版内核中,包过滤机制是ipfw,管理工具是ipfwadm
2.2 版内核中,包过滤机制是ipchain,管理工具是ipchains
2.4 版及以后的内核中,包过滤机制是netfilter,管理工具是iptables
3.10版内核中,包过滤机制是firewalld,管理工具是firewall-cmd
大家应该都知道RHEL7内核的版本是3.10,在此版本的内核里防火墙的包过滤机制是firewalld ,虽然说它的工具变了,但是‘firewall-cmd’ 命令其实是调用的iptables
[[email protected] ~]# for SERVICE in iptables ip6tables ebtables; do
> systemctl mask${SERVICE}.service
> done
包过滤防火墙是工作在TCP/IP的网络层
附件 TCP/IP
规则表
具有某一类相似用途的防火墙规则,按照不同处理时机区分到不同的规则链以后,被归置到不同的“表”中规则表是规则链的集合
默认的4个规则表
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)
其中filter表、nat表是最常用的,每个表的功能不同,通过数据的匹配规则也不同,在今后使用中请确认后再去使用mangle表可以对数据包进行特殊标记,结合这些标记可以在filter表中对数据包进行有选择性的处理(如“策略路由”,举个例子,网关主机有两条ADSL线路,分别使用网通、电信的接口,可以将访问网通服务器的数据交给网通ADSL接口,而访问电信服务器的数据交给电信ADSL接口)raw表是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理,目前raw表中的应用尚不多见
附件 规则表
规则链
“包过滤”防火墙的主要特点是过滤网络层的IP数据包。实际上在应用iptables规则的时候会发现,有些规则应用是针对传输层、链路层的这些规则的实现是由一个叫“规则链”的规则的作用在于对数据包进行过滤或处理,根据处理时机的不同,各种规则被组织在不同的“链”中规则链是防火墙规则/策略的集合。这些规则链有五种默认的分别是:
INPUT: 处理入站数据包
OUTPUT: 处理出站数据包
FORWARD: 处理转发数据包
POSTROUTING :在进行路由选择后处理数据包
PREROUTING: 在进行路由选择前处理数据包
在“主机防火墙”中,主要针对服务器本机进出的数据实施控制,多以INPUT、OUTPUT链的应用为主在“网络防火墙”中,主要针对数据转发实施控制,特别是防火墙主机作为网关使用时的情况,因此多以FORWARD、PREROUTING、POSTROUTING链的应用为主
入站数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标地址是防火墙本机(如Internet用户访问防火墙主机中Web服务的数据包),那么内核将其传递给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(如httpd服务器)进行响应
转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其他外部地址(如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地址等)进行处理
出站数据流向:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务时),首先被OUTPUT规则链处理,之后进行路由选择,然传递给POSTTOUTING规则链(是否修改数据包的地址等)进行处理
附件 规则链
防火墙区域
firewall区域许多预定义的区域运输firewalld,每个都有自己的用途,每一个区域都和其他区域是有联系的,不指定区域时,默认区域为public,默认的区域不是一个独立的区域;相反,它指向一个在系统定义的其他区域,在RHEL7中常见的区域有
trusted:允许所有传入的流量
home: 拒绝传入流量,允许外出及服务ssh、mdns、ipp-client、samba-client、dhcpv6-client
internal:拒绝传入流量,允许外出及服务ssh、mdns、ipp-client、samba-client、dhcpv6-client(同home)
work: 拒绝传入流量,允许外出及服务ssh、 ipp-client 、dhcpv6-client
public: 拒绝传入流量,允许外出及服务ssh、dhcpv6-client,新添加的网络接口缺省的默认区域。
external:拒绝传入流量,允许外出及服务ssh、mdns、ipp-client、samba-client、dhcpv6-client,允许IPV4的流量输出
dmz: 拒绝传入流量,允许外出及服务ssh
block: 拒绝流量进出
drop: 放弃所有的传入流量,除非外出交通相关(甚至不响应ICMP协议错误)
如果传入的数据包的源地址相匹配的一个区的规则设置,数据包将通过该区域路由,如果一个数据包传入接口与一个区域规则的设置匹配,该区域将被使用。
防火墙的配置
RHEL7内提供了三种防火墙的管理方式:①命令模式下使用命令 firewall-cmd ② 图形界面下使用命令 firewall-config③修改配置文件在/etc/firewalld/下,在这里我们重点介绍第一种命令行模式。
①firewall-cmd 不得不说RHEL7中的防火墙命令动不动就两三行,而且还有好多我都没见过的选项和参数,至于有哪些选项和参数呢,我列出来给大家看看
例设置 wab服务的访问权限
验证firewall是否启用
第一步Systemctl status firewalld.Service
第二步安装 httpd、mod_ssl 软件包并开启 httpd 服务以及自启动
第三步 创建wab服务的首页文件
第四步 默认配置 防火墙对 主机server1 允许所有流量通过DMZ区域
firewall-cmd –set-defaule-zone=dmz
第五步配置防火墙对主机server1所在网
段的流量通过 即允许172.25.1.0/24通过DMZ区域
firewall-cmd --permanent --zone=work --add-source=172.25.1.0/24
第六步配置区域work 允许访问wab服务的流
量进出(https)
firewall-cmd --permanent --zone=work --add-service=https
第六步使防火墙的配置生效
firewall-cmd --reload
第七步 检测对server1 网段防火墙的配置
Firewall-cmd --get-default-zone
Firewall-cmd --get-active-z
ones
Firewall-cmd --zone=work --list-all
第八步 切换到server1验证网页是否能访问
Curl http://server0.example.com