科普
原理
【iptable原理】
【原理讲的明明白白,他这一篇真的够了 真的】
【原理+实操】
常用
1、防火墙操作端口
【更多firewall实操】
【看看配置参数】
firewall-cmd --add-port=8000/tcp --permanent
firewall-cmd --reload
2、nftables
应用
机制
- 每个"链"中的规则都存在于哪些"表"中
PREROUTING 的规则可以存在于:raw表,mangle表,nat表。
INPUT 的规则可以存在于:mangle表,filter表,(centos7中还有nat表,centos6中没有)。
FORWARD 的规则可以存在于:mangle表,filter表。
OUTPUT 的规则可以存在于:raw表mangle表,nat表,filter表。
POSTROUTING 的规则可以存在于:mangle表,nat表。
- 在实际的使用过程中,往往是通过"表"作为操作入口,对规则进行定义的
- 之所以按照上述过程介绍iptables,是因为从"关卡"的角度更容易从入门的角度理解,但是为了以便在实际使用的时候,更加顺畅的理解它们,此处我们还要将各"表"与"链"的关系罗列出来,
把具有相同功能的规则的集合叫做"表",所以说,不同功能的规则,我们可以放置在不同的表中进行管理
filter表:负责过滤功能,防火墙;内核模块:iptables_filter
nat表:network address translation,网络地址转换功能;内核模块:iptable_nat
mangle表:拆解报文,做出修改,并重新封装 的功能;iptable_mangle
raw表:关闭nat表上启用的连接追踪机制;iptable_raw
优先级:
raw --> mangle --> nat --> filter
表(功能)<--> 链(钩子):
raw 表中的规则可以被哪些链使用:PREROUTING,OUTPUT
mangle 表中的规则可以被哪些链使用:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat 表中的规则可以被哪些链使用:PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)
filter 表中的规则可以被哪些链使用:INPUT,FORWARD,OUTPUT
- SNAT、DNAT、MASQUERADE、REDIRECT 这几个都在nat表
MASQUERADE理解为动态的、自动化的SNAT 只能存在于POSTROUTING链与INPUT链中
SNAT规则也可以定义在INPUT链中,我们可以这样理解,发往本机的报文经过INPUT链以后报文就到达了本机,如果再
不修改报文的源地址,就没有机会修改了
DNAT规则只配置在PREROUTING链与OUTPUT链中
REDIRECT规则只能定义在PREROUTING链或者OUTPUT链中
4张表中都可以有output链
5个链都可以放在 mangle 表中
- 实战网络防火墙
1、添加路由表
2、可以使用"白名单机制" 在filter表 FORWARD 链上(将链的默认策略设置为ACCEPT,通过在链的最后设置REJECT规则实现白名单机制)
3、应着重考虑方向性,双向都要考虑
- 应该将更容易被匹配到的规则放置在前面
- -i 和 -o
从本机发出的报文是不可能会使用到-i选项的,因为这些由本机发出的报文压根不是从网卡流入的,而是要通过网卡发出的
-o选项用于匹配报文将从哪个网卡流出
-i选项只能用于PREROUTING链、INPUT链、FORWARD链,那么-o选项只能用于FORWARD链、OUTPUT链、POSTROUTING链
FORWARD链属于"中立国",它能同时使用-i选项与-o选项
- SNAT 、DNAT
只是用于配置SNAT的话,我们并不用 手动的进行DNAT设置,iptables会自动维护NAT表,并将响应报文的目标地址转换回来
firewall
- iptables的缺点:
iptables service 管理防火墙规则的模式:用户使用命令添加防火墙的规则,如果想让规则永久保存,还需要再执行命令 service iptables reload 使变更的规则保存到配置文件里。在这整个过程的背后,iptables service 会对防火墙的规则列表全部重读一次,加载到内核.
如果我们把这种哪怕只修改一条规则也要进行所有规则的重新载入的模式称为静态防火墙的话
- 引入firewall
那么 firewalld 所提供的模式就可以叫做动态防火墙,它的出现就是为了解决这一问题,任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新到运行中的 iptables 即可。
- firewalld 和 iptables 之间有什么关系?
firewalld 提供了一个 daemon 和 service,还有命令行和图形界面配置工具,它仅仅是替代了 iptables service 部分,其底层还是使用 iptables 作为防火墙规则管理入口。firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。
- 什么是区域(zone)?
过滤规则集合:zone
一个zone就是一套过滤规则,数据包必须要经过某个zone才能入站或出站。不同zone中规则粒度粗细、安全强度都不尽相同。可以把zone看作是一个个出站或入站必须经过的安检门,有的严格、有的宽松、有的检查的细致、有的检查的粗略。