Linux靶机网站配置:从零搭建Web靶场环境

在网络安全学习中,搭建靶机环境是进行渗透测试和防御技术研究的重要环节。本教程将详细介绍如何在Linux系统(如Kali、Debian、Ubuntu等)上配置一个基于Apache的靶机网站,支持HTTP/HTTPS、虚拟主机、SSL自签名证书、本地域名解析、权限控制及多个子域名站点配置。


前置条件

  • 操作系统:Linux发行版(如Kali Linux、Ubuntu 20.04+、Debian 11+)
  • 权限要求:具有root或sudo权限
  • 网络环境:本地或虚拟机环境,推荐使用VirtualBox/VMware
  • 工具:终端、文本编辑器(如nano/vim)、curl、浏览器
  • 基础知识:熟悉Linux基本命令、Apache配置和网络概念

一、安装和配置Apache服务

1.1 安装Apache2

首先确保系统软件包是最新的,然后安装Apache2 Web服务器。

sudo apt update
sudo apt install apache2 -y

安装完成后,Apache会自动启动。可以通过以下命令检查服务状态:

sudo systemctl status apache2

若未运行,可手动启动:

sudo systemctl start apache2

1.2 创建站点目录和测试页面

为靶机网站创建一个独立的目录,并添加一个简单的测试页面。

sudo mkdir -p /var/www/test.lab
echo "<h1>Welcome to test.lab</h1>" | sudo tee /var/www/test.lab/index.html

设置正确的目录权限,确保Apache进程(默认用户为www-data)有访问权限:

sudo chown -R www-data:www-data /var/www/test.lab
sudo chmod -R 755 /var/www/test.lab

二、配置Apache虚拟主机(HTTP)

2.1 创建虚拟主机配置文件

为靶机网站配置一个虚拟主机,域名设置为test.lab

sudo nano /etc/apache2/sites-available/test.lab.conf

添加以下内容:

<VirtualHost *:80>
    ServerAdmin webmaster@test.lab
    ServerName test.lab
    DocumentRoot /var/www/test.lab

    <Directory /var/www/test.lab>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/test.lab_error.log
    CustomLog ${APACHE_LOG_DIR}/test.lab_access.log combined
</VirtualHost>
  • ServerName:定义主域名
  • DocumentRoot:指定网站根目录
  • AllowOverride All:允许.htaccess覆盖配置
  • ErrorLog/CustomLog:记录错误和访问日志

2.2 启用虚拟主机

启用刚创建的虚拟主机配置,并重新加载Apache服务:

sudo a2ensite test.lab.conf
sudo systemctl reload apache2

2.3 配置本地域名解析

为了在本地访问test.lab,需要编辑/etc/hosts文件进行域名解析。

sudo nano /etc/hosts

添加以下内容:

127.0.0.1    test.lab

注意:如果靶机运行在虚拟机或远程设备上,将127.0.0.1替换为靶机的实际IP地址(如192.168.1.50)。

2.4 验证HTTP配置

使用浏览器访问http://test.lab,或在终端运行:

curl http://test.lab

预期输出:

<h1>Welcome to test.lab</h1>

若无法访问,检查以下内容:

  • Apache服务是否运行:sudo systemctl status apache2
  • 防火墙是否阻止80端口:sudo ufw status
  • /etc/hosts配置是否正确

三、配置HTTPS和自签名SSL证书

为靶机网站启用HTTPS,增强安全性并模拟真实生产环境。

3.1 启用Apache SSL模块

sudo a2enmod ssl
sudo systemctl restart apache2

3.2 生成自签名SSL证书

创建证书存储目录并生成自签名证书,有效期365天。

sudo mkdir -p /etc/ssl/test.lab
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/ssl/test.lab/test.lab.key \
  -out /etc/ssl/test.lab/test.lab.crt \
  -subj "/C=CN/ST=Shanghai/L=Shanghai/O=Test Lab/CN=test.lab"

3.3 创建HTTPS虚拟主机

新建HTTPS虚拟主机配置文件:

sudo nano /etc/apache2/sites-available/test.lab-ssl.conf

添加以下内容:

<VirtualHost *:443>
    ServerAdmin webmaster@test.lab
    ServerName test.lab
    DocumentRoot /var/www/test.lab

    SSLEngine on
    SSLCertificateFile /etc/ssl/test.lab/test.lab.crt
    SSLCertificateKeyFile /etc/ssl/test.lab/test.lab.key

    <Directory /var/www/test.lab>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/test.lab_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/test.lab_ssl_access.log combined
</VirtualHost>

启用HTTPS站点并重启Apache:

sudo a2ensite test.lab-ssl.conf
sudo systemctl reload apache2

3.4 配置HTTP到HTTPS自动重定向

编辑HTTP虚拟主机配置文件,将所有HTTP请求重定向到HTTPS:

sudo nano /etc/apache2/sites-available/test.lab.conf

修改为以下内容:

<VirtualHost *:80>
    ServerName test.lab
    Redirect permanent / https://test.lab/
</VirtualHost>

重新加载配置:

sudo systemctl reload apache2

3.5 验证HTTPS配置

在浏览器访问http://test.lab,应自动跳转到https://test.lab,并显示欢迎页面。由于使用自签名证书,浏览器可能提示“证书不安全”,可选择信任继续访问。

使用curl验证:

curl -k https://test.lab

预期输出:

<h1>Welcome to test.lab</h1>

四、启用权限控制(.htaccess)

通过.htaccess文件实现访问控制,模拟真实场景中的权限管理。

4.1 确保支持.htaccess

虚拟主机配置中已包含AllowOverride All,无需额外修改。

4.2 示例:限制非本地访问

在站点目录下创建.htaccess文件:

sudo nano /var/www/test.lab/.htaccess

添加以下内容,限制仅本地(127.0.0.1)访问:

Order Deny,Allow
Deny from all
Allow from 127.0.0.1

4.3 示例:启用基本认证

安装htpasswd工具并创建密码文件:

sudo apt install apache2-utils
sudo htpasswd -c /etc/apache2/.htpasswd admin

按提示输入密码。接着编辑.htaccess

sudo nano /var/www/test.lab/.htaccess

添加以下内容:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

启用auth_basic模块并重新加载:

sudo a2enmod auth_basic
sudo systemctl reload apache2

访问https://test.lab时,浏览器会提示输入用户名(admin)和密码。


五、配置多个子域名站点

为了模拟复杂的Web环境,可以为同一靶机配置多个子域名站点(如admin.test.labapi.test.labupload.test.lab)。以下是两种实现方式:通过ServerAlias实现子域名共享同一站点,或为每个子域名创建独立的虚拟主机。

5.1 方法1:使用ServerAlias共享站点

编辑主站点的虚拟主机配置文件,支持多个子域名:

sudo nano /etc/apache2/sites-available/test.lab-ssl.conf

修改为以下内容,添加ServerAlias

<VirtualHost *:443>
    ServerAdmin webmaster@test.lab
    ServerName test.lab
    ServerAlias www.test.lab admin.test.lab api.test.lab upload.test.lab
    DocumentRoot /var/www/test.lab

    SSLEngine on
    SSLCertificateFile /etc/ssl/test.lab/test.lab.crt
    SSLCertificateKeyFile /etc/ssl/test.lab/test.lab.key

    <Directory /var/www/test.lab>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/test.lab_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/test.lab_ssl_access.log combined
</VirtualHost>

更新/etc/hosts以支持子域名解析:

sudo nano /etc/hosts

添加以下内容:

127.0.0.1    test.lab www.test.lab admin.test.lab api.test.lab upload.test.lab

重新加载Apache:

sudo systemctl reload apache2

验证:访问https://admin.test.labhttps://api.test.lab,应显示相同的欢迎页面。

5.2 方法2:为每个子域名创建独立虚拟主机

为每个子域名创建独立的站点目录和配置文件,以模拟不同的服务。

5.2.1 创建子域名目录和测试页面
sudo mkdir -p /var/www/admin.test.lab
sudo mkdir -p /var/www/api.test.lab
echo "<h1>Welcome to admin.test.lab</h1>" | sudo tee /var/www/admin.test.lab/index.html
echo "<h1>Welcome to api.test.lab</h1>" | sudo tee /var/www/api.test.lab/index.html

设置权限:

sudo chown -R www-data:www-data /var/www/admin.test.lab /var/www/api.test.lab
sudo chmod -R 755 /var/www/admin.test.lab /var/www/api.test.lab
5.2.2 创建子域名虚拟主机配置文件

admin.test.lab创建配置文件:

sudo nano /etc/apache2/sites-available/admin.test.lab-ssl.conf

添加以下内容:

<VirtualHost *:443>
    ServerAdmin webmaster@admin.test.lab
    ServerName admin.test.lab
    DocumentRoot /var/www/admin.test.lab

    SSLEngine on
    SSLCertificateFile /etc/ssl/test.lab/test.lab.crt
    SSLCertificateKeyFile /etc/ssl/test.lab/test.lab.key

    <Directory /var/www/admin.test.lab>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/admin.test.lab_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/admin.test.lab_ssl_access.log combined
</VirtualHost>

api.test.lab创建配置文件:

sudo nano /etc/apache2/sites-available/api.test.lab-ssl.conf

添加以下内容:

<VirtualHost *:443>
    ServerAdmin webmaster@api.test.lab
    ServerName api.test.lab
    DocumentRoot /var/www/api.test.lab

    SSLEngine on
    SSLCertificateFile /etc/ssl/test.lab/test.lab.crt
    SSLCertificateKeyFile /etc/ssl/test.lab/test.lab.key

    <Directory /var/www/api.test.lab>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/api.test.lab_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/api.test.lab_ssl_access.log combined
</VirtualHost>
5.2.3 启用子域名站点
sudo a2ensite admin.test.lab-ssl.conf
sudo a2ensite api.test.lab-ssl.conf
sudo systemctl reload apache2
5.2.4 配置子域名HTTP到HTTPS重定向

为每个子域名添加HTTP重定向配置:

sudo nano /etc/apache2/sites-available/admin.test.lab.conf

添加以下内容:

<VirtualHost *:80>
    ServerName admin.test.lab
    Redirect permanent / https://admin.test.lab/
</VirtualHost>

api.test.lab创建类似配置文件:

sudo nano /etc/apache2/sites-available/api.test.lab.conf

添加以下内容:

<VirtualHost *:80>
    ServerName api.test.lab
    Redirect permanent / https://api.test.lab/
</VirtualHost>

启用并重新加载:

sudo a2ensite admin.test.lab.conf
sudo a2ensite api.test.lab.conf
sudo systemctl reload apache2
5.2.5 验证子域名配置

访问以下地址:

  • https://admin.test.lab:显示“Welcome to admin.test.lab”
  • https://api.test.lab:显示“Welcome to api.test.lab”

使用curl验证:

curl -k https://admin.test.lab
curl -k https://api.test.lab

六、常见问题与解决方法

  • 无法访问网站
    • 检查Apache服务状态:sudo systemctl status apache2
    • 确认/etc/hosts配置正确
    • 检查防火墙规则:sudo ufw allow 80sudo ufw allow 443
  • 证书警告
    • 自签名证书会导致浏览器警告,可忽略或导入证书到信任列表。
  • 权限错误
    • 确保目录和文件权限正确:sudo chown -R www-data:www-data /var/www/*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值