在本实验中,我们将使用三个网站。第一个网站是一个社交网站 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 容器第一次运行后创建。如果您确实想从空的数据库开始,可以删除此文件夹: