中、小企业怎么自建免费的云WAF

访客5年前黑客工具1434

概述

WEB进犯是十几年来黑客进犯的干流技能,国内的大厂们早已把WAF作为安全基础设施的标配,市面上也有许多安全厂商供给了WAF产品或云WAF服务。

关于没有自己安全团队,却又饱尝sql注入、xss、cc等WEB进犯的中、小企业,对WAF的需求也是十分火急的。

现在获取WAF的途径有以下几种:

购买安全厂商的WAF产品

运用云waf服务,将自己域名的DNS服务器设为云waf厂商供给的,或许将需求接入云waf的域名cname曩昔

或许从网上找一些免费或开源的waf运用

克己WAF

关于收入不错的公司运用收费的产品或服务无可厚非,可是有些公司会因预算、数据私密性(云waf能够捕获一切流量的恳求和呼应的内容)等原因,不计划运用收费的产品或服务。

这种情况下只能运用免费的waf了,或许按事务需求克己一款合适自己的云WAF。

笔者会通过本文具体论述如何用一周的时刻克己一款简略易用的云WAF,以下为现已完结的云WAF的文档及github地址:

项目站点:https://waf.xsec.io/

Github地址:https://github.com/xsec-lab

云WAF架构规划

物理架构

依据事务场景或需求的不同,WAF也有不同的架构,比方:

以模块的方式集成到本地WEB容器中,如mod_security、Naxsi

反向署理方式

硬件产品WAF

Agent+检测云方式

本文完成的云WAF选用了反向署理方式的架构

waf能够布置一台或许多台服务器中,假如事务规划较大,一台waf的功用现已无法满意事务需求,能够在waf前面运用LVS、haproxy、nginx等建立负载均衡,通过VIP将前端的恳求分发到后端的waf中

后端的app server为供给正常事务的web server,用户的恳求会先通过waf进行过滤,假如是歹意的进犯恳求,则会在waf层面阻断,假如是正常的恳求才会转发到后端服务器

逻辑架构

x-waf由x-waf自身以及web办理后台x-waf-admin组成,其间:

x-waf依据openresty + lua开发

waf办理后台:选用golang + xorm + macrom开发的,支撑二进制的方式布置

x-waf的完成

笔者呆过的2家公司都自主研发过云waf,架构一开始就规划成了合适大规划事务体系的,装置、布置、运维都比较复杂,不方便小企业快速布置,所以在参阅了github中现有的开源的几款waf后,从头规划了一款轻量级的。

x-waf的履行流程

openresty默许不会履行lua脚本,需求在nginx.conf中进行装备,如下所示:

# 指定lua文件的查找途径
lua_package_path "/usr/local/openresty/nginx/conf/x-waf/?.lua;/usr/local/lib/lua/?.lua;;";
# 界说2个lua shared dict变量分别为limit和badGuys,分配的内存大小为100M
lua_shared_dict limit 100m; lua_shared_dict badGuys 100m;
# 敞开lua代码缓存功用
lua_code_cache on;
# 让nginx在init阶段履行init.lua文件中的lua代码
init_by_lua_file /usr/local/openresty/nginx/conf/x-waf/init.lua;
# 让nginx在每个http恳求的access阶段履行access.lua文件中的lua代码
access_by_lua_file /usr/local/openresty/nginx/conf/x-waf/access.lua;

openresty在init阶段会依据装备文件指定的方位导入json格局的规矩到大局的lua table中,不同的规矩放在不同的table中,以加速正则匹配的速度

waf = require("waf") waf_rules = waf.load_rules()

waf.load_rules会依据装备文件中指定的途径加载读取一切json格局的规矩,并加载到不同的table中,然后封装一个get_rule的函数,方便在每个http进来时能够直接从lua table中获取对应类型的规矩:

local _M = {    RULES = {} }

function _M.load_rules()    _M.RULES = util.get_rules(config.config_rule_dir)    
   return _M.RULES end
   
function _M.get_rule(rule_file_name)    ngx.log(ngx.DEBUG, rule_file_name)    
   return _M.RULES[rule_file_name] end

util.get_rules会将指定文件中的规矩按规矩名保存到lua table中供waf.get_rule函数在需求的时分获取规矩:

function _M.get_rules(rules_path)    
   local rule_files = _M.get_rule_files(rules_path)    
   if rule_files == {} then        return nil    end    
   
   for rule_name, rule_file in pairs(rule_files) do        local t_rule = {}        
       local file_rule_name = io.open(rule_file)        

[1] [2] [3] [4] [5]  黑客接单网

相关文章

怎样使用追寻代码来发现网站之间的“相关”

前些年Lawrence Alexander颁发了一篇使用Google Analytics查找网页之间的联络联络的文章,客岁,我也宣告了一个关于若何使用Python自动开掘信息,然后将其可视化的帖子,不...

Ostap:超过34,000行的JavaScript下载器用于TrickBot分发活动中-黑客接单平台

要挟行为者在损害体系时,一般需求考虑怎么进入方针网络才干防止被检测到,而传递歹意附件的网络垂钓邮件往往就充当了初始感染前言的人物。 此外,攻击者还需求一种办法,在安全监控产品的眼皮底下履行代码。最常见...

服务器遇到大流量进犯的处理进程

 事例描述 早上接到 IDC 的电话,说咱们的一个网段 IP 不断的向外发包,应该是被进犯了,详细哪个 IP不知道,让咱们检查一下。 按理剖析及解决办法 首要咱们要先确定是哪台机器的网卡在向外发包,还...

APT34利用LinkedIn钓鱼,其武器库中再添三类恶意软件-黑客接单平台

APT34被认为是一个为伊朗的国家利益服务的黑客安排,首要侧重于网络间谍活动,至少从2014年开端就一向处于活泼状况。这个安排现已广泛地针对各个职业,包含金融、政府、动力、化工和电信,而且首要会集在中...

代码审计之Fiyo CMS事例共享

Fiyo CMS是小型的商务电话服务及移动协作东西,由一名前职业学校学生初次开发和创立的,后者其时在RPL的SMK 10三宝垄学习。 那时他的姓名不是Fiyo CMS,而是Sirion,它是Site...

Chafer运用的新的根据Python的有效载荷MechaFlounder

2019年11月,Chafer要挟小组针对土耳其政府从头运用他们在2019年早些时候运用的基础设施(Clearsky报导的活动中),特别是域名win10-update [.] com。尽管咱们没有见到...