第一天 基于ECS搭建FTP服务
0x01 使用SSH登录ECS
本次使用的ECS为阿里云提供的体验机
服务器系统 | 版本 |
---|---|
CentOS | 7.7 |
在阿里云上可以直接申请免费体验,使用时间为一个小时。
在申请后,使用ssh root@<ECS IP>
进行连接。
0x02 在ECS上安装vsftpd
- 使用以下命令安装vsftpd
yum install -y vsftpd
安装成功后会显示如下结果
Loaded plugins: fastestmirror
Determining fastest mirrors
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/7): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/7): epel/x86_64/group_gz | 95 kB 00:00:00
(3/7): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(4/7): extras/7/x86_64/primary_db | 206 kB 00:00:00
(5/7): base/7/x86_64/primary_db | 6.1 MB 00:00:00 (6/7): updates/7/x86_64/primary_db | 4.5 MB 00:00:00
(7/7): epel/x86_64/primary_db | 6.9 MB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:3.0.2-27.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================================================
Package Arch Version Repository Size
========================================================================================================================
Installing:
vsftpd x86_64 3.0.2-27.el7 base 172 k
Transaction Summary
========================================================================================================================
Install 1 Package
Total download size: 172 k
Installed size: 353 k
Downloading packages:
vsftpd-3.0.2-27.el7.x86_64.rpm | 172 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
Installing : vsftpd-3.0.2-27.el7.x86_64 1/1
Verifying : vsftpd-3.0.2-27.el7.x86_64 1/1
Installed:
vsftpd.x86_64 0:3.0.2-27.el7
Complete!
- 设置vsftpd开机自启动
systemctl enable vsftpd.service
- 启动FTP服务
systemctl start vsftpd.service
- 查看FTP使用的网络端口
netstat -antup | grep ftp
如下结果表明FTP正在监听21端口
tcp6 0 0 :::21 :::* LISTEN 1409/vsftpd
0x03 配置vsftpd
vsftpd(very secure FTP daemon)是一款在Linux发行版中最受推崇的FTP服务器。vsftpd支持匿名访问和本地用户模式两种访问方式。匿名访问方式任何用户都可以访问搭建的FTP服务;本地用户模式只支持添加的本地用户访问搭建的FTP服务。
匿名用户模式和本地用户模式只可同时配置一种。
-
匿名模式
- 使用编辑器编辑
/etc/vsftpd/vsftpd.conf
,删除#anon_upload_enable=YES
前的#
,开启匿名上传权限。 - 更改
/var/ftp/pub
目录的权限,为FTP用户添加写权限。
chmod o+w /var/ftp/pub/
- 重启FTP服务。
systemctl restart vsftpd.service
- 使用浏览器进行连接测试,结果如下
- 使用编辑器编辑
-
本地用户模式
- 为FTP服务创建一个Linux用户。
adduser ftptest
- 为用户设置密码。
passwd ftptest
- 创建一个供FTP服务使用的文件目录。
mkdir /var/ftp/test
- 更改/var/ftp/test目录的拥有者为ftptest。
chown -R ftptest:ftptest /var/ftp/test
-
修改
vsftpd.conf
配置文件。- 配置FTP为主动模式请执行如下命令:
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器 sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录 sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单 sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录 echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录
- 配置FTP为被动模式请执行如下命令:
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器 sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录 sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单 sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录 echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录 echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf #开启被动模式 echo "pasv_address=<FTP服务器公网IP地址>" >> /etc/vsftpd/vsftpd.conf #本教程中为ECS服务器弹性IP echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最小值 echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最大值
- 在
/etc/vsftpd
目录下创建chroot_list
文件,并在文件中写入例外用户名单。
vim /etc/vsftpd/chroot_list
- 重启FTP服务。
systemctl restart vsftpd.service
- 使用浏览器进行登录
或使用ftp命令进行连接
ftp 106.14.14.181
0x04 总结
学习了如何使用CentOS系统搭建FTP服务器
- 使用
yum
命令安装vsftpd - 使用
systemctl
启用vsftpd - 修改
/etc/vsftpd/vsftpd.conf
开启匿名模式或本地用户模式 - 使用
systemctl restart vsftpd.service
重启vsftpd使配置生效 - 使用浏览器或ftp命令进行登录