欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

vsftpd

程序员文章站 2022-03-26 21:48:22
匿名用户 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_ra ......

匿名用户

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显示加密可以看到证书信息