CentOS 7.6 【内网离线环境】离线部署(雷池WAF)

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

### 如何在 CentOS 7 上安装配置 Web 应用防火墙 (WAF) #### 准备工作 为了确保顺利部署 WAF,在开始之前需确认已准备好一台运行 CentOS 7 的服务器环境[^2]。 #### 安装 OpenResty 和 ModSecurity 对于基于 Nginx 的 WAF 实现,推荐采用 OpenResty 或者直接集成 ModSecurity 到标准版 Nginx 中。这里介绍通过 OpenResty 来构建支持 WAF 功能的服务端: 1. **安装依赖包** 使用 yum 工具来更新现有软件包并安装必要的开发工具和库文件: ```bash sudo yum update -y && sudo yum groupinstall "Development Tools" -y ``` 2. **下载并编译安装 OpenResty** 访问官方 GitHub 页面获取最新版本号,并按照说明文档完成源码编译过程。注意启用 `--with-compat` 参数以便后续加载第三方模块如 ModSecurity。 ```bash wget https://openresty.org/download/openresty-1.19.3.1.tar.gz tar zxvf openresty-1.19.3.1.tar.gz cd openresty-1.19.3.1/ ./configure --with-compat make && sudo make install ``` 3. **安装 ModSecurity 及其规则集** 下载 ModSecurity 源代码及其 OWASP CRS(Core Rule Set),然后将其放置到合适的位置供 OpenResty 加载使用。 ```bash git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity.git cd ModSecurity git submodule init git submodule update ./build.sh ./configure make sudo make install # 获取OWASP核心规则集合 git clone https://github.com/coreruleset/coreruleset.git /usr/local/nginx/conf/modsec ln -s /usr/local/nginx/conf/modsec/crs-setup.conf /usr/local/nginx/conf/modsec/main_rules_file.conf ``` 4. **配置 Nginx/OpenResty** 修改 `/usr/local/nginx/conf/nginx.conf` 文件加入以下内容以激活 WAF 支持: ```nginx http { ... modsecurity on; modsecurity_rules_file /usr/local/nginx/conf/modsec/main_rules_file.conf; server { listen 80; location / { root html; index index.html index.htm; try_files $uri @backend; } location @backend { proxy_pass http://localhost:8080; # 假设后端服务监听于该地址 } } } ``` 5. **测试与验证** 启动 nginx 并尝试访问站点首页查看是否正常显示 “hello world”,这表示 OpenResty 成功启动并且可以处理请求;接着可以通过发送恶意 HTTP 请求测试 WAF 是否能够有效拦截攻击行为[^1]。 6. **调整优化** 根据实际需求修改默认的安全策略设置,比如自定义错误页面、日志记录级别等参数,具体可参阅相关手册了解更详细的选项列表[^3]。 ```python print("以上步骤完成后即可实现在CentOS 7上搭建具备基本防护能力的Web应用防火墙") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值