VSFTP服务 环境:Centos 7 (关闭了SELinux和防火墙)


一、安装 1、YUM安装 [root@localhost ~]# yum install -y vsftpd #过程省略 2、编译安装 在系统安装光盘可找到安装包或网络下载安装包 vsftpd.x86_64.0.3.0.2-22.el7 [root@localhost ~]# tar xvf vsftpd.x86_64.0.3.0.2-22.el7.tar.gz [root@localhost ~]# cd vsftpd.x86_64.0.3.0.2-22.el7 #在开始编译前需要添加相关用户和目录,用户和目录记录在文件INSTALL中 #添加用户nobody,如果不添加,软件默认用户为ftp [root@localhost ~]# useradd nobody -M -s /sbin/nologin #添加目录 [root@localhost ~]# mkdir /var/share/empty [root@localhost ~]# mkdir /var/ftp

二、配置 yum或rpm安装的,配置文件一般在/etc/vsftpd/vsftpd.conf 相关参数意义: anonymous_enable=NO #禁止匿名访问 anon_upload_enable=NO #禁止匿名上传文件 anon_mkdir_write_enable=NO #禁止匿名创建文件夹 anon_other_write_enable=NO #禁止匿名其他写操作 chroot_list_enable=NO #禁止用户离开自己的FTP主目录 chroot_local_user=NO #禁止本地用户离开自己的FTP主目录 chroot_list_file=/etc/vsftpd.chroot_list #虚拟用户列表,每行一个用户名 local_enable=YES #允许本地用户访问 local_umask=022 # 设置本地用户所上传文件的默认权限掩码值 write_enable=YES #是否允许写 pam_service_name=vsftpd.vu #权限验证需要的加密文件 guest_enable=YES #开启虚拟用户功能 guest_username=ftp #虚拟用户的宿主用户 virtual_use_local_privs=YES #用户登录后操作主目录和本地用户具有同样的权限 user_config_dir=/etc/vsftpd/vconf #虚拟用户主目录设置文件 listen=yes #是否以独立运行的方式监听服务 listen_address=0.0.0.0 # 设置监听ftp服务的IP地址 listen_port=21 #设置监听FTP服务的端口号 write_enable=yes #启用任何形式的写入权限(如上传,删除文件等)都需要开启此项 download_enable=yes #是否可以下载文件(建立仅限浏览,上传的ftp服务器时可将其设为“no”) dirmessage_enable=yes #用户切换进入目录时显示.message文件(如果存在)的类容 xferlog_enable=yes #启用xferlog日志,默认记录到/var/log/xferlog xferlog_std_format=yes #启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式 connect_from_port_20=yes #同意服务器主动模式(从20端口建立数据连接) pasv_enable=yes #同意被动模式连接 pasv_max_port=24600 #设置用于被动模式的服务器最大端口号 pasv_min_port=24500 #设置用于被动模式的服务器最小端口号 pam_service_name=vsftpd #设置用于用户认证PAM文件位置(/etc/pam.d/目录中对应的文件名) userlist_enable=yes #是否启用户控制列表 userlist_deny=NO #是否禁用user_list列表文件中的用户账号 userlist_file=/etc/vsftpd/uer_list #//访问控制列表的路径 max_clients=0 #最多同意多少个客户端同是连接(0为不限制) max_per_ip=0 #对来自同一个ip地址的客户端,最多同意多少个并发连接(0为不限制) tcp_wrappers=yes #是否启用TCP_Wrappers主机访问控制 开启虚拟用户 guest_enable=YES #启用用户隐射功能 guest_username=ftp #映射的系统用户名字 本地用户 guest_config_dir=/etc/vsftp_user_conf #记录虚拟用配置文件的目录 pam_service_name=ftp.vu #指定 pam认证文件

1、匿名用户访问配置 #过滤注释行显示有效行,查看配置文件 [root@localhost pub]# grep -v ^# /etc/vsftpd/vsftpd.conf anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=YES anon_mkdir_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

#默认文件目录赋权给用户ftp,并启动服务 [root@localhost pub]# chown -R ftp.users /var/ftp/pub/ [root@localhost pub]# systemctl restart vsftpd

2、实名访问 #过滤注释行显示有效行 [root@localhost pub]# grep -v ^# /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES chown_uploads=YES chown_username=vftpuser xferlog_file=/var/log/xferlog xferlog_std_format=YES chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list ls_recurse_enable=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_deny=YES userlist_file=/etc/vsftpd/user_list tcp_wrappers=YES guest_enable=YES guest_username=vftpuser user_config_dir=/etc/vsftpd/vuser_conf pasv_min_port=61001 pasv_max_port=62000 allow_writeable_chroot=YES anon_umask=022

#编辑虚拟用户列表 [root@localhost pub]# vim /etc/vsftpd/chroot_list vftpuser #安装数据加密库 [root@localhost ~]# yum install db4 db4-utils -y

*如果无法安装可配置epel源 [root@localhost ~]# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm [root@localhost ~]# rpm -ivh epel-release-latest-7.noarch.rpm

#设置用户密码数据库 [root@localhost pub]# vim /etc/vsftpd/vuser_passwd.txt howard 123456 long 123456 [root@localhost vsftpd]#db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

修改认证配置文件 [root@localhost ~]# vim /etc/pam.d/vsftpd 原内容全部注释掉 #系统为32位的 auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account required pam_userdb.so db=/etc/vsftpd/vuser_passwd #系统为64位的 auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

#设置虚拟用户的权限配置文件 [root@localhost ~]# vim /etc/vsftpd/vuser_conf/howard local_root=/var/ftp/upload write_enable=YES anon_umask=022 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES [root@localhost ~]# vim /etc/vsftpd/vuser_conf/long (内容同上)

创建虚拟用户的上传文件目录 [root@localhost ~]# mkdir /var/ftp/upload

设置防火墙 打开防火墙设置: [root@localhost ~]# vi /etc/sysconfig/iptables 注释其他,新加如下 -A INPUT –m state --state NEW –m tcp –p tcp –dport 22 –j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT 然后保存,并关闭该文件,在终端内运行下面的命令,刷新防火墙配置: systemctl restart firewalld.service


使用本地用户登录,限制目录和权限的实例: 一、编辑主服务配置文件vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 chroot_local_user=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_list_enable=NO #chroot_list_file=/etc/vsftpd/chroot_list listen=YES pam_service_name=vsftpd userlist_enable=YES user_config_dir=/etc/vsftpd/userconfig #local_root=/data/ftproot tcp_wrappers=YES pasv_enable=YES pasv_max_port=21000 pasv_min_port=20000 pasv_address=121.201.14.168

二、编辑用户配置文件 mkdir /etc/vsftpd/userconfig vim /etc/vsftpd/userconfig/usname local_root=/vsftproot write_enable=YES


使用虚拟用户配置实例: 一、编辑服务配置文件vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES guest_enable=YES guest_username=virtual local_umask=022 anon_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd.vu userlist_enable=YES tcp_wrappers=YES user_config_dir=/etc/vsftpd/vusers_dir

二、编辑用户配置文件 mkdir /etc/vsftpd/vusers_dir vim /etc/vsftpd/vusers_dir/usname local_root=/vsftproot write_enable=YES