WishMeLz

生活其实很有趣

网站防护

这个脚本备份网站

wget --mirror -t 2 -S -N -k https://blog.itsse.cn -P /home/wwwroot/public/

1.使用wget命令,下载一份网站的镜像(网站上公开的所有内容...
2.得到一份静态镜像(里面有html/jpg/...;
3.其中的参数-k为将链接转化为本地路径;
4.其中的参数-P为备份保存路径,届时会自动创建文件夹,文件名字将以网站名字命名;
5.最终得到 /home/wwwroot/public/blog.itsse.cn;

使用静态镜像

修改nginx配置路径以使用静态镜像;

index index.html index.htm index.php default.html default.htm default.php index.log main.html;
root /home/wwwroot/pubilc/;

以上是正确的网站目录

index index.html index.htm index.php default.html default.htm default.php index.log main.html;
root /home/wwwroot/public/blog.itsse.cn;

修改配置到备份文件夹,修改后重启 nginx 即可;

动静态切换

/home/cpuStatus.sh

该脚本用于检查每分钟的CPU负载情况,达到阈值(比如CPU使用率达到80%)则记录至/home/100cpu.log;

#!/bin/bash
##CPU判定

function GetSysCPU 
 {
   CpuIdle=`vmstat 1 5 |sed -n '3,$p' | awk '{x = x + $15} END {print x/5}' | awk -F. '{print $1}'` 
   CpuNum=`echo "100-$CpuIdle" | bc` 
   echo $CpuNum 
 }

   usage=`GetSysCPU` 
   max=80 #CPU阈值,超过则记录至100cpu.log

if [ ${usage} -ge $max ];
then
date=$(env LANG=en_US.UTF-8 date "+%e/%b/%Y/%R")
echo "$date,CPU负载为$usage..." >> /home/100cpu.log
else 

date=$(env LANG=en_US.UTF-8 date "+%e/%b/%Y/%R")
##echo "$date,CPU负载为$usage%..." >> /home/100cpu.log
echo "${date}" "CPU负载正常..."

fi

/home/CPUcheck.sh

该脚本用于统计 /home/100cpu.log 的记录值,统计一定时间范围(本示例是3分钟)内CPU负载超标次数,本示例中超标次数超过2次则切换使用静态镜像

#!/bin/bash

##判定层
ps -fe|grep "wget" |grep -v grep
if [ $? -ne 0 ]
#判定层

then

##执行层
> /home/100cpu.statistics.log; ##清空记录
wc -l /home/100cpu.log >> /home/100cpu.statistics.log #记录
results=$(awk '{print $1}' /home/100cpu.statistics.log) #记录
> /home/100cpu.log; #清空记录
max=2 #触发阈值为2次

if [ $results -ge $max  ];
then
   /home/switch2static.sh; #非备份情况下超过阈值则触发静态
else
date=$(env LANG=en_US.UTF-8 date "+%e/%b/%Y/%R")
/home/sec.ddoscheck.normal.sh; #切换至正常状态
echo "${date}" "已切换至正常模式..." >> /home/nglog.log; #记录操作日志
fi

##执行层

else
#Wget正在备份
date=$(env LANG=en_US.UTF-8 date "+%e/%b/%Y/%R")
echo "${date}" "CPU高,主要是因为在备份..." >> /home/nglog.log; #记录操作日志
fi

/home/switch2static.sh

该脚本用于切换 nginx 配置文件,并加载配置使之生效;

#!/bin/bash
date=$(env LANG=en_US.UTF-8 date "+%e/%b/%Y/%R")
echo "${date}" "已进入静态防御模式..." >> /home/nglog.log; #记录操作日志
cp /usr/local/nginx/conf/vhost/blog.itsse.cn.conf.ddos  /usr/local/nginx/conf/vhost/blog.itsse.cn.conf; #博客切至静态配置
nginx -s reload #reload 配置使生效

/home/sec.ddoscheck.normal.sh

该脚本用于切换 nginx 配置文件 至正常状态;

/bin/cp /usr/local/nginx/conf/vhost/blog.itsse.cn.conf.bak  /usr/local/nginx/conf/vhost/blog.itsse.cn.conf #.bak为正常nginx配置备份
nginx -s reload;

使用crontab自动执行脚本

最后一步,使CPUcheck.sh/cpuStatus..sh脚本的执行自动

root@localhost:/home#  crontab -e
*/3 * * * * /home/CPUcheck.sh #每3分钟检测是否超过阈值
*/1 * * * * /home/cpuStatus.sh #每分钟记录一次CPU值