1.ftp服务
1.1简介
- 文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。ftp的文件传输时明文方式,不够安全。因而诞生了一种更安全的传输方式vsftp.
1.2连接类型
- 控制连接:tcp 21,用于发送FTP命令信息
- 数据连接:tcp 20,用于上传、下载数据
1.3工作模式
- 主动模式
- 客户端的命令端口与ftp服务器的命令端口建立连接,并发送"PORT 1027"。
- ftp服务器给客户端的命令端口返回一个"ACK"值。
- FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接。
- 客户端给服务器返回一个"ACK"值。
- 被动模式(服务端不需要用到20端口)
- 客户端的命令端口与服务器的命令端口建立连接,并发送命令"PASV"
- 服务器发挥命令"PORT 2024",告诉客户端(服务器)用哪个端口倾听数据连接。
- 客户端初始化一个从自己的数据端口到服务器端口指定的数据端口的数据连接。
- 服务器给客户端的数据端口返回一个"ACK"响应。
- 区别: 主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
- FTP服务器如何设置工作模式?实际上FTP服务器一般都支持主动和被动模式,连接采用何种模式是由FTP客户端软件决定(客户端如果发送PASV命令,就是被动模式,没有发就是主动模式)。
1.3相关文件
/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件
/etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP 服务器。 黑名单
/etc/vsftpd/user_list:指定允许使用vsftpd 的用户列表文件。 白名单
/etc/vsftpd/chroot_list:指定允许使用vsftpd 的用户列表文件。 控制名单下的目录能不能离开ftp根目录
1.4传输模式
- 文本模式:ASCII模式,以文本序列传输数据
- 二进制模式:Binary模式,以二进制序列传输数据
1.5用户类型
- 匿名用户:anonymous或ftp
- 本地用户:账号名称、密码等信息保存在passd/shadow文件中
- 虚拟用户:使用独立的账号/密码数据文件
1.6sftp
1.6.1相关信息
- 监听端口 tcp 21(CMD) 20(DATA)
- 服务进程 /usr/sbin/vsftpd
- 主配置文件 /etc/vsftpd/vsftp.conf
- 共享目录 /var/ftp(匿名用户) 家目录(普通用户)
1.6.2配置主置文件 /etc/vsftpd/vsftp.conf
local_enable=YES #允许本地用户访问
anonymous_enable=YES #允许匿名用户访问
chroot_local_user=YES #设置根目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
write_enabe=YES
local_umask=022 #本地用户上传文件的umask(022表示默认创建新文件权限为755)
anon_upload_enable=YES #允许匿名用户上传
anon_mkdir_write_enable=YES #允许匿名用户上传/建立目录
local_root=DIR #本地用户访问默认工作目录
pasv_min_port=PORT
pasv_max_port=PORT #限制被动模式端口范围
1.76vsftp一些工作场景的设置
- 搭建只允许匿名用户访问文件共享服务器
local_enable=NO
- 让本地用户登录时访问指定目录
local_root=DIR
chroot_local_enable=yes
- 让匿名用户对某目录有权限上传文件
chmod o+w /varftp/upload/
anon_mkdir_write_enable=YES
anon_upload_enable=YES
关闭selinux sentenforce 0
- 让普通用户对某个目录具有上传权限
local_enable=YES
local_umask=022 #本地用户所上传文件的权限掩码
local_root=/var/ftp #设置本地用户的FTP根目录
chroot_local_user=YES 将用户禁锢在主目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 列表中的用户将被禁锢在目录中
1.8防火墙配置
- iptables -P INPUT DROP|ACCEPT #设定INPUT链的默认策略
iptables -I INPUT -p tcp --dport 20:21 -j ACCEPT #主动模式
iptables -D INPUT -p tcp --dport 60000:60500 -j ACCEPT #被动模式
#pasv_max_port=60500 #开启随机最大的端口号
#pasv_min_port=60000 #开启最小端口号