FTP服务器

一.FTP服务器概念

文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。专门用来传输文件的协议

二.FTP服务器工作原理

FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式默认使用20、21号端口
端口 20(数据端口)用于进行数据传输
端口21(命令端口)用于接受客户端发出的相关FTP命令与参数
Linux上搭建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

5.7问题 #如果加密用户不能认证,注意监控/var/log/secure日志!

相关文章: