我們?cè)诎惭b了Linux服務(wù)器并使用了寶塔面板后發(fā)現(xiàn),寶塔的WAF需要升級(jí)版本才能使用。盡管市面上有很多免費(fèi)的開(kāi)源WAF解決方案,但我們對(duì)它們的學(xué)習(xí)成本感到有些高,而且對(duì)于我們這個(gè)剛開(kāi)始建站的小型項(xiàng)目來(lái)說(shuō),也不想花費(fèi)一千多塊錢(qián)來(lái)購(gòu)買(mǎi)商業(yè)WAF每年的許可費(fèi)。
因此,我在網(wǎng)上進(jìn)行了一番搜索,希望能找到一款簡(jiǎn)單上手的開(kāi)源WAF。最終,我發(fā)現(xiàn)了長(zhǎng)亭公司開(kāi)發(fā)的雷池WAF,它非常適合我們使用。下面一起來(lái)學(xué)習(xí)一下,內(nèi)容很干,點(diǎn)贊收藏加關(guān)注:
一、檢查配置條件
不過(guò)有以下配置需求,一般主機(jī)也達(dá)到要求了。
操作系統(tǒng):Linux
指令架構(gòu):x86_64
軟件依賴(lài):Docker 20.10.14 版本以上
軟件依賴(lài):Docker Compose 2.0.0 版本以上
最小化環(huán)境:1 核 CPU / 1 GB 內(nèi)存 / 5 GB 磁盤(pán)
可以逐行執(zhí)行以下命令來(lái)確認(rèn)服務(wù)器配置
uname -m # 查看指令架構(gòu)
docker version # 查看 Docker 版本
docker compose version # 查看 Docker Compose 版本
docker-compose version # 同上(兼容老版本 Docker Compose)
cat /proc/cpuinfo # 查看 CPU 信息
cat /proc/meminfo # 查看內(nèi)存信息
df -h # 查看磁盤(pán)信息
lscpu | grep ssse3 # 確認(rèn) CPU 是否支持 ssse3 指令集
二、安裝
官方介紹有三種安裝方法,分別是在線安裝、離線安裝、和牧云助手安裝
1、在線安裝
龍哥就喜歡這種方法,用下面一行命令搞定
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
不過(guò)這個(gè)方法也有弊端,有些主機(jī)網(wǎng)絡(luò)不好或者就干脆是連不了外網(wǎng)。那就要用到下面兩種了
2、離線安裝
如果你的服務(wù)器無(wú)法連接互聯(lián)網(wǎng)環(huán)境或連接Docker Hub網(wǎng)絡(luò)不穩(wěn)定,可以通過(guò)鏡像包的安裝方式進(jìn)行安裝。以下是安裝步驟:
- 首先,下載"雷池"社區(qū)版鏡像包并將其傳輸?shù)叫枰惭b"雷池"的服務(wù)器上。
- 執(zhí)行以下命令加載鏡像:
cat image.tar.gz | gzip -d | docker load
- 創(chuàng)建并進(jìn)入"雷池"安裝目錄:
mkdir -p safeline # 創(chuàng)建safeline目錄
cd safeline # 進(jìn)入safeline目錄
- 下載編排腳本并將其傳輸?shù)絪afeline目錄中。
- 執(zhí)行以下命令生成"雷池"運(yùn)行所需的相關(guān)環(huán)境變量:
echo "SAFELINE_DIR=$(pwd)" >> .env
echo "IMAGE_TAG=latest" >> .env
echo "MGT_PORT=9443" >> .env
echo "POSTGRES_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> .env
echo "REDIS_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> .env
echo "SUBNET_PREFIX=172.22.222" >> .env
- 執(zhí)行以下命令啟動(dòng)"雷池":
docker compose up -d
到此就按照成功了,可以
請(qǐng)注意,以上是忽略了Docker安裝過(guò)程的步驟,對(duì)Docker感興趣的朋友下次有時(shí)間咱們單獨(dú)來(lái)記錄學(xué)習(xí)一下。
另外龍哥在測(cè)試的時(shí)候想到大家可能也跟我一樣比較懶,龍哥這里也找了一份一鍵安裝腳本,感興趣的自行研究一下。
#!/bin/bash
echo 加載鏡像
cat image.tar.gz | gzip -d | docker load
echo 創(chuàng)建安裝目錄
DIR=/data/docker/safeline/
mkdir -p $DIR
echo 復(fù)制編排文件
cp -f compose.yaml $DIR
cd ..
rm -rf waf/
echo 添加配置
cat >> ${DIR}.env << EOF
SAFELINE_DIR=${DIR}
IMAGE_TAG=latest
MGT_PORT=9443
POSTGRES_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)
REDIS_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)
SUBNET_PREFIX=169.254.0
EOF
cat ${DIR}.env
echo 啟動(dòng)鏡像
docker-compose -f ${DIR}compose.yaml up -d
echo 安裝成功
echo 訪問(wèn):http://ip:9443,登錄雷池控制臺(tái)
注意要將鏡像包、編排文件、安裝腳本,上傳到服務(wù)器:/data/docke/waf 目錄下,沒(méi)有就創(chuàng)建一下
執(zhí)行以下命名一鍵離線包安裝
chmod +x install.sh && ./install.sh
3、使用牧云助手安裝
有興趣的自己去了解一下吧,這也不過(guò)多介紹
四、具體使用和DIV
瀏覽器輸入:ip:9443
注意記得要在寶塔安全組和服務(wù)器安全組添加上該端口號(hào)
成功進(jìn)入后臺(tái),對(duì)了進(jìn)入后臺(tái)是要下載身份驗(yàn)證器綁定的。龍哥這里就不寫(xiě)了,傻瓜式操作。
這里就要說(shuō)明一下waf的工作原理了
原來(lái)我們服務(wù)器是:
用戶——apache——服務(wù)器
現(xiàn)在我們需要把雷池waf放在用戶訪問(wèn)下面
用戶——雷池waf——apache——服務(wù)器
所以我們的網(wǎng)站需要改一下端口,就改成81 然后waf設(shè)置為http的 80
https的443端口也要設(shè)置一下
http自動(dòng)跳轉(zhuǎn)到https
修改雷池waf的nginx配置,將80請(qǐng)求重定向到443,雷池預(yù)留了自定義配置參數(shù)
安裝路徑下,safeline/resources/nginx/custom_params
添加以下配置
return 307 https://www.waf.com$request_uri;
重啟雷池waf的nginx
docker exec safeline-tengine nginx -t
還有很多好用的功能,小伙伴們就自行研究了。
類(lèi)似:站點(diǎn)維護(hù),黑白名單,人機(jī)驗(yàn)證。這都是很實(shí)用的功能。完全免費(fèi)。長(zhǎng)亭科技大大滴良心。
ps:自定義頁(yè)面
很多小伙伴想自定義,403頁(yè)面、維護(hù)頁(yè)面,但是雷池waf默認(rèn)是不允許修改的,每分鐘會(huì)定時(shí)覆蓋掉。
這里給你們提供一個(gè)自定義的思路,因?yàn)檫@些頁(yè)面是通過(guò)nginx容器來(lái)代理跳轉(zhuǎn)的,nginx里面修改配置就行了,然后重啟,所以你懂的吧。
但還是提醒下免費(fèi)版默認(rèn)不允許商用的,這些自定義頁(yè)面屬于個(gè)人行為,小伙伴們研究研究自己玩玩就好。
補(bǔ)充:
我使用的是寶塔面板 lamp 用的apache 搭建網(wǎng)站。
這里需要把443 和80端口給到waf
所以咱們網(wǎng)站這邊需要修改一下默認(rèn)的443端口和80端口
具體修改方法:
nano /www/server/apache/conf/httpd.conf
#Listen 443
#Listen 80
注釋掉修改為
Listen 8443 https
Listen 8080 http
nano /www/server/apache/conf/extra/httpd-ssl.conf
443 修改8443
網(wǎng)站重新保存一下 ssl
完美解決同一服務(wù)器裝waf的端口沖突!
五、更新
可以直接在線升級(jí),執(zhí)行以下命令即可進(jìn)行升級(jí)。
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/upgrade.sh)"
升級(jí)成功后,記得執(zhí)行以下命令刪除舊版本 Docke 鏡像,以釋放磁盤(pán)空間。
docker rmi $(docker images | grep "safeline" | grep "none" | awk '{print $3}')
有部分環(huán)境的默認(rèn) SafeLine 安裝路徑是在 /data/safeline-ce,安裝之后可能會(huì)發(fā)現(xiàn)需要重新綁定 OTP、配置丟失等情況,可以修改 .env 的 SAFELINE_DIR 變量,指向 /data/safeline-ce
離線鏡像
適用于 docker hub 拉取鏡像失敗的場(chǎng)景,手動(dòng)更新鏡像(具體目錄自行修改)。
# cd /path/to/safeline
mv compose.yaml compose.yaml.old
wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml" --no-check-certificate -O compose.yaml
wget "https://waf-ce.chaitin.cn/release/latest/seccomp.json" --no-check-certificate -O seccomp.json
sed -i "s/IMAGE_TAG=.*/IMAGE_TAG=latest/g" ".env"
grep "SAFELINE_DIR" ".env" > /dev/null || echo "SAFELINE_DIR=$(pwd)" >> ".env"
grep "IMAGE_TAG" ".env" > /dev/null || echo "IMAGE_TAG=latest" >> ".env"
grep "MGT_PORT" ".env" > /dev/null || echo "MGT_PORT=9443" >> ".env"
grep "POSTGRES_PASSWORD" ".env" > /dev/null || echo "POSTGRES_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> ".env"
grep "REDIS_PASSWORD" ".env" > /dev/null || echo "REDIS_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> ".env"
grep "SUBNET_PREFIX" ".env" > /dev/null || echo "SUBNET_PREFIX=172.22.222" >> ".env"
#下載 雷池社區(qū)版鏡像包 并傳輸?shù)叫枰惭b雷池的服務(wù)器上,執(zhí)行以下命令加載鏡像
docker load -i image.tar.gz
# 執(zhí)行以下命令替換 Docker 容器
docker compose down
docker compose up -d
OK,升級(jí)完成,下面繼續(xù)上一鍵更新代碼
#!/bin/bash
#雷池waf安裝目錄
DIR=/data/docker/safeline/
echo 備份yaml
mv ${DIR}compose.yaml ${DIR}compose.yaml.old
cp -f compose.yaml ${DIR}
echo 加載鏡像
docker load -i image.tar.gz
cd $DIR
echo 添加配置
sed -i "s/IMAGE_TAG=.*/IMAGE_TAG=latest/g" ".env"
grep "SAFELINE_DIR" ".env" > /dev/null || echo "SAFELINE_DIR=$(pwd)" >> ".env"
grep "IMAGE_TAG" ".env" > /dev/null || echo "IMAGE_TAG=latest" >> ".env"
grep "MGT_PORT" ".env" > /dev/null || echo "MGT_PORT=9443" >> ".env"
grep "POSTGRES_PASSWORD" ".env" > /dev/null || echo "POSTGRES_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> ".env"
grep "REDIS_PASSWORD" ".env" > /dev/null || echo "REDIS_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> ".env"
grep "SUBNET_PREFIX" ".env" > /dev/null || echo "SUBNET_PREFIX=172.22.222" >> ".env"
echo 刪除舊容器
docker-compose down
echo 啟動(dòng)新容器
docker-compose up -d
echo 更新成功
保存為update.sh 將鏡像包、編排腳本、更新腳本,上傳到服務(wù)器 /data/docker/update 目錄下執(zhí)行
chmod +x update.sh && ./update.sh
六、常見(jiàn)問(wèn)題
安裝遇到的常見(jiàn)問(wèn)題
目錄已存在 如果出現(xiàn)提示目錄已存在,則請(qǐng)先刪除默認(rèn)目錄
刪除雷池默認(rèn)安裝目錄
rm -rf /data/safeline
網(wǎng)絡(luò)錯(cuò)誤文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-773488.html
查看網(wǎng)絡(luò)
docker network ls
NETWORK ID NAME DRIVER SCOPE
9184fc154499 bridge bridge local
b0f8e15ec2ba host host local
ac895c25e0d8 none null local
c6e1fa9cfecc safeline-ce bridge local
刪除無(wú)效網(wǎng)絡(luò)
docker network rm c6e1fa9cfecc
官方網(wǎng)站:https://waf-ce.chaitin.cn/docs/
好了,今天就記錄到這,有不明白的地方多看幾遍文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-773488.html
到了這里,關(guān)于linux 服務(wù)器搭建web網(wǎng)站防御秘籍之雷池WAF包含入門(mén)介紹-安裝-使用-升級(jí)更新的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!