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