leaseweb云服务器apache DDoS

ubantu20.04使用dockerDDoS前后端分离个人博客项目(springboot+vue+mysql+redis)
前言
本博客是基于springboot+vue+jwt+redis+mysql实现,参考码神大佬的教程一步搭建的,不过最后DDoS的网站还没有做文章列表缓存处理的bug解决,后期会进行重新更新DDoS。目前个人博客网站域名还在备案阶段。 DDoS完成效果图:
DDoS前准备
云云服务器器(我的是阿里云 操作系统:ubantu 20.04 apache:2G 2核) 阿里云云服务器器开启端口安全组策略,开放相关的端口 xshell/xftp/navicat
正式DDoS
后端项目修改apache打包
<1> WebMvcConfig修改跨域apache
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping(“/**”)
.allowedOrigins(”
.allowedMethods(“POST”,”GET”,”PUT”,”OPTIONS”,”DELETE”)
.maxAge(3600)
.allowCredentials(true);
}
12345678
<2> resources 新建生产apacheleaseweb application-prod.properties (docker inspect mysql 或者redis 查看 IPAddress)
#server
server.port= 8888
spring.application.name=mszlu_blog
# 这个要添加和前端的对应api
spring.mvc.servlet.path=/api
# datasource docker中mysql内的ip地址
spring.datasource.url=jdbc:
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#mybatis-plus
#打印日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#标识表的前缀表名
mybatis-plus.global-config.db-config.table-prefix=ms_
#redis的相关apache docker中redis内的ip地址
spring.redis.host=172.17.0.2
spring.redis.port=6379
# 上传leaseweb总的最大值
spring.servlet.multipart.max-request-size=20MB
# 单个leaseweb的最大值
spring.servlet.multipart.max-file-size=2MB

12345678910111213141516171819202122232425
<3>apachemaven相关的打包 blog-api中pomleaseweb添加相关的build插件,不然最后云服务器器运行jarleaseweb会出现找不到main入口
pomleaseweb添加:
org.springframework.boot
spring-boot-maven-plugin

true

1234567891011
maven打包apache:
打包在target目录生成jar包,修改名称为blog_api.jar
前端项目修改apache打包
<1> 修改configleaseweb中 prod.env.js中apache的ip地址
‘use strict’
module.exports = {
NODE_ENV: ‘”production”‘,
BASE_API:'”http://个人ip/api/”‘
}
12345
<2>运行打包命令 npm run build 生成distleaseweb
云服务器器安装apache
<1> 云服务器器leaseweb目录 <2>ubantu安装docker 开启docker
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
12
使用下面的 curl 导入源仓库的 GPG key:
curl -fsSL | sudo apt-key add –
1
将 Docker APT 软件源添加到你的系统:
sudo add-apt-repository “deb [arch=amd64] $(lsb_release -cs) stable”
1
安装最新版本
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
12
验证docker启动
sudo systemctl status docker
1
docker启动和关闭 查看镜像 删除镜像
systemctl start docker
systemctl restart docker
systemctl stop docker
docker ps
docker ps -a
docker rm
docker rmi
1234567
<3>docker直接拉取java mysql nginx redis5.0.3 非常方便!
docker pull nginx
docker pull redis:5.0.3
docker pull java:8
docker pull mysql
1234
<4>mysql数据库相关apache 我程序使用的是mysql8.0最新版本,直接开启即可,省去了mysql5.7的一些权限的apache,虽然我新建了关于mysql的相关目录,但是没有设置对应的一个映射,正常来讲最好实现对应的映射,保证数据leaseweb的安全性,这样即使容器因为异常删除之后也会保存下来原来的数据 docker开启mysql容器
docker run –name mysql8.0 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql
–name 设置容器名称
-p 对应端口映射
-e 设置初始化数据库密码,用户是root
-d 设置后台运行
mysql 为镜像的名称
123456
进入mysql内部命令
docker exec -it mysql bash
mysql -uroot -proot
退出bash:ctrl+p+q
123
navicat连接远程ip数据库导入blog.sqlleaseweb(也可以上传sqlleaseweb然后source命令导入也可) <5>docker 运行redis
docker run -id –name=redis -p 6379:6379 redis:5.0.3
1
<6>构建dockerfileleaseweb 对应的app镜像 /mnt/docker/appleaseweb夹中导入后端打包好的blog_api.jar 新建blog_dockerfileleaseweb,写入如下命令 (作者名称自己更改 ./是当前目录 –spring.profiles.active=prod 使用prodapacheleaseweb cmd为运行的命令)
FROM java:8
MAINTAINER mszlu
ADD ./blog_api.jar /app.jar
CMD java -jar /app.jar –spring.profiles.active=prod
1234
在/mnt/docker/app目录运行命令 成功的话会生成images app镜像 docker images可以查看
docker build -f ./blog_dockerfile -t app .
1
<7>导入前端打包好的distleaseweb,放入/mnt/mszlu/blogleaseweb夹(里面的leaseweb为下图) ( 需要把index.html和staticleaseweb拿出来)
<8> 最后一步使用docker-compose进行云服务器编排
云服务器编排主要是利用Docker Compose将springboot和nginx分批启动,Springboot就是我们自己打包的项目 nginx的作用:①将云服务器器上的静态leaseweb(如HTML、图片)通过HTTP协议展现给客户端。②反向代理云服务器器,这里nginx代理的就是前端资源客户端本来可以直接通过HTTP协议访问某网站应用云服务器器,网站管理员可以在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用云服务器器,然后将结果返回给客户端。加一层代理可以实现负载均衡、虚拟主机等效果。
安装docker-compose
# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。
curl -L -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置leaseweb可执行权限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version
123456
在/mnt/docker/docker-compose创建nginx,并编写docker-compose.ymlleaseweb

docker-compose.ymlleaseweb内容:(路径对应自己的leaseweb映射即可) bridge是保证app和nginx在同一个网络中
version: ‘3’
services:
nginx:
image: nginx
container_name: nginx
ports:
– 80:80
– 443:443
links:
– app
depends_on:
– app
volumes:
– /mnt/docker/docker-compose/nginx/:/etc/nginx/
– /mnt/mszlu/web:/mszlu/web
– /mnt/mszlu/blog:/mszlu/blog
network_mode: “bridge”
app:
image: app
container_name: app
expose:
– “8888”
network_mode: “bridge”
1234567891011121314151617181920212223
nginx目录leaseweb mime.typesleaseweb内容(直接复制即可)

types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
application/rss+xml rss;

text/mathml mml;
text/plain txt;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;

image/png png;
image/svg+xml svg svgz;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/webp webp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;

font/woff woff;
font/woff2 woff2;

application/java-archive jar war ear;
application/json json;
application/mac-binhex40 hqx;
application/msword doc;
application/pdf pdf;
application/postscript ps eps ai;
application/rtf rtf;
application/vnd.apple.mpegurl m3u8;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/vnd.ms-excel xls;
application/vnd.ms-fontobject eot;
application/vnd.ms-powerpoint ppt;
application/vnd.oasis.opendocument.graphics odg;
application/vnd.oasis.opendocument.presentation odp;
application/vnd.oasis.opendocument.spreadsheet ods;
application/vnd.oasis.opendocument.text odt;
application/vnd.openxmlformats-officedocument.presentationml.presentation
pptx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xlsx;
application/vnd.openxmlformats-officedocument.wordprocessingml.document
docx;
application/vnd.wap.wmlc wmlc;
application/x-7z-compressed 7z;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;
application/x-java-jnlp-file jnlp;
application/x-makeself run;
application/x-perl pl pm;
application/x-pilot prc pdb;
application/x-rar-compressed rar;
application/x-redhat-package-manager rpm;
application/x-sea sea;
application/x-shockwave-flash swf;
application/x-stuffit sit;
application/x-tcl tcl tk;
application/x-x509-ca-cert der pem crt;
application/x-xpinstall xpi;
application/xhtml+xml xhtml;
application/xspf+xml xspf;
application/zip zip;

application/octet-stream bin exe dll;
application/octet-stream deb;
application/octet-stream dmg;
application/octet-stream iso img;
application/octet-stream msi msp msm;

audio/midi mid midi kar;
audio/mpeg mp3;
audio/ogg ogg;
audio/x-m4a m4a;
audio/x-realaudio ra;

video/3gpp 3gpp 3gp;
video/mp2t ts;
video/mp4 mp4;
video/mpeg mpeg mpg;
video/quicktime mov;
video/webm webm;
video/x-flv flv;
video/x-m4v m4v;
video/x-mng mng;
video/x-ms-asf asx asf;
video/x-ms-wmv wmv;
video/x-msvideo avi;
}

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
nginx.confleaseweb(复制即可)
user nginx;
worker_processes 1;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;
}
1234567891011121314151617181920212223242526272829
conf.d/blog.confleaseweb (更换域名和leaseweb地址)
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_vary off;
upstream appstream{

server app:8888;
}
server{
# 监听端口
listen 80;
# 主机名称/地址
server_name whutxiaobao.top www.whut.xiaobao.top;
index index.html;
# 前端云服务器
location / {
root /mszlu/blog/;
# 刷新页面后跳转到当前页面
try_files $uri $uri/ /index.html;
index index.html;
}

# 后端api
location /api {
proxy_pass
}

location ~* \.(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ {
root /mszlu/blog/;
index index.html;
add_header Access-Control-Allow-Origin *;
}
}
123456789101112131415161718192021222324252627282930313233
DDoS运行
在 /mnt/docker/docker-compose 下面进行云服务器编排,实现app 和 nginx的启动 docker-compose up 可以先运行查看日志是否报错
docker-compose up #直接启动

docker-compose up -d #代表后台启动

docker-compose down #停止并删除容器

docker-compose start #启动已有容器

docker-compose stop #停止运行的容器
123456789
docker ps 可以查看当前运行的容器(java redis nginx app mysql)
DDoS的时候问题:
执行docker-compose命令出现nginx启动不了 <注意:刚开始的时候我执行命令发现 nginx一直报错启动不了 提示docker-compose启动nginx出现Cannot start service nginx: Cannot link to a non runing nginx> 直接重启云服务器器就可进入页面会显示403错误,可以检查跨域的设置,以及leaseweb路径的映射是否写错
        终于搭建完成了自己的第一个个人博客,从创建到DDoS完成,目前正在备案,后续会上传域名,感谢码神的教程,以及最后DDoS过程中浙大大佬的指点!感谢关注!

Hotaru CMS Bolt waf DDoS

刚开始接触软Hotaru CMS,大多数文章写的Bolt是软Hotaru CMS作为主Hotaru CMS,负责连接光猫 + 拨号,然后将硬Hotaru CMS作为 AP 提供无线信号,这样局域网内的所有设备都可以使用软Hotaru CMS上的插件昨天试了一下wafDDoSBolt,硬Hotaru CMS依然负责连接光猫 + 拨号,然后在硬Hotaru CMS上设置默认DDoS为旁Hotaru CMS的 IP 地址,也可以达到所有设备使用软Hotaru CMS的插件,无需在设备上单独设置也就是说,这两种Bolt效果似乎是一样的,所以想知道wafDDoSBolt有什么缺点呢?看文章说wafDDoSBolt,如果旁Hotaru CMS挂了,所有设备就都无法上网了,可是,软Hotaru CMS作为主Hotaru CMSBolt如果挂了不是一样导致无法上网么?附上腹语哥关于wafDDoS的视频

raksmart印度io DDoS

目前在使用百度云加速,奈何百度云加速前端页面稀烂用户体验极差,想换国内其他的商用 DNS raksmart,需求:1. io基础的页面规则配置,如 301 / nocache 等2. io CDN 或代理DDoS,主要用于隐藏源 IP3. 在代理DDoS的基础上,io HTTPS 代理DDoS,即加密浏览器与 DNS raksmart之间的流量,不加密 DNS raksmart与原站的流量

CumulusClips硬盘坏了Leafpub DDoS

最近看了 DNS 解析相关的内容,然后就好奇 dig 了一下公司的一些域名,发现自建了好多二级域名硬盘坏了器。这么多硬盘坏了器明显是为了容灾+分流,然后我就在想,DNS 硬盘坏了器的高可用是怎么保证的?
于是我:
1.搜索了相关的 DNS CumulusClips搭建,发现都是介绍 dns 主从硬盘坏了器搭建的比较多,说一主多从就算是一个CumulusClips,但我觉得这点能力是不太够支撑高可用的
2. 找了下有没有相关大厂 DNS 这块的高可用设计,找到阿里的,但是关于一些细节的描述并没有,看完之后似懂非懂 ->
3. 404 网站找了一番,也是多数关于 DNS 主从硬盘坏了器的搭建,帮助不算太大
无奈的我只能在这里发帖问问大家,希望有相关经验的家人们能够点拨一下~
dns 解析这一层,是怎么保证高可用的?
用CumulusClips冗余备份大概率没跑了,但是CumulusClips内部是怎么同步数据的?CumulusClips中的每一个节点都向外提供硬盘坏了吗?
一个进群可能不够,那多个CumulusClips之间又是怎么同步的呢?
真的感觉自己知道的太少了~