章节大纲

  • 在本实验中,我们将使用三个网站。第一个网站是一个社交网站 www.seed-server.com。第二个网站是攻击者的恶意站点,此网站可通过  www.attacker32.com 访问。第三个网站用于防御任务,其主机名为  www.example32.com。我们使用容器来搭建实验环境。

    我们在本实验中使用名为 Elgg 的开源 Web 应用程序。Elgg 是一款基于 Web 的社交网络应用程序。它已在提供的容器映像中设置完毕。我们使用两个容器,一个运行 Web 服务器 (10.9.0.5),另一个运行 MySQL 数据库 (10.9.0.6)。这两个容器的 IP 地址在配置中已经固定,因此不要在 docker-compose.yml 文件中更改它们。

    Elgg 容器 (10.9.0.5)。我们使用 Apache Web 服务器托管 Elgg Web 应用程序。网站设置包含在 Elgg 镜像文件夹内的 apache_elgg.conf 中。配置指定网站的 URL 和存储 Web 应用程序代码的文件夹。
        <VirtualHost *:80>
             DocumentRoot /var/www/elgg
             ServerName   www.seed-server.com
             <Directory /var/www/elgg>
                  Options FollowSymlinks
                  AllowOverride All
                  Require all granted
             </Directory>
        </VirtualHost>

    攻击者容器(10.9.0.105)。我们使用另一个容器(10.9.0.105)来运行攻击者的网站,该网站包含一个恶意的 HTML 页面。此页面的 Apache 配置如下:
        <VirtualHost *:80>
             DocumentRoot /var/www/attacker
             ServerName   www.attacker32.com
        </VirtualHost>
    由于我们需要在容器内创建网页文件,为了方便,我们将主机上的  Labsetup/attacker 文件夹挂载到容器的 /var/www/attacker 文件夹中。因此,在 VM 中放置于 attacker 文件夹内的网页将被攻击者的网站托管,我们已经在该文件夹内放置了代码的框架。

    DNS 配置。为了通过不同的 URL 访问 Elgg 网站、攻击者站点和防御站点,我们需要在 /etc/hosts 文件中添加以下条目,以便将这些主机名映射到其相应的 IP 地址。您需要使用 root 权限来更改此文件(使用 sudo})。需要注意的是,由于其他一些实验的原因,这些名称可能已经添加到文件中。如果它们映射到不同的 IP 地址,旧条目必须删除。
    10.9.0.5        www.seed-server.com
    10.9.0.5        www.example32.com
    10.9.0.105      www.attacker32.com

    Elgg 用户账号。我们已在 Elgg 服务器上创建了几个用户账户,用户名和密码如下所示。
    用户名       登录密码
    --------------------------
    admin        seedelgg 
    alice        seedalice 
    boby         seedboby 
    charlie      seedcharlie
    samy         seedsamy
    

    MySQL 数据库。容器通常是一次性的,因此一旦销毁,容器内的所有数据都会丢失。对于本实验,我们确实希望将数据保留在 MySQL 数据库中,这样在关闭容器时就不会丢失数据。为了实现这一点,我们将主机上的 mysql_data 文件夹挂载到 MySQL 容器内的 /var/lib/mysql 文件夹(此文件夹是 MySQL 存储数据库的地方)。因此,即使容器被销毁,数据库中的数据仍会保留。这个 mysql_data 文件夹在 Labsetup 内,它将在 MySQL 容器第一次运行后创建。如果您确实想从空的数据库开始,可以删除此文件夹:
    $ sudo rm -rf mysql_data