💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# vsftpd 简介 [参考][1] vsftpd 是**very secure FTP daemon**的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。 ### 特性 * 安全性检查规则非常严格 * 轻量级、高性能 * 支持虚拟用户 * 默认是被动模式 passive ## 基于PAM实现用户认证,支持虚拟用户 /etc/pam.d/* /lib/securuty/* 认证模块 /lib64/securuty/* 认证模块 ## vsftpd安全性 /var/ftp:除了root用户外,其他用户没有写权限,以此来提高安全性; 同时,可以在/var/ftp下建立子文件,使ftp用户获得写权限 # vsftpd安装 ~~~ # yum install -y vsftpd ~~~ 安装后直接启动即可使用,ftp默认访问/var/ftp,系统用户默认访问自己的家目录。 ## 启动ftp ~~~ # service vsftpd start Starting vsftpd for vsftpd: [ OK ] # chkconfig vsftpd on # chkconfig --list vsftpd vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off # netstat -tlnp可以看到监听了tcp/21端口 ~~~ ## 测试1 在windows终端测试,匿名登录,无密码,help查看相关命令 ~~~bash ftp localhost Trying ::1... ftp: connect to address ::1Connection refused Trying 127.0.0.1... Connected to localhost (127.0.0.1). 220 (vsFTPd 3.0.2) Name (localhost:root): ftptest03 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> exit 221 Goodbye. ~~~ ## man vsftpd.conf 查看帮助文档 ``` listen=YES anonymous_enable=NO dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES local_root=/disk1/pub pam_service_name=vsftpd allow_writeable_chroot=YES chroot_local_user=YES listen_port=21 write_enable=YES local_enable=YES log_ftp_protocol=YES xferlog_enable=YES ``` ## 测试2 在浏览器中登录系统用户,使用系统用户登录 ``` # 创建用户 useradd -d /disk1/vsftpd_data/ -s /sbin/nologin ftptest02 ``` ![](https://box.kancloud.cn/3437a756e4dfbd685188d2cba9cdccb6_198x28.png) ## 测试3 在linux测试 ~~~ # ftp 192.168.8.60 ftp> lcd /etc Local directory now /etc ftp> put inittab local: inittab remote: inittab 227 Entering Passive Mode (192,168,8,60,46,147) 150 Ok to send data. 226 File receive OK. 1666 bytes sent in 0.00062 seconds (2.6e+03 Kbytes/s) ~~~ ## 应用1 匿名用户上传 匿名上传默认是关闭的 1 取消注释 ~~~ anon_upload_enable=YES ~~~ 2 但对于/var/ftp/pub文件的属主和属组是root,因此还是不能上传文件 可以在/var/ftp下创建upload,并添加访问控制 ~~~ # setfacl -m u:ftp:rwx upload # getfacl upload # file: upload # owner: root # group: root user::rwx user:ftp:rwx group::r-x mask::rwx other::r-x ~~~ >[info]文件服务权限=文件系统权限×文件共享权限 ## 匿名服务其他选项 ~~~ 启用anon_mkdir_write_enable=YES,允许匿名用户创建目录 启用anon_other_write_enable=YES,允许匿名用户删除目录和文件 启用dirmessage_enable=YES,在文件夹下创建.message,每次切换目录时会显示此提示信息 启用xferlog_enable=YES,xferlog_file=/var/log/vsftpd.log,开启传输日志,删除,创建目录不会记忆 ~~~ 可以用来控制匿名上传后的属主,用来控制权限 ~~~ #chown_uploads=YES #chown_username=whoever ~~~ ## 应用2 限制ftp用户家目录 系统用户拥有ftp登录权限后,将有能力查看系统中的很多内容,这样的ftp权限过大,需要进行限制。 ### 限制指定的用户,chroot_list为限制名单 ~~~ chroot_list_enable=NO chroot_list_file=/etc/vsftpd/chroot_list ~~~ 并创建文件/etc/vsftpd/chroot_list,文件格式,每行一个用户名即可;在这个文件文件中的用户将被限制在家目录下,不在其目录中用户不受影响 ### 限制所有用户的家目录,列表变成不限制名单 ~~~ chroot_local_user=YES chroot_list_file=/etc/vsftpd/chroot_list ~~~ ## ftp安全 1 不允许匿名用户登录和上传 ~~~ anonymous_enable=NO anon_upload_enable=NO ~~~ 2 限制系统用户家目录,并且不允许其ssh登录 /sbin/nologin ~~~ chroot_local_user=YES ~~~ 3 只允许白名单登录 /etc/vsftpd/user_list ~~~ userlist_enable=YES userlist_deny=NO ~~~ [1]:[https://www.cnblogs.com/st-jun/p/7743255.html](https://www.cnblogs.com/st-jun/p/7743255.html)