1.1 Ubuntu 虚拟机安装及SSH 远程连接配置

1.2 系统初始化配置

安装完成后执行以下命令:

# 设置root用户密码
sudo passwd root

# 更新软件包列表
sudo apt update

# 升级所有已安装的软件包
sudo apt upgrade -y

# 处理依赖关系升级(可选)
sudo apt dist-upgrade

# 安装基本工具
sudo apt install -y \
    curl wget git vim nano   \
    net-tools tree unzip zip 

# 关闭防火墙(测试环境使用,生产环境请勿关闭)
systemctl stop ufw
systemctl disable ufw

# 禁用SELinux(Ubuntu默认未安装,可忽略)
setenforce 0

1.3 LNMP 环境搭建(源码编译方式)

LNMP = Linux + Nginx + MySQL + PHP

1.3.1 安装 Nginx 源码详细教程(解决无安装包问题)
准备工作:安装编译依赖环境

在编译安装 Nginx 之前,需要先安装必要的依赖库(编译器、正则表达式库、压缩库、SSL 库等)。

# 更新软件包列表
zxh2@ubuntu:~$ sudo apt update

zxh2@ubuntu:~$ ps -ef | grep unattended-upgrades
zxh2      118975   78217  0 21:02 pts/1    00:00:00 grep --color=auto unattended-upgrades
zxh2@ubuntu:~$ sudo kill -9 54730
zxh2@ubuntu:~$ sudo dpkg --configure -a
# 一键安装所有依赖
zxh2@ubuntu:~$ sudo apt install -y \
>     gcc \
>     make \
>     libpcre3 \
>     libpcre3-dev \
>     zlib1g \
>     zlib1g-dev \
>     libssl-dev
简化:
sudo apt update
ps -ef | grep unattended-upgrades
sudo kill -9 54730
sudo dpkg --configure -a
sudo apt install -y \
     gcc \
     make \
     libpcre3 \
     libpcre3-dev \
     zlib1g \
     zlib1g-dev \
     libssl-dev
下载 Nginx 源码包

直接从 Nginx 官方下载稳定版源码包(以 1.21.6 版本为例)。

# 进入 /usr/local/src 目录(习惯上在这里存放源码)
cd /usr/local/src

# 使用 wget 下载 Nginx 1.21.6 源码包
sudo wget http://nginx.org/download/nginx-1.21.6.tar.gz
解压源码包

下载完成后,解压源码包。

# 解压 tar.gz 包
sudo tar -xvf nginx-1.21.6.tar.gz

# 解压后会生成一个 nginx-1.21.6 目录,进入该目录
cd nginx-1.21.6
配置编译参数

在编译之前,需要使用 ./configure 脚本配置安装路径和需要的模块。

注意:
  1. 不要连续执行两次 ./configure,第二次会覆盖第一次的配置。

  2. 安装路径要统一:如果你指定 --prefix=/home/centos/nginx,后面启动时就要去这个路径,而不是 /usr/local/nginx或者其他路径

1:安装到默认路径(我使用的路径)

# 配置:启用状态模块、SSL模块、替换模块
sudo ./configure \
    --with-http_stub_status_module \
    --with-http_ssl_module \
    --with-http_sub_module
  • 安装后路径:/usr/local/nginx

2:安装到自定义路径(如 /home/centos/nginx)

# 配置:指定安装路径 + 启用模块
sudo ./configure \
    --prefix=/home/centos/nginx \
    --with-http_stub_status_module \
    --with-http_ssl_module \
    --with-http_sub_module
  • 安装后路径:/home/centos/nginx

编译与安装

配置完成后,开始编译和安装。

# 1. 编译(生成可执行文件)
sudo make

# 2. 安装(将文件复制到配置的安装路径)
sudo make install
启动 Nginx

安装完成后,我们需要启动 Nginx 服务。

如果你选择了1(默认路径 /usr/local/nginx)

# 进入 sbin 目录
cd /usr/local/nginx/sbin

# 启动 Nginx
sudo ./nginx

如果你选择了2(自定义路径 /home/centos/nginx)

# 进入 sbin 目录
cd /home/centos/nginx/sbin

# 启动 Nginx
sudo ./nginx
验证安装是否成功

1. 检查进程

# 查看 Nginx 进程是否在运行
ps -ef | grep nginx

如果看到 nginx: master processnginx: worker process,说明启动成功。

浏览器访问

打开浏览器,在地址栏输入你的服务器 IP 地址(例如 http://192.168.XXX.XXX)。如果看到 "Welcome to nginx!" 欢迎页面,说明安装成功!

Nginx 常用命令

为了方便后续使用,这里补充几个常用命令(以默认路径 /usr/local/nginx 为例):

命令 作用
sudo /usr/local/nginx/sbin/nginx 启动 Nginx
sudo /usr/local/nginx/sbin/nginx -s stop 立即停止 Nginx
sudo /usr/local/nginx/sbin/nginx -s quit 优雅停止 Nginx(处理完请求后停止)
sudo /usr/local/nginx/sbin/nginx -s reload 重新加载配置文件(平滑重启)
sudo /usr/local/nginx/sbin/nginx -t 测试配置文件语法是否正
1.3.2 安装 PHP 7.4
# 添加PHP源
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update

# 安装PHP 7.4及常用扩展
sudo apt-get install php7.4 php7.4-mysql php7.4-fpm php7.4-curl php7.4-xml php7.4-gd php7.4-mbstring php-memcached php7.4-zip

# 验证PHP版本
php -v

# 切换PHP版本(如有多个版本)
update-alternatives --config php
找到并修改 PHP-FPM 配置文件
# 1. 找到 www.conf 文件(通常在这个位置)
cd /etc/php/7.4/fpm/pool.d/

# 2. 备份原配置文件(好习惯)
sudo cp www.conf www.conf.bak

# 3. 编辑配置文件
sudo vim www.conf

www.conf 中找到 listen 这一行,修改为监听 TCP 端口(方便 Nginx 连接):

; 把这一行注释掉(前面加 ;)
;listen = /run/php/php7.4-fpm.sock

; 添加这一行(监听本地 9000 端口)
listen = 127.0.0.1:9000

保存并退出(按 Esc,输入 :wq,回车)。

重启 PHP-FPM 使配置生效
# 重启 PHP 7.4-FPM 服务
sudo systemctl restart php7.4-fpm

# 查看状态,确保它在运行
sudo systemctl status php7.4-fpm

# 验证 9000 端口是否被监听
sudo netstat -lnt | grep 9000
配置 Nginx 以支持 PHP

现在我们需要修改 Nginx 的配置文件,让它能把 PHP 请求转发给 PHP-FPM。

# 1. 进入 Nginx 配置目录
cd /usr/local/nginx/conf/

# 2. 备份原配置文件
sudo cp nginx.conf nginx.conf.bak

# 3. 编辑配置文件
sudo vim nginx.conf

nginx.conf 中,找到 server 块,做以下两处修改

确保你的配置看起来和下面一模一样:

server {
    listen       80;
    server_name  localhost;

    # 这里必须有 index 关键字
    index  index.php index.html index.htm;

    location / {
        root   html;
    }

    # PHP 处理块
    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
保存并测试:
# 保存退出
# 按 Esc,输入 :wq,回车

# 再次测试配置
sudo /usr/local/nginx/sbin/nginx -t

测试并重启 Nginx
# 1. 测试 Nginx 配置文件语法是否正确
sudo /usr/local/nginx/sbin/nginx -t

# 如果显示 "syntax is ok" 和 "test is successful",说明配置正确

# 2. 重启 Nginx
sudo /usr/local/nginx/sbin/nginx -s reload
创建一个 PHP 探针文件测试
# 1. 进入 Nginx 的网页根目录
cd /usr/local/nginx/html/

# 2. 创建一个 info.php 文件
sudo vim info.php

输入以下内容:

<?php
phpinfo();
?>

保存并退出。

访问测试

打开你的浏览器,访问:http://你的服务器IP/info.php

如果看到了 PHP 信息页面(紫色的那个)就对了!!

1.3.3 安装 MySQL
# 安装MySQL服务器
apt-get install mysql-server

MySQL 安装成功

用系统 root 权限登录 MySQL(唯一正确的初始方式)
sudo mysql

这一步不需要输入密码,直接回车就能进入 MySQL 命令行(因为auth_socket认证匹配系统 root 用户)。

修改 root 用户为密码认证并设置密码

在 MySQL 命令行中依次执行以下 3 条命令(注意替换成你自己的密码):

-- 修改root用户认证方式为mysql_native_password并设置密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

-- 刷新权限使修改生效
FLUSH PRIVILEGES;

-- 退出MySQL
exit;
测试密码登录

root 用户 + 密码登录:

mysql -u root -p

执行后会提示Enter password:,输入刚才设置的密码,回车即可成功登录。

创建普通用户zzz2并授权

如果想让系统用户zzz2也能登录 MySQL,可以创建对应的 MySQL 用户:

-- 登录MySQL后执行
CREATE USER 'zzz2'@'localhost' IDENTIFIED BY 'zzz2的密码';

-- 授予所有数据库的所有权限(生产环境请按需缩小权限)
GRANT ALL PRIVILEGES ON *.* TO 'zzz2'@'localhost' WITH GRANT OPTION;

FLUSH PRIVILEGES;

之后就可以直接用mysql -u zzz2 -p登录了。

错误说明
  • 修改完密码后,必须加-p参数才会提示输入密码

  • 直接用mysql -u root会尝试无密码登录会失败

1.4 宝塔面板快速搭建

  • 官网:点击
  • 打开Ubuntu,复制命令
宝塔面板优缺点
优点 缺点
操作简单,图形化界面 资源占用较高
功能全面,集成多种服务 历史上出现过安全漏洞
插件丰富,可扩展性强 商业化倾向明显,部分功能付费
备份还原方便,支持云端备份 自定义程度有限
社区支持好,文档详细 不支持 ARM 架构服务器

1.5 小皮面板(PHPStudy)

  • 官网:点击(Windows 版)

1.6 Docker 环境搭建

Docker 是一种容器化技术,可快速部署渗透测试靶场和工具。

1.7.1 安装 Docker
apt-get install docker.io docker-compose
1.7.2 配置 Docker 镜像加速器(阿里云)
  1. 登录阿里云容器镜像服务:点击
  2. 获取专属加速地址
  3. 配置 Docker Daemon:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF
  1. 重启 Docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker

# 验证配置是否生效
docker info
1.7.3 配置 Docker 代理(可选,用于科学上网)
# 创建代理配置文件目录
sudo mkdir -p /etc/systemd/system/docker.service.d

# 创建代理配置文件
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<-'EOF'
[Service]
Environment="HTTP_PROXY=http://你的代理IP:代理端口"
Environment="HTTPS_PROXY=http://你的代理IP:代理端口"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF

# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker

使用:

zxh2@ubuntu:~$ docker pull nginx

zxh2@ubuntu:~$ docker images

zxh2@ubuntu:~$ docker run -d -p 8080:80 a716c9c12c38

zxh2@ubuntu:~$ docker ps

https://vulhub.org/zh
# 克隆仓库
git clone --depth 1 https://github.com/vulhub/vulhub.git

# 进入任何一个漏洞目录
cd cd vulhub/...
cd vulhub/spring/CVE-2022-22947

# 启动环境
docker compose up -d

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐