当前位置: 首页 > news >正文

从一开始的网络攻防(十三):WAF入门到上手

Web Application Firewall

概念

Web应用防护系统:(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称:WAF)。

利用国际上公认的一种说法:

web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品

与传统防火墙的不同

Web应用防护系统代表了一类新兴的信息安全技术,用以解决诸如防火墙一类传统设各束手无策的Web应用安全问题。

与传统防火墙不同,WAF工作在应用层,因此对web应用防护具有先天的技术优势。

基于对Web应用业务和逻辑的深刻理解,WAF对来自Web应用程序客户端的各类请求进行内容检测和验证,确保其安全性与合法性,对非法的请求予以实时阻断,从而对各类网站站点进行有效防护。

主要功能

  • 漏洞攻击防护
    • WAF安全防护目前可拦截常见的web漏洞攻击,例如SQL注入、XSS跨站、获取敏感信息、利用开源组件漏洞的攻击等常见的攻击行为。
  • 虚拟补丁
    • WAF安全防护可提供0Day,NDay漏洞防护。当发现有未公开的0Day漏洞,或者刚公开但未修复的NDay漏洞被利用时,WAF可以在发现漏洞到用户修复漏洞这段空档期对漏洞增加虚拟补丁,抵挡黑客的攻击,防护网站安全。

工作原理

网站安全防护(WAF)基于对http请求的分析,如果检测到请求是攻击行为,则会对请求进行阻断,不会让请求到业务的机器上去,提高业务的安全性,为web应用提供实时的防护。

ModSecurity简介

ModSecurity是目前世界上使用最多的开源WAF产品,可谓是WAF界的鼻祖,很多其他WAF产品都或多或少受其影响,如OpenWAF。

ModSecurity是一个开源的、跨平台的Web应用防火墙(WAF),被称为WAF界的瑞士军刀”。它可以通过检查Web服务接收到的数据,以及发送出去的数据来对网站进行安全防护。

  • 中文站:ModSecurity中文社区
  • 源码:Releases · owasp-modsecurity/ModSecurity
  • 规则:Releases · coreruleset/coreruleset

主要功能

  • SQL Injection (SQLi):阻止SQL注入
  • Cross Site Scripting (XSS):阻止跨站脚本攻击
  • Local File Inclusion (LFI):阻止利用本地文件包含漏洞进行攻击
  • Remote File Inclusione(RFI):阻止利用远程文件包含漏洞进行攻击
  • Remote Code Execution (RCE):阻止利用远程命令执行漏洞进行攻击
  • PHP Code Injectiod:阻止PHP代码注入
  • HTTP Protocol Violations:阻止违反HTTP协议的恶意访问
  • HTTPoxy:阻止利用远程代理感染漏洞进行攻击
  • Sshllshock:阻止利用Shellshock漏洞进行攻击
  • Session Fixation:阻止利用Session会话ID不变的漏洞进行攻击
  • Scanner Detection:阻止黑客扫描网站
  • Metadata/Error Leakages:阻止源代码/错误信息泄露
  • Project Honey Pot Blacklist:蜜罐项目黑名单
  • GeoIP Country Blocking:根据判断IP地址归属地来进行IP阻断

社区链接

Github

ModSecurity.cn中文社区

ModSecurity安装与部署

1. VirtualBox

2. CentOS镜像

CentOS-7-x86_64-DVD-1810

3. 安装虚拟机

  1. 软件选择-基础环境-GNOME桌面-开发工具、系统管理工具
  2. 设置root密码

4. 安装相关工具

4.1. 关闭SELinux的限制

SELinux(Security-Enhanced Linux)是CentOS系统中用于增强系统安全的一个功能。当SELinux设置为强制模式(enforcing)时,它会阻止许多操作,包括虚拟机的挂起。

具体来说,SELinux在强制模式下会阻止虚拟机挂起,导致出现“未能挂起虚拟机”的错误提示‌

解决方法:

  1. 临时关闭SELinux setenforce 0
  2. 永久设置SELinux为Permissive模式
    1. sudo vim /etc/selinux/config
    2. SELINUX=行,将其值改为permissive
    3. 保存后重启生效
4.2. VMware tools要通过镜像安装
4.3. 更新Yum源

通用,记得归档

Centos7更换Yum源 - Hope· - 博客园

1. 先备份系统本身的yum源

cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak

2. 下载国内的yum源到/etc/yum.repos.d/CentOS-Base.repo (腾讯云 yum 源)

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo

3. Yum 缓存

3.1. 清理yum缓存 yum clean all

yum clean all 是一个用于管理 Red Hat 及其衍生版操作系统中的软件包管理器 YUM (Yellowdog Updater Modified) 的命令。这个命令的作用是清理 YUM 缓存中的所有数据,包括软件包、头文件、索引等,以释放磁盘空间并确保 YUM 在执行更新或安装时不会使用过时的数据

3.2. 更新缓存yum makecache

yum makecache 是将软件包信息提前在本地索引缓存,用来提高搜索安装软件的速度,建议执行这个命令可以提升yum安装的速度

4. 更新yum源

yum update            //升级所有包的同时还升级内核
yum upgrade            //只升级软件包复制

5. 验证 yum 源是否配置成功yum list

4.4. 安装相关工具
yum install -y wget epel-release
yum install -y httpd httpd-devel pcre pcre-devel libxml2-devel gcc lua-devel yajl-devel ssdeep-devel curl-devel

5. 编译ModSecurity

ModSecurity版本:2.9.3

  1. 将ModSecurity解压到/usr/local路径下
  2. 进入ModSecurity目录下
  3. 设置配置参数./configure --enable-standalone-module --disable-mlogc
  4. 编译make

6. 安装nginx

nginx版本:1.16.1

  1. 下载nginxwget http://nginx.org/download/nginx-1.16.1.tar.gz
  2. 将nginx解压到/usr/local路径下
  3. 进入nginx目录
  4. 设置配置参数./configure --add-module=/usr/local/modsecurity-2.9.3/nginx/modsecurity/ --prefix=/usr/local/nginx
  5. 编译make ; make install

7. 测试未启动ModSecurity的攻击效果

7.1. 启动nginx

/usr/local/nginx/sbin/nginx

7.2. 模拟攻击

模拟攻击,测试未启动ModSecurity时的访问效果

输入命令ifconfig查看当前虚拟机ip

浏览器访问http://192.168.142.128/?param=%22%3E%3Cscript%3Ealert(1);%3C/script%3E

即使输入了alert敏感语句,依然可以访问页面

8. 测试启动ModSecurity的攻击效果

8.1. 复制配置文件
mkdir -p /usr/local/nginx/conf/modsecurity/
cp /usr/local/modsecurity-2.9.3/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity/modsecurity.conf
cp /usr/local/modsecurity-2.9.3/unicode.mapping /usr/local/nginx/conf/modsecurity/unicode.mapping
8.2. 复制规则包

将规则包解压后复制crs-setup.conf.example/usr/local/nginx/conf/modsecurity/下并重命名为crs-setup.conf

复制rules文件夹到/usr/local/nginx/conf/modsecurity/

同时修改

  • REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example
  • RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example

两个文件的文件名,将.example删除,可将自己写的规则放置于此两个文件中;

8.3. 编辑nginx配置文件

在http或server节点中添加以下内容(在http节点添加表示全局配置,在server节点添加表示为指定网站配置):

ModSecurityEnabled on;
ModSecurityConfig modsecurity/modsecurity.conf;
8.4. 编辑ModSecurity配置文件

SecRuleEngine DetectionOnly改为SecRuleEngine On

同时在文件未尾添加以下内容:

Include crs-setup.conf

Include rules/*.conf

8.5. 重新加载Nginx测试效果

/usr/local/nginx/sbin/nginx -s reload

网站再次访问

http://192.168.142.128/?param=%22%3E%3Cscript%3Ealert(1);%3C/script%3E

已经无法访问了,说明已经生效了

http://www.dtcms.com/a/307115.html

相关文章:

  • 疏老师-python训练营-Day30模块和库的导入
  • Mysql事务基础
  • 通俗易懂的解释G1垃圾收集器
  • 学习Markdown
  • vulhub-Thales靶场攻略
  • git的开发流程
  • # C语言:20250730学习(二级指针)
  • OneCode 3.0 快速视图在 DDD 领域模型中的应用研究
  • 「Linux命令基础」管理文件
  • 【动态规划 | 多状态问题】动态规划求解多状态问题
  • 7. 传输层协议 TCP
  • 低速信号设计之 MDIO 篇
  • 7.5将模块分离到不同的文件中
  • FastAPI入门:表单数据、表单模型、请求文件、请求表单与文件
  • 电商项目统一认证方案设计与实战
  • 《JWT + OAuth2统一认证授权:企业级单点登录方案》
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-50,(知识点:TCP/IP 模型)
  • NSGA-III(Non-dominated Sorting Genetic Algorithm III)简介
  • MySQL数据一致性与主从延迟深度解析:从内核机制到生产实践
  • 数据集相关类代码回顾理解 | DataLoader\datasets.xxx
  • 广东省省考备考(第六十一天7.30)——资料分析、数量(强化训练——重点复习回顾)
  • 数据库初阶笔记
  • JavaWeb笔记14
  • C语言15-构造数据类型、位运算符、内存管理
  • Ⅹ—6.计算机二级综合题15---18套
  • 魔塔社区上文生图大模型对比
  • 涉及实验(随机分组)的一些概念
  • 【UEFI系列】EFI Memory Map内存映射 and type
  • cpp-httplib 线程安全
  • Tableau 2019可视化数据分析软件安装包下载安装教程