FTP 是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用 20、21号端口,其中端口 20(数据端口)用于进行数据传输,端口 21(命令端口)用于接受客户端
发出的相关 FTP 命令与参数。FTP 服务器是按照 FTP 协议在互联网上提供文件存储和访问服务的主机,FTP 客户端则是向服务器发送连接请求,以建立数据传输链路的主机。FTP 协议有下面两种工作模式
➢主动模式 :FTP 服务器主动向客户端发起连接请求。
➢ 被动模式:FTP 服务器等待客户端发起连接请求(FTP 的默认工作模式)
vsftpd(very secure ftp daemon,非常安全的 FTP 守护进程)是一款运行在 Linux 操作系统上的 FTP 服务程序,不仅完全开源而且免费,此外,还具有很高的安全性、传输速度,以及支持虚拟用户验证等其他 FTP 服务程序不具备的特点。
配置妥当 Yum 软件仓库之后,就可以安装 vsftpd 服务程序了
[root@localhost Desktop]# yum install vsftpd Loaded plugins: langpacks, product-id, subscription-manager ………………省略部分输出信息……………… =============================================================================== Package Arch Version Repository Size =============================================================================== Installing: vsftpd x86_64 3.0.2-9.el7 rhel 166 k Transaction Summary =============================================================================== Install 1 Package Total download size: 166 k Installed size: 343 k Is this ok [y/d/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : vsftpd-3.0.2-9.el7.x86_64 1/1 Verifying : vsftpd-3.0.2-9.el7.x86_64 1/1 Installed: vsftpd.x86_64 0:3.0.2-9.el7 Complete!
老版本的系统会有iptables防火墙,具默认禁止了 FTP 传输协议的端口号,因此还需要清空 iptables 防火墙的默认策略,并把当前已经被清理的防火墙策略状态保存下来。
[root@localhost Desktop]# iptables -F
[root@localhost Desktop]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
vsftpd 服务程序的主配置文件(/etc/vsftpd/vsftpd.conf)内容总长度达到 123,可以在 grep 命令后面添加-v 参数,过滤并反选出没有包含井号(#)的参数行(即过滤掉所有的注释信息),然后将过滤后的参数行通过输出重定向符写回原始的主配置文件中
[root@localhost Desktop]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak [root@localhost Desktop]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf [root@localhost Desktop]# cat /etc/vsftpd/vsftpd.conf anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
vsftpd 服务程序常用的参数以及作用
参数 | 作用 |
listen=[YES|NO | 是否以独立运行的方式监听服务 |
listen_address=IP 地址 | 设置要监听的 IP 地址 |
listen_port=21 | 设置 FTP 服务的监听端口 |
download_enable=[YES|NO] | 是否允许下载文件 |
userlist_enable=[YES|NO] userlist_deny=[YES|NO] |
设置用户列表为“允许”还是“禁止”操作 |
max_clients=0 | 最大客户端连接数,0 为不限制 |
max_per_ip=0 | 同一 IP 地址的最大连接数,0 为不限制 |
anonymous_enable=[YES|NO] | 是否允许匿名用户访问 |
anon_upload_enable=[YES|NO] | 是否允许匿名用户上传文件 |
anon_umask=022 | 匿名用户上传文件的 umask 值 |
anon_root=/var/ftp | 匿名用户的 FTP 根目录 |
anon_mkdir_write_enable=[YES|NO] | 是否允许匿名用户创建目录 |
anon_other_write_enable=[YES|NO] | 是否开放匿名用户的其他写入权限(包括重命名、删 除等操作权限) |
anon_max_rate=0 | 匿名用户的最大传输速率(字节/秒),0 为不限制 |
local_enable=[YES|NO] | 是否允许本地用户登录 FTP |
local_umask=022 | 本地用户上传文件的 umask 值 |
local_root=/var/ftp | 本地用户的 FTP 根目录 |
chroot_local_user=[YES|NO] | 是否将用户权限禁锢在 FTP 目录,以确保安全 |
local_max_rate=0 | 本地用户最大传输速率(字节/秒),0 为不限制 |
vsftpd 作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到 FTP 服务器上
➢匿名开放模式 :是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到 FTP 服务器。
➢本地用户模式 :是通过 Linux 系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被破解了账户的信息,就可以畅通无阻地登录 FTP 服务器,从而完全控制整台服务器。
➢虚拟用户模式 :是这三种模式中最安全的一种认证模式,它需要为 FTP 服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供 FTP 服务程序进行认证使用。
ftp 是 Linux 系统中以命令行界面的方式来管理 FTP 传输服务的客户端工具。我们首先手动安装这个 ftp 客户端工具
[root@localhost Desktop]# yum install ftp Loaded plugins: langpacks, product-id, subscription-manager ………………省略部分输出信息……………… Installing: ftp x86_64 0.17-66.el7 rhel 61 k Transaction Summary =============================================================================== Install 1 Package Total download size: 61 k Installed size: 96 k Is this ok [y/d/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : ftp-0.17-66.el7.x86_64 1/1 Verifying : ftp-0.17-66.el7.x86_64 1/1 Installed: ftp.x86_64 0:0.17-66.el7 Complete!