配置要求
处理器:64位 1千兆赫(GHz)或更快。
内存:不小于2G
磁盘空间:不小于8G
部署环境 软件依赖:Docker CE 20.10.14 版本以上,Docker Compose 2.0.0 版本以上。
重要提示
确保服务器已安装并配置好Docker和Docker Compose。
建议使用root用户或具有sudo权限的用户部署。
uuWAF默认监听80、443、4443端口,确保该端口未被其他服务占用。
uuWAF7.0版本开始,社区版限制10个站点,因此本文以6.8.0版本为例。
部署步骤(Docker Compose) 编写docker-compose.yml文件
以下为uuWAF6.8.0版本的docker-compose.yml文件,您可以根据实际情况进行调整。
若需要数据持久化,需要在容器运行一段时间后,将数据卷复制到本地目录,并使用chmod -R 777命令设置权限。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 networks: wafnet: name: wafnet driver: bridge ipam: driver: default config: - gateway: 172.31 .255 .1 subnet: 172.31 .255 .0 /24 driver_opts: com.docker.network.bridge.name: wafnet services: uuwaf: image: uusec/nanqiang:v6.8.0 ulimits: nproc: 65535 nofile: soft: 102400 hard: 102400 container_name: uuwaf networks: wafnet: ports: - "80:80" - "443:443" - "4443:4443" volumes: - wafshared:/uuwaf command: ["/run.sh" ] environment: - TZ=Asia/Shanghai - UUWAF_MYSQL_PASSWORD=Safe3.WAF links: - wafdb depends_on: - wafdb wafdb: image: percona:8 container_name: wafdb networks: wafnet: volumes: - wafshared:/docker-entrypoint-initdb.d - wafdata:/var/lib/mysql environment: - TZ=Asia/Shanghai - INIT_ROCKSDB - MYSQL_MAX_CONNECTIONS=512 - MYSQL_ROOT_PASSWORD=Safe3.WAF volumes: wafshared: wafdata:
官方脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 #!/bin/bash abort () { echo -e "\033[31m[南墙] $*\033[0m" exit 1 } if [ -z "$BASH " ]; then abort "请用 bash 执行本脚本,参考最新的官方技术文档 https://waf.uusec.com/" fi if [ "$EUID " -ne "0" ]; then abort "请以 root 权限运行" fi cat /proc/cpuinfo | grep ssse3 > /dev/null 2>&1if [ $? -ne "0" ]; then abort "需要运行在支持 x86-64-v2 的 CPU 上,请开启对应CPU指令集的支持" fi if [ ! $(command -v docker) ]; then curl -sSLk https://get.docker.com/ | bash if [ $? -ne "0" ]; then abort "自动安装Docker运行环境失败,请按照https://docs.docker.com/engine/install/指引手工安装Docker" fi systemctl start docker && systemctl enable docker fi docker compose version > /dev/null 2>&1 if [ $? -ne "0" ]; then abort "未发现docker compose命令,请安装Docker Compose插件" fi DC_CMD="docker compose" SCRIPT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]} " ) " && pwd ) " cd "$SCRIPT_PATH " stop_uuwaf (){ $DC_CMD down } uninstall_uuwaf (){ stop_uuwaf docker rm -f uuwaf wafdb > /dev/null 2>&1 docker network rm wafnet > /dev/null 2>&1 docker images|grep nanqiang|awk '{print $3}' |xargs docker rmi -f docker volume ls |grep wafshared|awk '{print $2}' |xargs docker volume rm -f } start_uuwaf (){ if [ $(command -v netstat) ]; then port_status=`netstat -nlt|grep -E ':(80|443|4443)\s' |wc -l` if [ $port_status -gt 0 ]; then echo -e "\t 端口80、443、4443中的一个或多个被占用,请关闭对应服务或修改其端口" exit 1 fi fi $DC_CMD up -d } update_uuwaf (){ uninstall_uuwaf start_uuwaf } restart_uuwaf (){ stop_uuwaf start_uuwaf } clean_uuwaf (){ docker system prune -a -f docker volume prune -a -f } start_menu (){ clear echo "=========================" echo "南墙Docker管理" echo "=========================" echo "1. 启动" echo "2. 停止" echo "3. 重启" echo "4. 更新" echo "5. 卸载" echo "6. 清理" echo "7. 退出" echo read -p "请输入数字:" num case "$num " in 1) start_uuwaf echo "启动完成" ;; 2) stop_uuwaf echo "停止完成" ;; 3) restart_uuwaf echo "重启完成" ;; 4) update_uuwaf echo "更新完成" ;; 5) uninstall_uuwaf echo "卸载完成" ;; 6) clean_uuwaf echo "清理完成" ;; 7) exit 1 ;; *) clear echo "请输入正确数字" ;; esac sleep 3s start_menu } start_menu
部署容器
等待容器启动完成,即可访问uuWAF管理后台(https://服务器IP:4443)。
默认用户名和密码为:admin/Passw0rd!
部署步骤(宿主机安装) 添加站点
登录管理后台,在站点管理中添加需要防护的站点。
配置站点的域名、监听端口、证书等信息。
启用站点防护,即可开始对该站点进行防护。
上传证书 修改域名DNS指向 到域名服务商管理后台把域名DNS A记录的ip地址改为南墙服务器ip地址。
测试连通性 访问站点域名查看网站是否能够打开,查看返回的http header头server字段是否为uuWAF。
补充内容 若镜像已失效,则可以使用以下备用镜像。
1 docker.cnb.cool/kimikkorow/docker-sync/percona:8_amd64
1 docker.cnb.cool/kimikkorow/docker-sync/uusec-nanqiang:v6.8.0_amd64