FTP服务

ftp图标

文件传输协议FTP

1、基于C/S架构
2、双通道协议:数据和命令连接
3、数据传输格式:二进制(默认)和文本
4、两种模式:服务器角度

  • 主动(POST style):服务器主动连接
    命令(控制):客户端:随机port—>服务器:tcp21
    数据:客户端:随机port<—服务器:tcp20
  • 被动(PASV style): 客户端主动连接
    命令(控制):客户端:随机port—>服务器: tcp21
    数据:客户端:随机port—>服务器:随机port

5、服务器被动模式数据端口示例:

  • 命令通道建立连接的回话中,会协商数据通道要使用的端口
  • 227(状态码) Entering Passive Mode (ip ,224,59)
    服务器数据端口为:224*256+59

FTP软件介绍

1、FTP服务器:

  • Wu-ftpd,Proftpd,Pureftpd,ServU,IIS(微软)
  • vsftpd:Very Secure FTP Daemon,CentOS默认FTP服务器,高速而且稳定

2、客户端软件:

FTP服务

1、状态码:

  • 1XX:信息 125:数据连接打开
  • 2XX:成功类状态 200:命令OK 230:登录成功
  • 3XX:补充类 331:用户名OK
  • 4XX:客户端错误 425:不能打开数据连接
  • 5XX:服务器错误 530:不能登录

2、用户认证:

  • 匿名用户:ftp,anonymous,对应Linux用户ftp
  • 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
  • 虚拟用户:特定服务的专用用户,独立的用户密码文件
  • nsswitch:network service switch
  • pam:用户认证 /lib64/security /etc/pam.d/ /etc/pam.conf

vsftp服务

1、由vsftp包提供,不再由xinetd管理,用户认证配置文件:/etc/pam.d/vsftpd
2、服务脚本:/usr/lib/systemd/system/vsftpd.service,/etc/rc.d/init.d/vsftpd
3、配置文件:/etc/vsftpd/vsftpd.conf

- 格式:option=value
- 注意:= 前后不要有空格

4、匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
5、系统用户共享文件位置:用户家目录
6、虚拟用户共享文件位置:为其映射的系统用户的家目录

vsftpd服务配置

1、命令端口

1
listen_port=21

2、主动模式端口

1
2
connect_from_port_20=YES  主动模式端口为20
ftp_data_port=20 (默认) 指定主动模式的端口

3、被动模式端口范围

linux 客户端默认使用被动模式
windows 客户端默认使用主动模式

1
2
pasv_min_port=6000 0为随机分配
pasv_max_port=6010

4、使用当地时间

1
use_localtime=YES 使用当地时间(默认为NO,使用GMT)

5、匿名用户

1
2
3
4
5
6
7
anonymous_enable=YES               支持匿名用户
no_anon_password=YES(默认NO) 匿名用户略过口令检查
anon_world_readable_only (默认YES) 只能下载全部读的文件
anon_upload_enable=YES 匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES 匿名建目录
anon_umask=077 指定匿名上传文件的umask
anon_other_write_enable=YES 可删除和修改上传的文件

指定上传文件的默认的所有者和权限

1
2
3
chown_uploads=YES(默认NO)
chown_username=wang
chown_upload_mode=0644

6、linux系统用户

1
2
3
4
5
6
guest_enable=YES            所有系统用户都映射成guest用户
guest_username=ftp 配合上面选项才生效,指定guest用户
local_enable=YES 是否允许linux用户登录
write_enable-YES 允许linux用户上传文件
local_umask=022 指定系统用户上传文件的默认权限
local_root=/ftproot guest 用户登录所在目录

7、禁锢所有系统用户在家目录中

1
chroot_local_user=YES(默认NO,不禁锢)禁锢系统用户

8、禁锢或不禁锢特定的系统用户在家目录中,与上面设置功能相反

1
2
3
4
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list
当chroot_local_user=YES时,则chroot_list中用户不禁锢
当chroot_local_user=NO时,则chroot_list中用户禁锢

9、vsftpd日志

1
2
dual_log_enable=YES      使用vsftpd日志格式,默认不启用 
vsftpd_log_file=/var/log/vsftpd.log(默认)可自动生成

10、登录提示信息

1
2
ftpd_banner=“welcome to mage ftp server"
banner_file=/etc/vsftpd/ftpbanner.txt 优先上面项生效

11、目录访问提示信息

1
2
dirmessage_enable=YES (默认)
message_file=.message 默认信息存放在指定目录下.message

12、使用pam(Pluggable AuthenticationModules)完成用户认证

1
2
pam_service_name=vsftppam
配置文件:/etc/pam.d/vsftpd/etc/vsftpd/ftpusers 默认文件中用户拒绝登录

13、是否启用控制用户登录的列表文件

1
2
3
userlist_enable=YES                   默认有此设置
userlist_deny=YES(默认值) 黑名单,不提示口令,NO为白名单
userlist_file=/etc/vsftpd/users_list 此为默认值

14、vsftpd服务指定用户身份运行

1
nopriv_user=nobody (默认值)

15、连接数限制

1
2
max_clients=0                最大并发连接数
max_per_ip=0 每个IP同时发起的最大连接数

16、传输速率:字节/秒

1
2
anon_max_rate=0              匿名用户的最大传输速率
local_max_rate=0 本地用户的最大传输速率

17、连接时间:秒为单位

1
2
3
4
connect_timeout=60           主动模式数据连接超时时长
accept_timeout=60 被动模式数据连接超时时长
data_connection_timeout=300 数据连接无数据输超时时长
idle_session_timeout=60 无命令操作超时时长

18、优先以文本方式传输

1
2
ascii_upload_enable=YES
ascii_download_enable=YES

实现基于SSL的FTPS

1、 查看是否支持SSL

1
ldd `which vsftpd` 查看到libssl.so

2、 创建自签名证书

1
2
3
cd /etc/pki/tls/certs/
make vsftpd.pem
openssl x509 -in vsftpd.pem -noout –text

3、 配置vsftpd服务支持SSL:/etc/vsftpd/vsftpd.conf

1
2
3
4
5
ssl_enable=YES             启用SSL
allow_anon_ssl=NO 匿名不支持SSL
force_local_logins_ssl=YES 本地用户登录加密
force_local_data_ssl=YES 本地用户数据传输加密
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem

4、 用filezilla等工具测试

vsftpd虚拟用户

1、虚拟用户:

所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号
的家目录
各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定

2、虚拟用户帐号的存储方式:

文件:编辑文本文件,此文件需要被编码为hash格式
奇数行为用户名,偶数行为密码
db_load -T -t hash -f vusers.txt vusers.db

关系型数据库中的表中:

3、实时查询数据库完成用户认证

mysql库:pam要依赖于pam-mysql
/lib64/security/pam_mysql.so
/usr/share/doc/pam_mysql-0.7/README

-------------本文结束感谢您的阅读-------------