linux之防火墙

一,何为防火墙

是防止火灾发生时,火势烧到其它区域,使用由防火材料砌的墙。后来这个词语引入到了网络中,把从外向内的网络入侵行为看做是火灾,防止这种入侵的策略叫做防火墙

二,防火墙分类

1.从构造上分类

硬件防火墙:

深信服,联想的网御,华为

软件防火墙

个人防火墙 

定义:个人防火墙运行在 PC 上,用于监控 PC 和外网的通信信息

如windows自带的防火墙

网关防火墙

定义:在网络中的网关上配置防火墙的功能,能对网络中的流量进行策略控制,这就是网关防火墙

软件网关防火墙:如linux上的iptables防火墙, windows上的火绒,360等.

硬件网关防火墙

百度

个人防火墙与网关防火墙区别

个人防火墙主要监控 PC 的通信流量,网关防火墙是监控网络中所有终端的通信流量,在网关处进行策略控制

2.从工作机制上分类

包过滤防火墙

对源ip地址,目的IP地址,源端口,目的端口做所谓的数据包过滤

应用层防火墙

对URL,主机名对数据包做所谓的过滤

3.从模块上分类

定义:其实就是Linux上的iptables

应用态

其实就是iptables

内核态

netfilter

iptables与netfilter区别

iptables只是防火墙的配置工具(官方定义:iptables 是一个简单、灵活、实用的命令行工具,可以用来配置、控制 linux 防火墙.)

而真正的防火墙是netfilter(毫不夸张的说,整个linux系统的网络安全就是基于netfilter构建起来的)

简单来说,netfilter是源代码形式的,我们操作不了,只能靠iptables这个配置工具来实现netfilter的功能,有点像linux内核与shell的关系.

CentOS6与CentOS7版本的防火墙 

CentOS6叫iptables, CentOS7叫firewalld.变得只是工具,内核态不变,换汤不换药嘛相当于.平常我们都是用iptables,因为简单好理解,firewalld可以停用或者删除,然后安装iptables来使用.

下面是各个内核版本对应各个防火墙版本的表格

kernel  2.0.xfirewallipfw
kernel  2.2.xfirewallipchains
kernel  2.4.xfirewalliptables
kernel  3.13.xfirewallfirewall

三,iptables介绍

 iptables主要工作在OSI七层的3.4层。七层的控制可以使用squid代理+iptables. 在实际生产环境中,我们要关闭linux自身防火墙,(解决安全问题尽量不给服务器配置外网IP.需要访问的话,就使用代理转发.)因为高并发,iptables会加大延迟,除非并发小,服务器必须处于公网,考虑开启防火墙,大并发的情况下,不能开iptables,影响性能,利用硬件防火墙提升架构安全.

四,iptables原理 

五链

INPUT就是第一个链:在入口对流量做过滤

OUTPUT就是第二个链:在出口对流量做过滤

FORWARD就是第三个链: 处理数据包的转发

PREROUTING;在进路由表之前对数据包处理

POSTROUTING:在进路由表之后对数据包处理

四表 

raw表:确定是否对该数据包进行状态跟踪

mangle表:为数据包设置标记

nat表:修改数据包中的源,目标IP地址或端口

filter表:确定是否放行该数据包(过滤) 

提示:用的最多的表示nat和filter

防火墙结构 

对运维来说红色最重要

五,防火墙顺序 

表顺序 

raw----mangle----nat----filter

链顺序 

提示:链顺序比较复杂,要分情况是入站,出站还是转发

入站: PREROUTING   INPUT

出站: OUTPUT     POSTROUTING

转发: PREROUTING  FORWARD   POSTROUTING

所有的访问都是按顺序:
入站:比如访问自身的web服务流量。先PREROUTING(是否改地址),再INPUT(是否允许)到达程序。
转发:经过linux网关的流量.先PREROUTING(是否改地址),然后路由。转发给FORWARD(转发或者丢弃),最后经过POSTROUTING(看看改不改地址。)
出站:源自linux自身的流量.先OUTPUT,然后路由。再给POSTROUTING(是否改IP)。 

规则顺序 

 自上而下,依次匹配. 匹配即停止

数据匹配流程图

 难点

流程分析 

入站请求:比如A网络想要进这个机器,它先进入raw表的PREROUTING链,再进入mangle表的PREROUTING链,再进入nat表的PREROUTING链, 然后经过路由选择后,先进入mangle表的INPUT链,再进入filter表的INPUT链,到我们的应用程序

出站请求: 从本机的应用程序经过路由选择,然后到达raw表的OUTPUT链,再进入mangle表的OUTPUT链,再进入nat表的OUTPUT链,再进入filter表的OUTPUT链,再进入mangle表的POSTROUTING链,再进入nat表的POSTROUTING链最后出去

转发请求: 它先进入raw表的PREROUTING链,再进入mangle表的PREROUTING链,再进入nat表的PREROUTING链,然后经过路由选择后确定是转发请求后,直接进入mangle表的FORWARD链,再进入filter表的FORWARD链,仔进入mangle表的POSTROUTING链,再进入nat表的POSTROUTING链,最后出去.


六,iptables语法规则

常见控制类型 

 ACCEPT: 允许通过

DROP: 直接丢弃,不给出任何回应

REJECT: 拒绝通过,必要时会给出提示

LOG: 记录日志信息,然后传给下一条规则继续匹配

SNAT:修改数据包源地址 (能够让内网用户通过同一个公网IP访问公网的能力)

DNAT:修改数据包目的地址 (叫端口映射, 把公网中的访问映射到私网的一个服务器上)

REDIRECT: 重定向

选项

注:默认规则最后匹配 

匹配类型 

  

 

NAT表 

SNAT策略的典型应用环境

               局域网主机共享单个公网IP地址接入Internet

SNAT策略的原理

               源地址转换,Source  Network  Address  Translation

               修改数据包的源地址

原理

其实在我们家用路由器上都在做SNAT转换,只要我们在家能上网,一般都是SNAT.例如下图:私网用户10.10.10.12要想访问公司内网的网站服务器,那要在网关服务器上做SNAT转换才能访问

例如下图,路由器有两块网卡,一块是内网网卡。一块是公网网卡,还有一台公网的网站服务器

 现在用户发送数据包,由于路由器做了路由转发功能,用户可以把包发到web服务器,但是当web服务器返回数据包时,由于目标地址是私网IP,根据网络知识,私网IP是无法在Internet上通信的,除非做了NAT.所以这个请求是错误的.

 SNAT

 如果我们在路由器做了SNAT转换,当用户请求Web服务器时,数据包报文经过路由器时源IP地址192.168.1.234改成了路由器网卡上的公网IP地址218.29.30.31,web服务器在返回请求时数据包上的目的IP地址依然是公网IP地址,到达路由器时,经过地址转换,变成了私网IP地址192.168.1.234.

所以我们加一条iptables规则就可以实现内网访问外网了

注: 一个数据包在经过路由之后(或者说在通过防火墙的过滤之后)才被知道他的源IP是谁,在路由之前只能看到目标IP,如果我看不到你的源IP,那怎么匹配想过滤的数据包并进行源地址转换?我防火墙根本就不能确定你是否是符合匹配条件的IP,所以只能使用POSTROUTING  

但是在家里我们做的SNAT转换并不是这种,因为这种公网地址是让我们写的,但我们知道拨号上网公网地址是一直变的,如果每次都抓取公网的话,是很费事的.所以用MASQ技术可以避免这个缺点.这个技术会自动判断你的公网地址是多少,而不用你指定一个公网地址,家用路由器就是用这种技术实现上网的

 DNAT

如下图, 内网有一个web服务器,然后网关服务器上有两块网卡,eth0充当公网网卡,eth1充当私网网卡,公网中有一台主机,现主机发送http请求,目标地址为公网ip地址,当到达路由器时,公网地址218.29.30.31转换为192.168.1.6.web服务器收到请求发送http应答报文,进过路由器时,私网192.168.1.6转换为218.29.30.31.

 

如下图客户端要访问公司内网的web服务器,要先经过路由前(即NAT表的PREROUTING链),即图中的1接口,然后再进入路由表修改目标IP. 而不能进入2接口(POSTROUTING链),如果进入2接口,那么目标ip地址就不会被路由表修改为10.10.10.12,则导致数据包只会发送到路由器中,所以当我们设置DNAT服务时不能写POSTROUTING链.

 

如果我们想导出文件,例如:iptables-save >  1.iptables .  如果想导入 规则,例如:iptables-restore < 1.iptables

 SeLinux

刚开发linux时开发者并没有涉及到安全问题,当C语言之父发布了关于UNIX安全的文章之后,才出了大量的软件来弥补这项漏洞,如今分成了iptables(防火墙类),selinux,acl(在应用层做的访问控制),tcp wrappers这四大类

经历历程

关于netfilter,iptables,firewalld, ufw,nftables那点事

netfilter在linux内核模块级别控制访问网络栈. 因为调用netfilter让我们晦涩难懂,因为它接近于内核了,所以各种用户友好的实现方式,如ufw和firewalld被引入, 作为更高级别的netfilter的解释器,然而,ufw 和 firewalld 主要是为解决单独的计算机所面临的各种问题而设计的。构建全方面的网络解决方案通常需要 iptables,或者从 2014 年起,它的替代品 nftables (nft 命令行工具)iptables 没有消失,仍然被广泛使用着。事实上,在未来的许多年里,作为一名管理员,你应该会使用 iptables 来保护你的网络。但是 nftables 通过操作经典的 Netfilter 工具集带来了一些重要的崭新的功能。

PS 

本笔记的主要来源

尚硅谷Linux集群教程(linux集群经典之作)_哔哩哔哩_bilibili

53 张图详解防火墙的 55 个知识点 (qq.com)

【命令解析】Linux-iptables命令 (qq.com)

干货:25 条有用的 iptables 常用示例 (qq.com)

Linux下 iptables 超详细教程和使用示例 (qq.com)

iptables 长文详解,值得收藏细读 (qq.com)

【大神笔记】Iptables防火墙基本配置 (qq.com)


iptables资源指路汇总

linux2020-老男孩教育-iptables_哔哩哔哩_bilibili

iptables基础知识详解_LarryHai6的博客-CSDN博客_iptables 

iptables防火墙详解: https://www.zsythink.net/archives/1199/
关于Linux防火墙'iptables'的面试问答: https://www.cnblogs.com/wajika/p/6382956.html
运维人员20道必会iptables面试题: https://www.cnblogs.com/wajika/p/6382853.html
day56-第十三周-iptables防火墙(上): https://www.jianshu.com/p/e4af319659b4
第十四周-day55-iptables防火墙(下): https://www.jianshu.com/p/44e30e87e9c9
CentOS防火墙的设置与优化: https://www.jianshu.com/p/dec0e94f357c
视频配套笔记-iptables防火墙: https://www.jianshu.com/p/9d81c0b2c6fa 

【千锋云计算】Linux系统安全_Iptables及Firewalld加固服务器安全_哔哩哔哩_bilibili

iptables相关概述_哔哩哔哩_bilibili

Linux iptables视频教学_哔哩哔哩_bilibili

netfilter及iptables基本概念_哔哩哔哩_bilibili

Linux内核学习课程 Iptables和netfilter框架分析篇_哔哩哔哩_bilibili

【千锋】云计算运维安全详解全套视频(推荐观看)_哔哩哔哩_bilibili

linux iptables 防火墙讲解实战视频课程_哔哩哔哩_bilibili 韩立刚的

....................................................B站上,C站上还有其他网站上都有很多关于iptables的知识,我就汇总了我认为比较好的。如果有好的资源我还会再更新的。 

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-Turbo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值