Linux下FTP服务部署

FTP连接方式

控制连接:标准端口为21,用于发送FTP命令信息

数据连接:标准端口为20,用于上传、下载数据

数据连接的建立类型

主动模式:服务端从20端口主动向客户端发起连接

命令连接:客户端 >1023端口 -> 服务器 21端口

数据连接:客户端 >1023端口

被动模式:服务端在指定范围内的某个端口被动等待客户端发起连接

命令连接:客户端 >1023端口 -> 服务器 21端口

数据连接:客户端 >1023端口 -> 服务器 >1023端口

主动模式与被动模式FTP优缺点

主动FTP对FTP服务器的管理有利,但对客户端的管理不利,因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利,因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞,虽然这没有消除所有针对服务器的危险,但它大大减少了危险。

FTP用户的类型

匿名用户:anonymous或ftp //匿名用户登陆FTP无需密码

本地用户:帐号名称、密码等信息保存在passwd、shadow文件中

虚拟用户:使用独立的帐号/密码数据文件

FTP软件包安装

RPM安装方式:rpm –ivh vsftpd-2.2.2-6.e16.x86_64.rpm

YUM安装方式:yum –y install vsftpd

FTP服务相关的配置文件与服务脚本

主配置文件:/etc/vsftpd/vsftpd.conf

服务名称:vsftpd

用户控制列表文件

/etc/vsftpd/ftpusers //禁止登录FTP服务器的本地用户列表文件,该文件中的本地用户将被拒绝登录FTP服务器

/etc/vsftpd/user_list //该文件中包含的本地用户可能被禁止登录FTP服务器,也可能被允许登录,具体是由主配置文件vsftpd.conf中决定

当存在userlist_enable=yes的配置项时user_list文件生效,如果配置userlist_deny=yes,则仅禁止user_list中的用户登录

如果配置userlist_deny=no,则仅允许user_list中的用户登录

常见配置项及含义说明

anonymous_enable=YES //是否允许匿名用户ftp或anonymous登录

anon_root=/var/ftp //设置匿名用户的FTP根目录(缺省为/var/ftp)

anon_umask=022 //设置匿名用户所上传文件的默认权限掩码值

anon_world_readable_only=no //允许匿名用户浏览下载文件的权限

anon_upload_enable=YES //是否允许匿名用户上传文件(若开启了selinux功能,则要将sftpd_anon_write的布尔值设为on)

anon_mkdir_write_enable=YES //是否允许匿名用户有创建目录的权利

anon_other_write_enable=YES //是否允许匿名用户有其他写入权限,如对文件改名、覆盖、及删除文件

anon_max_rate //限制匿名用户的最大传输速率(0为无限制),单位为字节

dirmessage_enable=YES //是否显示目录说明文件,默认是YES但需要手工创建.message文件

local_enable=YES //是否允许本地用户登录

local_umask=022 //设置本地用户所上传文件的默认权限掩码值

local_root=/var/ftp //设置本地用户的FTP根目录(缺省为用户的宿主目录)

local_max_rate //限制本地用户的最大传输速率(0为无限制)单位为字节

chroot_local_user=yes //是否将FTP本地用户禁锢在宿主目录中

listen_port 21 //设置监原FTP服务的端口号

write_enable=yes //启用任何形式的写入权限(如上传、删除文件等)都需要开启此项

download_enable=yes //是否允许下载文件(建立仅限于浏览、上传的FTP服务器时可将其设为no)

xferlog_enable=YES //是否记录ftp传输过程,即启用FTP日志,默认记录到/var/log/xferlog文件中

xferlog_std_format=yes //启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自已的日志格式

connect_from_port_20=YES //是否确信端口传输来自20端口

chown_upload=YES、chown_username=username //是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文件都改成root属主

pasv_enable=yes //允许被动模式连接

pasv_max_port=24600 //设置用于被动模式的服务器最大端口号

pasv_min_port=24500 //设置用于被动模式的服务器最小端口号

pam_service_name=vsftpd //设置用于用户认证的PAM文件位置(/etc/pam.d目录中对应的文件名)

userlist_enable=yes //是否启用user_list用户列表文件

userlist_deny=yes //是否禁止user_list列表文件中的用户账号

max_clients=0 //最多允许多少个客户端同进连接FTP服务器(0为无限制)

max_per_ip=0 //对来自相同IP地址的客户端,最多允许多少个并发连接(0为无限制)

tcp_wrappers=yes //是否启用tcp_wrappers访问控制

idle_session_timeout=600 //设置默认的断开不活跃session的时间

accept_timeout=60 将客户端空闲断开时间,单位:秒

实例一、实现匿名用户上传FTP

#mkdir /var/ftp/upload //创建用于上传的目录

设置匿名用户(ftp)对upload目录的写权限,有两种常用方法

方法1: #chown ftp /var/ftp/loadup //将upload目录的属主修改为ftp用户

方法2:# setfacl -m g:ftp:rwx /var/ftp/upload //通过acl设置ftp组账号对upload目录的w权限

1. 本例采用方法2实现对upload目录的写权限,如下图所示:

2. 修改/etc/vsftpd/vsftpd.conf配置文件打开允许匿名用户上传功能,如下图所示

#vi /etc/vsftpd/vsftpd.conf

3. 修改selinux允许匿名用户上传

4. iptables防火墙规则设置

实例二:实现本地用户登录FTP服务器

1:修改selinux允许本地用户登录

2:修改selinux允许本地用户上传

3:禁锢本地用户在其宿主目录内

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180627G06Z8300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券