笔记FTP服务

1、定义: 

File Transfer Protocol,即文件传输协议。用于 Linux 系统间文件的传输。

2、文件传输方式

(1)ASCII 码传输:网页文件

(2)BINARY(二进制)传输方式:可执行文件

3、FTP 服务器的两种工作模式

FTP 服务基于 C/S 架构

端口 TCP20 用于传输数据

端口 TCP21 用于建立连接。

主动模式(PORT)

客户端产生一个随机的大于1024的端口N,连接服务端的21端口,并告知自己用来传输数据的端口N+1,服务器知道客户机连接数据传输的端口后,用自己的20号端口来连接客户端的N+1端口来进行数据传输。

                             客户端 (C)                  服务器端(S)

        命令连接       随机端口         >           21端口                      

        数据连接       随机端口         <            20端口

注:服务器端安全性较高 客户端连接可能会被服户端防火墙拦截数据传输失败

被动模式(PASV)

当客户端通知服务器它处于被动模式时才启用。

在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。

客户端产生一个随机的大于1024的端口N,与服务器的21端口进行连接,并告知自己用来传输数据的端口N+1,服务器通过已经建立的连接告知客户端自己的数据传输端口为大于 1024 的随机端口 M,客户端使自己的数据端口N+1连接服务器端的数据端口M,进行数据传输。

客户端(C)                   服务器端(S)

   命令连接     随机端口        >           21                     

  数据连接    随机端口      >       随机端口       

注:服务器端安全性较低,客户端连接不会出现问题,服务器端放行端口接口

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。

4、FTP用户类型

匿名用户:ftp、anonymous,也可以理解为是公共账户

本地用户:账户名或密码信息都保存在/etc/password和/etc/shadow文件中

虚拟用户:是可以自己创建的,但必须挂靠一个Linux普通账户作为映射关系,利用这个用户的家目录作为落脚点,否则虚拟账户没法使用的

5、配置文件解析

安全文件配置
connect_timeout=60                     #主动模式下超时时间
accept_timeout=60                      #被动模式下超时时间
data_connection_timeout=300            #数据的连接超时时间
idle_session_timeout=300               #挂机超时时间
tcp_wrappers=YES                       #控制连接是否放行
ftpd_banner=xxx 和 banner_file=/path/file   #欢迎信息

全局配置
listen_address=192.168.1.2             #设置监听的 IP 地址(本地IP)
listen_port=21    		       #设置监听 FTP 服务的端口号
write_enable=YES    		       #是否启用写入权限
download_enable=YES    	               #是否允许下载文件
max_clients=0    		       #限制并发客户端连接数
max_per_ip=0    		       #限制同一 IP 的并发连接数

匿名用户配置
anonymous_enable=YES    	       #启用匿名访问
aon_umask=022    	    	       #匿名用户上传文件的权限掩码
anon_root=/var/ftp       	       #匿名用户 FTP 的根目录
anon_upload_enable=YES    	       #允许上传文件
anon_mkdir_write_enable=YES	       #允许创建目录
anon_other_write_enable=YES	       #允许其它写入权
anon_max_rate=0    		       #限制最大传输速率(字节/秒)

本地用户配置
local_enable=YES                       #启用匿名访问
local_umask=022                        #本地用户上传文件的权限掩码
local_root=/var/ftp                    #设置本地用户的 FTP 根目录
chroot_local_user=YES	               #是否将用户禁锢在主(家)目录
local_max_rate=0                       #限制最大传输速率(字节/秒)

6、简单的搭建FTP

① 配置 FTP 服务器

1、安装软件

yum install vsftpd -y

2、启动服务

service vfstpd start

配置 FTP 客户端

1、安装软件

yum install ftp -y 

2、使用匿名账户访问 FTP 服务器

ftp 服务器 IP/主机名

匿名账户:账户名:ftp

密码:随便

③ 常用命令

help→帮助

!→外界命令输入

cd→切换工作路径

delete→删除文件

get→下载

put→上传

mkdir→创建目录

rmdir→删除目录

pwd→显示工作路径

ls→显示目录下的内容

quit、exit、bye →退出

7、匿名登录

1、使用匿名账户访问 FTP 服务器 (ftp、anonymous)

ftp 服务器 IP/主机名

匿名账户:账户名:ftp

密码:随便

匿名账户登录服务器的默认位置在服务器上的/var/ftp/

匿名账户的默认权限为仅能下载文件 

客户端默认被动模式:ftp> passive 关掉被动模式

2、设置匿名账户上传文件、建立目录权限

(1)在服务器端

编辑 vsftpd 配置文件:vim /etc/vsftpd/vsftpd.conf

允许匿名账户上传文件,anon_upload_enable=YES

允许匿名账户创建目录,anon_mkdir_enable=YES

修改/var/ftp/pub 目录的属主与属组:chown ftp.ftp /var/ftp/pub

或(在pub目录下创建一个有rwxr-xrwx权限的目录,文件上传到该目录)

重启服务:service vsftpd start

(2)在客户端测试

切换工作目录:ftp> cd pub

3、设置匿名账户删除文件、目录权限

(1)在服务器端

编辑配置文件:vim /etc/vsftpd/vsftpd.conf

添加:anon_other_write_enable=YES

重启服务:systemctl restart vsftpd

8、本地用户登录

(1)在服务器端

创建实体账户:useradd user1

设置登录密码:passwd user1

对本地账户实现 chroot

在服务器端:

编辑配置文件:vim /etc/vsftpd/vsftpd.conf

对本地账户进行 chroot

chroot_loacal_user=YES 

使用 chroot_list 文件控制被 chroot 的账户

chroot_list_enable=YES 

设定 chroot_list 文件所在位置

chroot_list_file=/etc/vsftpd/chroot_list 

将不被 chroot 的本地用户写入/etc/vsftpd/chroot_list 文件中

注:如果改文件不存在,则创建该文件

(2)在客户端测试

ftp 服务器 IP/主机名

账户名:user1

账户密码:user1对应的密码

注:本地账户登录到服务器的默认位置为本地账户对应的家目录 

本地账户的默认权限为可以下载、上传、删除文件,创建和删除目录

(3)禁止账户登录

1、通过/etc/vsftpd/user_list 文件和配置文件来控制用户登录

禁止点在输入用户名的时候

写入文件中的用户将不能在客户端中进行登录。

2、将不允许登录的用户写入至/etc/vsftpd/ftpusers 文件内即可

禁止点在输入密码的时候

(4)被动模式限制端口范围

写入配置文件/etc/vsftpd/vsftpd.conf

pasv_enable=YES

pasv_min_port=10221

pasv_max_port=10231

9、虚拟用户登录(映射)

配置服务器端

(a)创建虚拟账户文件

vim /root/f.txt (随便一个文件)

一行写用户名,一行写改用户名对应的密码

例:vim /root/f.txt

test 账户名

123  密码

(b)通过虚拟账户文件生成虚拟账户验证使用的数据库文件 

db_load -T -t hash -f 虚拟账户文件虚拟账户数据文件

例:db_load -T -t hash -f /root/f.txt /etc/vsftpd/test.db

参数:

-T→通过文本文件生成数据库文件

-t→指定加密算法(hash 算法)

-f→指定账户文本文件

  #为了安全chmod 600 /etc/vsftpd/test.db

(c)添加虚拟映射用户

useradd -d /var/ftproot -s /sbin/nologin virtual

chmod 755 /var/ftproot/

(d)生成虚拟账户验证文件

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

修改验证文件

vim /etc/pam.d/vsftpd 

去掉验证模块的路径,修改验证虚拟账户使用的数据库

例:auth required pam_userdb.so db=/etc/vsftpd/test

account required pam_userdb.so db=/etc/vsftpd/test

(e)修改主配置文件

编辑配置文件:vim /etc/vsftpd/vsftpd.conf

在配置文件末尾添加:

guest_enable=YES (允许来宾)

guest_username=virtual(映射的用户)

user_config_dir=/etc/vsftpd/conf(虚拟用户的权限存放目录)

(f)创建权限存放文件

mkdir -p /etc/vsftpd/conf

创建虚拟用户

touch  user1  user2  user3

(g)常见权限: (写入user中)

anon_upload_enable=YES   允许上传

anon_mkdir_write_enable=YES     允许用户创建目录

anon_other_write_enable=YES      允许其它写入权限

(h)重启服务

service vsftpd restart 

10、加密传输

安装机密算法程序 openssl

yum  -y  install  openssl

yum  -y  install  openssl-devel

创建证书

openssl  req  -new  -x509  -nodes  -out  vsftpd.pem  -keyout  vsftpd.pem

 拷贝到 /etc/ssl/certs

为了保密性,不能让别人随意查看,修改权限

 chmod  400  vsftpd.pem 

修改配置文件/etc/vsftpd/vsftpd.conf

ssl_enable=YES        开启加密认证                                 

allow_anon_ssl=YES                                    

force_local_data_ssl=YES                            

force_local_logins_ssl=YES                          

force_anon_data_ssl=YES                            

force_anon_logins_ssl=YES                           

ssl_tlsv1=YES                                                

ssl_sslv2=NO

ssl_sslv3=NO     

rsa_cert_file=/etc/ssl/certs/vsftpd.pem 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值