说到防火墙,我们先来搞搞防火墙是什么东西吧!相信大家日常生活中一定听过“翻墙”之类的词汇吧,墙到底是什么呢?
防火墙
重点来了!!!防火墙技术 是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。。。
度娘总是这么善解人意,可是麻烦度娘下次说人话,Ok?
通俗的说法也就是自己家外面的墙,防止小偷之类的,以保证我们的安全,我们自己要出去,肯定从“门”走,而那些小偷、黑客就得夜半时分偷偷翻墙喽!计算机也就是我们的家,当然也有大“家”,比如公司内网,学校内网
防火墙分类:【逻辑上】
分类 | 说明 |
---|---|
主机防火墙 | 针对单个主机进行防护 |
网络防火墙 | 处于网络入口或者边缘,针对网络入口进行防护,服务于防火墙背后的本地局域网 |
iptables与防火墙的关系
iptables 并不是真正意义上的防火墙,我们可以理解为一个客户端工具,用户通过ipatbles这个客户端,将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,这个框架的名字叫netfilter。 哦,也就是给门上面安装密码、指纹、人脸识别之类的,你符合我的要求,才能进去!!!
netfilter才是防火墙真正的安全框架,netfilter位于内核空间。
iptables是一个命令行工具,位于用户空间,通过这个命令行工具来操作netfilter。
netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
哦,废话真多,不过还没讲完,我们要想设置自己家的密码,首先还得知道,如果==“来者”符合这样的条件,就得这样处理这个数据包==
条件是什么呢?就是规则,也就是我们的接头暗号,哈哈哈。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等
==当然不管你是否符合暗号,我们的墙都得对你做出一些反应,比如说:滚!或者进来吧。也就是放行(accept)、拒绝(reject)和丢弃(drop)等。==我们配置防火墙的主要工作就是添加、修改和删除这些规则。
了解了这些,我们就来康康外面的人到底是怎么通过“墙”的。
报文的流向: 到本机某进程的报文:PREROUTING --> INPUT 由本机转发的报文:PREROUTING --> FORWARD–> POSTROUTING 由本机的某进程发出报文(通常为响应报文):OUTPUT --> POSTROUTING
链
上面这些讨厌的英文单词就是“链”,这个是很重要的规则集结地。当报文经过这些关卡的时候,则必须匹配这个关卡上的规则,但是,这个关卡上可能不止有一条规则,而是有很多条规则,当我们把这些规则串到一个链条上的时候,就形成了"链"
表
前面讲了链,我们在链上放了各种规则,那么这些规则是不是可以合并呢,比如A规则是限制ip地址访问,B规则也是限制ip地址访问,我们把相同功能的一些规则合并。这样来简化操作。
我们把具有相同功能的规则的集合叫做“表”,不同的规则放置于不同的表中工作,在iptables中定义了四种表,每种表对应不同的功能。
表 | 说明 |
---|---|
filter表 | 负责过滤功能,防火墙;内核模块:iptables_filter |
nat表 | network address translation,网络地址转换功能;内核模块:iptable_nat |
mangle表 | 拆解报文,做出修改,并重新封装 的功能;iptable_mangle |
raw表 | 关闭nat表上启用的连接追踪机制;iptable_raw |
表和链的关系
表(功能) | 链(钩子) |
---|---|
raw | REROUTING,OUTPUT |
mangle | REROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING |
nat | REROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有) |
filter | INPUT,FORWARD,OUTPUT |
iptables为我们定义了4张"表",当他们处于同一条"链"时,执行的优先级如下。
优先级次序(由高而低):raw --> mangle --> nat --> filter
除了上面讲的规则外,我们还有一些常见的规则与处理方式:
匹配条件
基本匹配条件 | 扩展匹配条件 |
---|---|
源地址 Source IP | 源端口 Source Port |
目标地址 Destintion IP | m目标端口 Destination Port |
处理动作
动作 | 含义 |
---|---|
ACCEPT | 允许数据包通过 |
DROP | 直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。 |
REJECT | 拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息 |
SNAT | 源地址转换,解决内网用户用同一个公网地址上网的问题 |
MASQUERADE | 是SNAT的一种特殊形式,适用于动态的、临时会变的ip上 |
DNAT | 目标地址转换 |
REDIRECT | 在本机做端口映射 |
LOG | 在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配 |