CentOS 7.6 【内网离线环境】离线部署(雷池WAF)
一、介绍
内网环境由于无法连接导互联网,不能直接安装(雷池WAF),只能选择离线部署的方式。
1. 部署逻辑
通过一台能联网的主机在线部署(雷池WAF),让然后打包到同版本内网主机上进行部署。
主机大版本一致就行,最好大小版本全部一致(我这里公网:CentOS 7.6 内网:CentOS 7.9)
2. 部署步骤
第一步:
准备一台与内网主机大版本一致能够连接互联网的主机进行在线部署,制作(雷池WAF)离线rpm包,将(雷池WAF)离线rpm包上传至在内网主机,创建新的yum源配置文件;下载雷池社区版镜像包,并传输到需要安装雷池的内网服务器上。
第二步:
在内网主机中离线安装较新版本的docker容器,下载雷池社区版镜像包,并传输到需要安装雷池的内网服务器上,离线镜像包传输完成之后,执行以下命令加载镜像。
cat image.tar.gz | gzip -d | docker load
第三步:
在内网主机中离线安装并启动docker-compose;
注意: docker-compose插件安装时,有个小坑,下面有详细解释
第四步:
访问和配置(雷池WAF),即可愉快的使用(雷池WAF)了。
二、在线安装(雷池WAF)
1. 关闭firewalld
systemctl stop firewalld
systemctl disable firewalld
2. 永久关闭selinux
永久关闭 SELinux:修改 /etc/selinux/config 文件中的 SELINUX=enforcing 为 SELINUX=disabled,保存并退出。
vim /etc/selinux/config
# SELINUX=enforcing
SELINUX=disabled
3. 设置安装时自动将rpm包保存到指定位置
创建自定义保存(雷池WAF)rpm包文件目录
mkdir /root/MySafeLineWAFrpmPackages
vi /etc/yum.conf
修改如下两行:
cachedir=/root/MySafeLineWAFrpmPackages
keepcache=1
保存。
4. 修改使用国内软件源
cd /etc/yum.repos.d/
cp CentOS-Base.repo CentOS-Base.repo.backup
rm CentOS-Base.repo
vi CentOS-Base.repo
写入如下内容:
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
#baseurl=http://vault.centos.org/7.9.2009/x86_64/os/
baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
#baseurl=http://vault.centos.org/7.9.2009/x86_64/os/
baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#$baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
#baseurl=http://vault.centos.org/7.9.2009/x86_64/os/
baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
#baseurl=http://vault.centos.org/7.9.2009/x86_64/os/
baseurl=http://vault.centos.org/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
执行如下命令:
yum clean all
yum makecache
5. 安装docker
5.1. 卸载旧版docker
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate ocker-logrotate docker-engine
5.2. 全新安装
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce docker-ce-cli containerd.io
systemctl start docker
sudo systemctl enable docker
docker --version
6. 安装雷池
6.1. 下载雷池社区版镜像包
雷池社区官网:https://docs.waf-ce.chaitin.cn/zh/
先找一台能上网的机器,下载雷池社区版镜像包,并传输到需要安装雷池的服务器上。
离线镜像包传输完成之后,在上传的目录中执行以下命令加载镜像
cat image.tar.gz | gzip -d | docker load
6.2. 创建(雷池WAF)目录
mkdir -p "/data/safeline"
该命令会创建 /data/safeline 目录作为雷池的安装目录(你可以根据你的实际情况选择安装目录)
请确保该目录至少有 5GB 的存储空间(如果日常流量较大,请保证充足的磁盘容量)
6.3. 下载 compose 编排脚本
使用下方的命令进入雷池安装目录,并下载 docker compose 编排脚本
cd "/data/safeline"
wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"
下载的编排脚本复制到其它地方保存,供离线安装使用。
6.4. 配置 compose 环境变量
使用下方的命令进入雷池安装目录,并创建 .env 配置文件
cd "/data/safeline"
touch ".env"
使用文本编辑器打开 .env 文件,写入下方的内容
SAFELINE_DIR=/data/safeline
IMAGE_TAG=latest
MGT_PORT=9443
POSTGRES_PASSWORD=yourpassword
SUBNET_PREFIX=172.22.222
IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com/chaitin-safeline
ARCH_SUFFIX=
RELEASE=
6.5. 启动雷池
现在万事具备,使用以下命令启动雷池服务
cd "/data/safeline"
docker compose up -d
命令执行成功则代表雷池安装成功,现在你可以访问雷池控制台了
6.5.1 启动编排脚本报错
unknown shorthand flag: 'd' in -d
错误解决参考: https://blog.youkuaiyun.com/wenxuankeji/article/details/139033079
7. 访问雷池控制台
7.1. 登录雷池
第一次登录雷池需要初始化你的管理员账户(默认会执行),如果没有找到账户密码,手动执行以下命令即可
docker exec safeline-mgt resetadmin
命令执行完成后会随机重置 admin 账户的密码,输出结果如下
[SafeLine] Initial username:admin
[SafeLine] Initial password:**********
[SafeLine] Done
雷池安装成功以后,你可以打开浏览器访问 https://:9443/ 来使用雷池控制台。
注意: 需要在防火墙中对9443的端口进行放行,才能成功访问成功。
8. 制作离线rpm包
8.1. 安装createrepo
yum install createrepo
8.2. 生成repodata文件
cd /root
createrepo MySafeLineWAFrpmPackages/
如果有新添加的rpm包,需要使用createrepo --update命令,例如:
createrepo --update MySafeLineWAFrpmPackages/
8.3. 压缩
cd /root
tar -zcvf MySafeLineWAFrpmPackages.tar.gz MySafeLineWAFrpmPackages
把压缩后的软件包复制到其它地方,保存好。
三、离线安装(雷池WAF)
如无特殊,下面的操作在离线机器上。
1. 下载离线包
把刚才的离线包MySafeLineWAFrpmPackages.tar.gz传到离线机器上。
scp MySafeLineWAFrpmPackages.tar.gz root@192.168.48.147:/root/
在离线机器中解压缩
cd /root
tar -zxvf MySafeLineWAFrpmPackages.tar.gz
2. 关闭firewalld
systemctl stop firewalld
systemctl disable firewalld
3. 关闭selinux
永久关闭 SELinux:修改 /etc/selinux/config 文件中的 SELINUX=enforcing 为 SELINUX=disabled,保存并退出。
vim /etc/selinux/config
# SELINUX=enforcing
SELINUX=disabled
4. 备份原有的yum源配置文件
cd /etc/yum.repos.d/
mkdir backup
mv * backup
5. 创建新的yum源配置文件
vi localhost-yum.repo
文件中写入如下内容
[localhost-base]
name=localhost-base
baseurl=file:///root/MySafeLineWAFrpmPackages
gpgcheck=0
enabled=1
更新一下缓存数据
yum clean all
yum makecache
yum repolist
6. 安装docker
6.1. 卸载旧版docker
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate ocker-logrotate docker-engine
6.2. 全新安装
yum install -y yum-utils device-mapper-persistent-data lvm2
yum -y install docker-ce docker-ce-cli containerd.io
systemctl start docker
sudo systemctl enable docker
docker --version
7. 安装(雷池WAF)
7.1. 下载镜像包
雷池社区版镜像包传输到需要安装雷池的服务器上。
离线镜像包传输完成之后,到上传的目录中执行以下命令加载镜像
cat image.tar.gz | gzip -d | docker load
7.2. 创建(雷池WAF)目录
mkdir -p "/data/safeline"
该命令会创建 /data/safeline 目录作为雷池的安装目录(你可以根据你的实际情况选择安装目录)
请确保该目录至少有 5GB 的存储空间(如果日常流量较大,请保证充足的磁盘容量)
7.3. 下载 compose 编排脚本
把之前保存的编排脚本上传到/data/safeline目录中。
7.4. 配置 compose 环境变量
使用下方的命令进入雷池安装目录,并创建 .env 配置文件
cd "/data/safeline"
touch ".env"
使用文本编辑器打开 .env 文件,写入下方的内容
SAFELINE_DIR=/data/safeline
IMAGE_TAG=latest
MGT_PORT=9443
POSTGRES_PASSWORD=yourpassword
SUBNET_PREFIX=172.22.222
IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com/chaitin-safeline
ARCH_SUFFIX=
RELEASE=
7.5. 启动雷池
现在万事具备,使用以下命令启动雷池服务
cd "/data/safeline"
docker compose up -d
命令执行成功则代表雷池安装成功,现在你可以访问雷池控制台了
7.5.1. 启动 compose 编排脚本报错解决
unknown shorthand flag: 'd' in -d
See 'docker --help'.
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Common Commands:
run Create and run a new container from an image
exec Execute a command in a running container
ps List containers
build Build an image from a Dockerfile
pull Download an image from a registry
push Upload an image to a registry
images List images
login Authenticate to a registry
logout Log out from a registry
search Search Docker Hub for images
version Show the Docker version information
info Display system-wide information
Management Commands:
builder Manage builds
container Manage containers
context Manage contexts
image Manage images
manifest Manage Docker image manifests and manifest lists
network Manage networks
plugin Manage plugins
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
Swarm Commands:
swarm Manage Swarm
Commands:
attach Attach local standard input, output, and error streams to a running container
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
export Export a container's filesystem as a tar archive
history Show the history of an image
import Import the contents from a tarball to create a filesystem image
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
save Save one or more images to a tar archive (streamed to STDOUT by default)
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
wait Block until one or more containers stop, then print their exit codes
Global Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket to connect to
-l, --log-level string Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Run 'docker COMMAND --help' for more information on a command.
For more help on how to use Docker, head to https://docs.docker.com/go/guides/
重新安装高版本docker,手动下载安装docker-compose插件
错误解决参考: https://blog.youkuaiyun.com/m0_52985087/article/details/140960098
-bash: docker-compose: command not found
提示当前未安装docker或docker-compose有效解决方案!
错误解决参考: https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=129572
8. 访问雷池控制台
8.1. 登录雷池
第一次登录雷池需要初始化你的管理员账户(默认会执行),如果没有找到账户密码,手动执行以下命令即可
docker exec safeline-mgt resetadmin
命令执行完成后会随机重置 admin 账户的密码,输出结果如下
[root@ecs-nx0t1 software]# docker exec safeline-mgt resetadmin
[INFO] Initial username:admin
[INFO] Initial password:q8XEDp1y
[INFO] Done
2025/02/08 10:57:00 [INFO] model/user.go:161 admin password has been reset
雷池安装成功以后,你可以打开浏览器访问 https://:9443/ 来使用雷池控制台。
注意: 需要在防火墙中对9443的端口进行放行,才能成功访问成功。
参考:https://www.cnblogs.com/nangongergou/p/18549879