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

文章目录

概要

新买了一个云服务器,想搭建一个站库分离的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与 host与http_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拦截页面

相关推荐
麦聪聊数据10 分钟前
企业数据市场建设(三):API 化服务封装,让数据开箱即用、避免重复开发
数据库
麦聪聊数据22 分钟前
企业数据市场建设(四):流程闭环与价值运营,让数据市场真正转起来
运维·数据库
正儿八经的少年28 分钟前
redis 的大 key 和热 key 详解
数据库·redis·缓存
AI砖家32 分钟前
多智能体系统实战:架构设计、数据库表设计与 Skill 体系
数据库·多智能体·skill·agent架构设计·agengt
only-qi40 分钟前
RAG 工作机制详解:构建高质量知识库的技术全流程
网络·人工智能·rag
见合八方1 小时前
【噪声系数】高偏SOA噪声系数测试方法
网络·自动化·soa·光通信·激光雷达·半导体光放大器
yydbjx1 小时前
KACHIE发圈更隐蔽,博容安可的侧键推杆是不是不如它?
安全·求救器·防身
小五传输1 小时前
自主可控建设指南:Serv-u替代方案,实现平滑迁移业务不中断
大数据·运维·安全
jun_bai1 小时前
Orthanc服务器使用java上传dicom影像文件
java·运维·服务器
夜雪一千1 小时前
MySQL查询条件的顺序是否影响查询效率
数据库·mysql