中国教育和科研计算机网
EDU首页 |  中国教育 |   高校科技 |   教育信息化 |   CERNET
教育信息化

资讯 | 专题 会议 观点 专栏 访谈 企业 产品 CIO 技术 校园信息化 下一代互联网 IPv6视频课堂

中国教育网 > 教育信息化
您现在的位置: EDU首页 > 教育信息化 > 网络安全 > 系统安全 > Unix
Unix类操作系统的TCP/IP堆栈加固
http://www.edu.cn   2010-08-04 作者:

字体选择:【大】 【中】 【小】

三、 TCP协议部分

  TCP使用三次握手机制来建立一条连接,握手的第一个报文为SYN包;第二个报文为 SYN/ACK包,表明它应答第一个SYN包同时继续握手过程;第三个报文仅仅是一个应答,表示为ACK包。若A为连接方,B为响应方,其间可能的威胁有:

  ◆攻击者监听B方发出的SYN/ACK报文。

  ◆攻击者向B方发送RST包,接着发送SYN包,假冒A方发起新的连接。

  ◆B方响应新连接,并发送连接响应报文SYN/ACK。

  ◆攻击者再假冒A方对B方发送ACK包。

  这样攻击者便达到了破坏连接的作用,若攻击者再趁机插入有害数据包,则后果更严重。

  针对ICMP协议的攻击包括:?

  ◆TCP SYN 扫描属于端口扫描:TCP SYN 扫描是 端口扫描的变体。端口扫描用来检查给定主机上的端口是否打开。?

  ◆SYN 扩散属于拒绝服务攻击:Smurf 攻击流行之前,SYN 扩散攻击是最具破坏性的拒绝服务攻击。

  1.在TCP重负载下增加系统弹性(这使系统更能抵抗SYN洪水攻击)

  有以下几个步骤:?

  ◆购买更多的物理内存。?

  ◆使用SYN Cookies (包括Linux2.4-2.6、BSD )技术 。当半连接队列满时,SYN cookies并不丢弃SYN请求,而是通过加密技术来标识半连接状态。限制同时打开的SYN 半连接数。?

  ◆增加最大半连接数:大量的SYN请求导致未连接队列被塞满,使正常的TCP连接无法顺利完成三次握手,通过增大未连接队列空间可以缓解这种压力。?

  ◆缩短SYN半连接的timeout时间

  通过增大backlog队列能防范SYN攻击;另外减少超时时间也使系统能处理更多的SYN请求。timeout超时时间,也即半连接存活时间,是系统所有重传次数等待的超时时间总和,这个值越大,半连接数占用backlog队列的时间就越长,系统能处理的SYN请求就越少。为缩短超时时间,可以通过缩短重传超时时间(一般是第一次重传超时时间)和减少重传次数来实现。

  AIX5

  #no -o clean_partial_conns=1

  FreeBSD 5-7

  #sysctl -w kern.ipc.somaxconn=1024

  HP-UX 10

  #ndd -set /dev/tcp tcp_syn_rcvd_max 1024

  #ndd -set /dev/tcp tcp_conn_request_max 200

  #ndd -set /dev/tcp tcp_time_wait_interval 60000

  Linux2.4-2.6

  #sysctl -w net.ipv4.tcp_max_syn_backlog=2048

  #sysctl -w net.ipv4.tcp_syncookies=1

  #sysctl –w net.ipv4.tcp_synack_retries="0"

  OpenBSD3-4 已经是缺省设置

  Solaris8-10

  #ndd -set /dev/tcp tcp_conn_req_max_q 1024

  #ndd -set /dev/tcp tcp_conn_req_max_q0 4096

  #ndd -set /dev/tcp tcp_time_wait_interval 60000

  说明:关于SYN攻击防范技术,归纳起来,主要有两大类,一类是通过防火墙、路由器等过滤网关防护,另一类是通过加固TCP/IP协议栈防范.但必须清楚的是,SYN攻击不能完全被阻止,我们所做的是尽可能的减轻SYN攻击的危害,除非将TCP协议重新设计。

  2.增加TCP发送和接受窗口为至少32 kbytes不过不要超过64kbytes

  AIX5

  #no -o tcp_sendspace=32768

  #no -o tcp_recvspace=32768

  FreeBSD 5-7

  #sysctl -w net.inet.tcp.sendspace=32768

  #sysctl -w net.inet.tcp.recvspace=32768

  HP-UX 10 已经是缺省设置

  Linux2.4-2.6 内核支持RFC 1323和RFC 2018可以动态调整

  OpenBSD3-4 内核支持RFC 1323和RFC 2018可以动态调整

  Solaris8-10

  #ndd -set /dev/tcp tcp_xmit_hwat 32768

  #ndd -set /dev/tcp tcp_recv_hwat 32768

四、ARP协议部分

  在OSI模型的第2层是数据链路层,该层提供了网络节点间的数据传输机制。该层重要的原因是它负责将数据分割成帧进行传输。在数据链路层上有许多值得我们探讨的不安全因素,但是其中最重要的是地址分辨协议(ARP)。

  地址解析协议ARP正是用来进行IP地址到MAC地址的转换的。同时为了避免不必要的ARP报文查询,每台主机的操作系统都维护着一个ARP高速缓存ARP Cache,记录着同一链路上其它主机的IP地址到MAC地址的映射关系。ARP高速缓存通常是动态的,该缓存可以手工添加静态条目,由系统在一定的时间间隔后进行刷新。ARP协议虽然是一个高效的数据链路层协议,但作为一个局域网协议,它是建立在各主机之间相互信任的基础上的,所以ARP协议存在以下缺陷:ARP高速缓存根据所接收到的ARP协议包随时进行动态更新;ARP协议没有连接的概念,任意主机即使在没有ARP请求的时候也可以做出应答;ARP协议没有认证机制,只要接收到的协议包是有效的,主机就无条件的根据协议包的内容刷新本机ARP缓存,并不检查该协议包的合法性。因此攻击者可以随时发送虚假ARP包更新被攻击主机上的ARP缓存,进行地址欺骗或拒绝服务攻击。 调整ARP清理的时间,通过向IP路由缓冲填充伪造的ARP条目可以让恶意用户产生资源耗竭和性能减低攻击。

  AIX5

  #no -o arpt_killc=20

  FreeBSD 5-7

  #sysctl -w net.link.ether.inet.max_age=1200

  Solaris8-10

  #ndd -set /dev/arp arp_cleanup_interval 60000

  Linux2.4-2.6

  #sysctl -w net.link.ether.inet.max_age=1200

   说明:ARP缓存清理时间间隔如果定得太大,对于一个大网来说,有可能不能分配到ip(某些分到ip地址的主机没开,也占用地址) ,定得太小,引起大量广播风暴。

  总结:主要向大家介绍强化Unix 类家族系统的TCP/IP堆栈的方法。其实非常简单,通过对命令行配置,就可以保护或者减缓Unix类服务器免遭网络级别的拒绝服务攻击,包括SYN洪水攻击、ICMP攻击和SNMP攻击。

页面功能 【打印】 【关闭】 【我有话说

MOOC风暴来袭

版权所有:中国教育和科研计算机网网络中心 CERNIC,CERNET,京ICP备15006448号-16,京网文[2017]10376-1180号

关于假冒中国教育网的声明 | 有任何问题与建议请联络:Webmaster@staff.cernet.com