一 、安装vsftpd需要的组件
[root@localhost ~]# yum -y install pam* PAM验证
[root@localhost ~]# yum -y install db4* db_load命令工具
[root@localhost ~]# yum -y install vsftpd ftp
二 、建立虚拟用户
[root@localhost ~]#vi /etc/vsftpd/vftpusers.txt
添加虚拟用户名和密码,奇数行为用户名,偶数行为密码
ftpadmin
123456
Ftpuser
123456
三 、生成虚拟用户口令认证文件
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vftpusers.txt /etc/vsftpd/vftpusers.db
[root@localhost ~]# chmod 600 /etc/vsftpd/vftpusers.*
降低文件权限以提高安全性
四 、编辑vsftpd的PAM认证
[root@localhost ~]# vi /etc/pam.d/vsftpd
将原有内容全部注释,并在最后添加如下两行(64位系统下需将lib改为lib64)
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpusers
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpusers
五、建立本地映射用户并设置宿主权限
[root@localhost ~]# useradd -d /var/ftproot -s /sbin/nologin virtual
[root@localhost ~]#chmod 776 /var/ftproot
六、配置 vsftpd.conf (设置虚拟用户配置项)
#可上传、下载、不能删除和创建目录
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=002
anon_upload_enable=YES
anon_other_write_enable=NO 可以有删除的权限
anon_mkdir_write_enable=NO 可以有创建目录的权限
dirmessage_enable=YES
listen=YES
connect_from_port_20=NO #pasv模式,port模式则设为YES
listen_port=21
pasv_min_port=65000
pasv_max_port=65100
xferlog_enable=YES
chown_uploads=NO 不改变文件上传的所有者
xferlog_std_format=YES
nopriv_user=virtual 用户连接到vsftpd后,会创建独立的进程, nopriv_user指定进程的运行者
async_abor_enable=YES 使用abor同步
ascii_upload_enable=YES 使用ascii上传和下载,据说不安全
ascii_download_enable=YES
注:
#关闭ASCII模式下载,防止被用于DoS攻击,ASCII下载很消耗CPU负担
chroot_local_user=YES 本地所有帐户都只能在宿主目录
ls_recurse_enable=NO 关闭“ls -R"命令,该命令常被用于DoS攻击, 非常浪费系统资源
guest_enable=YES 开启来宾用户virtual(开启用户映射功能)
guest_username=virtual
#virtual_use_local_privs=YES 指定virtual user是否具有local user的权限
pam_service_name=vsftpd 验证方式
userlist_enable=YES
tcp_wrappers=YES
hide_file=.*
#七、关闭selinux
[root@localhost ~]# vi /etc/selinux/config
将SELINUX=enforcing修改为SELINUX=disabled
或者设置
setsebool -P allow_ftpd_anon_write on
setsebool -P allow_ftpd_full_access on
setsebool -P ftp_home_dir on
重启服务器生效
八、防火墙设置
vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 65000:65100 -j ACCEPT
service iptables restart
九、测试登录
[root@localhost ~]# service vsftpd restart
重启vsftpd服务 然后测试登录。
十、建立各个虚拟用户自身的配置文件
[root@localhost ~]#mkdir /etc/vsftpd/vsftpd_user_conf 编辑ftpusers文件
[root@localhost ~]#vi /etc/vsftpd/vsftpd_user_conf/ftpadmin
anon_other_write_enable=YES #开放ftpusers的删除权限。
local_root=/var/ftpadmin #该路径对应的目录必须存在
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
其它虚拟用户的配置文件,依次建立同名配置文件并写入需要的配置即可
vsftpd的配置文件要增加虚拟用户配置文件的选项
[root@localhost ~]#vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vsftpd_user_conf
#设定用户配置文件存放目录
#说明:
1,因为主配置文件vsftp.conf是被先读的,然后再读用户的配置文件
2,ftp虚拟用户的根目录注意修改属主和属组为virtual,否则目录无法读写
【设置ssl登入】
1,生成vsftpd证书
[root@localhost ~]# cd /etc/pki/tls/certs/
[root@localhost ~]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
2,修改vsftpd.conf文件
[root@localhost ~]#vi/usr/local/etc/vsftpd.conf .
ssl_enable=YES(开启vsftpd对ssl协议的支持)
ssl_sslv2=YES(支持SSL v2 protocol)
ssl_sslv3=YES(支持SSL v3 protocol)
ssl_tlsv1=YES(支持TSL v1)
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem(证书的路径)
3,ftp客户端使用ssl登入连接ftp服务器
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
【虚拟用户高级设置】
1、virtual_use_local_privs参数
当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限
当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。
当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传 下载 删除 重命名)
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES
anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO
anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO
anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO
anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO
anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限
+++++++++++++++++++++++++++++++++++++++++++++
错误一
vsftpd 500 OOPS: cannot change directory #为selinux 未关闭!
错误二
530 Non-anonymous sessions must use encryption
#ftp服务器开启ssl连接