防火墙概念

防火墙是一台或一组设备,用以在网络间实施访问控制策略。无状态防火墙(不维护状态的防火墙,stateless firewall)通常仅仅在OSI模型的IP层中执行一些数据包过滤,尽管有时这种类型的防火墙也会涉及更高层的协议。

状态防火墙会对看到的一个会话中之前的数据包进行追综,并基于此连接中已经看到的内容对数据包应用访问策略。

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

输入和输出流程图

 

默认的数据包过滤策略

实现一个默认的防火墙策略有两种方法

  • 默认拒绝所有消息,明确地允许选定的数据包通过防火墙
  • 默认授受所有消息,明确地拒绝选定的数据包通过防火墙

推荐的方法是默认拒绝所有消息的策略。

默认拒绝所有消息的策略

 

 默认拒绝所有消息的策略                       默认接受所有消息的策略

对一个数据包的驳回与拒绝

 

 静静地丢掉数据包通常是更好的选择,共有三个原因。第一,发送一个错误回应会增加网络流量。大多数被丢弃的数据包被丢弃是因为它们是恶意的,并不是因为它们中是无辜地尝试访问您碰巧不能提供的服务。第二,一个您响应了的数据包可能被用于拒绝服务攻击。第三任何回应,甚至是错误消息,都会给潜在的攻击者可能有用的信息。

过滤传入的数据包

基于源地址、目的地址、源端口、目的端口、TCP状态标志以及其他标准进行过滤。

远程地址过滤

源地址欺骗和非法地址

有几个种类的源地址,不论任何情况,都要在外部接口中拒绝它们。

  • 你的IP地址:永远不会看到合法的传入数据声称它们来自于您的计算机。
  • 你的局域网地址:很少会看到合法的注入包声称来自您的局域网,但却在外部的互联网接口上被接收。
  • A、B、C类地址中的私有IP地址:在历史上的A、B、C类地址中,这三咱类型的地址是为私有局域网而保留的。
  • D类组播IP地址:在D类地址范围中的IP地址被预留作为参加到组播网络广大播目的地址,例如音频广播或视频广播。
  • E类的保留IP地址:E类IP地址用来未来或实验性使用,它们并没有被公开地分配。范围是224.0.0.0到239.225.225.225
  • 回环接口地址:回接口是一个么有网络接口,Linux系统将其用于本地的、基于网络的服务。操作系统在回环接口上为了性能的提升而走了捷径,它并未通过网络接口驱动发送本地流量。
  • 畸形的广播地址:广播地址是一类面向网络中所有主机的特殊的IP地址。
  • A类网络的0地址:像前面建议所说的那样,任何从0.0.0.0~0.255.255.255源地址都是非法的单播地址。
  • 链路本地网络地址:DHCP客户端有时候在无法从服务器得到地址时,会为它们自身分配一个链路本地址。这些地址的范围是169.254.0.0.到169.254.255.255.
  • 运营商级NAT:这些IP地址被标记为由互联网提供商使用并且应该永远不会出现在公共网络互联网里。
  • 测试网络地址:从192.0.2.0~192.0.2.255之间的地址空间被预留以测试网络。

拒绝服务攻击

Dos攻击的基本思想:用数据包淹没您的系统,以打扰或严重地使用您的互联网连接降级,捆绑本地服务以导致合法的请求不能被响应,或更严重地,使用您的系统一起崩溃。两个最常见的结果便是使系统过于忙碌而不能执行任何有用的业务并且占尽关键系统资源。不能完全地保护自己免受DOS攻击。它们能使用攻击者能想到的各种形式。任何会导致您系统进行响应、任何导致您的系统分配资源(包括在日志中记录攻击)、任何诱使一个远程站点停止与您通信的方法都能够在DOS攻击中使用。

通常包含多种攻击类型

TCP SYN泛洪(SYN Flood)、ping泛洪(ping flood)、UDP泛洪(UDP-Ploop)、分片炸弹(fragmentation bombs)、缓冲区溢出(buffer overflow)和ICMP路由重定向炸弹(ICMP routing redirect bomb)。

TCP SYN泛洪攻击

会消耗您的系统资源直到无法接收更多的TCP连接。这种攻击利用连接建立过程中基本的三次握手协义,并结合IP源地址欺骗。

 攻击者将自己的源地址伪装为一个私有地址并向您基于TCP的服务发起一个连接请求,看上去像一个客户端尝试开始一个TCP连接,攻击者会向您发送一个人为生成的SYN消息。您的计算机会回一个SYN-ACP作为一个响应,然而,在这种情况下,您应答发往的地方并不是攻击者的IP地址,事实上,由于该地址是私有的,并没有人会进行响应,伪装的主机不会返回一条RST消息以拆除这个半打开的连接。TCP

连接建立过程中最后一个阶段,接收一个ACK回应,永远不会发生。因此有限的网络连接资源被消耗了,连接一直保持半打开的状态,直到连接尝试超时。攻击者用一次又一次的连接请求了您的端口,连接请求的到来比TCP超时释放资源更快。

Linux有一些急救方法可用。第一个便是之前介绍的源地址过滤。它会过滤掉最常用于欺骗的源地址,但不能保证可以过滤在合法分类中的伪造的地址。

第二个便是启用内核的SYN cookie模块,它能显著地延缓由SYN泛洪造成的资源短缺。

当队列被填满时,系统开始使用SYN cookies而非SYN-ACK来应答SYN请求,它会释放队列中的空间。因此,队列永远不会完全被填满。cookie的超时时间很短暂;客户端必须在很短的时间内进行应答,接下来服务器才会使用客户端期的SYN-ACK进行响应,cookie是一个基于SYN中的原始序列号、源地址、目的地址、端口号、密值而产生的序列号。如果对此cookie的响应与哈希算法的结果相匹配,服务器便可以合理地确信这个SYN是合法的。

打开内核中的SYN cookie保护功能

[root@localhost ~]# ls /proc/sys/net/ipv4/tcp_syncookies -l
-rw-r--r--. 1 root root 0 4月  28 17:03 /proc/sys/net/ipv4/tcp_syncookies
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/tcp_syncookies 

ping泛洪

通过ping发送的ICMP的echo请求消息也是一个常见的元凶,一种蓝精灵的攻击和和它的变种会强制系统消耗资源在echo应答上,完成此任务的一种方法是将源地址伪装成受害者的源地址并向整个主机所在的网络广播echo请求,一条欺骗性的请求消息能够造成数据百或数千计的响应被发送到受害者处,另一种达成相似结果的方法是在互联网上被盗用的主机里安装木马程序,并定时同时向一台主机发送echo请求,最后攻击者发送更多简单的ping泛洪来淹没数据连接是DOS攻击的另一种方式。

 死亡之ping 

发送非常大的ping 数据包,易受攻击的系统可以因此崩溃。Linux中没有此漏洞。

UDP泛洪

UDP协议格外适合用DOS攻击,不同于TCP,UDP是无状态的,由于没流控制的机制,它不存在连接的状态标志。数据报序号也没有。没有任何信息被维护以指明下一个期到来的数据包,并不总是有方法根据端口号将服务器流量和客户端的流量区分开来,由于不存在状态也没有方法把期望到来的响应和出乎意料的来路不明的数据区分开来,很容易使系统忙于对传入的UDP探测进行响应,以致没有带宽留给正当的网络流量。

 未完。。。。。。。。。。。。。。。。。。。。。。。。。

猜你喜欢

转载自www.cnblogs.com/liujunjun/p/12794668.html