一.vsftp说明

yum install vsftpd

配置文件:
/etc/vsftpd/vsftpd.conf    #主配置文件
/etc/pam.d/vsftpd #vsftpd的Pluggable Authentication Modules(PAM)配置文件:
                  #用来加强vsftpd服务器的用户认证
/etc/vsftpd/ftpusers #vsftpd黑名单,默认包括了root、bin和daemon等系统账户
/etc/vsftpd/user_list #可为vsftpd白/黑名单

二.验证方式


匿名用户验证这个不安全;
本地账户验证:
Linux系统的账户【本地用户:/etc/passwd  用户密码:/etc/shadow】
本地用户在生成时可以设置每个用的根目录,来控制访问目录。
虚拟用户验证:
【
1.创建虚拟用户来替代本地用户,减少本地用户曝光率。
2.使用本地用户作为虚拟用户的映射用户,为虚拟用户提供工作目录和权限控制
3.能够设置严格的权限,为每个虚拟用户生成独立的配置文件。
】

三.创建本地用户配置


创建用户:useradd -d /data/ftp -s /sbin/nologin xxx
设置密码:passwd xxx


备份vsftpd.conf 
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

vi vsftpd.conf 
修改配置文件里面的设置内容

/etc/vsftpd/vsftpd.conf文件配置
local_enable=YES  #允许本地用户登录
local_root=/data  #本地用户登录时,将被更换到此目录下。
write_enable=YES  #本地用户是否有写权限,属于全局设置。
local_umask=022   #本地用户新增目录时的umask值。默认值为077
file_open_mode=0755 #本地用户上传文件后权限,与chmod所使用的数值相同默认值0666.

控制用户切换到上级目录:
启动chroot功能,就必须添加上
allow_writeable_chroot=YES
chroot_list_enable=YES #设置是否启用chroot_list_file配置项指定的用户列表文件
chroot_list_file=/etc/vsftpd/chroot_list #用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。一般不添加用户。
chroot_local_user=YES #用于指定用户列表文件中的用户是否允许切换到上级目录。

一般设置chroot_list_enable=YES chroot_local_user=YES
/etc/vsftpd/chroot_list文件中列出的用户,可以切换到其他目录,未在文件中的用户不能切换到其他目录。该文件默认是没有需要创建。


本地用户演示:
useradd -d /data/ftp -s /sbin/nologin team1
passwd team1

启动vsftpd
systemctl start vsftpd 

查看服务状态
systemctl status vsftpd 

查看防火墙状态
systemcatl status firewalld
防火墙需要增加端口号访问;

查看SELinux是否是Disabled
getenforce

cat /etc/shells
添加/sbin/nologin


最终vsftpd.conf配置文件:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
allow_writeable_chroot=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/data/log/xferlog
xferlog_std_format=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
listen_port=2222
pasv_enable=YES
pasv_min_port=2321
pasv_max_port=2330


四.虚拟用户配置


虚拟用户设置:虚拟用户使用PAM认证方式或者使用mysql用户认证
pam_service_name=vsftpd #设置PAM使用的名称,默认值为/etc/pam.d/vsftpd 也修改名称及里面内容。
guest_enable=YES #启用虚拟用户
guest_username=ftp #本地账户名称,用来映射虚拟用户
virtual_use_local_privs=YES #为YES时虚拟用户使用本地用户的权限,为NO时使用匿名用户权限。默认值NO
user_config_dir=/etc/vsftpd/user_conf #指定不同虚拟用户配置文件的存放目录


vi vuser.txt  编辑用户密码奇数行为用户,偶数行为密码
db_load -T -t hash -f vuser.txt vuser.db 
chmod 600 vuser.db 

/etc/pam.d/vsftpd 配置虚拟用户认证
auth    required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/vuser

cd /etc/vsftpd/user_conf
vi 用户名

虚拟用户配置:
 

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
local_root=/data
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
anon_umask=077
xferlog_file=/data/log/xferlog
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=NO
#chroot_list_file=/etc/vsftpd/chroot_list
#ls_recurse_enable=NO
listen=YES
listen_ipv6=NO
listen_port=2222
ftp_data_port=2220
pasv_enable=YES
pasv_max_port=2321
pasv_min_port=2330
max_clients=100
pam_service_name=vsftpd
guest_enable=YES
guest_username=vsftpuser
user_config_dir=/etc/vsftpd/user_conf
userlist_enable=YES
ftpd_banner=Welcome to FTP service.


其他配置信息说明:


访问速率设置:
anon_max_rate=0 #设置匿名登录使用的最大传输速度,0表示不限制速度默认值0
local_max_rate=0 #本地用户使用的最大传输速度,0标识不限制速度默认值0

超时时间设置
accept_timeout=60 #设置FTP连接的超时时间,单位为秒,默认值60
connect_timeout=60 #port方式下简历数据连接的超时时间,单位为秒,默认值60
data_connection_timeout=120 #设置建立FTP数据连接的超时时间,单位为秒,默认值120
idle_session_timeout=300 #设置多长时间不对FTP操作,断开FTP连接,单位为秒,默认值300

日志文件设置
xferlog_enable=YES #是否启用上传下载日志记录,
xferlog_file=/data/log/xferlog #设置日志文件路径
xferlog_std_format=YES #日志文件写成xferlog的标准格式。默认值NO


FTP的工作方式与端口设置:
FTP有两种工作方式:PORT FTP(主动模式) 和 PASV FTP (被动模式)
port_enable=YES #开启主动模式
listen_port=21 #设置FTP监听端口默认值21
connect_from_port_20=YES #主动模式下,指定FTP使用20端口进行数据传输,默认值YES
ftp_data_port=%portnumber% #上述设置为NO时,设置FTP数据连接使用的端口
pasv_enable=YES #设置为YES则使用PASV工作模式,设置为NO使用PORT模式开启时要将connect_from_port_20=NO
pasv_max_port=0 #在PASV模式下,数据连接使用的端口范围最大端口号。
pasv_min_port=0 #在PASV模式下,数据连接使用的端口范围最小端口号。

listen=YES #
max_clients=0 #最大连接数 默认0 不受限制
max_per_ip=0 #设置每个IP允许与FTP同事建立连接的数。
listen_address=IP地址 #xxxx
ftpd_banner=welcome to FTP server #欢迎语

更多推荐