匿名用户
anonymous_enable=YES anon_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_root=/var/ftp anon_max_rate=0
本地用户
local_enable=YES local_umask=022 local_root=/var/ftp chroot_local_user=YES #开启用户家目录限制 chroot_list_enable=YES # 开启白名单 chroot_list_file=/etc/vsftpd/chroot_list #允许chroot_list里面的用户可以切换目录 local_max_rate=0 userlist_enable=YES &userlist_deny=YES#禁止/etc/vsftpd/user_list里面的用户登录ftp userlist_enable=YES &userlist_deny=NO#仅允许/etc/vsftpd/user_list里面的用户登录ftp #配置文件ftpusers 禁止/etc/vsftpd/ftpusers里面的用户登录ftp且权限比user_list还要高,即时生效 #被动模式 pasv_enable=YES pasv_min_port=30000 pasv_max_port=35000
虚拟用户
需要生成数据库文件而且要拿一个本地用户来映射虚拟用户,做虚拟用户配置文件设置时,必须将主配置文件中的 自定义的匿名用户相关设置 注释掉,给映射用户的家目录设置o+r让虚拟用户有读权限
vim vsftpd.user #奇数行:用户,偶数行:密码 db_load -T -t hash -f vsftpd.user vsftpd.db #对文件加密 #修改权限 chmod 600 vsftpd.db #创建虚拟用户的映射用户,并指定其家目录 useradd -d /var/ftproot -s /sbin/nologin virtual #建立PAM文件,添加虚拟用户支持 cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam cat /etc/pam.d/vsftpd.pam auth required pam_userdb.so db=/etc/vsftpd/vsftpd account required pam_userdb.so db=/etc/vsftpd/vsftpd #修改vsftpd.conf 添加支持配置 #pam_service_name=vsftpd pam_service_name=vsftpd.pam guest_enable=YES guest_username=virtual user_config_dir=/etc/vsftpd/dir #做虚拟用独立户配置文件设置时,必须将主配置文件中的 自定义的匿名用户相关设置 注释掉
anon_upload_enable=YES #允许上传文件
anon_mkdir_write_enable=YES #允许创建目录
anon_other_write_enable=YES #允许修改文件
#给映射用户的家目录设置o+r让虚拟用户有读权限
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
chmod a-w /var/ftproot 或者配置文件(主配置文件或者虚拟用户配置文件都可以)添加allow_writeable_chroot=YES
安全
抓包 tcpdump -i ens32 -nn -X -vv tcp port 21 and ip host 源ip -i #interface -n #对地址以数字方式显示,否则显示主机名 -nn #除了-n作用外,将端口显示为数值,否则显示市口服务名 -X #输出包的头部数据,以16进制和ascii两种方式同时输出 -vv #显示更详细的输出
openssl
rpm -q openssl 查看vsftpd是否支持openssl ldd /usr/sbin/vsftpd | grep libssl 生成加密信息的秘钥和证书文件 位置:/etc/ssl/certs/ openssl genrsa -out vsftpd.key 1024 openssl req -new -key vsftpd.key -out vsftpd.csr openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt 生成秘钥和证书文件后,将本目录(/etc/ssl/certs/)的权限修改为500 chmod 500 /etc/ssl/certs/
修改主配置文件
#启用ssl ssl_enable=YES #开启TLSV1 SSLV2 SSLV3支持 ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES #允许匿名用户[虚拟用户] allow_anon_ssl=YES #匿名用户登录和传输时强制使用ssl force_anon_logins_ssl=YES force_anon_data_ssl=YES #本地登录和传输时强制使用ssl force_local_logins_ssl=YES force_local_data_ssl=YES rsa_cert_file=/etc/ssl/certs/vsftpd.crt rsa_private_key_file=/etc/ssl/certs/vsftpd.key
配置完之后重启服务
使用客户端连接的时候选择 TLS/SSL显示加密可以看到证书信息
配置过程中的报错:
使用匿名用户登录: 500 Illegal PORT command. 425 Use PORT or PASV first. 改成passive 227 Entering Passive Mode (10,2,15,13,210,168). 150 Here comes the directory listing. 226 Transfer done (but failed to open directory). 还是显示不出来 解决: 匿名用户的配置里面添加anon_world_readable_only=NO anon_world_readable_only(文件有三种权限,文件所有人,文件所有组,文件的其他人,anon_world_readable_only的意思是,当他为YES时候,文件的其他人必须有读的权限才允许下载,单单文件所有人为ftp且有读权限是无法下载的,必须其他人也有读权限,才允许下载;若为NO则只要ftp用户对文件有读权限即可下载 ———————————————— 版权声明:本文为CSDN博主「ting--」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/wzt888_/article/details/100763045)