曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3540|回复: 0
打印 上一主题 下一主题

使用IPTABLES限制IP上传下载速度

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2014-10-30 11:50:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
iptables 限制某 IP 的上传速度为 1000KB/秒(8Mbps,流入服务器带宽),即在此IP所在的服务器或VPS上wget的速度

  1. iptables -A FORWARD -m limit -d 208.8.14.53 --limit 700/s --limit-burst 100 -j ACCEPT
  2. iptables -A FORWARD -d 208.8.14.53 -j DROP
复制代码


取消 iptables 限速:
  1. iptables -D FORWARD -m limit -d 208.8.14.53 --limit 700/s --limit-burst 100 -j ACCEPT
  2. iptables -D FORWARD -d 208.8.14.53 -j DROP
复制代码




限制某IP的上传速度为2000KB/秒(16Mbps,流入服务器带宽),即在此IP所在的服务器或VPS上wget的速度
  1. iptables -A FORWARD -m limit -d 208.8.14.53 --limit 1400/s --limit-burst 100 -j ACCEPT
  2. iptables -A FORWARD -d 208.8.14.53 -j DROP
复制代码


取消限制:
  1. iptables -D FORWARD -m limit -d 208.8.14.53 --limit 1400/s --limit-burst 100 -j ACCEPT
  2. iptables -D FORWARD -d 208.8.14.53 -j DROP
复制代码


如果要限制某IP下载速度(即网友通过网页下载的带宽/速度)参考

  1. iptables -A FORWARD -s 208.8.14.36 -m limit --limit 700/s -j ACCEPT
  2. iptables -A FORWARD -s 208.8.14.36 -j DROP
复制代码


双向限制:

  1. iptables -A FORWARD -m limit -d 208.8.14.53 --limit 2400/s --limit-burst 100 -j ACCEPT
  2. iptables -A FORWARD -d 208.8.14.53 -j DROP
  3. iptables -A FORWARD -m limit -s 208.8.14.53 --limit 2400/s --limit-burst 100 -j ACCEPT
  4. iptables -A FORWARD -s 208.8.14.53 -j DROP
复制代码




Iptables 的 limit 匹配

限制匹配数据包的频率或速率,看清楚了,它是用来限制匹配的数据包的频率和速率的.这里“limit”这个词经常给别人“限制”的误解, 其实准确说,应该是“按一定速率去匹配”,至于“限制”还是“放行”是后面 -j 动作来实现的,limit 仅仅是个 match 模块,他的功能是匹配,匹配方式是按一定速率.

用iptables的limit模块,目标是ACCEPT.当你设置300/s时,它大约每3ms发出一个令牌,获得令牌的包可以发出去,没有获得令牌的包只能等待下一个令牌到来,这样不会造成一些包丢失,更不会造成所谓“断线”的.

以下2条是对icmp的burst限制
  1. iptables -A INPUT -p icmp -m limit --limit 1/sec --limit-burst 10 -j ACCEPT
  2. iptables -A INPUT -p icmp -j DROP
复制代码


第一条ipables的意思是限制ping包每一秒钟一个,10个后重新开始.

同时可以限制IP碎片,每秒钟只允许100个碎片,用来防止DoS攻击.
  1. iptables -A INPUT -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
复制代码



下面详细的讲述一下iptables的 limit 模块的功能:


限制 ping (echo-request) 传入的速度

限制前, 可正常每 0.2 秒 ping 一次

  1. ping your.linux.ip -i 0.2
复制代码


限制每秒只接受一个 icmp echo-request 封包
  1. iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
  2. iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
复制代码


--limit 1/s 表示每秒一次; 1/m 则为每分钟一次
--limit-burst 表示允许触发 limit 限制的最大次数 (预设 5)

再以每 0.2 秒 ping 一次, 得到的响应是每秒一次
  1. ping your.linux.ip -i 0.2
复制代码


下面规则亦可达到每秒只接受一个 echo-request 封包
  1. iptables -N pinglimit
  2. iptables -A pinglimit -m limit --limit 1/s --limit-burst 1 -j ACCEPT
  3. iptables -A pinglimit -j DROP
  4. iptables -A INPUT -p icmp --icmp-type echo-request -j pinglimit
复制代码


iptables限速原理解释:

iptables limit 参数
· 限制特定封包传入速度
· 限制特定端口口连入频率
· iptables Log 记录参数备忘
· 自定 Chain 使用备忘
· 防治 SYN-Flood 碎片攻击
限制 ping (echo-request) 传入的速度
限制前, 可正常每 0.2 秒 ping 一次
ping your.linux.ip -i 0.2
限制每秒只接受一个 icmp echo-request 封包

  1. iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 1/s –limit-burst 1 -j ACCEPT
  2. iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
复制代码

–limit 1/s 表示每秒一次; 1/m 则为每分钟一次
–limit-burst 表示允许触发 limit 限制的最大次数 (预设 5)
再以每 0.2 秒 ping 一次, 得到的响应是每秒一次
ping your.linux.ip -i 0.2
限制 ssh 连入频率
建立自订 Chain, 限制 tcp 联机每分钟一次, 超过者触发 Log 记录 (记录在 /var/log/messages)

  1. iptables -N ratelimit
  2. iptables -A ratelimit -p tcp -m state –state ESTABLISHED,RELATED -j ACCEPT  
  3. iptables -A ratelimit -p tcp –syn -m limit –limit 1/m –limit-burst 1 -j ACCEPT
  4. iptables -A ratelimit -p tcp -j LOG –log-level “NOTICE” –log-prefix “[RATELIMIT]”
  5. iptables -A ratelimit -p tcp -j DROP
复制代码


引用自订 Chain, 限制 ssh (tcp port 22) 连入频率
  1. iptables -A INPUT -p tcp –dport 22 -s 192.168.0.0/16 -j ACCEPT (特定 IP 来源不受限制)
  2. iptables -A INPUT -p tcp –dport 22 -j ratelimit
复制代码


sshd_config 设定备忘:
· LoginGraceTime 30 密码输入时限为 30 秒
· MaxAuthTries 2 最多只能输入 3 次密码
同理可证
iptables -N pinglimit
iptables -A pinglimit -m limit –limit 1/s –limit-burst 1 -j ACCEPT
iptables -A pinglimit -j DROP
iptables -A INPUT -p icmp –icmp-type echo-request -j pinglimit
亦可达到每秒只接受一个 echo-request 封包
补充: 清除自订 Chain

  1. iptables -L -n –line-number
  2. iptables -D INPUT n
  3. iptables -F ratelimit
  4. iptables -X ratelimit
复制代码

防治 SYN-Flood 碎片攻击

  1. iptables -N syn-flood
  2. iptables -A syn-flood -m limit –limit 100/s –limit-burst 150 -j RETURN
  3. iptables -A syn-flood -j DROP
  4. iptables -I INPUT -j syn-flood
复制代码

模拟攻击

  1. wget http://www.xfocus.net/tools/200102/naptha-1.1.tgz
  2. wget ftp://rpmfind.net/linux/freshrpms/redhat/7.0/libnet/libnet-1.0.1b-1.src.rpm
  3. tar -zxf naptha-1.1.tgz
  4. rpmbuild –recompile libnet-1.0.1b-1.src.rpm
  5. cp -r /var/tmp/libnet-buildroot/usr/* /usr/local/
  6. cd naptha-1.1
  7. make
  8. ./synsend your.linux.host.ip 80 local.host.eth0.ip 0.1
复制代码

若成功抵挡, 不久后会出现 Can’t send packet!: Operation not permitted 的讯息

本文转载自:ctohome
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-6 22:50 , Processed in 0.091119 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表