VSFTPD
vsftpd 是一款UNIX/LINUX上的FTP服务器软件,号称是"可能是类UNIX系统中最安全、最快的FTP服务器",其具有安全、快速、稳定、开源 (基于 GPLv2 协议开源)的特点。
官网:https://security.appspot.com/vsftpd.html
安装方式
yum -y install vsftpd
相关文件
配置文件:/etc/vsftpd/vsftpd.conf
服务脚本:/usr/lib/systemd/system/vsftpd.service,/etc/rc.d/init.d/vsftpd
用户认证配置文件:/etc/pam.d/vsftpd
两种模式
FTP采用双通道协议,命令连接和数据连接,并且还有两种连接模式,如下
| 连接模式 | 命令连接 | 数据连接 |
| 主动(PORT) | 客户端随机端口---->服务器tcp21 | 客户端随机端口<----服务器tcp20 |
| 被动(PORT) | 客户端随机端口---->服务器tcp21 | 客户端随机端口---->服务器随机端口 |
端口配置
| 配置项 | 值 | 作用 |
| listen_port | 端口号(默认21) | 命令端口号修改 |
| ftp_data_port | 端口号(默认为20) | 主动模式端口号修改 |
| pasv_min_port | 端口号(0为随机分配) | 被动模式端口号最小值 |
| pasv_max_port | 端口号(0为随机分配) | 被动模式端口号最大值 |
匿名配置
| 配置项 | 值 | 作用 |
| anonymous_enable | YES/NO(默认NO) | 是否支持匿名用户 |
| no_anon_password | YES/NO(默认NO) | 匿名用户略过口令检查 |
| anon_world_readable_only | YES/NO(默认YES) | 匿名是否只能下载全部权限为读的文件 |
| anon_upload_enable | YES/NO(默认NO) | 匿名上传,注意:文件系统权限 |
| anon_mkdir_write_enable | YES/NO(默认NO) | 匿名是否可以创建目录 |
| anon_umask | 000-777 | 匿名上传文件的umask |
| anon_other_write_enable | YES(默认NO) | 匿名用户是否可修改修改和上传文件 |
用户配置
| 配置项 | 值 | 作用 |
| guest_enable | YES/NO(默认NO) | 所有系统用户是否都映射guest用户 |
| guest_username | 系统用户名 | 配合guest_enable生效,指定guest用户 |
| local_enable | YES/NO(默认YES) | 是否允许linux用户登录 |
| write_enable | YES/NO(默认YES) | 允许系统用户上传文件 |
| local_umask | 000-777 | 指定系统用户上传文件的umask |
| local_root | 系统目录 | guest用户登录所在目录 |
| chroot_local_user | YES/NO(默认NO) | 禁锢系统用户只能在自己的家目录活动 |
| chroot_list_enable | YES/NO | 禁锢或不禁锢特定的系统用户在家目录中 |
| chroot_list_file | 系统文件目录 | 配合chroot_list_enable,chroot_list_enable=YES则chroot_list_file文件中的用户不被禁锢否则相反 |
日志配置
| 配置项 | 值 | 作用 |
| xferlog_enable | YES/NO(默认YES) | 启用记录上传下载日志 |
| xferlog_std_format | YES/NO(默认YES) | 使用wu-ftp日志格式 |
| xferlog_file | 系统文件目录(默认 /var/log/xferlog) | 指定wu-ftp日志文件,可自动生成 |
| dual_log_enable | YES/NO(默认NO) | 使用vsftpd日志格式 |
| vsftpd_log_file | 系统文件目录(默认/var/log/vsftpd.log) | 指定vsftpd日志文件,可自动生成 |
登录控制
| 配置项 | 值 | 作用 |
| userlist_enable | YES/NO(默认YES) | 是否启用控制用户登录的列表文件 |
| userlist_deny | YES/NO(默认YES) | 黑名单,不提示口令,NO为白名单 |
| userlist_file | 文件目录(默认 /etc/vsftpd/users_list) | 用户列表文件 |
网络限制
| 配置项 | 值 | 作用 |
| max_clients | NULL | 最大并发连接数 |
| max_per_ip | NULL | 每个IP同时发起的最大连接数 |
| anon_max_rate | NULL | 匿名用户的最大传输速率 |
| local_max_rate | NULL | 本地用户的最大传输速率 |
| connect_timeout | NULL | 主动模式数据连接超时时长 |
| accept_timeout | NULL | 被动模式数据连接超时时长 |
| data_connection_timeout | NULL | 数据连接无数据输超时时长 |
| idle_session_timeout | NULL | 无命令操作超时时长 |
| ascii_upload_enable | YES/NO(默认YES) | 上传时优先以文本方式传输 |
| ascii_download_enable | YES/NO(默认YES) | 下载时优先以文本方式传输 |
SSL配置
| 配置项 | 值 | 作用 |
| ssl_enable | YES/NO(默认NO) | 是否启用SSL |
| allow_anon_ssl | YES/NO(默认NO) | 匿名是否启用SSL |
| force_local_logins_ssl | YES/NO(默认NO) | 本地用户登录是否加密 |
| force_local_data_ssl | YES/NO(默认NO) | 本地用户数据传输是否加密 |
| rsa_cert_file | 文件位置 | 证书文件位置 |
PS:在配置之前请查看是否支持 SSL,使用命令"ldd`which vsftpd`"返回libssl.so即可
其他配置
| 配置项 | 值 | 作用 |
| use_localtime | YES/NO(默认NO) | 使用当地时间(默认为NO,使用GMT) |
| ftpd_banner | "欢迎信息" | 登录提示信息 |
| banner_file | 文件目录(默认:/etc/vsftpd/ftpbanner.txt) | 指定一个文件作为登录提示信息,ftpd_banner优先生效 |
| dirmessage_enable | YES/NO(默认YES) | 目录访问提示信息 |
| message_file | 文件名称(默认.message) | 目录的提示信息文件,默认是目录下的".message"文件 |
| pam_service_name | 文件名称(默认vsftpd) | 使用pam(Pluggable Authentication Modules)完成用户认证,默认对应"/etc/pam.d/vsftpd"文件 |
| nopriv_user | 系统用户 | vsftpd服务指定用户身份运行 |