第四章 Linux网络配置4.2 FTP服务我准备用两篇文章来讲解FTP服务,本篇是FTP的原理及技术要点,下一篇是具体的实现过程。读完本篇文章你会对FTP有一个整体的了解,包括相关文件的作用,以及FTP登录机制,至于具体实现的步骤需要参考下一篇文章。
4.2.1 FTP服务基本概念FTP是用于文件传输的网络协议,FTP服务分为服务器(Server)和客户机(Client)两个角色。FTP服务器使用的端口是21端口和20端口,21端口用于服务器和客户机建立命令的链路,20端口用于服务器向客户机建立数据链路。
4.2.2 FTP服务的传输模式FTP传输模式分别为主动模式和被动模式,前者是服务器主动连接客户机并建立数据链路,而后者是服务器等待客户机建立数据链路。这两种传输方式如下图所示
图1. FTP服务的两种传输模式
4.2.3 vsftpd服务常用的FTP服务包括,Windows操作系统中的IIS服务、Serv-U服务,Linux操作系统中的Wu-ftpd、Proftpd和vsftpd。其中的vsftpd强调服务的安全性,同时也有很高的运行效率。
vsftpd.conf文件
存储位置是/etc/vsftpd/vsftpd.conf,是vsftpd服务的主配置文件,也可以通过查询手册查看详细内容 man vsftpd.confvsftpd.ftpusers文件
存储位置是/etc/vsftpd.ftpusers,用于保存不允许进行FTP登录的bending用户账号,禁止本地具有较高权限用户的登录,提高系统的安全性。vsftpd.user_list文件
存储位置是/etc/vsftpd.user_list,用来灵活设置vsftpd的访问控制权限,例如:
- userlist_enable=YES userlist_deny=YES 用来禁止vsftpd.user_list文件中的用户登录
- userlist_enable=YES userlist_deny=NO
用来只允许vsftpd.user_list文件中的用户登录
匿名登录
vsftpd服务允许用户进行匿名登录,匿名登录所使用的用户名为anonymous或ftp,匿名登录不需要密码。FTP服务器的匿名登录用于构建公共的文件下载服务。匿名用户都登录到相同的目录下:/var/ftp
服务器的启动脚本
- 启动脚本名称是vsftpd/etc/init.d/vsftpd
- FTP服务启动命令#service vsftpd start
- FTP服务停止的命令#service vsftpd stop
- FTP服务重启的命令#service vsftpd restart
- 设置开机启动命令#chkconfig vsftpd on
- 查看vsftpd服务是否设置为开机启动命令#chkconfig --list vsftpd
- FTP服务运行状态命令是#service vsftpd status
- 登录FTP服务器的命令是#ftp 192.168.0.1
4.2.4 FTP的三种登录方式
FTP服务器支持匿名用户、本地用户和虚拟用户三种用户方式登录,
- 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。
- 本地用户模式:是通过Linu系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。
- 虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。
根据不同的登录方式,配置vsftpd.conf相应的参数
匿名用户模式下开放的权限参数以及作用:
- anonymous_enable=YES 允许匿名访问模式
- anon_umask=022 匿名用户上传文件的umask值
- anon_upload_enable=YES 允许匿名用户上传文件
- anon_mkdir_write_enable=YES 允许匿名用户创建目录
- anon_other_write_enable=YES 允许匿名用户修改目录名称或删除目录
本地用户模式下开放的权限参数以及作用:
- anonymous_enable=NO 禁止匿名访问模式
- local_enable=YES 允许本地用户模式
- write_enable=YES 设置可写权限
- local_umask=022 本地用户模式创建文件的umask值
- userlist_deny=YES 启用“禁止用户名单”,名单文件为ftpusers和user_list
- userlist_enable=YES 开启用户作用名单文件功能
虚拟用户模式下开放的权限参数以及作用
- anonymous_enable=NO 禁止匿名开放模式
- local_enable=YES 允许本地用户模式
- guest_enable=YES 开启虚拟用户模式
- guest_username=virtual 指定虚拟用户账户
- pam_service_name=vsftpd.vu 指定PAM文件
- allow_writeable_chroot=YES 允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求