自己动手搭建FTP服务
时间:2023-07-09 15:09:01 | 来源:网站运营
时间:2023-07-09 15:09:01 来源:网站运营
自己动手搭建FTP服务:
FTP连接方式- 控制连接:标准端口为21,用于发送FTP命令信息
- 数据连接:标准端口为20,用于上传、下载数据
数据连接的建立类型- 主动模式:服务端从20端口主动向客户端发起连接
- 命令连接:客户端 >1023端口 -> 服务器 21端口
- 数据连接:客户端 >1023端口 <- 服务器 20端口
- 被动模式:服务端在指定范围内的某个端口被动等待客户端发起连接
- 命令连接:客户端 >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:禁锢本地用户在其宿主目录内