一、引言

1、Internet和协议发展初期,仅用于大学和科研机构。处于没人攻击状态。

2、20世纪80、90年代,成功的攻击成了家常便饭。为了解决这个问题,引入了防火墙。

Ø 了解防火墙
l 用一种方法控制互联网中网络流量的流向
l 一种能够限制所转发的流量类型的路由器。
l 大大缓解了IPv4地址耗尽的问题(NAT,多个范围地址重复使用,IP地址不是全球唯一的,可重复利用)

二、包过滤防火墙

Ø 防火墙(Firewall),也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网(US5606668(A)1993-12-15)。防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙是系统的第一道防线,其作用是防止非法用户的进入。
Ø 它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信。
Ø 免受攻击:保证终端软件最新和不存在任何错误(无漏洞)。
Ø 分类:1.代理防火墙;2.包过滤防火墙。

1. 包过滤防火墙

Øfilter

配置为丢失或者转发数据包头中符合(或不符合)特定标准的数据包,这些标准称为过滤器。

Ø过滤方式

1.简单的过滤包括网络层或者传输层报头中各个部分的范围比较。

2.最流行的过滤器包含IP地址(选项),ICMP报文类型。

3.端口号确定的各种UDP或者TCP服务。

较新的防火墙能利用封包的多样属性来进行过滤,例如:来源 IP地址、来源端口号、目的 IP 地址或端口号、服务类型(如 HTTP 或是 FTP)。也能经由通信协议、TTL 值、来源的网域名称或网段...等属性来进行过滤

Ø无状态的包过滤防火墙(最简单)

单独处理每一个数据报,极易被混淆

Ø有状态的包过滤防火墙(复杂)

关联已经或者即将到达的数据包来推断流或者数据报的信息。IP分片(第10章),使得防火墙的工作变得更加复杂。

Ø DMZ

Demilitarized Zone即俗称的非军事区,与军事区和信任区相对应,作用是把WEB,E-mail,等允许外部访问的服务器单独接在该区端口,使整个需要保护的内部网络接在信任区端口后,不允许任何访问,实现内外网分离,达到用户需求。

DMZ可以理解为一个不同于外网或内网的特殊网络区域,DMZ内通常放置一些不含机密信息的公用服务器,比如Web、Mail、FTP等。这样来自外网的访问者可以访问DMZ中的服务,但不可能接触到存放在内网中的公司机密或私人信息等,即使DMZ中服务器受到破坏,也不会对内网中的机密信息造成影响。

2.TCP/IP参考模型中的防火墙位置

三、代理防火墙

Ø 本质:

运行一个或者多个引用层网关的主机(ALG),该主机拥有多个网络接口,能够在应用层中继两个连接/关联之间特定类型的流量。

Ø 优点:

比包过滤防火墙更安全

Ø缺点

缺乏灵活性(为每个传输层服务设置一个代理)。每个服务需安装代理,通过代理发起连接。必须配置每个客户端以便找到代理。

提前确认的环境可以工作的很好,但是添加额外的服务需要ISP重大干预。

Ø代理防火墙的两种形式

1. HTTP proxy firewall

Web代理,用于HTTP和HTTPS协议。内容过滤器&隧道代理服务器.对内是server,对外是client。也提供Web cache功能。

ØSOCKS firewall

防火墙安全会话转换协议 (SOCKS: Protocol for sessions traversal across firewall securely) SOCKS 协议提供一个框架,为在 TCP 和 UDP 域中的客户机/服务器应用程序能更方便安全地使用网络防火墙所提供的服务。

协议工作在OSI参考模型的第5层(会话层),使用UDP协议传输数据,因而不提供如传递 ICMP 信息之类的网络层网关服务。

用于Web之外的其他服务。版本4和5.版本5增加了强大的认证,UDP传输和IPv6寻址。

Socks代理比其他应用层代理要快得多。它通常绑定在代理服务器的1080端口上。如果您在企业网或校园网上,需要透过防火墙或通过代理服务器访问Internet就可能需要使用 SOCKS。

注意,浏览网页时常用的代理服务器通常是专门的http代理,它和SOCKS是不同的。因此,您能浏览网页不等于您一定可以通过SOCKS访问Internet。常用的防火墙,或代理软件都支持SOCKS,但需要其管理员打开这一功能。

使用场景:电子邮件、新闻组软件、网络聊天MIRC和使用代理服务器上联众打游戏等等各种游戏应用软件当中。

四、传统的NAT

1、公有地址与私有地址

Ø私有地址:    组建内部局域网使用,无偿免费使用【RFC1918】。

原则上,私有地址可以采用公有地址;但是当这样的公有地址也别不联网另外一个实体使用时,这样可能出现问题,是因为本地系统会屏蔽使用相同地址的远端系统(在互联网上不会被路由,出去要被丢掉。即使出去,数据无法回来)。

Ø 公有地址: 具有全球唯一性,需要申请收费。
Ø A类地址

范围:0.0.0.0到127.255.255.255。 10.0.0.0到10.255.255.255是私有地址

第1字节为网络地址,其它3个字节为主机地址。另外第1个字节的最高位固定为0

ØB类地址

范围:128.0.0.0到191.255.255.255. 172.16.0.0到172.31.255.255是私有地址

第1字节和第2字节为网络地址,其他2个字节为主机地址。另外1个字节的前2为固定为10

ØC类地址

范围:192.0.0.0到223.255.255.255。192.168.0.0到192.168.255.255是私有地址

第1字节、第2字节和第3个字节为网络地址,第4个个字节为主机地址。另外第1个字节的前三位固定为110/2、/2

2、网络地址转换(NAT)

ØNAT(Network Address Translation)本质

允许在互联网的不同地方使用相同的IP地址集体。主要动机是正在急剧减少的有限的IP地址空间。解决两个问题:IP地址枯竭和关于路由可扩展性的担忧(CIDR的发展)。

Ø NAT快速发展、广泛使用严重影响IPv6的推进

NAT推出之初仅作为临时措施,但NAT是受欢迎的,因为减少了对全局路由的互联网地址需求,同时提供了一些防火墙功能,并且仅仅需要很少的配置。

Ø NAT的几个缺点
l   需要做特殊的配置,才能使NAT内部主机访问外网
l   每一个隶属于同一连接都必须通过相同的NAT
l   在很多方面,NAT与互联网协议背道而驰
l   NAT需要跟踪每个连接的状态,操作贯穿多个协议层。修改IP地址需要同时修改传输层的校验码(见10,13章)。
l NAT对应用层协议造成困扰(如FTP),尤其是有效载荷内记录IP地址信息的协议。

注意:NAT工作在网络层,但是要结合传输层来共同实现。

3、NAT的分类和功能

Ø静态NAT

1对1,私有地址转换,对特殊设备的访问。

Ø 动态NAT

从地址池中动态获取,比如easy_ip,还是1对1。

Ø 端口复用NAPT

1对多。比如思科NAT服务器,一个公有IP可以映射4000个用户使用。公有IP使用率高。

ØNAT作用

节约IP地址,使用地址转换。仅仅是一个过滤,IPv6不用这个技术。

ØNAT功能
   1)解决IP地址不足问题,1对多,还可以保护内部网络。

2)安全防护功能

3)负责均衡

l 不足:1)影响网络速度;2)与某些应用不兼容;

3)不能处理加密的IP报头     4) 无法实现对IP端到端的跟踪。

4、NAT工作原理

重写通过路由器的数据包的识别信息。

1. 重写往一个方向传输的数据包的源IP地址。

2. 重写往另外一个方向传输的数据包的目的IP地址。

因此:在互联网上的主机,数据包是来自于具有全局路由IP的NAT路由器,而不是位于NAT内部的私有地址的主机。

5、NAT的发展历程

Ø DHCP思想(租用地址池)
Ø 带地址池的NAT(NAT刚产生的思想)
Ø NAT

私有IP和NAT的公共IP之间的转换,那么,私有网中同时与公共网进行通信的主机数量就受到NAT的公共IP地址数量的限制。取决于ISP提供的地址池或公有地址范围,这种NAT不是最流行的,因为他无助于减少需要使用的IP地址数量。

Ø NAPT

为了克服这种限制,NAT被进一步扩展到在进行IP地址转换的同时进行Port的转换,这就是网络地址端口转换NAPT(Network Address Port Translation)技术。

Ø EASY IP

Easy IP 方式的实现原理与地址池NAPT 转换原理类似,可以算是NAPT的一种特例,不同的是Easy IP 方式可以实现自动根据路由器上WAN 接口的公网IP 地址实现与私网IP 地址之间的映射(无需创建公网地址池)。所以在配置上相对简单。

6、NAPT

Ø NAPT工作原理

使用传输层标识符(即TCP和UDP端口,ICMP查询标识符)来确定一个特定的数据包到底和NAT内部的哪一台主机关联。

这使得大量的内部主机(即使好几千台)能够同时访问互联网,而使用公有IP地址的数量确很少,通常只需要一个

通常我们所说的NAT将同时包括NAT和NAPT(除非进行区分)。

7、防火墙规则

Ø iptables:命令行工具,位于用户空间;用此工具操作内核空间的netfilter(安全框架)

包含过滤表格(table)和过滤连(chain)。table: filter,nat, mangle,

filter三条链: INPUT、FORWARD、OUTPUT

nat表三条链:PREROUTING、OUTPUT、POSTROUTING

mangle表有五条链,主要用于任意修改数据包。

raw表两条链: PREROUTING、OUTPUT

8、Iptables->table

我们把相同功能的规则的集合叫做“表”,所以说,不同功能的规则,放在不同的表中管理。每种表的作用(重要):

Ø filter表

负责过滤功能,防火墙;内核模块:iptables_filter

Ø nat表

网络地址转换功能;内核模块:iptabel_nat

Ømangle表

拆解报文,做出修改,并重新封装。

Øraw表

关闭nat表, 启用的链追踪机制。

9、数据报过来策略

默认拒接所有消息

默认接收所有消息

10、iptables的数据包的流程是怎样的?

一个数据包到达时,是怎么依次穿过各个链和表的(图)。

基本步骤如下: 
1. 数据包到达网络接口,比如 eth0。 
2. 进入 raw 表的 PREROUTING 链,这个链的作用是赶在连接跟踪之前处理数据包。 
3. 如果进行了连接跟踪,在此处理。 
4. 进入 mangle 表的 PREROUTING 链,在此可以修改数据包,比如 TOS 等。 
5. 进入 nat 表的 PREROUTING 链,可以在此做DNAT,但不要做过滤。 
6. 决定路由,看是交给本地主机还是转发给其它主机。

到了这里我们就得分两种不同的情况进行讨论了,一种情况就是数据包要转发给其它主机,这时候它会依次经过: 
7. 进入 mangle 表的 FORWARD 链,这里也比较特殊,这是在第一次路由决定之后,在进行最后的路由决定之前,我们仍然可以对数据包进行某些修改。 
8. 进入 filter 表的 FORWARD 链,在这里我们可以对所有转发的数据包进行过滤。需要注意的是:经过这里的数据包是转发的,方向是双向的。 
9. 进入 mangle 表的 POSTROUTING 链,到这里已经做完了所有的路由决定,但数据包仍然在本地主机,我们还可以进行某些修改。 
10. 进入 nat 表的 POSTROUTING 链,在这里一般都是用来做 SNAT ,不要在这里进行过滤。 
11. 进入出去的网络接口。完毕。

另一种情况是,数据包就是发给本地主机的,那么它会依次穿过: 
7. 进入 mangle 表的 INPUT 链,这里是在路由之后,交由本地主机之前,我们也可以进行一些相应的修改。 
8. 进入 filter 表的 INPUT 链,在这里我们可以对流入的所有数据包进行过滤,无论它来自哪个网络接口。 
9. 交给本地主机的应用程序进行处理。 
10. 处理完毕后进行路由决定,看该往那里发出。 
11. 进入 raw 表的 OUTPUT 链,这里是在连接跟踪处理本地的数据包之前。 
12. 连接跟踪对本地的数据包进行处理。 
13. 进入 mangle 表的 OUTPUT 链,在这里我们可以修改数据包,但不要做过滤。 
14. 进入 nat 表的 OUTPUT 链,可以对防火墙自己发出的数据做 NAT 。 
15. 再次进行路由决定。 
16. 进入 filter 表的 OUTPUT 链,可以对本地出去的数据包进行过滤。 
17. 进入 mangle 表的 POSTROUTING 链,同上一种情况的第9步。注意,这里不光对经过防火墙的数据包进行处理,还对防火墙自己产生的数据包进行处理。 
18. 进入 nat 表的 POSTROUTING 链,同上一种情况的第10步。 
19. 进入出去的网络接口。完毕。

11、iptables raw表的使用

增加raw表,在其他表处理之前,-j NOTRACK跳过其它表处理
状态除了以前的四个还增加了一个UNTRACKED

例如:
可以使用 “NOTRACK” target 允许规则指定80端口的包不进入链接跟踪/NAT子系统

iptables -t raw -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j NOTRACK
iptables -t raw -A PREROUTING -s 1.2.3.4 -p tcp --sport 80 -j NOTRACK
iptables -A FORWARD -m state --state UNTRACKED -j ACCEPT

12、解决ip_conntrack: table full, dropping packet的问题

在启用了iptables web服务器上,流量高的时候经常会出现下面的错误:

ip_conntrack: table full, dropping packet

这个问题的原因是由于web服务器收到了大量的连接,在启用了iptables的情况下,iptables会把所有的连接都做链接跟踪处理,这样iptables就会有一个链接跟踪表,当这个表满的时候,就会出现上面的错误。

iptables的链接跟踪表最大容量为/proc/sys/net/ipv4/ip_conntrack_max,链接碰到各种状态的超时后就会从表中删除。

所以解決方法一般有两个:

(1) 加大 ip_conntrack_max 值

vi /etc/sysctl.conf

net.ipv4.ip_conntrack_max = 393216
net.ipv4.netfilter.ip_conntrack_max = 393216

(2): 降低 ip_conntrack timeout时间

vi /etc/sysctl.conf

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 300
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

上面两种方法打个比喻就是烧水水开的时候,换一个大锅。一般情况下都可以解决问题,但是在极端情况下,还是不够用,怎么办?

这样就得反其道而行,用釜底抽薪的办法。iptables的raw表是不做数据包的链接跟踪处理的,我们就把那些连接量非常大的链接加入到iptables raw表。

如一台web服务器可以这样:

iptables -t raw -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j NOTRACK
iptables -A FORWARD -m state --state UNTRACKED -j ACCEPT

五、与防火墙和NAT相关的攻击

Ø 不完全或者不正确的配置导致的攻击
Ø 利用防火墙的弱点来攻击:没有能力处理IP分片
Ø  NAT受到外部挟持,为攻击者提供伪装能力。

隐藏攻击者的实际地址,从NAT来看是”正常”的

最简单的设置伪装的配置:

ipchains –P FORWARD MASQUERADE

六、IPv4/IPv6共存和过渡中的NAT

2011年最后一个顶层单播IPv4被分配出去,IPv6的过度开始加速。

但目前来看IPv4和IPv6将共存更长一段时间,甚至可能是无期限的。

Ø     双协议栈

DS-Lite(Dual Stack Lite) 一种希望在内部运行IPv6的服务提供者更容易过渡到IPv6(同时支持传统的IPv4)的方法。利用隧道和SPNAT

感谢hebh

TCP/IP详解 第七章 防火墙和网络地址转换(1)相关推荐

  1. TCP/IP详解 第七章 防火墙和网络地址转换(3) iptables防火墙的mangle表

    mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由. 内网的客户机通过Linux主机连入Internet,而Linux主机与Inte ...

  2. TCP/IP详解--第七章

    第7章 Ping程序 7.1   引言   "ping"这个名字源于声纳定位操作.Ping程序由MikeMuuss 编写,目的是为了测试另一 台主机是否可达.该程序发送一份 IC ...

  3. TCP/IP详解--第十七章

     第17章 TCP:传输控制协议 17.1    引言   本章将介绍 TCP为应用层提供的服务,以及 TCP首部中的各个字段.随后的几章我们在了 解TCP的工作过程中将对这些字段作详细介绍. 对TC ...

  4. TCP/IP详解--第五章

    第5章 RARP:逆地址解析协议 5.1   引言   具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取  I P地址.但是无盘机, 如X终端或无盘工作站,则需要采用其他方法来获得 IP地址. ...

  5. TCP/IP详解--第三章

    第3章 IP:网际协议 3.1    引言 IP是TCP/IP协议族中最为核心的协议.所有的 TCP.UDP.ICMP及IGMP数据都以 IP数据 报格式传输(见图 1-4).许多刚开始接触 TCP/ ...

  6. TCP/IP详解第一卷第一章重点摘要

    一.协议族 一系列相关协议的集合称为协议族 指定一个协议族中的各种协议之间的相互关系并划分需要完成的任务设计,称为协议族的体系结构或参考模型 二.TCP/IP TCP/IP是一个开放的系统,协议族定义 ...

  7. TCP/IP详解--第十一章

     第11章 UDP:用户数据报协议 11.1  引言   UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个  UDP .   数据报,并组装成一份待发送的  I P 数据报 ...

  8. TCP/IP详解--第四章

    第4章 ARP:地址解析协议 4.1   引言 本章我们要讨论的问题是只对 TCP/IP协议簇有意义的 IP 地址.数据链路如以太网或令牌 环网都有自己的寻址机制(常常为 48 bit 地址),这是使 ...

  9. TCP/IP详解笔记----第一章:概述

    第一章 概述 这一章主要介绍了TCP/IP的概貌.包括分层.网络地址.客户-服务器模型.常见知名应用层服务端口号等等.需要重点掌握和了解的是以下知识点. 1.TCP/IP的重要作用: 很多不同厂商生产 ...

最新文章

  1. 什么是码元计算机通信
  2. 在图像变换中用最小二乘法求解仿射变换参数
  3. JS-String方法
  4. mysql 控制台全是_Mysql控制台命令大全
  5. OpenGL之正背面剔除、深度测试与多边形偏移
  6. lzg_ad:XPE操作系统镜像尺寸优化
  7. SAP CRM扩展字段的渲染和属性处理原理
  8. Android Studio调试时遇见Install Repository and sync project的问题
  9. Linux 4.21优化Zen 2架构
  10. 操作系统实验报告fcfs算法c语言,操作系统实验报告 作业调度实验报告...
  11. 达芬奇剪辑调色专用键盘DaVinci Resolve Speed Editor
  12. 计算机技术前沿知识,计算机前沿知识讲座心得.doc
  13. (最详细)Cloudera Manager安装部署
  14. 计算机的垃圾站是在硬盘,电脑垃圾回收站在哪里
  15. Springcloudalibaba整合es!实现相关性排序,集成完代码真香
  16. linux-rootfs根文件系统构建
  17. NameNode故障处理方法
  18. GPU 资源消耗原因和解决方案:
  19. python实现文件断点下载
  20. 学会扒源码-HashMap

热门文章

  1. centos配置ADSL拨号 配置阿里云的yum源
  2. CK-GW06-E01与汇川PLC的MODBUC TCP通信
  3. flask写接口文件打包成exe
  4. 魔绑广告病毒感染量提升 ROOT控制手机并下载其他病毒
  5. 将coreldraw文档以html格式,coreldraw复习题(新)改详解-20210508014946.pdf-原创力文档
  6. 基于ERNIE的汽车之家评论多标签分类
  7. 对于手机输入法软件的评价
  8. 计算机内存不足建议使用64,电脑内存不足的解决方法
  9. IT行业面试指导 计算机行业面试技巧 面试技巧
  10. OJ题目:一元二次方程