收藏本站 
广告服务 
网站地图 
>> 本频道近100000余篇各类电脑技术、网络技术、软件技术、网页及平面设计等方面的电脑教程,我们的原则:不是精华拒不收录!
先飞电脑技术网技术文章软件教学Unix/Linux
网络编程 | 网站建设 | 网络技术 | 设计教程 | 软件教学 | 程序开发 | 数据库开发 | 教育认证 | 硬件维护 | 媒体动画 | 机械电子 |

Linux中网络参数的意义及其应用

[ 作者:佚名    转贴自:网络转载    阅读次数:106    更新时间:2007-10-16 15:12:00   录入:刘光勇 ]         
    在Linux中,我们可以根据不同的需求来调整/proc/sys/net/ipv4/目录下的内核网络参数,通过合理的配置这里内核网络参数,从而达到提高网络的安全性和系统的稳定性的目的。因为这方面的文献比较少,所以我们不可能进行全面的介绍。现在已经有linux组织正在从事这方面的文档的写作,相信在不久的将来,我们就会看到比较完整的文档。下面我们就来看一看一些比较常用的内核网络参数。

  注意:

  1.参数值带有速度(rate)的参数不能在loopback接口上工作。

  2.因为内核是以HZ为单位的内部时钟来定义速度的,通常速度为100HZ,所以设定一个参数值为100就表示允许1个包/秒,假如为20则允许5个包/秒。

  3.所有内核网络参数配置文件位于/proc/sys/net/ipv4/目录下。

  一、icmp相关内核配置参数

  概述:通常我们使用icmp包来探测目的主机上的其它协议(如tcp和udp)是否可用。比如包含“destination unreachable”信息的icmp包就是最常见的icmp包。

  1.icmp_destunreach_rate:设置内容为“Destination Unreachable”icmp包的响应速率。设置值应为整数。

  应用实例:

  假设有A、B两部主机,首先我们在主机A上执行以下ipchains语句:

ipchains -A input -p icmp -j REJECT
  这里的REJECT和DENY不同,DENY会丢掉符合条件的包如同没有接收到该包一样,而REJECT会在丢掉该包的同时给请求主机发回一个“Destination Unreachable”的icmp。

  然后在主机B上ping主机A,这时候我们会发现“Destination Unreachable”icmp包的响应速度是很及时的。接着我们在主机A上执行:

echo "1000" > /proc/sys/net/ipv4/icmp_destunreach_rate
  也即每10秒钟响应一个“Destination Unreachable”的icmp包。
  这时候再从主机B上ping主机A就会发现“Destination Unreachable”icmp包的响应速度已经明显变慢,我很好奇的测试了一下,发现刚好是每10秒响应一次。

  2.icmp_echo_ignore_broadcasts:设置是否响应icmp echo请求广播,设置值应为布尔值,0表示响应icmp echo请求广播,1表示忽略。

  注意:windows系统是不响应icmp echo请求广播的。

  应用实例:

  在我的RedHat6.x和RedHat7上该值缺省为0,这样当有个用ping我的服务器所在的网段的网络地址时,所有的linux服务器就会响应,从而也能让让该用户得到我的服务器的ip地址,可以执行

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  来关闭该功能。从而防止icmp风暴,防止网络阻塞。

  3.icmp_echoreply_rate:设置系统响应icmp echo请求的icmp包的响应速度,设置值为整数。

  应用实例:

  假设有A、B两部主机,首先我们在主机B上ping主机A,可以看到响应很正常,然后在主机A上执行echo "1000" > /proc/sys/net/ipv4/icmp_echoreply_rate。 也即每10秒钟响应一个icmp echo请求包。然后再ping主机A就可以看到响应速度已经变成10秒一次。最好合理的调整该参数的值来防止icmp风暴。

  4.icmp_echo_ignore_all:设置系统是否忽略所有的icmp echo请求,如果设置了一个非0值,系统将忽略所有的icmp echo请求。其实这是icmp_echoreply_rate的一种极端情况。参数值为布尔值,1表示忽略,0表示响应。

  5. icmp_paramprob_rate:当系统接收到数据报的损坏的ip或tcp头时,就会向源发出一个包含有该错误信息的icmp包。这个参数就是用来设置向源发送这种icmp包的速度。当然,在通常情况下ip或tcp头出错是很少见的。参数值为整数。

  6.icmp_timeexceed_rate:数据报在网络上传输时,其生存时间(time to live)字段会不断减少,当生存时间为0时,正在处理该数据报的路由器就会丢弃该数据报,同时给源主机发送一个“time to live exceeded”的icmp包。该参数就是用来设置这种icmp包的发送的速度。当然,这通常用于充当路由器的linux主机。

在Linux中,我们可以根据不同的需求来调整/proc/sys/net/ipv4/目录下的内核网络参数,通过合理的配置这里内核网络参数,从而达到提高网络的安全性和系统的稳定性的目的。因为这方面的文献比较少,所以我们不可能进行全面的介绍。现在已经有linux组织正在从事这方面的文档的写作,相信在不久的将来,我们就会看到比较完整的文档。下面我们就来看一看一些比较常用的内核网络参数。

  注意:

  1.参数值带有速度(rate)的参数不能在loopback接口上工作。

  2.因为内核是以HZ为单位的内部时钟来定义速度的,通常速度为100HZ,所以设定一个参数值为100就表示允许1个包/秒,假如为20则允许5个包/秒。

  3.所有内核网络参数配置文件位于/proc/sys/net/ipv4/目录下。

  一、icmp相关内核配置参数

  概述:通常我们使用icmp包来探测目的主机上的其它协议(如tcp和udp)是否可用。比如包含“destination unreachable”信息的icmp包就是最常见的icmp包。

  1.icmp_destunreach_rate:设置内容为“Destination Unreachable”icmp包的响应速率。设置值应为整数。

  应用实例:

  假设有A、B两部主机,首先我们在主机A上执行以下ipchains语句:

ipchains -A input -p icmp -j REJECT
  这里的REJECT和DENY不同,DENY会丢掉符合条件的包如同没有接收到该包一样,而REJECT会在丢掉该包的同时给请求主机发回一个“Destination Unreachable”的icmp。

  然后在主机B上ping主机A,这时候我们会发现“Destination Unreachable”icmp包的响应速度是很及时的。接着我们在主机A上执行:

echo "1000" > /proc/sys/net/ipv4/icmp_destunreach_rate
  也即每10秒钟响应一个“Destination Unreachable”的icmp包。
  这时候再从主机B上ping主机A就会发现“Destination Unreachable”icmp包的响应速度已经明显变慢,我很好奇的测试了一下,发现刚好是每10秒响应一次。

  2.icmp_echo_ignore_broadcasts:设置是否响应icmp echo请求广播,设置值应为布尔值,0表示响应icmp echo请求广播,1表示忽略。

  注意:windows系统是不响应icmp echo请求广播的。

  应用实例:

  在我的RedHat6.x和RedHat7上该值缺省为0,这样当有个用ping我的服务器所在的网段的网络地址时,所有的linux服务器就会响应,从而也能让让该用户得到我的服务器的ip地址,可以执行

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  来关闭该功能。从而防止icmp风暴,防止网络阻塞。

  3.icmp_echoreply_rate:设置系统响应icmp echo请求的icmp包的响应速度,设置值为整数。

  应用实例:

  假设有A、B两部主机,首先我们在主机B上ping主机A,可以看到响应很正常,然后在主机A上执行echo "1000" > /proc/sys/net/ipv4/icmp_echoreply_rate。 也即每10秒钟响应一个icmp echo请求包。然后再ping主机A就可以看到响应速度已经变成10秒一次。最好合理的调整该参数的值来防止icmp风暴。

  4.icmp_echo_ignore_all:设置系统是否忽略所有的icmp echo请求,如果设置了一个非0值,系统将忽略所有的icmp echo请求。其实这是icmp_echoreply_rate的一种极端情况。参数值为布尔值,1表示忽略,0表示响应。

  5. icmp_paramprob_rate:当系统接收到数据报的损坏的ip或tcp头时,就会向源发出一个包含有该错误信息的icmp包。这个参数就是用来设置向源发送这种icmp包的速度。当然,在通常情况下ip或tcp头出错是很少见的。参数值为整数。

  6.icmp_timeexceed_rate:数据报在网络上传输时,其生存时间(time to live)字段会不断减少,当生存时间为0时,正在处理该数据报的路由器就会丢弃该数据报,同时给源主机发送一个“time to live exceeded”的icmp包。该参数就是用来设置这种icmp包的发送的速度。当然,这通常用于充当路由器的linux主机。

  四、有关防止ip欺骗攻击的内核网络参数

  假设有如下的情景:

请添加描述



  在缺省状态下,路由器根据包的目的地址进行转发,所以路由器缺省是对来自任何地方的包进行转发的。如上图所示,假如路由器的2.2.2.2接口(也即广域网接口)接收到一个包,该包的源地址为1.1.1.100(也即为Intranet地址),虽然这是不可能或者说是不合理的,但是由于路由器的特性,路由器还是会将这个不合法的包转发到Intranet。从而让黑客有了可乘之机,为其进行ip欺骗攻击打开了方便之门。

  幸好,我们可以通过Linux的内核系统参数“反向路径过滤”来防止这种情况,该参数位于/proc/sys/net/ipv4/conf/下的各个子目录中的rp_filter文件。参数值为整数,可能的值有:

  2 - 进行全面的反向路径过滤,推荐在边缘路由器上使用。但是要注意,在复杂的网络环境中,如果使用了静态路由或rip、ospf路由协议时,不推荐使用该值。

  1 - 是该参数的缺省值,它只对直接连接的网络进行反向路径过滤。

  0 - 不进行反向路径过滤。

  应用实例:

  建立如下的脚本,文件名为rp.sh

#/bin/bash for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 2 > $i done
  然后更改文件权限chmod 755 rp.sh

  最后执行 ./rp.sh

  五、针对每一网络接口的内核网络参数

  通过针对每一网络接口的内核网络参数,你可以为诸如eth0、eth1等具体的网络接口指
定响应的内核网络参数。

  注意:/proc/sys/net/ipv4/conf/all/下的参数将应用于所有的网络接口。

  1.accept_redirects:该参数位于/proc/sys/net/ipv4/conf/DEV/accept_redirects(DEV表示具体的网络接口),如果你的主机所在的网段中有两个路由器,你将其中一个设置成了缺省网关,但是该网关在收到你的ip包时发现该ip包必须经过另外一个路由器,这时这个路由器就会给你发一个所谓的“重定向”icmp包,告诉将ip包转发到另外一个路由器。参数值为布尔值,1表示接收这类重定向icmp 信息,0表示忽略。在充当路由器的linux主机上缺省值为0,在一般的linux主机上缺省值为1。建议将其改为0,或者使用“安全重定向”(见下文)以消除安全性隐患。

  2.log_martians:将包含非法地址信息的ip包记录到内核日志。参数值为布尔值。

  应用实例:

  上面我们讲过rp_filter反向路径过滤参数,同时我们可以执行下面的语句

echo “1” > /proc/sys/net/ipv4/conf/all/log_martians
  然后就可以将进行ip假冒的ip包记录到/var/log/messages。

  3. forwarding:启用特定网络接口的ip转发功能。参数值为布尔值,1表示进行记录。

  应用实例:

echo "1" > /proc/sys/net/ipv4/conf/eth0/forwarding
  4.accept_source_route:是否接受含有源路由信息的ip包。参数值为布尔值,1表示接受,0表示不接受。在充当网关的linux主机上缺省值为1,在一般的linux主机上缺省值为0。从安全性角度出发,建议你关闭该功能。

  5.secure_redirects:前面我们已经提到过“安全重定向”的概念,其实所谓的“安全重定向”就是只接受来自网关的“重定向”icmp包。该参数就是用来设置“安全重定向”功能的。参数值为布尔值,1表示启用,0表示禁止,缺省值为启用。

  6.proxy_arp:设置是否对网络上的arp包进行中继。参数值为布尔值,1表示中继,0表示忽略,缺省值为0。该参数通常只对充当路由器的linux主机有用。

文章首页【加入到收藏夹】告诉好友】【打印此文】【关闭窗口
  版权声明:本站提供的“Linux中网络参数的意义及其应用”版权归文章所有者,转载请注明出处!
 ·上一篇文章:在Linux上面如何设置网卡的绑定      ·下一篇文章:没有了
相关文章
·Linux中网络参数的意义及其应用[106]
·在Linux上面如何设置网卡的绑定[23]
·Linux系统下VPN服务器配置方法[55]
·Linux下SSH实用技巧及常用命令[32]
·Linux操作系统中实现DDOS攻击的方法[82]
网站主页 | 收藏本页 | 联系我们 | 广告服务 | 站点地图 | 会员注册 | 招聘信息 | 内容指正

联系QQ:先飞电脑技术网站事务联系QQ,点击可以直接留言. 32933427 电话:13710542091 [世界排名] 鄂ICP备05005890号 先飞电脑教程网