FTP服务器搭建
一、FTP服务器简介
1.FTP协议简介
-
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。
-
计算机中实现文件传输的协议
-
FTP协议默认使用TCP端口中的 20和21端口,20用于传输数据,21用于传输控制信息。(数据传输:主动模式-20;被动模式–协商)
-
FTP工作方式
- 主动模式
- 被动模式
- 主动模式
2.vsftpd介绍
- vsftpd(very secure FTP daemon) 是一个 UNIX 类操作系统上运行的服务器
- 特点:安全、可配置性强、效率高
- 主配置文件:/etc/vsftpd/vsftpd.conf
二、FTP服务器(vsftpd)搭建
1、服务端:
- 服务端检查安装vsftpd
rmp -qa|grep vsftpd - 安装vsftpd
yum -y install vsftpd - 设置自启动
systemctl -enable vsftpd - 设置防火墙(只开启20、21端口并不能成功,会出现ftp: connect: No route to host情况)
firewall-cmd --permanent -add-service=ftp - 设置SelLinux安全策略(ftpd_full_access设置为on)
setsebool -P ftpd_full_access=1
2、客服端:
- 客户端安装ftp
yum -y install ftp
3、测试:
- ftp + [域名/IP]
三、FTP服务器配置
- (1)登录及对匿名用户的设置
anonymous_enable=YES:设置是否允许匿名用户登录FTP服务器。
local_enable=YES:设置是否允许本地用户登录FTP服务器。
write_enable=YES:全局性设置,设置是否对登录用户开启写权限。
ftp_username=ftp:设置匿名用户的帐户名称,默认值为ftp。
no_anon_password=YES:设置匿名用户登录时是否询问口令。设置为YES,则不询问。
local_umask=022:设置本地用户的文件生成掩码为022。则对应权限为755(777-022=755)。
anon_umask=022:设置匿名用户新增文件的umask掩码。
anon_upload_enable=YES:设置是否允许匿名用户上传文件,只有在write_enable的值为yes时,该配置项才有效。
anon_mkdir_write_enable=YES:设置是否允许匿名用户创建目录,只有在write_enable的值为yes时,该配置项才有效。
anon_other_write_enable=NO:若设置为YES,则匿名用户会被允许拥有多于上传和建立目录的权限,还有删除和更名的权限。默认值为NO。
anon_world_readable_only=NO:允许匿名用户下载不具备读权限的文件,需手工添加。 - (2)设置欢迎信息
ftpd_banner=Welcome to blah FTP service.:设置登录FTP服务器时显示的信息。
banner_file=/etc/vsftpd/banner:设置用户登录时,将要显示banner文件中的内容,该设置将覆盖ftpd_banner的设置。
dirmessage_enable=YES:设置进入目录时是否显示目录消息。若设置为YES,则用户进入目录时,将显示该目录中由message_file配置项指定文件(.message)中的内容。
message_file=.message:设置目录消息文件的文件名。如果dirmessage_enable的取值为YES,则用户在进入目录时,会显示该文件的内容。 - (3)设置用户登录目录
local_root=/var/ftp:设置本地用户登录后所在的目录,默认情况下,没有此项配置。在vsftpd.conf文件的默认配置中,本地用户登录FTP服务器后,所在的目录为用户的主目录。
anon_root=/var/ftp:设置匿名用户登录FTP服务器时所在的目录。若未指定,则默认为/var/ftp目录。 - (4)设置是否将用户锁定在指定的FTP目录
默认情况下,匿名用户会被锁定在默认的FTP目录中,而本地用户可以访问到自己FTP目录以外的内容。出于安全性的考虑,可以将本地用户也锁定在指定的FTP目录中。
chroot_list_enable =YES:设置是否启用用户列表文件。
chroot_list_file=/etc/vsftpd/chroot_list:指定用户列表文件。
chroot_local_user=YES:用于指定用户列表文件中的用户,是否允许切换到指定FTP目录以外的其他目录。 - (5)设置用户访问控制
userlist_enable=YES:取值为YES时/etc/vsftpd/user_list文件生效,取值为NO时/etc/vsftpd/user_list文件不生效。
userlist_deny=YES:设置/etc/vsftpd.user_list文件中的用户是否允许访问FTP服务器。若设置为YES时,则/etc/vsftpd/user_list文件中的用户不能访问FTP服务器;若设置为NO时,则只有/etc/vsftpd/user_list文件中的用户才能访问FTP服务器。 - (6)设置主机访问控制
tcp_wrappers=YES:设置是否支持tcp_wrappers。若取值为YES,则由/etc/hosts.allow和/etc/hosts.deny文件中的内容控制主机或用户的访问。若取值为NO,则不支持。 - (7)设置FTP服务的启动方式及监听IP
vsftpd服务既可以以独立方式启动也可以由Xinetd进程监听以被动方式启动。
listen=YES:若取值为YES则vsftpd服务以独立方式启动。如果想以被动方式启动将本行注释掉即可。
listen_address=IP:设置监听FTP服务的IP地址,适合于FTP服务器有多个IP地址的情况。如果不设置,则在所有的IP地址监听FTP请求。只有vsftpd服务在独立启动方式下才有效。 - (8)与客户连接相关的设置
anon_max_rate=0:设置匿名用户的最大传输速度,若取值为0,则不受限制。
local_max_rate=0:设置本地用户的最大传输速度,若取值为0,则不受限制。
max_clients=0:设置vsftpd在独立启动方式下允许的最大连接数,若取值为0,则不受限制。
max_per_ip=0:设置vsftpd在独立启动方式下允许每个IP地址同时建立的连接数目。若取值为0,则不受限制。
accept_timeout=60:设置建立FTP连接的超时时间间隔,以秒为单位。
connect_timeout=120:设置FTP服务器在主动传输模式下建立数据连接的超时时间,单位为秒。
data_connect_timeout=120:设置建立FTP数据连接的超时时间,单位为秒。
idle_session_timeout=600:设置断开FTP连接的空闲时间间隔,单位为秒。
pam_service_name=vsftpd:设置PAM所使用的名称。 - (9)设置上传文档的所属关系和权限
chown_uploads=YES:设置是否改变匿名用户上传文档的属主。默认为NO。若设置为YES,则匿名用户上传的文档属主将由chown_username参数指定。
chown_username=whoever:设置匿名用户上传的文档的属主。建议不要使用root。
file_open_mode=755:设置上传文档的权限 - (10)设置数据传输模式
ascii_download_enable=YES:设置是否启用ASCII码模式下载数据。默认为NO。
ascii_upload_enable=YES:设置是否启用ASCII码模式上传数据。默认为NO。