如何在云服务上快速拥有洛甲WAF(Web防火墙)

如何,服务,快速,拥有,waf,web,防火墙 · 浏览次数 : 147

小编点评

#生成内容时需要带简单的排版 #1.排版API请求 ```python api_url = "api_url_here" api_data = {"data": "api_data_here"} api_response = requests.post(api_url, data=api_data) ``` #2.排版错误检查 ```python if api_response.status_code == 200: print("API请求成功") else: print("API请求失败", api_response.status_code) ``` #3.排版访问记录 ```python record_url = "access_record_url_here" response = requests.get(record_url) record_data = response.json() ``` #4.排版错误日志 ```python if record_data["error"]: print("访问记录错误", record_data["error"]) ``` #5.排版访问记录 ```python print("访问记录:", record_data) ``` #6.排版访问记录 ```python print("访问记录:", record_data) ``` #7.排版访问记录 ```python print("访问记录:", record_data) ```

正文

如何在云服务上快速拥有洛甲WAF(Web防火墙)

洛甲WAF是基于openresty的web防火墙,通过配合后台保护您的数据安全,详情参考节点服务器 luojiawaf_lua(nginx+lua)

Web防火墙能做什么

Web防火墙可以让您更清楚的知道你的服务器运行情况,可以让您的服务器更安全

如何快速在云机上部署洛甲WAF

当下通用的部署方法通常将域名解析到云上的负载均衡,再由负载均衡将连接转发到我们的云服务器上,我们无法直观的了解到哪个请求比如/api/login请求了多少次,平均请求耗时多少ms,是否需要立即进行数据优化、我们也不知道当下受到攻击否,哪个IP再疯狂的刷我们的接口数据,是否要对其进行封禁、还有新加的服务器必须通过负载进行添加,造成云造号必须要给权限出去等。
现在,我们在云服务器内部署洛甲WAF,将负载均衡解析到洛甲上,然后再通过洛甲将流量转发到指定的服务器上,它提供了API请求的请求数及耗时情况,我们就可以对服务有个直观的概念,哪一个地方要做好调优。它提供了服务器内的配置服务,就可以避免在云上直接操作负载均衡。它提供了有效的策略防护,在自动防SQL注入的同时,可以配置指定IP的限流,配置指定uri的限流。

开始部署

洛甲由节点服务器 luojiawaf_lua(nginx+lua) 做前台的api请求转发和中控服务器后端 luajiawaf_server(django) 做数据的收集统计及相关功能的开启关闭。

代码及环境工具准备

安装docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
或者
curl -sSL https://get.daocloud.io/docker | sh 
或者
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet| sh -

安装docker-compose

python3 -m pip install --upgrade pip
pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
pip config set install.trusted-host mirrors.aliyun.com
pip3 install docker-compose

安装git并clone代码

apt-get install git
mkdir /source && cd /source
git clone https://gitee.com/tickbh/luojiawaf_lua
git clone https://gitee.com/tickbh/luojiawaf_server

部署依赖仅依赖REDIS数据库

  • 云上部署,即直接在云上购买数据库Redis版,得到相应的账号密码和设置安全组略
  • 自建Redis这里用的是docker版部署方式
cd /source/luojiawaf_server/compose/redis

创建docker网络,做为与后台网络互通

docker network create luojia-network

这里放着一个对本地监听的6479无密码的redis compose直接运行

docker-compose up -d

检查是否启动成功如下则表示成功

netstat -ano | grep 6479
tcp        0      0 127.0.0.1:6479          0.0.0.0:*               LISTEN      off (0.00/0/0)

修改配置文件

修改server的配置文件

cd /source/luojiawaf_server
cp common/config.yaml config_local.yaml

若你的redis地址不是默认的,请如下修改成对应的

sed -in-place -e 's/redis_back_db/替换的redis地址如redis.xx/g' config_local.yaml
sed -in-place -e 's/6479/替换默认的redis端口如6379/g' config_local.yaml 
sed -in-place -e 's/luojia/替换默认的redis密码/g' config_local.yaml 

修改openresty的配置

cd /source/luojiawaf_lua/compose
cp luojia.json luojia_local.json

若你的redis地址不是默认的,请如下修改成对应的

sed -in-place -e 's/redis_back_db/替换的redis地址如redis.xx/g' luojia_local.json
sed -in-place -e 's/6479/替换默认的redis端口如6379/g' luojia_local.json 
sed -in-place -e 's/luojia/替换默认的redis密码/g' luojia_local.json 

启动服务

启动server
解压缩后台前端

apt-get install unzip
cd /source/luojiawaf_server && cp luojia_web_publish.zip ../ && cd .. && unzip luojia_web_publish.zip -x
cd /source/luojiawaf_server/compose/full
docker-compose up -d

判断是否成功有监听则表示成功

netstat -an | grep "6988\|6987"
tcp        0      0 0.0.0.0:6988            0.0.0.0:*               LISTEN     
tcp6       0      0 :::6988                 :::*                    LISTEN  

启动openresty

cd /source/luojiawaf_lua/compose
docker-compose up -d

判断是否成功有监听则表示成功

netstat -an | grep "80\|443"
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN 

配置服务

用你的ip加6987端口来访问洛甲后台进行配置,默认用户是luojia/luojia

先配置高防列表,在数据配置/配置高防列表里进行配置

再配置负载均衡,在数据配置/配置负载均衡里进行配置
Host填*则表示任意网址进行都进行转发,填网址则表示对应的网址才进行转发
IP则填入后台服务器的地址,端口则填入相对应的端口,默认80
这里用http://httpbin.org/来做示范
通过ping httpbin.org得到他的ip地址52.200.117.68

这时候我们在服务器上运行

curl http://127.0.0.1/get?show_env

如果得到以下返回则表示成功

{
  "args": {
    "show_env": ""
  }, 
  "headers": {
    "Accept": "*/*", 
    "Host": "127.0.0.1", 
    "User-Agent": "curl/7.74.0", 
    "X-Amzn-Trace-Id": "Root=1-63ede542-1c25208e20860c337ca6c16f", 
    "X-Forwarded-For": "172.19.0.1, ****", 
    "X-Forwarded-Port": "80", 
    "X-Forwarded-Proto": "http", 
    "X-Nginx-Proxy": "true", 
    "X-Real-Ip": "172.19.0.1"
  }, 
  "origin": "172.19.0.1, ****", 
  "url": "http://127.0.0.1/get?show_env"
}

到这里基本的服务已经打通
服务器总情况
请求api耗时

其它功能

请求数据管理里面的有常用的辅助功能
获取在线IP可以获取最近3分钟内访问的所有IP列表,访问记录可以看到这IP请求的api请求
禁止的IP列表表示被封禁的IP
请求耗时列表获取所有的api的总耗时,请求总数,平均耗时
获取错误列表可以快速的帮您定位到因为服务器内部错误的api请求

配置CC规则

数据配置/配置参数列表里进行配置

limit_ip:all 值 为 aaa/bbbb 均为数字, aaa表示桶数, bbbb超出桶延时请求的最大数
limit_uri:all 值 为 aaa/bbbb 均为数字, aaa表示桶数, bbbb超出桶延时请求的最大数
limit_ip:ip 对单IP进行限制 为 aaa/bbbb 均为数字, aaa表示桶数, bbbb超出桶延时请求的最大数
limit_uri:ip 对单IP进行限制 为 aaa/bbbb 均为数字, aaa表示桶数, bbbb超出桶延时请求的最大数

not_wait_forbidden_ratio 默认为0.9, 规则判断错序的比例
not_wait_forbidden_min_len 默认为20, 规则判断错序最小值

min_all_visit_times 默认为20, 规则判定总访问次数的起点值
max_visit_idx_num 默认为2, 排序最高的前两台占比
max_visit_ratio 默认为0.85, 即前2条访问量占总比值的比例

default_forbidden_time 默认为600即10分钟, 禁用ip的默认时长

white_ip_check 白名单检查 on 为开启
forbidden_ip_check IP禁止检查 on 为开启
limit_ip_check IP限制检查 on 为开启
limit_uri_check uri限制检查 on 为开启
white_url_check 白url检查 on 为开启

post_attack_check post参数攻击请求on 为开启
url_args_attack urls参数攻击请求on 为开启
default_ip_times_timeout 默认记录访问次数时长

random_record_value 随机记录的值, 100%则填10000

按实际情况进行相应的配置,至此您已经拥有一台完整的WAF了,对于普通项目只需要一台ECS做辅助就够了

项目相关

如果有帮到你的话,可以帮项目的作者加个STAR,希望项目越来越好,传送门由节点服务器 luojiawaf_lua(nginx+lua) 中控服务器后端 luajiawaf_server(django)

与如何在云服务上快速拥有洛甲WAF(Web防火墙)相似的内容:

如何在云服务上快速拥有洛甲WAF(Web防火墙)

如何在云服务上快速拥有洛甲WAF(Web防火墙) 洛甲WAF是基于openresty的web防火墙,通过配合后台保护您的数据安全,详情参考节点服务器 luojiawaf_lua(nginx+lua) Web防火墙能做什么 Web防火墙可以让您更清楚的知道你的服务器运行情况,可以让您的服务器更安全 如

【玩转鲲鹏 DevKit系列】如何快速迁移无源码应用?

为了帮助广大用户和开发者快速将无源码应用从 x86 迁移到鲲鹏,鲲鹏 DevKit提供了动态二进制翻译工具ExaGear,它能在运行时将x86二进制指令翻译成鲲鹏二进制指令,使得大部分x86应用无需重新编译即可运行在 ARM64服务器上,性能损耗最低10%。

玩转服务器之网站篇:新手使用WordPress搭建博客和静态网站部署

在之前的玩转服务器系列文章里,我们介绍了如何构建小型的高可用环境、PHP、Python、Java web、docker环境部署,以及Node.js SSR应用,本篇文章主要介绍新手也能快速上手的WordPress博客搭建和静态网站部署的教程

4大焕新,华为云CCE带你感受容器化上云体验

在容器化日益成为中大型企业上云主流选择的情况下,容器服务如何能帮助用户更简单快捷的上云、高效可信赖的运维?

如何在云原生环境中实现安全左移?

在过去几年里,勒索软件一直是企业安全团队关心的头等大事,而当前软件漏洞问题数量也在逐渐抬头。基于云的应用程序和服务的爆发式增长以及数字化工作的增加,对黑客来说是一大利好,他们正在利用开发人员和 DevOps 团队快速迭代的工作来满足他们的企图。有人估计说,过去十年里40%的零日攻击都发生在2021年

使用“宝塔一键迁移”工具,将typecho博客迁移到京东云cvm云主机

作者:京东科技 林中 服务器更换、网站搬家,对于很多开发者新手来说不是一件容易的事情,需要迁移网站程序、数据库,修改数据库连接文件等。在云迁移方案中,宝塔是非常简单好用的服务器运维面板,能够极大提升运维管理效率。本文将介绍如何使用“宝塔一键迁移”工具将单机版typecho博客系统快速迁移到京东云cv

玩转服务器之数据传输篇:如何快速搭建FTP文件共享服务器

FTP服务(File Transfer Protocol,FTP)是最早应用于主机之间数据传输的基本服务之一,是目前使用最广泛的文件传送协议。FTP文件共享服务器在日常办公中可以实现多人之间文件的传递和共享,极大提高协同办公的效率

一键开启云原生网络安全新视界

本文作者:陈桐乐 李卓嘉 随着云原生的兴起,微服务、容器、kubernetes容器编排正在快速改变着企业软件架构的形态,单体架构、分布式架构、微服务架构,软件架构在持续演进的过程中,变得越来越复杂,管理和维护也越来越困难,不断出现的安全漏洞也在持续挑战着企业的安全运营响应能力,如何准确识别风险点,怎

慢SQL的致胜法宝

大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什么思路去解决是我们必须要知道的。本文主要介绍对于慢SQL的排查、解决思路,通过一个个实际的例子深入分析总结,以便更快更准确

关于自动限流的思考

目标 保证系统不因流量过载而挂。 现状:人工限流 正常的微服务限流工具都需要人工配置:支持应用负责人事先配置限流规则(接口 + 调用方 + 限流阈值),流量在阈值以下可以正常响应,超过阈值的流量会快速失败。这种方案存在如下问题: 问题 1. 接口多,无法全面覆盖 要想保证系统不因流量过载而挂,那就需