Chinaunix首页 | 论坛 | 博客
  • 博客访问: 88666
  • 博文数量: 30
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 16:34
文章分类

全部博文(30)

文章存档

2010年(2)

2009年(24)

2008年(4)

我的朋友

分类: LINUX

2009-01-22 11:45:21

  #创建新链
  iptables -N LOGDROP_ILLEGAL_PACKET

  iptables -A LOGDROP_ILLEGAL_PACKET -j LOG -m limit --limit 120/minute --log-prefix "$ILLEGAL_PACKET "
  iptables -A LOGDROP_ILLEGAL_PACKET -j DROP

#tcp flags 说明

URG:紧急标志
紧急(The urgent pointer) 标志有效。紧急标志置位,

ACK:确认标志
确认编号(Acknowledgement Number)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure:1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。

PSH:推标志
该标志置位时,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。在处理 telnet 或 rlogin 等交互模式的连接时,该标志总是置位的。

RST:复位标志
复位标志有效。用于复位相应的TCP连接。

SYN:同步标志
同步序列编号(Synchronize Sequence Numbers)栏有效。该标
志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可 以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头 中的序列编号栏包括了TCP分段中第一个字节的序列编号。

FIN:结束标志
带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据。



#UAPRSF
#?1?101 新的连接,但不是以syn置1后发起的连接
           iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOGDROP_ILLEGAL_PACKET

我们先来看看TCP连接三次握手和四次断开

Three-way Handshake

1. (B) --> [SYN] --> (A)

2. (B) <-- [SYN/ACK] <--(A)

3. (B) --> [ACK] --> (A)


Four-way Handshake

1. (B) --> ACK/FIN --> (A)

2. (B) <-- ACK <-- (A)

3. (B) <-- ACK/FIN <-- (A)

4. (B) --> ACK --> (A)



我们来看看典型的使用序列号预测技术的欺骗是如何实现的,参与者:攻击者[A](attacker)试图假装
另一台机子[O](other host)向受害者[V](victim)发送数据。
  1. [A]以[O]的IP为源地址向[V]发SYN。

  2. [V]向[O]回应SYN/ACK。

  3. 现在,若[O]以RST回应这个未知的SYN/ACK,攻击就失败了,但如果[O]已经没有这个能力了呢?比如它 早已被另外的攻击(如SYN flood)降服,或者被关闭,或者它的RST包被防火墙拒绝。

  4. 如果[O]没能破坏这条连接,而且[A]猜对了序列号,那它就能以[O]的身份和[V]交谈了。

只要我们没能在第三步以RST回应那个未知的SYN/ACK包,[V]就会被攻击,而且我们还会被连累(译者 注:因为我们本身也被攻击了,而且还可能会成为攻击者的替罪羊被起诉,呜呜,好惨)。所以,为安全起 见,我们应该以正确的方式向[V]发送一个RST包。
#UAPRSF
#?1??1?
        iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset

#UAPRSF
#101001 NMAP SCAN
          iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j LOGDROP_ILLEGAL_PACKET


#UAPRSF
#111111 XMAS TREE
          iptables -A INPUT -p tcp --tcp-flags ALL ALL -j LOGDROP_ILLEGAL_PACKET
 

#UAPRSF
#110111 Another XMAS TREE
          iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOGDROP_ILLEGAL_PACKET

#UAPRSF
#000000 Null Scan
           iptables -A INPUT -p tcp --tcp-flags ALL NONE -j LOGDROP_ILLEGAL_PACKET  # NULL packets

INVALID COMBINATIONS
#UAPRSF

#???11?
             iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j LOGDROP_ILLEGAL_PACKET

#UAPRSF

#????11
             iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOGDROP_ILLEGAL_PACKET
 
#UAPRSF
#?0???1
           iptables -A INPUT -p tcp --tcp-flags FIN,ACK FIN -j LOGDROP_ILLEGAL_PACKET  # FIN packet

当然还有很多非法组合,我只列出常用的
这是针对一些像是使用 scan 软件,配合所谓的 Stealth 等机制去乱扫他人主机时,可以把这些封包丢弃不处理。那对方一扫就卡死了,或者是要等联机 timeout 才能够继续工作,拉长 scan 所需的时间。

需要更多的,可以参照


阅读(2150) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~