vsftpd

匿名用户

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)

 

上一篇:Java堆外内存排查小结


下一篇:linux 逆向映射机制浅析