FTP服务器
一.FTP服务器概念
文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。专门用来传输文件的协议
二.FTP服务器工作原理
FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式默认使用20、21号端口
端口 20(数据端口)用于进行数据传输
端口21(命令端口)用于接受客户端发出的相关FTP命令与参数
三.FTP服务器允许用户以三种认证模式登录到FTP服务器上
匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。
本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,配置起来也很简单。
虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的
1. FTP服务器协议
FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机。FTP协议有下面两种工作模式
主动模式:FTP服务器主动向客户端发起连接请求
被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)
2.常见的FTP服务器软件
Serv-U #Windows
FileZilla #Windows
VsFTP #Linux
3.常见的FTP的客户端
FileZilla
WinScp
FlashFTP
SecureCRT
CuteFTP
4.VSFTP服务器的安装及配置
1.关闭防火墙&Selinux
systemctl stop firewalld
setenforce 0
getenforce
2.安装VsFTP服务器及客户端
#在linux下客户端为ftp,vsftpd服务器端
yum install vsftpd ftp -y
3.匿名访问模式配置
#开放匿名用户的上传、下载文件的权限,以及让匿名用户创建、删除、更名文件的权限
#不建议在生产环境使用
vi /etc/vsftpd/vsftpd.conf #vsftpd主配置文件!!! anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
systemctl restart vsftpd
systemctl enable vsftpd
test
[[email protected] ftp] ftp 192.168.5.153 #ftp服务器的地址
Connected to 192.168.5.153 (192.168.5.153).
220 (vsFTPd 3.0.2)
Name (192.168.5.153:root): ftp #用户此处可填写ftp/anonymous
331 Please specify the password.
Password: #密码为空
230 Login successful.
ftp> cd pub #切换目录,实际目录为/var/ftp/pub
250 Directory successfully changed.
ftp> mkdir dir
550 Create directory operation failed. #无法创建,是什么问题,怎么解决?
[[email protected] ftp]# ftp 192.168.5.153
Connected to 192.168.5.153 (192.168.5.153).
220 (vsFTPd 3.0.2)
Name (192.168.5.153:root): ftp
331 Please specify the password.
Password:
230 Login successful.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir dir
#257 "/pub/dir" created
ftp> rename dir dir1 #
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir dir1 #
250 Remove directory operation successful.
ftp> bye
无法创建的问题解决
ls -ld /var/ftp/pub
chown -Rf ftp /var/ftp/pub
4.本地用户模式
vi /etc/vsftpd/vsftpd.conf #vsftpd主配置文件!!! anonymous_enable=NO
systemctl restart vsftpd
#test
[[email protected] ~]# ftp 192.168.5.153
Connected to 192.168.5.153 (192.168.5.153).
220 (vsFTPd 3.0.2)
Name (192.168.5.153:root): root
530 Permission denied.
Login failed. #失败?
#vsftpd服务所在目录中存放着两个用户名单ftpusers,user_list,出于安全原因,root默认不允许登录,编辑 这两个文件注释root即可。同时在新创建一个用户,便于测试。
systemctl restart vsftpd
[[email protected] vsftpd]# ftp 192.168.5.153
Connected to 192.168.5.153 (192.168.5.153).
220 (vsFTPd 3.0.2)
Name (192.168.5.153:root): root #也要使用新创建的用户进行测试,省略
331 Please specify the password.
Password:
230 Login successful.
5.VsFTP高级应用,虚拟用户模式
#虚拟用户模式是这三种模式中最安全的一种认证模式,配置复杂。
5.1vi /etc/vsftpd/vuser.list
user1 #用户名
123456 #密码
user2
123456
5.2 db_load命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件
#明文不安全,风险高。
db_load -T -t hash -f vuser.list vuser.db
file vuser.db
chmod 600 vuser.db
rm -rf vuser.list
5.3创建vsftpd服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户。FTP服务用于存储文件的根目 录指的是,当虚拟用户登录后所访问的默认位置。
useradd -d /var/ftproot -s /sbin/nologin virtual
ls -ld /var/ftproot/
chmod -Rf 755 /var/ftproot/
5.4建立用于支持虚拟用户的PAM文件
#PAM是一组安全机制的模块,系统管理员可以用来轻易地调整服务程序的认证方式
vi /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=No
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
pam_service_name =vsftpd.vu
5.5为虚拟用户创建不同的权限
mkdir /etc/vsftpd/vusers_dir`
cd /etc/vsftpd/vusers_dir
touch user1
vi user1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir`
5.6用user1和user2分别进行测试,注意结果
systemctl restart vsftpd