1. vsFTP简介 linux
vsFTP是Very Secure FTP的缩写,意指很是安全的FTP服务。其功能强大,经过结合本地系统的用户认证模块及其多功能的配置项目,能够快速有效的搭建强大的多用户FTP服务。 shell
2. 常见问题解决 安全
a. 添加ftp帐户 服务器
#touch /etc/vsftpd.chroot_list #touch /etc/vsftpd.user_list #addgroup ftp #安装vsftp默认会建立一个ftp帐号/组,此步可省略 #adduer --shell /sbin/nologin --home your_dir(eg./home/ftp) your_ftp_user #usermod -aG ftp your_ftp_user #vi /etc/shells 增长一行:/sbin/nologin #若是不增长,则在后期利用帐号不能成功登录ftp;同时设置为/sbin/nologin可保证建立的ftp帐号不能做为系统帐号登录Linux系统;b. 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
vsftp安全性升级,禁止在ftp帐户在其对应的根目录具备写权限; 网络
解决方法:用户根目录写权限去掉; session
c. 500 OOPS: cannot change directory:/home/******* tcp
若是selinux开启的,则在终端执行以下操做: ide
#getsebool ftpd_disable_trans #若是显示不是on,则执行如下 #setsebool -P ftpd_disable_trans 1 #service vsftpd restart还应该考虑ftp用户对应的访问目录的权限是否已经开启可读权限;
d. 临时冻结ftp用户 spa
#vi /etc/vsftpd.conf userlist_enable=yes userlist_deny=yes #vi /etc/vsftpd.user_list #添加你要冻结的帐户,这样在file文件内的帐号将被临时冻结,如需从新开通ftp使用权限,将用户今后文件删除便可;e. 修改ftp用户访问目录
#vi /etc/passwd #直接修改你ftp帐户后面对应的目录便可f. 锁定ftp用户的访问目录权限
chroot_local_user=YES #文件中的用户能够访问自己目录之外的其余目录,不在文件中的帐号不能访问自己目录之外的其余目录 # (default follows) chroot_list_file=/etc/vsftpd.chroot_list
g. 上传文件权限 rest
#chown ftp:ftp your_dir(eg. /home/ftp) #设定对应目录具备写权限;3. vsFTP经常使用参数配置
一、listen=YES 若设置为YES,开启监听网络。 二、anonymous_enable 若设置为YES,则容许匿名用户访问;若设置为NO则拒绝匿名用户访问。 若是开启的话,则能够经过用户名ftp或者anonymous来访问,密码随便。 三、local_enable 若设置为YES,则容许经过本地用户账号访问;若设置为NO,则拒绝本地用户账号访问。 若是你拒绝了陌生人访问,那么这个必须设置为YES吧,不然谁能访问你的FTP呢? 四、write_enable 若设置为YES,则开启FTP全局的写权限;若设置为NO,则不开。 若为NO则全部FTP用户都没法写入,包括没法新建、修改、删除文件、目录等操做,也就是说用户都没办法上传文件!! 五、anon_upload_enable 若设置为YES,开启匿名用户的上传权限。前提是write_enable有开启,而且用户具备对当前目录的可写权限。若设置为NO,则关闭匿名用户的上传权限。 六、anon_mkdir_write_enable 若设置为YES,开启匿名用户新建目录的权限。前提是write_enable有开启,而且用户具备对当前目录的可写权限。若设置为NO,则关闭匿名用户新建目录的权限。 七、dirmessage_enable 若设置为YES,则可开启目录信息推送,也就是用户登陆FTP后能够列出当前目录底下的文件、目录。 这个应该要开启吧! 八、xferlog_enable 若设置为YES,则开启登陆、上传、下载等事件的日志功能。应开启! 九、xferlog_file=/var/log/vsftpd.log 指定默认的日志文件,可指定为其余文件。 十、xferlog_std_format 若设置为YES,则启用标准的ftpd日志格式。能够不启用。 十一、connect_from_port_20 若设置为YES,则服务器的端口设为20。 若是不想用端口20,能够另外经过ftp_data_port来指定端口号。 十二、chown_uploads 若设置为YES,则匿名用户上传文件后系统将自动修改文件的全部者。 若要开启,则chown_username=whoever也需指定具体的某个用户,用来做为匿名用户上传文件后的全部者。 1三、idle_session_timeout=600 不活动用户的超时时间,超过这个时间则中断链接。 1四、data_connection_timeout=120 数据链接超时时间 。 1五、ftpd_banner=Welcome to blah FTP service. FTP用户登入时显示的信息 。 1六、local_root=/home/ftp 指定一个目录,用作在每一个本地系统用户登陆后的默认目录。 1七、anon_root=/home/ftp 指定一个目录,用作匿名用户登陆后的默认目录。 1八、chroot_local_user、 chroot_list_enable、chroot_list_file 这个组合用于指示用户能否切换到默认目录之外的目录。 其中,chroot_list_file默认是/etc/vsftpd.chroot_list,该文件定义一个用户列表。 若chroot_local_user 设置为NO,chroot_list_enable设置为NO,则全部用户都是能够切换到默认目录之外的。 若chroot_local_user 设置为YES,chroot_list_enable设置为NO,则锁定FTP登陆用户只能在其默认目录活动,不容许切换到默认目录之外。 若chroot_local_user 设置为YES,chroot_list_enable设置为YES,则chroot_list_file所指定的文件里面的用户列表均可以访问默认目录之外的目录,而列表之外的用户则被限定在各自的默认目录活动。 若chroot_local_user设置为NO,chroot_list_enable设置为YES,则chroot_list_file所指定的文件里面的用户列表都被限定在各自的默认目录活动,而列表之外的用户则能够访问默认目录之外的目录。 建议设置:chroot_local_user与chroot_list_enable都设置为YES。这样就只有chroot_list_file所指定的文件里面的用户列表能够访问默认目录之外的目录,而列表之外的用户则被限定在各自的默认目录活动! 好处:全部人都被限制在特定的目录里面。若是某些特定用户须要访问其余目录的权限,只需将其用户名写入chroot_list_file文件就能够赋予其访问其余目录的权限! 1九、userlist_file、userlist_enable、userlist_deny 这个组合用于指示用户能否访问FTP服务。 其中,userlist_file默认是/etc/vsftpd.user_list,该文件定义一个用户列表。 若userlist_enable设置为YES,userlist_deny设置为NO,则只有userlist_file所指定的文件里面的用户列表里面的用户能够访问FTP。 若userlist_enable设置为YES,userlist_deny设置为YES,则userlist_file所指定的文件里面的用户列表里面的用户都被拒绝访问FTP。 若userlist_enable设置为NO,userlist_deny设置为YES,则这个列表没有实际用处,起不到限制的做用!由于全部用户均可访问FTP。 建议设置:userlist_enable与userlist_deny都设置为YES。这样则userlist_file所指定的文件里面的用户列表里面的用户都被拒绝访问FTP。 好处:只需将某用户账号加入到userlist_file所指定文件里面的用户列表,就能够起到暂时冻结该用户的功能! 20、user_config_dir 指定一个目录用于存放针对每一个用户各自的配置文件,好比用户kkk登陆后,会以该用户名创建一个对应的配置文件。 好比指定user_config_dir=/etc/vsftpd_user_conf, 则kkk登陆后会产生一个/etc/vsftpd_user_conf/kkk的文件,这个文件保存的配置都是针对kkk这个用户的。能够修改这个文件而不用担忧影响到其余用户的配置。
4. 设置vsFTP被动模式
a. 配置参数
vi /etc/vsftpd.conf pasv_enable=yes pasv_min_port=50000 pasv_max_port=51000b. 开启模块
#modprobe ip_conntrack_ftp #modprobe ip_nat_ftp
c. 配置iptables(云主机安全组)
vi /etc/sysconfig/iptables -A OUTPUT -p tcp --sport 50000:51000 -j ACCEPT -A INPUT -p tcp --dport 50000:51000 -j ACCEPT