实验三:基于Linux的Apache服务配置
几个中最恶心的实验
注意:实验验证时需要注意添加的ip是否还在!
实验内容
任务一:
- 建立一台Web服务器,假定服务器有多个IP地址,有一IP地址为192.168.XX.4。
- 设置文档主目录/var/www/myweb
- 设置Web服务器只监听192.168.XX.4的80端口和81端口
- 设置文档主目录缺省打开文档为index.php、index.jsp、index.html和index.htm
- 设置默认字符集为GB2312
- 为站点建立虚拟目录/var/www/OA,别名为OA
- 自己动手写一个简单页面文件index.htm,在客户端计算机访问验证。
任务二:
- 建立一个基于IP地址的虚拟Web站点,IP地址有192.168.XX.6和192.168.XX.8,第一个站点主目录为/var/www/www1,并且192.168.XX.0/24子网可访问;第二个站点主目录为/var/www/www2,并建立允许来自192.168.XX.0/24和com.cn域的客户访问。
任务三:
- 建立一台Linux下的FTP服务器,IP地址为192.168.XX.16。
- 允许匿名访问FTP服务器;匿名用户访问的根目录为/var/ftp/doc
- 匿名用户不能上传文件,只可以下载文件的权限;
- FTP服务器能够接受最大的连接数为100,同一IP的连接数为2;
- 允许本地用户访问FTP服务器;设定本地用户test被约束在自己的主目录;
实验环境
服务器:虚拟机Ubuntu22
客户机:虚拟机kali
连接手机热点,均使用NAT模式
实验流程
任务一
参考链接:https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html
更新包列表
sudo apt update
安装apache服务
sudo apt install apache2
查看版本号,发现是2.4.52
apache2 -v
启动apache服务
sudo systemctl start apache2
检查apache状态
sudo systemctl status apache2
检查可用的ufw(防火墙)应用程序配置
sudo ufw app list
如果没有apache,则允许一下
sudo ufw allow ‘Apache’
最好关闭防火墙
sudo ufw disable
Apache默认网页可以访问了
安装ifconfig命令所需要的包
apt install net-tools
ifconfig
为ens33接口创建三个虚拟接口并分配地址,过一会儿ip会自动失效
ifconfig ens33:1 192.168.10.4
ifconfig ens33:2 192.168.10.6
ifconfig ens33:3 192.168.10.8
route -n 发现系统自动给我们创建了一个192.168.10.0的直连路由
新建/var/www/myweb目录,并赋予适当权限
sudo mkdir -p /var/www/myweb
sudo chown -R $USER:$USER /var/www/myweb
sudo chmod -R 777 /var/www/myweb
mkdir /var/www/OA
更改apache的主配置文件,修改文档主目录为/var/www/myweb
sudo nano /etc/apache2/sites-available/000-default.conf
把DocumentRoot的值修改为 /var/www/myweb
Ctrl+X退出
修改默认监听端口
sudo nano /etc/apache2/ports.conf
Listen 192.168.10.6:80
Listen 192.168.10.8:80
Listen 192.168.10.4:80
Listen 192.168.10.4:81
sudo nano /etc/apache2/apache2.conf
添加<Directory /var/www/myweb>块
然后在末尾加上
DirectoryIndex index.php index.jsp index.html index.htm
sudo nano /etc/apache2/apache2.conf
添加以下内容
Alias /OA /var/www/OA
<Directory /var/www/OA>
Options Indexes FollowSymLinks
AllowOverride AuthConfig
Allow from all
Require all granted
</Directory>
cd /etc/apache2/conf-available
vim charset.conf
AddDefaultCharset GB2312
/var/www/myweb目录下新建index.htm,内容如下:
<head><meta charset=”GB2312”></head>
<body><p>聊的音乐要一脸宝相庄严地眺望远方,缓缓地吐出一个烟圈,淡淡地说:“经历了那么多之后,心里已经装不下那么多的愤怒了,我已经准备要跟这个世界和解。”摇滚乐听的很少了,攒了几百张爵士乐的黑胶唱片,闲来无事拿出一张就着往事一块下酒,挺好。</p></body>
此时会有编码问题,需要由UTF-8转为GB2312
iconv -f UTF-8 -t GB2312 index.htm > index.html
然后再复制回原文件
cp index.html index.htm
cp index.htm ../OA/index.htm
设置一下OA的访问控制
vim /var/www/OA/.htaccess
输入
AuthName 'Test'
AuthType Basic
AuthUserFile '/etc/apache2/OAuser'
Require user admin
保存退出
然后htpasswd -c /etc/apache2/OAuser admin并设置密码为123
重新加载apache配置以使其生效
sudo systemctl reload apache2
sudo systemctl restart apache2
在客户机kali上如果route -n没有192.168.0.0,则添加一下
route add -net 192.168.0.0/24 dev eth0
客户机访问网站192.168.10.4:80和192.168.10.4:80/OA
任务二
sudo mkdir -p /var/www/www1
sudo mkdir -p /var/www/www2
# 创建一些简单的测试文件
echo "Welcome to Site 1" | sudo tee /var/www/www1/index.html
echo "Welcome to Site 2" | sudo tee /var/www/www2/index.html
创建新的配置文件
sudo nano /etc/apache2/sites-available/a.conf
输入以下内容保存
<VirtualHost 192.168.10.6:80>
ServerName 192.168.10.6
DocumentRoot "/var/www/www1"
<Directory /var/www/www1>
DirectoryIndex index.html
Require ip 192.168.10.0/24
</Directory>
ErrorLog "/var/www/www1/web1-error_log"
CustomLog "/var/www/www1/web1-access_log" common
</VirtualHost>
<VirtualHost 192.168.10.8:80>
ServerName 192.168.10.8
DocumentRoot "/var/www/www2"
<Directory /var/www/www2>
DirectoryIndex index.html
Require ip 192.168.10.0/24
Require host com.cn
</Directory>
ErrorLog "/var/www/www2/web2-error_log"
CustomLog "/var/www/www2/web2-access_log" common
</VirtualHost>
然后启用一下a.conf
cd /etc/apache2/sites-available
sudo a2ensite a.conf
重启apache配置
sudo systemctl restart apache2
任务三
安装vsftpd
sudo apt update
sudo apt install vsftpd
查看版本,发现是3.0.5
vsftpd -v
启用vsftpd
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
查看运行状态
systemctl status vsftpd
设置一下静态ip 192.168.10.16/24
然后关按钮,开按钮刷新一下
sudo nano /etc/vsftpd.conf
下面是要修改的配置
anonymous_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_root=/var/ftp/doc
anon_world_readable_only=YES
max_clients=100
max_per_ip=2
pasv_enable=YES #ftp被动模式
pasv_min_port=15000
pasv_max_port=20000
保存退出
创建文件夹
mkdir -p /var/ftp/doc
创建文件
vim /var/ftp/doc/1.txt
写入123456,保存退出
重启服务
sudo systemctl restart vsftpd
匿名连接
在桌面新建一个2.txt,然后将其拖到文件夹中,报错
创建用户test,密码输入123
useradd -d /home/test -m test
passwd test
约束一下本地用户test
sudo nano /etc/vsftpd.conf
修改如下配置
chroot_local_user=NO
chroot_list_enable=YES
hroot_list_file=/etc/vsftpd.chroot_list
allow_writeable_chroot=YES
保存退出
添加黑名单
vim /etc/vsftpd.chroot_list
输入test后保存退出。
重启一下
sudo systemctl restart vsftpd
分别尝试test用户和自己的用户登录
test用户可以上传文件,并被约束在自己的主目录。
kali用户可以访问别的位置