Chinaunix

标题: 嵌入式linux,遭到SYN攻击时出现下面现象 [打印本页]

作者: qingfeng79    时间: 2005-01-27 09:24
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
我的嵌入式linux系统具有route功能,在用iptables设置NAT后可以实现IP转发,但在遭到SYN攻击后系统坚持一两分钟就崩溃了。请各位高手提供一点参考意见。能让我大概知道什么地方的原因,先谢谢了!下面是出错现象:

# Unable to handle kernel paging request at virtual address 00000004, epc == 801
1feb8, ra == 801dae84
Oops in fault.c:do_page_fault, line 204:
$0 : 00000000 1000ff00 0000003f 00000000 80354640 00000000 1000ff00 00000000
$8 : 00040000 00040000 005e0000 8030c81e 8030c81e 00000001 810ade48 00000000
$16: 80211654 8046f7e8 00000020 00000610 0000000c 00000000 802119c0 b8001c00
$24: 00000000 2abf51f0                   810ac000 810adbb8 00007dd1 801dae84
Hi : 0000000c
Lo : 00000000
epc  : 8011feb8    Not tainted
Status: 1000ff00
Cause : 1000000c
Process ksoftirqd_CPU0 (pid: 3, stackpage=810ac000)
Stack: 810adc18 805d36c0 80483c20 8018af9c 80211654 803d13b0 0000003e 80211780
       801dae84 00000006 80211888 00000401 8018ac28 8018a988 00420320 00000000
       b8001c00 00670040 80211654 802119c0 0000000c 0000000d 802119c0 b8001c00
       801db160 01000000 00000030 00000000 3f57fdd6 c0a8792e 80211654 8046f7e8
       00000020 00000610 800b93ec 00000000 803f5090 00000000 80202c08 80202c08
       801838c4 ...
Call Trace: [<8018af9c>;] [<801dae84>;] [<8018ac28>;] [<8018a988>;] [<801db160>;] [<8
00b93ec>;]
[<801838c4>;] [<8018b1bc>;] [<801dae84>;] [<80021f54>;] [<80180f34>;] [<80178594>;]
[<801dae84>;] [<8011feb8>;] [<801806c8>;] [<80143778>;] [<801dae84>;] [<801daf8c>;]
[<8013f2b0>;] [<8013f214>;] [<801db160>;] [<8013f214>;] [<800b93ec>;] [<8013f120>;]
[<80126b9c>;] [<8013c910>;] [<80031d8c>;] [<8013d1e0>;] [<8002d7c4>;] [<80126b9c>;]
[<8002d5b4>;] [<8002cf6c>;] [<8002da84>;] [<8002da9c>;] [<801a8d34>;] [<8002d9cc>;]
[<80018e04>;] [<80018df4>;]

Code: 8c830000  2442ffff  ae220008 <ac710004>; ae230000  ac800000  ac800004  ac80
0008  00802821
Unable to handle kernel paging request at virtual address 00000004, epc == 8011f
eb8, ra == 801dae84
Oops in fault.c:do_page_fault, line 204:
$0 : 00000000 1000ff00 0000003d 00000000 80354640 00000000 1000ff00 00000001
$8 : 00020000 00020000 001e0000 802066f0 8045e569 fffffffe 810ad8bd ffffffff
$16: 80211420 8046f7e8 00000020 00000610 00000018 00000000 80211888 b8001800
$24: 00000010 00000005                   810ac000 810ad5e0 00007dd1 801dae84
Hi : 00000018
Lo : 00000000
epc  : 8011feb8    Not tainted
Status: 1000ff00
Cause : 1000000c
Process ksoftirqd_CPU0 (pid: 3, stackpage=810ac000)
Stack: 280be903 352d7808 c1d790c4 ac3fd688 80211420 810fcda0 0000005c 8021157c
       801dae84 c023f76f 6d72631c 471fd932 db3cb250 94a74b47 00600720 f76755de
       b8001800 00670040 80211420 80211888 0000000c 00000000 802119c0 b8001c00
       801db160 5799a6f2 6f47134a 3e22c347 611fd2cf 9722bb48 80211654 8046f7e8
       00000020 00000610 800b92b4 9a21915d f48feef9 83ed3df3 814d1a0a b76961bb
       9b8e3b32 ...
Call Trace: [<801dae84>;] [<c023f76f>;] [<801db160>;] [<800b92b4>;] [<801dae84>;] [<8
0021f54>;]
[<801dae84>;] [<8011feb8>;] [<801dae84>;] [<801da5b4>;] [<801db160>;] [<800b883c>;]
[<801da5b4>;] [<800b93ec>;] [<8018b770>;] [<801da1a8>;] [<801da06c>;] [<80026f40>;]
[<801da1a8>;] [<80026f40>;] [<80026fe0>;] [<801a7750>;] [<800b917c>;] [<80026fe0>;]
[<801a7750>;] [<8001bba0>;] [<8001bbb4>;] [<801a57d4>;] [<800210b8>;] [<801a76e8>;]
[<8011feb8>;] [<801dae84>;] [<80182fdc>;] [<801261d0>;] [<8011ff34>;] [<800b917c>;]
[<801261d0>;] [<8011ff34>;] [<8017a150>;] [<8017a140>;] [<801da5b4>;] ...

Code: 8c830000  2442ffff  ae220008 <ac710004>; ae230000  ac800000  ac800004  ac80
0008  00802821
..........................................
作者: 唐伯猪    时间: 2005-01-27 09:37
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
不明白,帮你顶,嵌入式系统和INTERNET相连了吗,独立的怎么能受到攻击呢。
作者: 双眼皮的猪    时间: 2005-01-27 09:38
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
我不是做开发的,我看不出来问题...发到 Linux高级应用版吧:)
我觉得这句有问题:
Oops in fault.c:do_page_fault, line 204:


帮顶起来...

btw:不知道你们的kernel在编译时是否加入了syn_cookie支持,还有一些连接优化参数你们是否做过了...如果有syn_cookie的话可以多顶一会的...
作者: qingfeng79    时间: 2005-01-27 10:53
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
谢谢!我的嵌入式设备与我另一台PC相连,本来以为已经快要完善的嵌入式设备了,:)。因为PC偶尔有了SYN攻击发送包。它不停的发送TCP/SYN包到我的宝贝上面 :(。只能挺着十几秒钟就挂了。。于是我设置了坚实的防火墙也只能坚持一台带SYN攻击的PC,如果有两台有SYN攻击的PC还是挂 :( 郁闷,我想加防火墙只能是治标的办法,真正的问题还是我的内核方面有问题,我的内核是2.4.17,具体我的内核设置哪里有问题,我也不知道。 :( 请高手能帮帮我。谢谢!!
作者: qingfeng79    时间: 2005-01-27 11:11
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
1。 Oops in fault.c:do_page_fault, line 204:
只是内核出错警告信息,真正出错不在这儿,所以才不知道在哪儿。
2。syn_cookie的支持。
我已经加了这个支持。具体起不起作用还不知道。
3。还要做什么优化?
谢谢!大侠的帮助。
作者: 双眼皮的猪    时间: 2005-01-27 11:14
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
说明白了...
没有什么系统能真正抵挡的住syn-flood的...所以挡不住没关系,只要不要出现你那种完全崩溃的情况,我们自己的产品低端的也只能挡20来分钟,也是嵌入式Linux,不过高端的我直连测试过...竟然没反应,原来这些包都是底层CPU微引擎直接处理了...所以速度很快...没有上到三层...没有问题...
因为不是做开发的,抱歉帮不了你:)

你调节一下tcp连接的参数吧...
/proc/sys/net/ipv4/这个目录下
以tcp开头的这些文件...是一些参数...
作者: qingfeng79    时间: 2005-01-27 11:36
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
谢谢你的帮助。
我通过抓包工具大概了解崩溃的现象。
1。如果以攻击机器我客户端A。以我的嵌入式为服务器B。那么A不停的向B发SYN连接包。
2。因为B上设置了NAT转发功能。它在接到请求时就进行处理,发送SYN-ACK。等待回应。
3。因为A发送的是大批量的,所以B承受到一定的时候,就崩溃了。
4。所以郁闷的地方就是,希望在不能处理的时候可以停止工作,但不希望是崩溃的结果。
5。我现在不知道究竟哪里溢出,出现崩溃。
作者: 天涯明月刀    时间: 2005-01-27 11:57
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
见过有限定单个IP未建立连接数目的
不知道有没有用
作者: 采风    时间: 2005-01-27 12:00
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
#echo 1>;/proc/sys/net/ipv4/tcp_max_syn_backlog
试一下
作者: lovecat    时间: 2005-01-27 12:04
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
http://www-900.ibm.com/developerworks/cn/linux/l-syncookie/index.shtml
作者: 双眼皮的猪    时间: 2005-01-27 13:00
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
增大backlog只是办法中的一种...楼主既然是做了nat,对tcpip应该还比较了解...
你调节一下tcp连接的参数吧...
/proc/sys/net/ipv4/这个目录下
以tcp开头的这些文件...

或者写个程序判断这种unreplied的连接过多的ip,封掉...
/proc/net/ip_conntrack中查看...如用脚本实现的话,可以这样


  1. #!/bin/sh

  2. cat /proc/net/ip_conntrack | grep "UNREP" | awk -F= {' print $2 '} | awk {' print $1 '} | sort | uniq -c | sort
复制代码

执行一下就知道效果了. ..
对于连接数字过多的,可以封掉。
问题是用shell来执行比较消耗系统资源...建议用c吧...
作者: qingfeng79    时间: 2005-01-27 13:29
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
谢谢各位的建议,特别是“双眼皮的猪”。
以我现在的理解,linux 2.4.17内核对SYN攻击有一定的防御。它的syncookies这项设置就证明了这一点。问题是我没有读过linux内核源码,它是如何发现攻击,又如何进行防御,是不了解。
但不管怎样,对与我的系统也不能出现崩溃的现象。这才是我最最郁闷的事情
作者: 双眼皮的猪    时间: 2005-01-27 14:16
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
恩,多交流...
:)
作者: hongfengyue    时间: 2005-01-27 15:37
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
也可以使用iptables来限制每个客户并发的tcp连接数。
iptables -p tcp --syn --dport 23 -m iplimit --iplimit-above 2 -j REJECT
上面这个就是: 限制每客户到主机或网络的并发连接数
但是你的Iptables需要打补丁,发行版中没有合格功能。
作者: qingfeng79    时间: 2005-01-27 19:39
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
但是你的Iptables需要打补丁,发行版中没有合格功能。

用IPTABLES限制tcp访问数量我也知道的,以前也有过这种想法,但不知道什么是一个度,也就是说不知道什么情况才属于攻击,并发多少个TCP/SYN数据包才算是攻击。还有Iptables怎么打补丁?我的版本是1.2.6a。怎样才能满足它的合格功能?
作者: 双眼皮的猪    时间: 2005-01-27 20:24
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
不是iptables的补丁...是netfilter需要补丁...
另外这对于网管维护是可以的...但是对于你做产品是不行的...
作者: qingfeng79    时间: 2005-01-28 08:10
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
我看了资料上对netfilter/iptables的解释。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。
但不明白的是netfilter为什么要补丁?也就是内核那一块需要补丁了?
作者: platinum    时间: 2005-01-28 08:14
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
好像是要给kernel打补丁,然后重新编译新内核的
作者: qingfeng79    时间: 2005-01-28 08:38
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
如果不打补丁,然到netfilter就不支持那种过滤吗?
还有我的内核好象不能打补丁,因为内核被我修改了好多部分。我想打补丁肯定都不能编译了。
作者: 采风    时间: 2005-01-28 10:02
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
原帖由 "qingfeng79" 发表:
如果不打补丁,然到netfilter就不支持那种过滤吗?
还有我的内核好象不能打补丁,因为内核被我修改了好多部分。我想打补丁肯定都不能编译了。


不会吧?你的内核不是自己编译的吗?那怎么修改?
作者: qingfeng79    时间: 2005-01-28 10:31
标题: 嵌入式linux,遭到SYN攻击时出现下面现象
我根据自己的需要将内核修改了一部分。我是说修改了源码




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2