比如,在Linux下,可以用ping -f对某主机发送洪水攻击。下例用1000个包对10.10.10.12发动洪水攻击:
root@router:~# ping -f 10.10.10.12 -c 1000
PING 10.10.10.12 (10.10.10.12) 56(84) bytes of data.
PING 10.10.10.12 (10.10.10.12) 56(84) bytes of data.
可以用iptables限制ICMP回应数以阻止该种攻击:
root@router:~# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 10/s -j ACCEPT
root@router:~# iptables -A FORWARD -p icmp --icmp-type echo-request –j DROP
root@router:~# iptables -A FORWARD -p icmp --icmp-type echo-request –j DROP
旧版ICMP应用还有许多别的漏洞。比如,the Ping of Death,即向被害设备(计算机、打印机)发送超过的最大合法极限(65535 octets)的IP包,内容是ICMP "echo request",使之死机。后来,各操作系统都推出针对the Ping of Death的补丁。
泪珠攻击
Teardrop、targa、NewTear、Nestea Bonk、Boink、TearDrop2、Syndrop等众多工具,都是用于使存在IP堆栈漏洞的计算机死机。
这些工具发现某些旧版Linux内核(2.0)、Windows NT、Windows 95的IP堆栈里存在碎片Bug。Teardrop发送碎化的IP包,这些包在被攻击的机器上无法通过计算其偏移值进行组合,导致Linux下出现kernel panic,Windows下出现蓝屏,只能重启电脑。
然而,the Ping of Death问题造成过滤ICMP包的习惯,在本书后面你会发现,这并非好习惯。
第4层安全威胁
TCP和UDP是建立在OSI第4层(传输层)上的传输协议。在第1章详细讨论过,TCP要比UDP复杂的多,因为它是基于连接的协议,具有流量控制机制(windowing);UDP简单而且不要求连线,也没有流量控制。
TCP攻击
作为面向连接的协议,TCP用三次握手建立连接。攻击者利用协议的这个特点发送大量的SYN包,不管被攻击主机发回的SYNACK。这种攻击被称为TCP SYN攻击或SYN洪水。
SYN洪水能够奏效,因为被攻击计算机在某个"listen queue"会跟踪特定打开的连接至少75秒。队列限制在不同的TCP应用上,因此SYN洪水可以将之塞满,导致机器重启或死机。
在Linux里,不同版本的内核TCP监听队列也不相同。2.2及老版内核,默认向状态为SYN_RECV的TCP连接提供的监听队列为1024. 2.0,有一个后台日志跟踪记录打开的及部分打开的TCP连接。监听队列可以用sysctl的参数tcp_max_syn_backlog查看并修改:
root@router:~# cat /proc/sys/net/ipv4/tcp_max_syn_backlog
1024
root@router:~# echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
1024
root@router:~# echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
第一条命令显示后台日志大小为1024,第二条命令将之设为2048.
Linux内核默认会在队列塞满后丢弃新的SYN包。可以用sysctl的另一个参数tcp_syncookies修改,不过要求编译内核时选择了对syncookies的支持(CONFIG_SYN_COOKIES="Y")。
root@router:~# echo 1 > /proc/sys/net/ipv4/tcp_syncookies
该命令设置tcp_syncookies为1,Linux内核将忽略tcp_max_syn_backlog大小。然而,使用tcp_syncookies可能导致不想要的边缘效应。比如,处理1024个TCP连接的网页服务器过载时正常情况下将丢弃新的SYN包。这可以将新的客户引到另外一个加载量小的网页服务器上,以快速处理他们的请求。如果打开syncookies,新的客户不得不花很长时间等待过载服务器的答复。
可以用iptables限制指定时间内的SYN包的数量以阻止SYN洪水:
root@router:~# iptables -A INPUT -p tcp --syn -m limit --limit 10/s -j ACCEPT
root@router:~# iptables -A INPUT -p tcp --syn –j DROP
root@router:~# iptables -A INPUT -p tcp --syn –j DROP
与TCP有关的另外一种攻击是Land attack。此攻击简单而且破坏性巨大,不仅影响大量的Unix和所有的Windows,还影响Cisco路由器。Land attack使用一个用C编写的小程序(land.c),将源IP地址伪装成目标IP地址(比如,192.168.1.1:139到192.168.1.1:139),向该主机打开的TCP端口发送SYN包。
0 comment(s)



2008/07/09 17:36 ..by
内文分页: 
