站库分离技术--反向代理技术-雷池云WAF-给自己搭建一个安全点的网站

文章目录

    • 概要
    • 整体架构流程
    • 技术名词解释
    • 技术细节
      • ssh-ubuntu服务器
      • docker-映射-链接-通信
      • nginx反代
      • mysql设置数据库新密码
    • 小结
      • 我的mysql映射目录
      • 我的wordpress映射目录
  • 成果展示

概要

新买了一个云服务器,想搭建一个站库分离的wordpress为主的网站,采用docker技术,和nginx实现反向代理,同时实现本地搭建雷池WAF过滤流量数据,实现拦截和监测

整体架构流程

在这里插入图片描述

以docker内的虚拟机为基础提供web服务,portainter为docker图形化的统一管理界面,服务器本机的nginx为反向代理设置server监听81端口,让雷池绑定域名使用80端口,清洗通过网站的流量返回给81端口,再溯源到8080,最后到容器内的woedpress。

技术名词解释

  • docker+wordpress+mysql

Docker安装WordPress
Docker安装wordpress并配置数据库(超详细版)
Docker实战:Docker安装WordPress,快速搭建自己的博客

  • Portainer CE

Portainer CE 安装汉化教程

  • Nignx

docker安装wordpress,通过nginx反向代理
nginx配置反向代理,一篇搞定!
一文理清nginx中的location配置(系列一)

  • 雷池WAF

同一个站点配置

  • tomcat

技术细节

ssh-ubuntu服务器

Ubuntu 系统的默认用户名是 ubuntu,并在安装过程中默认不设置 root 账户和密码。您如有需要,可在设置中开启允许 root 用户登录。具体操作步骤如下:

Ubuntu 系统如何使用 root 用户登录实例?
关于Ubuntu拒绝root用户ssh远程登录

docker-映射-链接-通信

docker映射 :可以使用 -v 参数来指定挂载点。例如,假设你有一个硬盘 /data ,你可以将它挂载到 WordPress容器内的 /var/www/html 目录上,命令如下所示:

  • 配置mysql容器 此时的mysql已经运行起来了,但是需要配置允许外部访问才可使用。

#进入容器
docker exec -it mysql5.7 bash
#进入mysql数据库–123456
mysql -u root -p
#设置mysql允许访问
GRANT ALL PRIVILEGES ON . TO ‘root’@‘%’ WITH GRANT OPTION;
FLUSH PRIVILEGES;

但是我感觉现在像上面这样配置数据库不安全,下面我重新配置一下mysql密码和用户

  • docker链接本地的数据库主机用host.docker.internal

  • 用docker下载的mysql则用数据库ip进行连接
    docker inspect <mysql-container-name> | grep IPAddress

nginx反代

我遇到2个问题,

  1. 如果只再location直接添加proxy_pass http://宿主机ip:8080;会导致我的网站重定向次数过多,直接无法正常显示,才知道
    启动端口不是80,需要添加配置:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

为什么呢?
原因:nginx中proxy_set_header Host h o s t 的作用及 host的作用及 host的作用及proxy_host, h o s t 与 host与 hosthttp_host的区别

  1. 如果点击网页上的某个按钮或标签,又会跳转到带有其他端口的地方,这会导致用户访问可以绕过WAF通过端口访问原站
    我的解决暂时如下:不知道还会不会有绕过方法

vim /etc/nginx/sites-available/default
在这里插入图片描述

vim /etc/nginx/nginx.conf在这里插入图片描述

wordpress网站后台这里设置不带端口
在这里插入图片描述

最后就可以再服务器的安全策略组关闭一些不能开放的端口了,比如8080,81,防止绕过

mysql设置数据库新密码

MySQL数据库修改用户登录密码的三种方式
mysql修改远程登录密码
但是mysql 8.x 版本修改密码,只能使用命令:alter user ‘root’@‘localhost’ identified by ‘123456’;

小结

我的mysql映射目录

/data/mysql:/var/lib/mysql

我的wordpress映射目录

/data/www:/var/www/html

以后记得备份这两个目录哟

最终实现

未完待续…还没添加ssl证书

docker -wordpress镜像的SSL证书配置
WordPress网站发送邮件(配置SMTP)

成果展示

尝试sql注入:

成功被WAF拦截页面
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/447037.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构:图及相关算法讲解

图 1.图的基本概念2. 图的存储结构2.1邻接矩阵2.2邻接表2.3两种实现的比较 3.图的遍历3.1 图的广度优先遍历3.2 图的深度优先遍历 4.最小生成树4.1 Kruskal算法4.2 Prim算法4.3 两个算法比较 5.最短路径5.1两个抽象存储5.2单源最短路径--Dijkstra算法5.3单源最短路径--Bellman-…

CentOS 7安装MySQL及常见问题与解决方案(含JDBC示例与错误处理)

引言 MySQL是一个流行的开源关系型数据库管理系统&#xff0c;广泛应用于各种业务场景。在CentOS 7上安装MySQL后&#xff0c;我们通常需要使用JDBC&#xff08;Java Database Connectivity&#xff09;连接MySQL进行后端操作。 目录 引言 CentOS 7安装MySQL 使用JDBC连接My…

AI入门笔记(四)

深度学习是人工智能的一种实现方法。本文我将学习到的关于深度学习的代表卷积神经网络的数学结构分享给大家。 深度学习是重叠了很多层的隐藏层&#xff08;中间层&#xff09;的神经网络。我们以一个例题为例。 建立一个卷积神经网络&#xff0c;用来识别通过 66 像素的图像读…

基于VSCode安装Node.js开发环境

根据官网介绍&#xff0c;Node.js 是一个免费的、开源的、跨平台的JavaScript实时运行环境&#xff0c;允许开发人员在浏览器之外编写命令行工具和服务器端脚本. Node.js框架由于是采用JavaScript语法进行调用的&#xff0c;因此Node.js环境除了用来编写调试Node.js代码&#…

mybatis基础操作(三)

动态sql 通过动态sql实现多条件查询&#xff0c;这里以查询为例&#xff0c;实现动态sql的书写。 创建members表 创建表并插入数据&#xff1a; create table members (member_id int (11),member_nick varchar (60),member_gender char (15),member_age int (11),member_c…

视图【MySQL】

文章目录 概念操作视图创建视图查询视图更新视图删除视图 视图规则和限制 概念 MySQL 中的视图&#xff08;View&#xff09;是一个虚拟表&#xff0c;其内容由查询定义。视图本身不包含数据&#xff0c;这些数据是从一个或多个实际表中派生出来的&#xff0c;通过执行视图定义…

简单了解TCP/IP四层模型

什么是计算机网络&#xff1f; 计算机网络我们可以理解为一个巨大的城市地图&#xff0c;我们想从A地前往B地&#xff0c;其中要走的路、要避开的问题都交给计算机网络解决&#xff0c;直到我们可以正常的到达目的地&#xff0c;那么我们会把其中的过程抽象成一个网络模型&…

练习01-登录注册(简单)

一、用户登录/注册实现 综合前面学的知识来实现简单的注册登录功能 1.准备工作 注册登录页面 数据库&#xff0c;数据表 mybatis 坐标引入&#xff0c;MySQL驱动 配置 映射文件 用户实体类 Servlet代码 2.页面 不想手写的可以看博主IT黄大大【带源码】 【炫酷登录界…

吴恩达机器学习-可选实验室:可选实验:使用逻辑回归进行分类(Classification using Logistic Regression)

在本实验中&#xff0c;您将对比回归和分类。 import numpy as np %matplotlib widget import matplotlib.pyplot as plt from lab_utils_common import dlc, plot_data from plt_one_addpt_onclick import plt_one_addpt_onclick plt.style.use(./deeplearning.mplstyle)jupy…

机器学习——PPO补充

On-policy vs Off-policy 今天跟环境互动&#xff0c;并学习是on-policy 只是在旁边看&#xff0c;就是Off-policy 从p中选q个重要的&#xff0c;需要加一个weight p(x)/q(x) p和q不能相差太多 采样数太少导致分布差很多&#xff0c;导致weight发生变化 On-Policy -&g…

STM32F103 CubeMX ADC 驱动 PS2游戏摇杆控制杆传感器模块

STM32F103 CubeMX ADC 驱动 PS2游戏摇杆控制杆传感器模块 1. 工程配置1.1 配置debug口1.2 配置时钟1.3 配置ADC1.4 配置串口1.5 配置时钟1.6 生成工程 2. 代码编写2.1 串口代码2.2 ADC读取数据的代码 1. 工程配置 1.1 配置debug口 1.2 配置时钟 1.3 配置ADC 1.4 配置串口 1.5 …

小迪安全37WEB 攻防-通用漏洞XSS 跨站权限维持钓鱼捆绑浏览器漏洞

#XSS跨站系列内容:1. XSS跨站-原理&分类&手法 XSS跨站-探针&利用&审计XSS跨站另类攻击手法利用 XSS跨站-防御修复&绕过策略 #知识点&#xff1a; 1、XSS 跨站-另类攻击手法分类 2、XSS 跨站-权限维持&钓鱼&浏览器等 1、原理 指攻击者利用…

JavaWeb-Maven基础

Maven是专门用于管理和构建Java项目的工具&#xff0c;是 Apache 下的一个纯 Java 开发的开源项目&#xff0c;基于项目对象模型&#xff08;POM&#xff09;概念。先来学习一下Maven基础&#xff0c;等后面学完开发框架后再学Maven高级&#xff0c;这次的内容如下 一、概述 …

leetcode 热题 100_搜索二维矩阵

题解一&#xff1a; 二叉搜索树&#xff1a;从矩阵右上角观察&#xff0c;结构类似二叉搜索树&#xff0c;因此可以用类似的解法来做。具体做法是双指针从右上角开始&#xff0c;向左下角逐步搜索&#xff0c;如果当前值比目标值大&#xff0c;则向下移动&#xff0c;如果当前值…

体系班第十三节

1判断完全二叉树递归做法 有四种情况&#xff1a;1 左树完全&#xff0c;右数满&#xff0c;且左高为右高加一 2左满 &#xff0c;右满&#xff0c;左高为右高加一 3左满&#xff0c;右完全&#xff0c;左右高相等 4左右均满且高相等 #include<iostream> #include&l…

封装方法3

上一篇处理了单元格返回值改写 这一篇处理剩余普通方法返回值改写 已经给了Object的返回值&#xff0c;需要回调 //返回结果是22个单元格的值&#xff0c;怎么给调用方 Object value getCellValue(cell);没有给调用方的情况 value值内容是什么 处理ecxel-22个单元值的返回结…

重启 explorer 进程的正确做法(二)

重启资源管理器进程的方法不唯一&#xff0c;但长期以来大家对实施方法用的不到位。 在上一篇中我认为&#xff1a;“我们往往使用 TerminateProcess 并传入 PID 和特殊结束代码 1 或者 taskkill /f /im 等方法重启资源管理器( explorer.exe )&#xff0c;其实这是不正确的。我…

神经网络实战前言

应用广泛 从人脸识别到网约车&#xff0c;在生活中无处不在 未来可期 无人驾驶技术便利出行医疗健康改善民生 产业革命 第四次工业革命——人工智能 机器学习概念 机器学习不等价与人工智能20世纪50年代&#xff0c;人工智能是说机器模仿人类行为的能力 符号人工智能 …

DevOps本地搭建笔记(个人开发适用)

需求和背景 win11 wsl2 armbian(玩客云矿渣&#xff09;&#xff0c;构建个人cicd流水线&#xff0c;提高迭代效率。 具体步骤 基础设施准备 硬件准备&#xff1a;一台笔记本&#xff0c;用于开发和构建部署&#xff0c;一台服务器&#xff0c;用于日常服务运行。 笔记本…

C#,蛇梯问题(Snake and Ladder Problem)的算法与源代码

1 蛇梯问题 Snake and Ladder Problem 给定一个蛇梯板&#xff0c;找出从源单元格或第一个单元格到达目标单元格或最后一个单元格所需的最小掷骰次数。基本上&#xff0c;玩家可以完全控制掷骰子的结果&#xff0c;并希望找出到达最后一个单元格所需的最小掷骰次数。 如果玩…