一、W12Scan简介
W12Scan是一款网络安全资产扫描引擎。
Github地址:https://github.com/w-digital-scanner/w12scan
二、准备工作:阿里云CentOS
1、去阿里云购买一台服务器,1核2G就够了。
2、在服务器上新建实例,选择创建CentOS 8.1操作系统(推荐在阿里云上使用CentOS 8.1,搭建起来最方便。我试过在阿里云上使用CentOS 7,以及在本地创建的虚拟机上用CentOS 8.1,都遇到了一些奇奇怪怪的问题,会走许多弯路,有兴趣请见文章的“其他环境搭建的时候遇到的问题”)。创建CentOS的时候,可以设置root账号的密码,建好后也可以重置密码,这些操作阿里云都有,不是什么疑难杂症,这里不详细说明了。
3、远程连接到CentOS服务器。阿里云提供远程连接的功能。也可以使用其他工具,比如在VSCode的终端,输入ssh root@xx.xx.xx.xx(阿里云服务器的公网IP地址),回车后输入root账号的密码就能远程连接了。
三、安装Docker
总体原则有三点:一是期间要选择确认,输入 y 即可;二是遇到中断报错啥的,重新执行命令;三是多次执行都不行,就百度。
以下安装步骤亲自实测有效并总结:
1、查看内核版本,CentOS7、8都符合,不查看也没事: uname -a
2、把yum包更新到最新: yum update
3、按顺序照着做: yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、这一步中的containerd.io-1.2.13-3.1.el7.x86_64.rpm以后如果版本有更新,修改以下即可。现在可以直接用: dnf install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm
5、安装docker-ce,它会自己安装需要的依赖: dnf install docker-ce
6、启用: systemctl start docker systemctl restart docker #这个是重启docker的命令,不用执行
7、设置开机启动: systemctl enable docker
8、以上就安装完成了,下面是确认一下版本 docker version docker --version
9、测试一下是否生效: sudo docker run hello-world
如遇到问题,可以学习参考https://blog.csdn.net/u014069688/article/details/100532774
四、安装docker-compose
1、自动安装docker-compose(推荐自动安装): sudo pip3 --default-timeout=200 install -U docker-compose
2、实在自动安装失败,就手动安装docker-compose: dnf install curl -y curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
3、查看确认docker-compose版本: docker-compose -version which docker-compose
五、从github下载源代码并搭建W12Scan
1、安装git: yum install -y git
2、下载源代码(在哪个目录,就下载到哪里,我是在root目录): git clone https://github.com/boy-hack/w12scan
3、下载完后进到w12scan目录下面: cd /root/w12scan
4、启用容器搭建,第一次执行这一步要下载很多资源,时间比较久,大概30分钟,根据网络情况来定: docker-compose up -d
Creating w12scan_elasticsearch_1 ... doneCreating w12scan_redis_1 ... doneCreating w12scan_web_1 ... doneCreating w12scan_client_1 ... done5、查看启用的容器,包含4个容器,检查4个容器的状态十分都是up。如果都是up,那就安装成功: docker-compose ps
6、由于2G内存不够的原因,可能会出现w12scan_elasticsearch_1容器启用失败,状态是Exit 1的情况,那就调整占用的内存: vi docker-compose.yml #编辑docker-compose.yml ,在environment:加上 - ES_JAVA_OPTS=-Xms64M -Xmx256M ,控制占用的内存大小 (按i进入编辑状态,修改完成后,按Esc,再输入“:wq”,按回车退出)
elasticsearch: image: elasticsearch:5.6-alpine environment:- ES_JAVA_OPTS=-Xms64M -Xmx256M
- cluster.name=docker-cluster
- bootstrap.memory_lock=true expose: - "9200"修改docker-compose.yml完成后,再次执行命令 docker-compose up -d 启用容器: docker-compose up -d
7、以上步骤就全部搭建完成了。如果想关闭w12scan系统,就停止容器: docker-compose stop
六、访问w12scan
1、在浏览器输入http://xx.xx.xx.xx:8000/user/login,就能访问了(xx.xx.xx.xx是阿里云服务器的公网IP地址)。账号密码都是boyhack。
2、如果无法访问,就在远程连接的终端里执行命令curl http://xx.xx.xx.xx:8000/user/login,看能否连接,如果能连接,那就说明系统搭建成功的,但是阿里云没有开启8000端口,导致外网无法访问。此时需要去阿里云配置安全规则。这个百度一大堆。
3、如果配置了阿里云安全规则还是不行,那就关闭防火墙: yum install firewalld #安装一下 yum install firewall-config #安装一下 systemctl start firewalld # 启动 systemctl enable firewalld # 开机启动 systemctl stop firewalld # 关闭 systemctl disable firewalld # 取消开机启动 #查看防火墙状态,两句命令都可以: service firewalld status systemctl status firewalld #永久关闭防火墙 systemctl disable firewalld
4、如果遇到报错:ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-2add1a39bc5d -j RETURN: iptables: No chain/target/match by that name. 原因是关闭防火墙之后docker需要重启,执行以下命令重启docker即可: service docker restart
七、其他环境搭建的时候遇到的问题
1、CentOS 7 下安装需要首先安装pip3,而且即使安装了,还会遇到下面这句在Dockerfile里运行报错pip3 not found,可我明明已经安装了pip3。最后把这句命令从Dockerfile里单独拿出来执行,就可以了。 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r /root/w12scan/requirements.txt
2、在本机安装虚拟机,虚拟机上安装CentOS 8,会出现下面的报错,原因大概是虚拟机的网络是和本地主机桥接导致的。我用阿里云上的CentOS8就没用遇到这个问题,所以没有去找最终的解决方法,有找到解决方法的朋友请留言分享给我,谢谢。 这里有官方的讨论https://github.com/gliderlabs/docker-alpine/issues/334 + apk update fetch http://mirrors.ustc.edu.cn/alpine/v3.7/main/x86_64/APKINDEX.tar.gz ERROR: http://mirrors.ustc.edu.cn/alpine/v3.7/main: temporary error (try again later) WARNING: Ignoring APKINDEX.c3d3bf97.tar.gz: No such file or directory
以下方法试了没用 对我来说,这是一个DNS错误。通过设置/etc/docker/daemon.json, { "dns": ["8.8.8.8"] } 然后重新启动docker
以下方法试了也没用: #vim /etc/default/docker #DOCKER_OPTS="--dns 114.114.114.114" #systemctl restart docker
docker build -t hoge:latest . --network=host