本文核心:
在之前的各种服务配置过程中,我们在启动服务之前,对于防火墙的设置一般都是直接在命令行输入“systemctl stop firewalld”以及“setenforce 0” 两条命令来关闭防火墙SELinux的功能。这样简单粗暴的操作对防护墙的认知显然是粗浅而不够完善的,那么本文就针对linux防火墙作具体的讲解以及相关的配置。
防火墙,(英文:firewall),是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
简单举例来说,防火墙就好比家家户户的家门外面的防盗门,主要是起一定的保护作用。虽然这样理解防火墙的概念有失偏颇,不过个人认为比较方便理解一点。不过话说回来,在生产环境中,真正意义上的防火墙是硬件防火墙。那我们先来谈谈防火墙的分类。
从物理层面上说,一般分为硬件防火墙和软件防火墙,其区别顾名思义,实际上的差别也很明显:
存在的就是合理的,既然存在防火墙,有防火墙的相关技术,那么就一定有其存在的意义与价值。因此,我们需要了解其实际的功能,才能明白其真正的价值。
防火墙的主要功能如下:
病毒侵入检测
网络地址转换
网络操作的审计监控
强化网络安全服务
上述专业术语对于初学者而言可能实在是晦涩难懂,其实简单来说,就是防止病毒、避免网络被侵入、监控网络数据与信息、增强网络安全。其重要性就在于其提供了记录计算机网络之中的数据信息、防止工作人员访问存在安全隐患的网站与控制不安全服务的功能,从而避免自身网络出现故障的问题。
那么对于防火墙也有其自身的发展,毕竟技术在不断进步。防火墙就是一种在内部与外部网络的中间过程中发挥作用的防御系统,具有安全防护的价值与作用,通过防火墙可以实现内部与外部资源的有效流通,及时处理各种安全隐患问题,进而提升了信息数据资料的安全性。因此,因为技术的发展,防火墙也有其自身的类型。
(1)过滤型防火墙
过滤型防火墙是在网络层与传输层中,可以基于数据源头的地址以及协议类型等标志特征进行分析,确定是否可以通过。在符合防火墙规定标准之下,满足安全性能以及类型才可以进行信息的传递,而一些不安全的因素则会被防火墙过滤、阻挡。
(2)应用代理类型防火墙
应用代理防火墙主要的工作范围就是在OSI的最高层,位于应用层之上。其主要的特征是可以完全隔离网络通信流,通过特定的代理程序就可以实现对应用层的监督与控制。这两种防火墙是应用较为普遍的防火墙,其他一些防火墙应用效果也较为显著,在实际应用中要综合具体的需求以及状况合理的选择防火墙的类型,这样才可以有效地避免防火墙的外部侵扰等问题的出现。
(3)复合型
目前应用较为广泛的防火墙技术当属复合型防火墙技术,综合了包过滤防火墙技术以及应用代理防火墙技术的优点,譬如发过来的安全策略是包过滤策略,那么可以针对报文的报头部分进行访问控制;如果安全策略是代理策略,就可以针对报文的内容数据进行访问控制,因此复合型防火墙技术综合了其组成部分的优点,同时摒弃了两种防火墙的原有缺点,大大提高了防火墙技术在应用实践中的灵活性和安全性。
以上是对防火墙的概念概述,下面主要将针对其中的软件防火墙进行具体介绍,即Linux防火墙。Linux系统的防火墙主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux系统的防火墙体系基于内核编码实现,具有非常稳定的性能和极高的效率,也因此获得广泛的应用。
iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理, 用户通过iptables这个代理,将用户的安全设定执行到对应的“安全框架"中,这个"安全框架"才是真正的防火墙,这个框架的名字叫netfilter。
netfilter才是防火墙真正的安全框架(framework) ,netfilter位于内核空间。
iptables其实是一个命令行工具, 位于用户空间,我们用这个工具操作真正的框架。
netfilter/iptables (之后简称为iptables) 组成Linux平台下的包过滤防火墙,与大多数的Linux软件一 样, 这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT) 等功能。
Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:
网络地址转换(Network Address Translate)、数据包内容修改以及数据包过滤的防火墙功能
所以说,虽然我们使用service iptables start启动iptables"服务" ,但是其实准确的来说,iptables并没有一 个守护进程, 所以并不能算是真正意义上的服务,而应该算是内核提供的功能。
首先来解释一下什么是iptables的表,什么是iptables的链。
iptables管理者四个不同的表,其功能分别由独立的内核模块实现。
filter表:负责过滤功能,防火墙;内核魔抗:iptable_filter
nat表:network address translation, 网络地址转换;内核模块:iptable_nat
mangle表:拆解报文,做出修改,并且重新封装的功能;iptable_mangle
raw表:关闭nat表上启用的连接追踪机制;iptable_raw
防火墙的作用在于对经过的数据包报文匹配规则(之后会讲述规则的相关概念),然后执行对应的动作,当数据包报文经过防火墙的各个关卡时,将匹配与之对应的规则,而其中的各个关卡上可能并非只有一条规则,那么这些规则串联起来就形成了链,当数据包经过时,就要将链上(就是上面的“关卡”)的所有的规则都匹配一次,符合则执行对应操作。
其实,简单举个例子,这个链就好比古时候各个城池之间的关隘一般,每个关卡都会去对应匹配验证来往人的身份或者是通关文牒(就好比是上述的规则),检查其是否允许通过的过程。
当然,链的具体结构如下所示:
下面对这五条链作简要概念解释:
其中,INPUT、OUTPUT链主要作用在主机型防火墙中,即主要针对服务器本机进行保护的防火墙,而其余的多用在“网网络型防火墙”中,如使用Linux防火墙作为网关服务器,在公司内网与Internet之间进行安全。
四表五链的关系如下图所示:
根据上图,则可以理解为表中包含与之相对应的链,链中则应该对应着各种匹配规则。其实我们在实际的使用过程中,往往是通过“表”作为操作入口,对规则进行定义。
表——功能
链——钩子
raw表中的规则可以被这些链使用: PREROUTING, OUTPUT
mangle表中的规则可以被这些链使用: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
nat表中的规则可以被这些链使用: PREROUTING, OUTPUT, POSTROUTING (centos7中还有INPUT, centos6中没有)
filter表中的规则可以被这些链使用: INPUT, FORWARD,OUTPUT
我们从规则链之间的顺序角度来理解数据包过滤的匹配流程:
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
常见参数
-P 设置默认策略:iptables
-P INPUT (DROP|ACCEPT)
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
--dport num 匹配目标端口号
--sport num 匹配来源端口号
本文主要介绍的是防火墙的相关知识,以及着重介绍Linux系统的防火墙理论知识,介绍什么是iptables及其与netfilter之间的关系。
其次阐述iptables的四表五链以及二者之间的关系,最后给出iptables的语法格式。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。