首页 > 其他分享 >防火墙及NAT服务

防火墙及NAT服务

时间:2024-02-02 14:31:28浏览次数:27  
标签:iptables 网关 服务 防火墙 内核 NAT 规则 数据包

一、简介

1. 关于防火墙

防火墙,其实就是用于实现Linux下访问控制的功能的,它分为硬件和软件防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略、规则,以达到让它对出入网络的IP、数据进行检测。

目前市面上比较常见的有三、四层的防火墙,叫做网络层的防火墙,还有七层的防火墙,其实是代理层的网关。对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和目标地址进行检测。但对于七层的防火墙,不管你源端口或者目标端口,源地址或者目标地址是什么,都将对你所有的东西进行检查。所以,对于设计原理来讲,七层防火墙更加安全,但是这却带来了效率更低。所以市面上通常的防火墙方案,都是两者相互结合的。

2. iptables的发展

包括iptables及其前身在内,这些都是工作在用户空间中,定义规则的工具,本身并不算是防火墙。它们定义的规则,并且可以让在内核空间当中的“Netfilter”来读取,从而实现让防火墙工作。而放入内核的地方必须要是特定的位置,必须是TCP/IP的协议栈所经过的地方——Netfilter。

iptables只是防火墙的管理工具,在内核中真正实现防火墙功能的是Netfilter。

对Linux而言,TCP/IP协议栈存在于内核当中,这就意味着对数据报文的处理是在内核中处理的,也就是说防火墙必须在工作在内核中,防火墙必须在内核中完成TCP/IP报文所流进的位置,使用规则去检查,才真正能工作起来。

3. iptables的结构

从上面的发展我们知道了作者选择了五个位置,来作为控制的地方,但是你有没有发现,其实前三个位置已经基本上能将路径彻底封锁了,但是为什么已经在进出的口设置了关卡之后还要在内部设置关卡呢?由于数据包尚未进行路由决策,还不知道数据要走向哪里,所以在进出口是没有办法实现数据过滤的。所以要在内核空间里设置转发的关卡,进入用户空间的关卡,从用户空间出去的关卡。那么,既然他们没有什么用,我们为什么还要放置他们呢?因为在进行NAT/DNAT的情况下,目标地址转换必须在路由之前转换。所以我们必须在外网而后内网的接口处进行设置关卡。Netfilter规定的这五个位置也叫五个规则链:

防火墙及NAT服务_NAT

防火墙及NAT服务_NAT_02

iptable的结构:在数据包过滤表中,规则被分组放在我们所谓的链中。链,就是一个规则的列表(如图所示)。

防火墙及NAT服务_NAT_03

二、表和链

要设置一个Linux防火墙,就要使用规则,每个规则指定在包中与什么匹配,以及对包执行什么操作。那么什么是规则呢?因为iptables利用的是数据包过滤的机制,所以它会分析数据包的报头数据。根据报头数据与定义的规则来决定该数据包是否可以通过或者是被丢弃。也就是说,根据数据包的分析资料来与预先定义的规则内容进行“比对”,若数据包数据与规则内容相匹配则进行相应的处理,否则就继续下一条规则的比对。重点在于比对与比对的顺序。

什么是表和链呢?这得由iptables的名称说起,为什么称为iptables呢?因为它里面包含有多个表格(table),每个表格都定义出自己的默认策略与规则,且每个表格的用途都不相同。iptables包含四个表,五个链。其中表是按照对数据包的处理功能区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度。

四个规则表分别为:Filter、NAT、Mangle、Raw,默认表是Filter(没有指定表的时候就是Filter表)。 表的处理优先级为:Raw>Mangle>NAT>Filter

常用的三个表:

防火墙及NAT服务_服务器_04

三、工作流程

iptables采用的是数据包过滤机制工作的,所以它会对数据包的报头信息进行分析,并根据我们预先设定的规则进行匹配来决定是否对数据包的处理方式。

防火墙是层层过滤的,实际是按照匹配规则的顺序从上到下,从前到后进行过滤的。如果匹配上规则,即明确表明是阻止还是通过,数据包就不在向下继续进行匹配了。如果规则中没有明确判断出处理结果,也就是说不匹配当前规则,那么就继续向下进行匹配,直到匹配默认的规则,得到最后的处理结果。所以说规则的顺序至关重要。

防火墙的默认规则是所有的规则均不匹配时,才会执行的规则。

防火墙及NAT服务_服务器_05

防火墙及NAT服务_服务器_06

指令常用操作选项:

防火墙及NAT服务_NAT_07

常用封包比对参数:

防火墙及NAT服务_NAT_08

其它选项:

防火墙及NAT服务_NAT_09

防火墙及NAT服务_NAT_10

操作实例:禁止SSH远程登录

   

防火墙及NAT服务_IP_11

注意:通过命令行添加的防火墙指令仅仅是临时生效的,系统重启即失效。

处理动作包括:

防火墙及NAT服务_服务器_12

指令格式示意图:

防火墙及NAT服务_IP_13

防火墙及NAT服务_NAT_14

两种增加规则选项的差别:

-A chain rule-specification:添加规则到指定规则链的结尾,成为最后一条规则。

-I chain [rulenum] rule-specification:如果没有指定序号,则添加的规则将成为对应链中的第一条规则。如果指定了序号,则成为该序号上的规则,而原来位于该序号的规则将往后移一位。

防火墙及NAT服务_IP_15

操作实例:禁止PING本机(ping指令属于ICMP协议,其类型为“8”)

防火墙及NAT服务_NAT_16

防火墙及NAT服务_NAT_17

四、企业案例

1. 配置案例讲解

生产环境配置防火墙主要有两种模式:逛公园及看电影模式

逛公园模式:默认随便进出,对非法分子进行拒绝。企业应用:企业配置上网网关路由。

看电影模式:默认没票进不去,花钱买票才能够进入电影院。企业应用:服务器防火墙。

可以看出,还是第二种模式更加的严格和安全。其本质区别就是防火墙的默认规则是允许还是拒绝。

防火墙及NAT服务_NAT_18

企业面试题:自定义链处理“syn”

防火墙及NAT服务_服务器_19

2. 工作中如何维护防火墙

实际生产中,一般第一次添加规则是以命令行或者脚本的方式进行,然后一次性的保存成配置文件,之后的维护工作就是围绕着对该配置文件的修来来进行。

防火墙及NAT服务_NAT_20

3. 配置网关

防火墙及NAT服务_服务器_21

第一步:首先,作为网关的主机除了要具备双网卡并且能够连接互联网等物理条件外,还要确保将内核的转发功能打开。另外,还要求Filter表的“FORWARD”链允许通过。

防火墙及NAT服务_NAT_22

第二步:确保网关主机的相关模块已经加载

防火墙及NAT服务_IP_23

第三步:内网服务器要能够Ping通网关主机的内外网卡。第四步:在网关主机上配置规则(两种方法)。

 

防火墙及NAT服务_服务器_24

至此,Linux网关主机配置完毕。

还有一种应用,就是把外部IP地址及端口映射到内部服务器的地址及端口(和共享上网的环境一样)。

防火墙及NAT服务_NAT_25

要求:

防火墙及NAT服务_NAT_26

防火墙及NAT服务_IP_27

防火墙及NAT服务_NAT_28

企业应用场景:

  • 把访问外网IP及端口的请求映射到内网某台服务器的地址及指定端口上(企业内部)。
  • 硬件防火墙,把访问LVS/Nginx外网VIP及80端口的请求映射到IDC负载均衡服务器内部IP及指定端口上(IDC机房的操作)iptables在企业中的应用小结:
  • Linux主机防火墙(表:Filter
  • 最为内网共享上网的网关(表:NAT,链:POSTROUTING)
  • 由外到内的端口映射(表:NAT,链:PREROUTING)

防火墙及NAT服务_NAT_29

指定地址段

防火墙及NAT服务_IP_30

4. 端口映射

防火墙及NAT服务_NAT_31

连接跟踪表已满,开始丢包的解决办法:一、关闭防火墙。 简单粗暴,直接有效

二、加大防火墙跟踪表的大小,优化对应的系统参数

标签:iptables,网关,服务,防火墙,内核,NAT,规则,数据包
From: https://blog.51cto.com/u_16077267/9551700

相关文章

  • 千万级高性能长连接Go服务架构实践
    作者|glstr导读移动互联网时代,长连接服务成为了提升应用实时性和互动性的基础服务。本文主要介绍了百度系内基于golang实现的统一长连接服务。主要从统一长连接功能实现和性能优化等角度,描述了统一长连接服务在设计、开发和维护过程中面临的问题和挑战,重点介绍了解决相关问题和挑......
  • 快速比较不同服务器上面应用是否一致的方法
    快速比较不同服务器上面应用是否一致的方法背景高可用、高并发的场景要求必须进行多应用的负载均衡处理此时一个很重要的问题就是应用服务器是否一致的一个检查。正常情况下可能需要获取md5然后进行计算,或者是复制到相同机器上面进行compare的对比。但是这种处理方式......
  • 上门预约家政小程序开发:打造便捷家政服务新体验
    随着生活节奏的加快,人们对于家政服务的需求越来越高,传统家政服务方式已经无法满足现代人的需求。因此,一款便捷、高效的上门预约家政小程序应运而生。本文将介绍上门预约家政小程序的开发背景、功能特点、技术实现和未来发展。一、开发背景随着移动互联网的普及,越来越多的用户开始习......
  • MySQL 跨服务器关联查询
    如果您需要在MySQL中关联查询位于不同服务器的表(跨服务器关联查询),您可以考虑使用MySQL的联机查询(FederatedMySQL)。联机查询允许您在一个服务器上访问和查询另一个服务器上的表。以下是在MySQL中进行联机查询的简要步骤:1.在服务器1上创建user表的联机表定义:```sqlCREA......
  • 为分布式应用提供协调服务的 ZooKeeper
    什么是zookeeperzookeeper是Apache开源的一个顶级项目,目的是为分布式应用提供协调服务,当然zookeeper本身也是分布式的。而从设计模式的角度来理解:zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接收观察者的注册。一旦数据......
  • 企业计算机服务器中了mkp勒索病毒怎么办,mkp勒索病毒解密流程
    网络是一把双刃剑,随着网络技术的不断发展与应用,企业的生产效率大大提升,企业的数据安全关乎着企业的发展,保护好企业的数据直观重要,近期,云天数据恢复中心接到很多企业的求助,企业的计算机服务器遭到了mkp勒索病毒攻击导致企业计算机系统瘫痪无法正常使用,后来通过云天数据恢复中心工程......
  • 【JS逆向】新X社评论数据获取——逆向Signature参数
    免责申明本公众号的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文......
  • 云打印功能需要付费吗?云打印服务一个月多少钱?
    随着云打印服务的兴起,很多云打印服务平台也火热了起来。这对于一些有用户基础的学习类、工具类App来说,是一个非常好的变现渠道。在这种情况下,这类App就可以选择接入易绘创云打印服务。那么云打印需要付费吗?云打印服务一个月多少钱?今天就一起来了解一下。 云打印需要付费吗?云......
  • 如何修改服务器端口号
    如何修改服务器端口号一、检查当前的端口号在开始修改端口号之前,我们需要先检查当前的端口号。在大多数情况下,服务器的默认端口号为80或443。要查看服务器正在使用的端口号,请打开命令提示符并输入以下命令:netstat-ano|findstr:80这将显示所有正在使用端口号80的进程及其PID......
  • 提升网站性能的秘诀:为什么Nginx是高效服务器的代名词?
    在这个信息爆炸的时代,每当你在浏览器中输入一个网址,背后都有一个强大的服务器在默默地工作。而在这些服务器中,有一个名字你可能听说过无数次——Nginx。今天,就让我们一起探索这个神奇的工具。一、Nginx是什么Nginx(发音为“enginex”)是一个开源的高性能HTTP和反向代理服务器。它由......