01-iptables防火墙安全
01-iptables防火墙安全
防火墙是什么
防火墙好比一堵真的墙,能够隔绝些什么,保护些什么。
防火墙的本义是指古代构筑和使用木制结构房屋的时候,为防止火灾的发生和蔓延,人们将坚固的石块堆砌在房屋周围作为屏障,这种防护构筑物就被称之为“防火墙”。其实与防火墙一起起作用的就是“门”。
如果没有门,各房间的人如何沟通呢,这些房间的人又如何进去呢?当火灾发生时,这些人又如何逃离现场呢?
这个门就相当于我们这里所讲的防火墙的“安全策略”,所以在此我们所说的防火墙实际并不是一堵实心墙,而是带有一些小孔的墙。
这些小孔就是用来留给那些允许进行的通信,在这些小孔中安装了过滤机制,就是防火墙的过滤策略了。
防火墙的作用
防火墙具有很好的保护作用,入侵必须首先穿越防火墙的安全防线,才能接触到机器。
防火墙功能
防火墙对流经他的网络通信进行扫描,这样能够过滤掉一些攻击,以免在其目标计算机上被执行。防火墙可以关闭不使用的端口。而且还能禁止特定端口流出通信。
最后,他可以禁止来自特殊站点的访问,从而防止来历不明入侵者的所有信息。
防火墙概念
防火墙一般有硬件防火墙和软件防火墙
硬件防火墙:在硬件级别实现部分防火墙功能,另一部分基于软件实现,性能高,成本高。
软件防火墙:应用软件处理逻辑运行于硬件平台之上的防火墙,性能低,成本低。
软件防火墙
Linux提供的软件防火墙,叫做iptables,可以理解为是一个客户端代理,通过iptables的代理,将用户配置的安全策略执行到对应的安全框架中,这个安全框架叫做netfilter
- iptables是一个命令工具,位于用户空间,使用这个工具操作真正的框架也就是netfilter
- 真正实现流量过滤的是netfilter,位于内核空间,共同组组成了Linux防火墙,来代替价格昂贵的硬件防火墙,实现数据包过滤,网络地址转换等。
在Centos7发行版下,firewalld防火墙取代啦iptables防火墙
- iptables是将配置好的规则交个内核netfilter网络过滤器处理
- firewalld服务是将配置好的防火墙规则交给内核层netfilter网络过滤处理
- 一般选用iptables适用于大部分Linux操作系统
1.iptables是什么
iptables是开源的基于数据包过滤的防火墙工具
2.iptables使用场景
1、主机防火墙(filter表的INPUT链)。
2、局域网共享上网(nat表的POSTROUTING链)。半个路由器,NAT功能。
3、端口及IP映射(nat表的PREROUTING链),硬防的NAT功能。
4、IP一对一映射。
3.商用防火墙品牌
华为
深信服
思科
H3C
Juniper
天融信
飞塔
网康
绿盟科技
金盾
奇安信
第2章 iptables工作流程
iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。
- 1.防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
- 2.如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。
- 3.如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
- 4.防火墙的默认规则是对应链的所有的规则执行完以后才会执行的(最后执行的规则)。
1760195825387)
什么是netfilter
网络过滤器
Netfilter,在Linux内核中的一个软件框架,用于管理网络数据包。不仅具有网络地址转换的功能,也具备数据包内容修改、以及数据包过滤等防火墙功能netfilter是一个linux内核自带的一个网络协议处理软件,提供过滤、修改数据包的功能。
主要定义了5个链,来定义数据报文的动态。- prerouting链---路由前
- input 链----本地上送
- output 链----本地发送
- forward 链----转发
- post routing 链---路由后这些链决定了数据报文,到底应该是 accept方形,还是drop丢弃。链是我们关心,以及要操作的一个重要点,也就是定义了防火墙的一条条规则。
nginx>server
1. 浏览器访问nginx,client的数据报文到达服务器网卡,此时的tcp/ip信息要经过内核的处理,再到达用户空间的nginx。10.0.0.1:33224 > 10.0.0.7:80 此时建立了一个TCP2.当nginx响应时,数据传输过程就完成了
nginx>client ,数据要从nginx到达客户端的目标地址3.请求与响应过程,都出现
原地址 目标地址4,这个请求响应的数据报文,都在内核空间,我们如果要实现防火墙功能,也就是到底要允许,还是要拒绝这些数据包?
我们就要设置关卡
符合条件的才被放行 accept
不符合的就被阻止 drop因此这个关卡,最基本的出现input关卡,output关卡其实这个关卡叫做链的概念
2.其他链也来了
刚才我们描述的关系,是很明确的,开源地址,目的地
10.0.0.1:32447 > 10.0.0.7:80
但有时候,客户端的报文请求目标地址,可能不是当前机器,而是另一台机器,还好netfilter支持forward转发数据包的流量
- 因此就引入了iptables的3个链关卡
- 转发前–preouting链
- 转发链–forward链
- 路由后—postrouting链
也就是说,我们打开iptables防火墙后,数据报文就会按照如图所示的规则走,产生不同的动作
1、报文若是转发,就不走input走foward链,最终从postrouting链离开服务器
- 若是报文直接发送给当前服务器,直接走input进入应用
常见链的处理关系
1.本服务器进程处理 clinet > prerouting > input > output > postrouting > client
- 数据包经过本机转发 client > prerouting > forward > postrouting
链的作用
关卡为什么会被称作链
是因为,数据报文再经过关卡的时候,会有层层规则,这很多条规则被串成一个链的概念。简单说就是,当数据报文要经过 某个链的时候,要遵守该链的每一个规则,如果有xx规则成立了,执行对应的动作。
3.表的概念
链的概念我们已经有了,就是一些列数据包限制行为的规则,
A类规则是对IP的过滤
B类规则是对数据包的修改转发
因此iptables里将相同功能的规则,合并为了表的概念,默认有4种功能的表,使用iptables的功能,也就被这4个表的功能限定了。
filter表,数据包过滤
nat表,网络地址转发
mangle表,拆解报文,修改报文
raw表,取消链路跟踪
4.图解数据包经过防火墙的完整流程
解释表与链的作用
filter表
1. filter是防火墙默认表,主要和主机自身数据包有关,负责防火墙的数据包进入、离开;filer表有三个链,控制服务器防火墙功能- input,过滤目标地址就是本机的数据包
- forward,转发经过本机的数据包,实现数据包转发的功能
- output,本机需要发出去的数据包
NAT表
1. nat表,主要负责网络地址转换,也就是可以修改
源地址的ip:port
目标地址的ip:port
使用场景:
和主机本身无关,而是实现如局域网共享上网,或者端口服务转换。工作场景:
- 利用iptables实现网关功能,实现postrouting共享上网
- 实现外部IP地址 1 对1的映射关系,实现dmz网络区域
- web服务的,单个端口的映射关系(postrouting)因此nat表就是实现,如交换机的功能。三个链
- ouput链,和主机放出去的数据包有关,修改主机发出的数据包目的地。
- prerouting链,数据包到达防火墙(filter)前,进行规则判断,如修改数据包的目的地,目的端口。
如将80端口的请求数据包,转发到9090端口- postrouting链,数据包离开防火墙之后,修改数据包的源地址。
如,笔记本,vmware的机器,都是局域网的地址,但是被路由器将源地址,改成了公网的地址。
看到这大家记住浏览的转发就好了。