全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 2752|回复: 8
打印 上一主题 下一主题

如果某个IP一分钟内连接80端口次数超过100次,就禁止这个IP

[复制链接]
跳转到指定楼层
1#
发表于 2010-3-15 15:18:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎样可以实现?
2#
发表于 2010-3-15 15:24:36 | 只看该作者
线程?
3#
 楼主| 发表于 2010-3-17 14:56:16 | 只看该作者
顶顶
4#
发表于 2010-3-17 15:14:39 | 只看该作者
听说要在iptable里写规则
5#
发表于 2010-3-17 15:21:16 | 只看该作者
nginx 里可以实现限制单个IP的连接数。

或者用脚本分析日志,把单位时间内过多连接的IP送入防火墙屏蔽名单
6#
发表于 2010-3-17 16:01:09 | 只看该作者
一般需要指望第三方的模块,apache和nginx都有类似的,也许能满足你的要求
7#
发表于 2010-3-17 16:02:22 | 只看该作者
穿针引线一下:

ngx_http_limit_zone_module
本模块可以针对条件,进行会话的并发连接数控制。(例如:限制每个IP的并发连接数。)
__配置示例__
http {
: limit_zone   one  $binary_remote_addr  10m;

: ...

: server {

: ...

: location /download/ {
: limit_conn   one  1;
: }
指令

[#limit_zone limit_zone]
[#limit_conn limit_conn]
limit_zone

语法:limit_zone zone_name $variable the_size
默认值:no
作用域:http

本指令定义了一个数据区,里面记录会话状态信息。
$variable 定义判断会话的变量;the_size 定义记录区的总容量。
例子:
limit_zone   one  $binary_remote_addr  10m;
定义一个叫“one”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话)。

您可以注意到了,在这里使用的是 $binary_remote_addr 而不是 $remote_addr。
$remote_addr 的长度为 7 至 15 bytes,会话信息的长度为 32 或 64 bytes。而 $binary_remote_addr 的长度为 4 bytes,会话信息的长度为 32 bytes。

当区的大小为 1M 的时候,大约可以记录 32000 个会话信息(一个会话占用 32 bytes)。

limit_conn

语法:limit_conn zone_name the_size

默认值:no

作用域:http, server, location
指定一个会话最大的并发连接数。当超过指定的最发并发连接数时,服务器将返回 "Service unavailable" (503)。
例子:
limit_zone   one  $binary_remote_addr  10m;

: server {
: location /download/ {
: limit_conn   one  1;
: }
定义一个叫“one”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话)。限制 /download/ 目录下,一个会话只能进行一个连接。简单点,就是限制 /download/ 目录下,一个IP只能发起一个连接,多过一个,一律503。
8#
 楼主| 发表于 2010-3-17 16:58:47 | 只看该作者
回复5楼和7楼:
limit_conn是限制并发连接数,不能实现"一分钟内连接次数超过100",也就是说不能限制单位时间内的连接数

用limit_conn的话,如果限制为1,当一个页面有多个图片时,图片就显示不了了
9#
发表于 2010-3-17 17:50:59 | 只看该作者

DOS- Deflate:帮助您有效减轻 DOS 攻击伤害

看这里.两篇一起看.

http://icodex.org/2010/03/powerf ... olicy-firewall-apf/
http://icodex.org/2010/03/help-y ... s-with-dos-deflate/

切莫照搬.自己修改.
------------------------------ DOS- Deflate ---------------------------------
yum -y install vixie-cron crontabs
chkconfig crond on
service crond start

cd /usr/local/src
wget http://www.rfxn.com/downloads/apf-current.tar.gz
tar -zxf apf-current.tar.gz
cd apf-9.7-1/
sh ./install.sh

cd /usr/local/src
wget http://www.inetbase.com/scripts/ddos/install.sh
sh ./install.sh
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-10-30 20:40 , Processed in 0.063706 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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