站库分离技术--反向代理技术-雷池云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拦截页面

相关推荐
power 雀儿1 分钟前
集群聊天服务器---MySQL数据库的建立
服务器·数据库·mysql
Bruce_Liuxiaowei30 分钟前
常见高危端口风险分析与防护指南
网络·网络安全·端口·信息搜集
tmacfrank1 小时前
Android 网络全栈攻略(四)—— TCPIP 协议族与 HTTPS 协议
android·网络·https
liulilittle1 小时前
深度剖析:OPENPPP2 libtcpip 实现原理与架构设计
开发语言·网络·c++·tcp/ip·智能路由器·tcp·通信
cui_win1 小时前
【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
linux·网络·tcp/ip
骑着王八撵玉兔2 小时前
【性能优化与架构调优(二)】高性能数据库设计与优化
数据库·性能优化·架构
夏天想2 小时前
优化 WebSocket 实现单例连接用于打印【待测试 】
网络·websocket·网络协议
BD_Marathon3 小时前
Ubuntu:Mysql服务器
服务器·mysql·ubuntu
想要入门的程序猿3 小时前
Qt写入excel
数据库·qt·excel
我是小bā吖3 小时前
阿里云服务网格ASM实践
网络·阿里云·云计算·服务发现