近日我的的几个小站老是被攻击,因而准备寻找一款WAF来抵挡一下。node
首先尝试了modsecurity 和 naxsi ,功能是有了,但由于须要在每一台服务器上安装agent,没有管理界面,策略也不能统一维护,感受后面维护起来不怎么方便。web
继续在网上闲逛中,在无心中看到了Janusec Application Gateway (Janusec应用网关),其无agent的网关式架构设计令我眼前一亮。sql
根据其介绍,只须要安装一次,就能够做为基础设施供后续复用扩展,业务的服务器上不须要安装agent,且可以为证书私钥提供加密保护。数据库
原理式这样的:json
Janusec工做在反向代理模式,收到请求后,会先检查合法性,若是是攻击行为(Web攻击如SQL注入、XSS等,或CC攻击),就会拦截下来;若是是正常的访问请求,就会放行。我决定安装体验一番。浏览器
首先,找到Janusec网关的快速入门介绍:https://www.janusec.com/cn/quick-start/ 安全
而后根据介绍的步骤进行安装:服务器
$cd ~
$wgethttps://www.janusec.com/download/janusec-latest.tar.gz
$tar zxf ./janusec-latest.tar.gz架构
请切换到root用户并运行 install.sh , janusec应用网关将安装在目录: /usr/local/janusec/
app
$su
#cd janusec-0.9.3
#./install.sh
选择 1. Master Node
, 而后安装程序会:
/usr/local/janusec/
PostgreSQL没有包含在发布包中,须要自行准备PostgreSQL数据库、用户名 、口令,可参考运维管理中的PostgreSQL安装。
如今咱们假设您已经安装好了PostgreSQL,且数据库已建立,用户名和口令已准备好。
而后编辑 /usr/local/janusec/config.json
:
{
“node_role”: “master”,
“master_node”: {
“admin_http_listen”: “:9080”,
“admin_https_listen”: “:9443”,
“database”: {
“host”: “127.0.0.1”,
“port”: “5432”,
“user”: “your_postgresql_user
”,
“password”: “your_postgresql_password
”,
“dbname”: “janusec
”
}
},
“slave_node”: {
“node_key”: “”,
“sync_addr”: “”
}
}
#systemctl start janusec.service
打开浏览器(好比Chrome),使用以下地址:
http://
网关IP地址
:9080/
这是Janusec应用网关的第一个管理地址(后面可启用安全的管理地址)。
默认用户名:admin
默认口令:J@nusec123
若是仅使用HTTP,不使用HTTPS,可跳过此步骤;但强烈建议配置证书并启用HTTPS。
使用浏览器打开 http://您的网关IP地址
:9080/ 并添加一张数字证书。
若是您尚未数字证书,能够从Let's Encrypt
申请免费的数字证书。
使用记事本打开两个证书文件(个人证书是从Let's Encrypt
申请的,一个文件名是fullchain.pem,是公开的证书文件;另外一个是privkey.pem,是保密的私钥文件),将其内容复制到Web管理控制台。
使用浏览器打开 http://网关IP地址
:9080/ 并添加一个应用.
填写应用名称、实际服务器的 IP:端口
等信息。
生产环境,须要将修改DNS将您的域名指向网关地址。
测试环境,可直接修改您本地电脑的hosts文件: C:\Windows\System32\drivers\etc\hosts
.
配置完成后,验证网关是否正常工做。
打开浏览器,访问: http://your_domain_name
/
或
https://your_domain_name
/ .
若是能够正常访问,代表网关已正常工做。
安装配置好以后,就来检验一下WAF(Web应用防火墙)是否工做正常。
使用以下测试用例:
http://domain_name/.svn/entries
http://domain_name/test?id=1 and 1=1
这时,当即看到了阻断效果:
后面的使用就比较简单了,个人WAF选型就此告一段落。
若是有不清楚的地方,也可参考官方网站上的说明:https://www.janusec.com/cn/ 。