如何將堡塔云WAF備份、遷移到新的服務器
使用了一段時間的堡塔云WAF,覺得免費版的還是不錯的,但是一直在單機運行,沒有備份就沒有安全感!
今天,星哥就結合實際案例,帶你走一遍低風險的 WAF 備份流程,確保你在操作中既有底又高效。
需求分析
1.需要將生產環境的堡塔WAF備份
2.將備份文件拷貝到另外一臺服務器中
3.恢復備份文件,實現備份+遷移堡塔WAF的工作。
官方的參考文檔:
https://www.kancloud.cn/kern123/cloudwaf/3209672問題在于需要停機備份
停止WAF:btw stop在線服務一秒鐘都無法停機,所以現在需要做個不停機、自動的備份方案。
實際操作中可以不停機,數據不會丟失。
服務器環境
兩臺服務器A 和B
A作為源服務器,將文件和數據庫打包備份。
B作為目標服務器,將備份文件恢復到此服務器中。
A的IP : 192.168.1.3 B的IP : 192.168.1.2在A服務器中操作
cd /www/ && tar -zcvf cloud_waf.tar.gz cloud_waf ll -h total 97M drwxr-xr-x 7 root root 4.0K Aug 5 17:43 cloud_waf -rw-r--r-- 1 root root 97M Aug 13 18:11 cloud_waf.tar.gz下載備份文件 cloud_waf.tar.gz可以使用 Xftp、Winscp 等工具下載到本地電腦中,然后再上傳到新的服務器到 /root 目錄
scp cloud_waf.tar.gz root@B服務器IP:/root/目標服務器需要做的步驟 解壓tar -zxf cloud_waf.tar.gz cd cloud_waf # 查看備份文件 ll total 5612 -rw-r--r-- 1 root root 65137 Jul 29 17:52 btw.init -rw-r--r-- 1 root root 347 Jul 29 17:52 btw.service -rw-r--r-- 1 root root 54595 Jul 29 17:52 cloudwaf_check.sh drwxr-xr-x 8 root root 155 Aug 4 10:41 console -rw-r--r-- 1 root root 65575 Jul 29 17:52 master_btw.init -rw-r--r-- 1 root root 55090 Jul 29 17:52 master_cloudwaf_check.sh drwxr-xr-x 5 root root 38 Jul 24 14:02 mysql drwxr-xr-x 5 root root 41 Jul 24 14:02 nginx -rw-r--r-- 1 root root 65908 Jul 29 17:52 slave_btw.init -rw-r--r-- 1 root root 42877 Jul 29 17:52 slave_cloudwaf_check.sh -rw-r--r-- 1 root root 4521218 Jul 29 17:52 submit.gz drwxr-xr-x 7 root root 92 May 26 15:55 vhost -rw-r--r-- 1 root root 853792 Jul 29 17:52 waf-acme_sh.zip drwxr-xr-x 8 root root 138 Aug 13 16:52 wwwroot建立目錄與恢復mysql數據mkdir -pv /www/cloud_waf/nginx/conf.d/waf/ \cp -arpf /root/cloud_waf/nginx/conf.d/waf/mysql_default.pl /www/cloud_waf/nginx/conf.d/waf/mysql_default.pl mv /root/cloud_waf/mysql /www/cloud_waf/mysql在目標服務器中安裝寶塔云WAFURL=https://download.bt.cn/cloudwaf/scripts/install_cloudwaf.sh && if [ -f /usr/bin/curl ];then curl -sSO "$URL" ;else wget -O install_cloudwaf.sh "$URL";fi;bash install_cloudwaf.sh注意:這里請忽略顯示的登錄信息,因為下面會將源服務器的云WAF數據恢復到目標服務器中。
安裝成功
![]()
image-20250814145906941 安裝成功后,等待5秒,停止云WAF
sleep 5 && btw stop等待5秒后,恢復舊云WAF的數據sleep 5 && \cp -arpf /root/cloud_waf/* /www/cloud_waf注意:查看是否有錯誤
啟動云WAF
btw start 顯示: btw start Starting cloudwaf_nginx... done Starting cloudwaf_mysql... done Starting ipfilter... done Starting bt-cloudwaf... done驗證是否成功請使用舊的云WAF帳號與密碼進行登錄,如果忘記了可以使用 btw 10 命令重置密碼
![]()
image-20250814155442628 檢查云WAF功能是否正常?
如何檢查:可以檢查舊的云WAF有數據的界面,比如
首頁概覽
攔截日志
操作日志
網站列表
![]()
img
顯示有數據,則遷移正常。
寶塔云的mysql密碼
一開始備份想要做文件和mysql數據庫的分開備份,就要知道mysql的密碼,查找了很久終于找到了
查找mysql密碼
cd /www/cloud_waf vi ./cloudwaf_check.sh check_database=$(docker exec -i $MYSQL_NAME mysql -u root -p"$MYSQL_PASS" -e " SHOW DATABASES LIKE 'btwaf';" 2>&1 ) 找到MYSQL_PASS的關鍵字 MYSQL_PASS="$PASS_config"PASS_config又是什么,搜索一下
PASS_config=$(cat $setup_path/nginx/conf.d/waf/config/config.json | sed -nE 's/.*"password":\s*"([^"]*)".*/\1/p') 把 $setup_path 改成服務器路徑: PASS_config=$(cat /www/cloud_waf/nginx/conf.d/waf/config/config.json | sed -nE 's/.*"password":\s*"([^"]*)".*/\1/p') [root@node2 cloud_waf]# echo $PASS_config e7ddd5e2XXXXXXXXXXX (就是mysql的密碼)登錄mysql試著登錄一下mysql,進入容器登錄mysql
[root@node2 cloud_waf]# docker exec -it cloudwaf_mysql /bin/bash bash-4.4# bash-4.4# bash-4.4# mysql -p 輸入剛才的密碼 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 389132 Server version: 8.1.0 MySQL Community Server - GPL Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.新增一個遠程mysql賬號使用以下命令:
創建管理員賬號(密碼要盡量設置復雜,我是本地測試的所以設置 123456):
CREATE USER 'star'@'%' IDENTIFIED WITH mysql_native_password BY '123456';授予管理員權限:
GRANT ALL PRIVILEGES ON *.* TO 'star'@'%' WITH GRANT OPTION;刷新權限:
FLUSH PRIVILEGES;驗證一下是否可以遠程登錄
mysql -u'star' -h'192.168.1.2' -P'33060' -p'123456' ERROR 2002 (HY000): Can't connect to MySQL server on '192.168.1.2' (115)居然遠程報錯,把防火墻放開
firewall-cmd --zone=public --add-port=33060/tcp --permanent firewall-cmd --reload [root@node2 cloud_waf]# iptables -L -n|grep 3306 ACCEPT tcp -- 0.0.0.0/0 172.17.0.2 tcp dpt:3306 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:33060 ctstate NEW,UNTRACKED端口已放開,還是不能遠程連接mysql。
端口也放開了、重啟了mysql才可以遠程連接mysql了
systemctl restart docker再就可以使用mysqldump等數據庫備份工具備份數據庫。
用Navicat查看數據表:
![]()
img
端口放開33060,生產環境要慎用,密碼一定要復雜的!
最后
堡塔云 WAF 遷移并不復雜,但細節決定成敗。提前備份、環境一致是穩妥遷移的三大關鍵。照著星哥這套流程執行,也能胸有成竹。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.