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

本文详细描述了作者在新购云服务器上使用Docker、Nginx和雷池WAF搭建站库分离的WordPress网站的过程,包括技术名词解释、SSH登录、数据库配置、docker映射、nginx反向代理设置以及安全措施,如设置MySQL新密码和SSL证书配置。
摘要由CSDN通过智能技术生成

概要

新买了一个云服务器,想搭建一个站库分离的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拦截页面
在这里插入图片描述

  • 31
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是乙太呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值