IP黑名单

来自SEnginx
跳转至: 导航, 搜索

目录

IP黑名单

概要

IP黑名单模块提供了动态IP黑名单的功能,此模块和其他的安全功能模块配合使用,可以实现当某个源IP地址在1秒内发生指定的攻击次数时,将此IP地址加入到IP黑名单中,并阻断此IP一段时间。
此模块在SEnginx 1.5.5以及以后的版本中提供。

命令

ip_blacklist

语法 ip_blacklist on/off
默认值 off
上下文 http

控制IP黑名单功能在全局的开启和关闭
示例:

ip_blacklist on;


ip_blacklist_size

语法 ip_blacklist_size size
默认值 1024
上下文 http

指定IP黑名单的大小,size是黑名单的条数,也就是要存储的IP数量。
示例:

ip_blacklist_size 10240;


ip_blacklist_timeout

语法 ip_blacklist_timeout timeout
默认值 60
上下文 http

指定IP黑名单条目的超时时间,单位为秒。在超时时间范围内的条目会被阻断。
示例:

ip_blacklist_timeout 120;


ip_blacklist_log

语法 ip_blacklist_log on/off
默认值 off
上下文 http/server/location

指定某个IP地址被加入到黑名单的时候,是否记录日志。注意,已经被加到黑名单中的IP地址引发的后续阻断不会记录日志。
示例:

ip_blacklist_log on;


ip_blacklist_show

语法 ip_blacklist_show
默认值
上下文 location

指定在某个location下开启查看IP黑名单的功能。
示例:

location /show_blacklist {
      ip_blacklist_show;
}


ip_blacklist_flush

语法 ip_blacklist_flush
默认值
上下文 location

指定在某个location下开启刷新IP黑名单的功能。
示例:

location /flush_blacklist {
    ip_blacklist_flush;
}

然后在浏览器或者使用其他的http客户端,如wget, curl等,访问/flush_blacklist路径,即可清空当前系统中的黑名单,例如:

curl http://1.1.1.1/flush_blacklist

此请求会返回状态码为444的应答,此应答没有任何意义,仅是关闭连接而已。

ip_blacklist_mode

语法 ip_blacklist_mode sys/local
默认值 local
上下文 http

全局指定黑名单的工作模式,分为2种:

  • 系统命令模式(sys):指当某个IP地址达到加入黑名单的条件时,条用一条外部命令执行动作,例如将此IP地址加入到系统的iptables中,而SEnginx本身不进行黑名单的记录。
  • 本地模式(local):当某个IP地址达到加入黑名单的条件时,此IP地址会被记录在SEnginx内部的黑名单列表上,后续的访问会被在SEnginx处阻断。

示例:

使用系统命令模式:
ip_blacklist_mode sys;

使用SEnginx本地模式:
ip_blacklist_mode local;

ip_blacklist_syscmd

语法 ip_blacklist_syscmd [system command]
默认值
上下文 http

指定当IP黑名单的工作模式为sys时SEnginx需要执行的外部系统命令,IP地址在命令中以%V表示
示例:

指定一个脚本来处理加入到黑名单的IP地址:
ip_blacklist_syscmd "sudo /path/to/a/scritp %V";

使用iptables来加入一个IP地址并阻断:
ip_blacklist_syscmd "sudo /sbin/iptables -A INPUT -s %V -j DROP";



例子

和机器人缓解模块配合使用的例子

黑名单的次数在机器人模块中设置,下面的这个例子,是指同一IP地址的请求每秒超过10个时,并且这些请求都没有通过机器人模块的挑战,则加入黑名单中。

http {
    ... ...
    ip_blacklist on;
    ip_blacklist_size 10240;
    ip_blacklist_timeout 60;
    ip_blacklist_log on;
 
    server {
        listen       80;
        server_name  localhost;
         
        location /blacklist_flush {
            ip_blacklist_flush;
        }
 
        location /blacklist_show {
            ip_blacklist_show;
        }
         
        location / {
            ... ...
            robot_mitigation on;
            robot_mitigation_mode js;
            robot_mitigation_blacklist 10;
            ... ...
        }
    }
}
个人工具
名字空间

变换
操作
导航
其他语言
工具箱