教你用免费的hihttps开源WEB应用防火墙阻止暴力破解密码
教你用免费的hihttps开源WEB应用防火墙阻止暴力破解密码
很多企业都有自己的网站,需要用户登录后才能访问,但有大量的黑客攻击软件可以暴力破解网站密码,即使破解不了也非常恶心。有没有免费的解决办法呢?天本文就是以centos 7服务器为例,教大家怎样用免费的hihttps开源WEB应用防火墙,来阻止黑客暴力破解网站密码。
一、下载源码编译
hihttps是一款完整源码的高性能SSL WEB应用防火墙( SSL WAF),采用epoll模式支持高并发,并且兼容ModSecurity正则规则。访问官网http://www.hihttps.com或者github上搜索hihttps,下载最新源码。
centos首先需要安装OpenSSL和libpcre两个开发库
yum install openssl openssl-devel
yum install -y pcre pcre-devel
然后解压源码到任意目录,直接make即可在当前目录生成可执行文件hihttps
二、配置
打开config.cfg文件,通常是hihttps前端运行443(https)端口,后端反向代理80端口。所以,如果你的WEB服务器已经占用了443端口,请停用或者修改为其他端口。如下设置即可:
# 前端SSL绑定的端口,默认443,注意不要冲突了
frontend = {
host = "*"
port = "443"
}
backend = "[127.0.0.1]:80" # 后端默认反向连接80端口
#证书文件,建议设置绝对路径
pem-file = "server.pem"
三、规则加载
规则放在和hihttps同一级的rules目录即可,注意后缀是.conf或者.rule, 默认已经开启了DDOS & CC以及暴力破解密码防御规则,打开REQUEST-20-APPLICATION-CC-DDOS.conf这个文件,找到这条规则:
SecRule DDOS "@rx login" \
"id:20,\
phase:2,\
block,\
capture,\
t:none,t:urlDecodeUni,t:lowercase,\
msg:'LOGIN Brute Force Password test',\
logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',\
tag:'application-multi',\
tag:'language-php',\
tag:'platform-multi',\
tag:'attack-injection-php',\
tag:'OWASP_CRS/WEB_ATTACK/PHP_INJECTION',\
tag:'OWASP_TOP_10/A1',\
ctl:auditLogParts=+E,\
ver:'OWASP_CRS/3.1.0',\
severity:'CRITICAL',\
setvar:'ddos_burst_time_slice=10,ddos_counter_threshold=3,ddos_block_timeout=60',\
setvar:'tx.php_injection_score=+%{tx.critical_anomaly_score}',\
setvar:'tx.anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
setvar:'tx.%{rule.id}-OWASP_CRS/WEB_ATTACK/PHP_INJECTION-%{MATCHED_VAR_NAME}=%{tx.0}'"
上面规则基本含义是:任何url中正则匹配到了login这个关键字,同一IP在10秒内超过3次访问,认为是在暴力破解密码,直接封锁其IP地址60秒。因为正常用户在登录的时候,即使错误输入了密码,也不会在10秒内超过3次请求,如果要修改频率,直接改规则里面的时间即可:
setvar:'ddos_burst_time_slice=10,ddos_counter_threshold=3,ddos_block_timeout=60',
hihttps最厉害的是兼容owasp-modsecurity-core-rule攻击规则,更多的规则说明,请自行百度搜索相关教程。
四、运行
./hihttps直接运行即可,默认读取当前目录下的confg.cfg文件, 或者./hihttps --config /dir/config.cfg
如果成功打印加载了rules目录下的规则,代表运行成功。
五、 测试
浏览器连续刷下访问https://server_ip/login.html?testsql=delete * from test
如果hihttps产生了报警记录,则防御成功,再也没有人能暴力破解你网站密码了。
hihttps还有其他更强大的功能,在后续的文章里面再介绍。总之,服务器web安全相当重要,如果不是开源的产品,千万不能随便安装。