Vsftpd文件服务器

Vsftpd服务器企业实战
FTP基于client/server(C/S)模式,有两种传输模式:FTP主动模式;FTP被动模式。主被动模式均是以FTP服务器为参照。
FTP主动模式:客户端从一个任意N(大于1024)的端口连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。
FTP被动模式:客户端从一个任意的端口N(大于1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交PASV命令,服务器会开启一个任意的端口(P>1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
企业环境中,如果 FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。
主流FTP服务器端软件:Vsftpd、ProFTPD、P ureFTPd、Wuftpd、Server-UFTP、FileZille Server等。
Vsftpd:非常安全的FTP服务进程,小巧轻快、安全易用、稳定高效、满足企业跨部门、多用户的使用等。
 
Vsftpd服务器安装配置:
yuminstall vsftpd* -y     安装vsftpd服务
rpm-ql vsftpd     查看配置文件路径
systemctlrestart vsftpd   启动vsftpd服务
ps -ef|grep vsftpd   查看进程是否启动
Vsftpd.conf默认配置文件详解:
anonymous_enable=YES    开户匿名用户访问
local_enable=YES   启用本地系统用户访问
write_enable=YES    本地用户写入权限
local_mask=022    本地用户创建文件及目录时默认权限掩码
dirmessage_enable=YES    打印目录显示信息,通常用于用户第一次访问目录时,信息提示
xferlog_enable=YES    启用上传/下载日志记录
connect_from_port_20=YES  FTP使用20端口进行数据传输
xferlog_std_format=YES    日志文件将根据xferlog的标准格式写入
listen=NO    Vsftpd不以独立的服务启动,通过Xinetd服务管理,建议改成YES
listen_ipv6=YES    启用ipv6监听
pam_service_name=vsftpd    登录FTP服务器,依据/etc/pam.d/vsftpd中的内容进行认证
userlist-enable=YES    vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP
tcp_wrappers=YES   设置vsftpd与tcp wrapper结合进行主机的访问控制,vsftpd服务器检查/etc/host
                                 s.allow和/etc/hosts.deny中的设置来决定请求连接的主机是否允许访问服务器。
FTP主被动模式的选择,默认为主动模式,设置为被动模式的方法如下:
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100
 
Vsftpd匿名用户配置:
Vsftpd默认以匿名用户访问,默认访问FTP服务器发布终端路径为/var/ftp/pub,匿名用户只有查看权限,无法创建、删除、修改。如需关闭FTP匿名用户访问,需修改配置文件/etc/vsftpd/vsftpd.conf将anonymous_enable=YES的YES改为NO,重启Vsftpd服务即可。
如果允许匿名用户上传、下载、删除文件,需在/etc/vsftpd/vsfptd.conf配置文件中加入以下代码:
anonymous_upload_enable=YES    允许匿名用户上传文件
anonymous_mkdir_write_enable=YES    允许匿名用户创建目录
anonymous_other_write_enable=YES    允许匿名用户其他写入权限
匿名用户完整的vsftpd.conf配置文件如下:
anonymous_enable=YES   
local_enable=YES  
write_enable=YES 
local_mask=022   
anonymous_upload_enable=YES   
anonymous_mkdir_write_enable=YES   
anonymous_other_write_enable=YES 
dirmessage_enable=YES  
xferlog_enable=YES   
connect_from_port_20=YES   
xferlog_std_format=YES  
listen=NO  
listen_ipv6=YES   
pam_service_name=vsftpd  
userlist-enable=YES   
tcp_wrappers=YES  
默认Vsftpd匿名用户有两种:anonymous、ftp,所以匿名用户如果需要上传文件、删除及修改等权限,需要用户对/var/ftp/pub目录有写入权限,使用chown和chmod命令都可以设置权限,配置如下:
chown-R ftp pub/            或              chmod  o+w pub/
配置完毕,重启Vsftpd服务器即可生效。
 
Vsftpd系统用户配置:
匿名用户设置任何人都能看到文件,为存放私密文件在FTP服务器端,并保证文件或者目录专属于拥有者,可以用Vsftpd系统用户方式验证方式来实现:
useraddtang     创建一个用户访问FTP服务器的用户
echo1234567 |passwd --stdin tang   为tang用户设置密码1234567
修改vsftpd.conf配置文件:
anonymous_enable=NO
local_enable=YES  
write_enable=YES 
local_mask=022   
dirmessage_enable=YES  
xferlog_enable=YES   
connect_from_port_20=YES   
xferlog_std_format=YES  
listen=NO  
listen_ipv6=YES   
pam_service_name=vsftpd  
userlist-enable=YES   
tcp_wrappers=YES  
 
Vsftpd虚拟用户配置:
基于系统用户来访问FTP服务器,系统用户越多越不利于管理,而且不利于系统安全,为了能更加安全使用vsftpd,可以利用Vsftpd虚拟用户方式,虚拟用户原理为虚拟用户没有实际的真实系统用户,而是通过映射到其中一真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录linux系统,从而让系统更加安全可靠。
Vsftpd虚拟用户企业案例配置步骤如下:
1、安装Vsftpd虚拟用户需要用到的软件及认证模块:
yum installpam* libdb -utils libdb* --skip-broken -y
2、创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,其中tang1、tang2为虚拟用户密码均为123456,如果有更多的用户,依此格式填写即可。
tang1
123456
tang2
123456
3、生成Vsftpd虚拟用户数据库认证文件,设置权限为700。
db_load -T-t hash -f /etc/vsftpd/ftpusers.txt  /etc/vsftpd/vsftpd_login.db
chmod700  /etc/vsftpd/vsftpd_login.db
4、配置PAM认证文件,/etc/pam.d/vsftpd行首加入如下两行代码。
authrequired pam_userdb.so db=/etc/vsftpd/vsftpd_login
accountrequired pam_userdb.so db=/etc/vsftpd/vsftpd_login
5、Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建用户命令如下:
useradd -s/sbin/nologin  tang
6、完整的vsftpd.conf 配置文件代码如下:
#globalconfig Vsftpd 2018
anonymous_enable=YES   
local_enable=YES  
write_enable=YES 
local_mask=022   
dirmessage_enable=YES  
xferlog_enable=YES   
connect_from_port_20=YES   
xferlog_std_format=YES  
listen=NO  
listen_ipv6=YES   
pam_service_name=vsftpd  
userlist-enable=YES   
tcp_wrappers=YES 
#configvirtual user FTP
pam_service_name=vsftpd     虚拟用户启用pam认证
guest_enable=YES    启用虚拟用户
guest_username=tang    映射虚拟用户至系统用户tang
user_config_dir=/etc/vsftpd/vsftpd_user_conf    设置虚拟用户配置文件所在的目录
virtual_use_local_privs=YES    虚拟用户使用与本地用户相同的权限
7、所有虚拟用户共同使用/home/tang主目录实现文件上传与下载,可能/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录,代码如下:
mkdir -p/etc/vsftpd/vsftpd_user_conf/
8、以下分别为虚拟用户tang1、tang2创建配置文件。
vim/etc/vsftpd/vsftpd_user_conf/tang1 创建tang1虚拟用户的配置文件:
local_root=/home/tang/tang1          tang1虚拟用户配置文件路径
write_enable=YES              允许登录用户有写权限
anon_world_readable_only=YES      允许匿名用户下载,然后读取文件
anon_upload_enable=YES            允许匿名用户上传文件权限,只有在write_enable=YES时生效
anon_mkdir_write_enable=YES      允许匿名用户创建目录,只有在write_enable=YES时生效
anon_other_write_enable=YES        允许匿名用户其他权限,例如删除、重命名等
vim/etc/vsftpd/vsftpd_user_conf/tang2 创建tang2虚拟用户的配置文件:
local_root=/home/tang/tang2
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
9、创建虚拟用户各自虚拟目录:
mkdir -p/home/tang/{tang1,tang2}
chown-R  tang:tang /home/tang
重启Vsftpd服务。