系列文章导航:01_Linux基础操作CentOS7学习条记-CSDN博客
vsftpd 服务概述
1. vsftpd 简介
vsftpd(very secure FTP daemon)是一个在 UNIX 类操作体系上运行的 FTP 服务器软件。它以高安全性为最大特点,支持众多其他 FTP 服务器不支持的特性,如带脱期定、良好的可伸缩性、虚拟用户支持、IPv6 支持等。vsftpd 可在 Linux、BSD、Solaris、HP-UNIX 等多种体系上运行,是一个完全免费且开放源代码的软件。
2. vsftpd 特点
- 小巧轻快,安全易用。
- 广泛受推崇的 Linux 发行版 FTP 服务器程序。
3. 其他常用的 FTP 服务器
FTP 客户端
命令行客户端
图形工具
- IE/Firefox
- CuteFTP
- FileZilla(支持 Windows/Linux)
- 文件欣赏器
FTP 工作模式
主动模式(PORT)
- 客户端打开端口 N 连接服务器 21 端口建立命令通道。
- 服务器利用 20 数据端口主动连接客户端通过 N+1 端口,建立数据传输通道。
被动模式(PASV)
- 客户端打开端口 N 连接服务器 21 端口建立命令通道。
- 服务端口随机建立一个 >1024 的端口,告知客户端,然后客户端通过 N+1 端口连接服务端告知的端口,举行数据传输。
服务端设置 PASV 模式
- pasv_enable=YES
- pasv_min_port=41000
- pasv_max_port=42000
复制代码 客户端开启或关闭 PASV 模式
- ftp> passive
- Passive mode on.
复制代码 安装 vsftpd 服务
相关文件
- /etc/logrotate.d/vsftpd:日志滚动
- /etc/pam.d/vsftpd:验证文件
- /etc/rc.d/init.d/vsftpd:启动脚本
- /etc/vsftpd:设置文件主目录
- /etc/vsftpd/ftpusers:拒绝用户列表
- /etc/vsftpd/user_list:用户访问控制文件(拒绝用户/只允许用户列表)
- /etc/vsftpd/vsftpd.conf:主设置文件
- /etc/vsftpd/vsftpd_conf_migrate.sh:额外设置文件
- /usr/sbin/vsftpd:后台命令
- /var/ftp:匿名用户的家目录(ftp/anonymous),默认服务目录
- /var/ftp/pub:匿名用户的扩展目录
主设置文件中的三种设置
- 全局设置(!local/anon):对所有用户起作用
- 本地用户设置(local):只对本地用户(/etc/passwd)起作用
- 匿名用户设置(anon):只对匿名用户起作用(ftp/anonymous)
- 虚拟用户设置(local/anon)
FTP 设置文件常用选项
- anonymous_enable=YES:启用匿名用户登录与下载
- anon_upload_enable=YES:允许匿名用户上传
- anon_mkdir_write_enable=YES:允许匿名用户创建目录
- anon_other_write_enable=YES:允许匿名用户删除文件及空目录
- anon_root=/home/serverDir:更改匿名用户的服务目录
- local_enable=YES:启用本地用户
- local_umask=022:本地用户文件生成码
- chroot_local_user=YES:将所有本地用户限定笼情况
- chroot_list_enable=YES:启用 chroot_list 文件,处于该文件中的用户是非笼情况“白名单”
- chroot_list_file=/etc/vsftpd/chroot_list:指定非笼情况名单的文件
- local_root=/var/ftp:将本地用户的服务目录更改为 /var/ftp
- write_enable=YES:全局共享权限可读可写
- dirmessage_enable=YES:进入某个目录时,会读取谁人目录下 .message 文件内容输出
- xferlog_enable=YES:记载上传下载的日志
- connect_from_port_20=YES:允许采用 20 端口来传输数据
- chown_uploads=YES:上传是否更改上传文件的所有者属性
- chown_username=king:上传更改上传文件的所有者属性为 king
- xferlog_std_format=YES:启用 xfer 日志格式
- listen=YES:以独立 IPv4 服务的方式运行
- listen_ipv6=YES:同时监听 IPv6 及 IPv4 服务连接,与 listen=YES 不可同时利用
- pam_service_name=vsftpd
:vsftpd 验证方式 /etc/pam.d/vsftpd
- userlist_enable=YES:启用 /etc/vsftpd/user_list 文件举行访问控制
- tcp_wrappers=YES
:支持 tcpwrappers 防火墙访问控制
用户访问控制
- /etc/vsftpd/ftpusers --拒绝用户的列表<黑名单> 由/etc/pad.m/vsftpd模块控制
- 一个用户是一行,默认情况下把体系重要的用户都写在此
- 假如被这个文件拒绝,总是报密码错误的提示
- /etc/vsftpd/user_list --用户访问控制文件(拒绝用户/只允许用户列表)
- 比/etc/vsftpd/ftpusers优先起作用
- 拒绝时,连输入密码的机会都没有,直接报permission denied.
- 默认情况下,这个文件的作用是拒绝的作用
- 文件作用的控制选项:
- userlist_enable=YES --启用/etc/vsftpd/user_list该文件为控制文件
- userlist_deny=YES --拒绝的作用<默认>
- userlist_deny=NO --只允许的作用
- user01–>/etc/vsftpd/user_list–>/etc/vsftpd/ftpusers
实例 1:只启用匿名用户
只启匿名用户,匿名用户可读可写(上传/新建目录/删除/下载),禁用本地用户
- # vim /etc/vsftpd/vsftpd.conf
- anonymous_enable=yes
- local_enable=NO
- write_enable=yes
- local_umask=022
- anon_upload_enable=YES
- anon_mkdir_write_enable=YES
- anon_other_write_enable=YES
- anon_umask=022
- dirmessage_enable=YES
- xferlog_enable=YES
- connect_from_port_20=YES
- xferlog_std_format=YES
- listen=YES
- pam_service_name=vsftpd
- userlist_enable=YES
- userlist_deny=NO
- tcp_wrappers=YES
复制代码 给本地目录授权:
- # chown ftp /var/ftp/pub/
- # service vsftpd restart
- # netstat -tnlp | grep :21
复制代码 补充
匿名用户只能上传不能下载
- anonymous_enable=YES
- download_enable=NO
- anon_upload_enable=YES
复制代码 上传后主动更改属主
- chown_uploads=YES
- chown_username=root
复制代码 虚拟用户
虚拟用户实际上是体系本地用户的映射。例如,tom 映射为 aa bb cc,以后公布 aa bb cc 用户给他人用,包管体系用户不被泄漏。
Step 1: 创建虚拟用户的数据库
- # vim /tmp/userinfo.txt
- aa
- 123456
- bb
- 654321
- cc
- 112233
- # yum -y install libdb-utils.x86_64
- # db_load -T -t hash -f /tmp/userinfo.txt /etc/vsftpd/virtual.db
- # chmod 0600 /etc/vsftpd/virtual.db
- # rm -rf /tmp/userinfo.txt
复制代码 Step 2: 创建 PAM 的设置文件,指向新建用户数据库
- # vim /etc/pam.d/vsftp_virtual
- auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual
- account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual
复制代码 Step 3: 新建一个本地用户,用于映射虚拟用户
- # useradd -M -d /var/ftp -s /sbin/nologin virtual
复制代码 Step 4: 更改主设置文件,包括以下选项
- # vim /etc/vsftpd/vsftpd.conf
- anonymous_enable=NO
- local_enable=YES
- chroot_local_user=YES
- write_enable=YES
- local_umask=077
- dirmessage_enable=YES
- xferlog_enable=YES
- connect_from_port_20=YES
- xferlog_file=/var/log/xferlog
- xferlog_std_format=YES
- idle_session_timeout=600
- data_connection_timeout=120
- ftpd_banner=Welcome to blah FTP service.
- ls_recurse_enable=NO
- listen=NO
- listen_ipv6=YES
- userlist_enable=YES
- userlist_file=/etc/vsftpd/user_list
- userlist_deny=NO
- pam_service_name=vsftp_virtual
- guest_enable=YES
- guest_username=virtual
- virtual_use_local_privs=YES
- tcp_wrappers=YES
复制代码 Step 5: 启动 vsftpd
- # systemctl restart vsftpd
复制代码 Step 6: 测试
利用 aa bb cc 三个用户测试。
主机访问控制
注意:
- tcp_wrappers 优先检察 /etc/hosts.allow 白名单文件,假如没有则检察 /etc/hosts.deny 黑名单文件。
- 一般 hosts.allow 文件也可以用户拒绝,因此常用 hosts.allow 文件即可。
- # vi /etc/hosts.allow
- vsftpd:192.168.110.1:DENY
- vsftpd:192.168.110.
复制代码 以上释义为允许 192.168.110. 网段的除 192.168.110.1 主机以外的所有主机访问 vsftpd 服务。
- # vi /etc/hosts.deny
- vsftpd:192.168.110.10:ALLOW
- vsftpd:192.168.110.
复制代码 当 hosts.allow hosts.deny 都存在时,先看 hosts.allow 规则,假如某主机在 allow 规则中被允许的则就被允许;假如某个主机没有在 hosts.allow 文件中出现,再看 hosts.deny,假如该主机在 hosts.deny 出现则被拒绝,假如该主机没有在该规则中出现则默认允许。
用户访问控制
- userlist_enable=YES
- userlist_file=/etc/vsftpd/user_list
- userlist_deny=YES
复制代码 启用服务安全模块 vsftpd
流量控制
- anon_max_rate
- local_max_rate
复制代码 连接数控制
- max_clients
- max_per_ip
- max_login_fails
复制代码 通过这些设置和步骤,你可以乐成地在你的网络情况中部署和维护 vsftpd FTP 服务,确保其安全性和易用性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |