一.FTP工作模式

  1. 主动模式

    1.      第一步,客户机随机开启大于1024的端口与服务器的21端口建立连接通道。

    2.      第二步,当客户机需要与服务器进行数据传输时,客户端会在开启一个大于1024的随机端口Y,并将Y端口号通过之前的命令通道传送给服务器的21端口。

    3.      第三步,服务器获取到客户端的第二个端口后会主动连接客户端的该端口,通过三次握手后,完成服务器与客户端数据通道的建立,所有的数据均通过该数据通道进行传输。

  2. 被动模式

    1.      第一步,客户端随意开启大于1024X端口与服务器的21端口建立连接通道。

    2.      第二步,当客户端需要与服务器进行数据传输时,客户端从命令通道发送数据请求上传或下载        数据。

    3.      第三步,服务器收到数据请求后会随机开启一个端口Y,并通过命令通道将该端口信息传送给       客户端。

    4.      第四步,客户端在收到服务器发送过来的数据端口Y的信息后,将在客户端本地开启一个随机端口Z,此时客户端在主动通过本机的Z端口与服务器的Y端口进行连接,通过三次握手完成后,即可进行数据传输。

    5.       

二.安装与管理vsftpd

rpm –ivh vsftpd

service vsftpdstart

chkconfig vsftpdon

一.配置文件解析

Vsftpd配置文件默认位于/etc/vsftpd目录下   

常用的全局配置项

listen=YES:是否以独立运行的方式监听服务

listen_address=192.168.4.1:设置监听的 IP 地址

listen_port=21:设置监听 FTP 服务的端口号

write_enable=YES:是否启用写入权限

download_enable=YES:是否允许下载文件

userlist_enable=YES:是否启用 user_list 列表文件

userlist_deny=YES:是否禁用 user_list 中的用户

max_clients=0:限制并发客户端连接数

max_per_ip=0:限制同一 IP 地址的并发连接数

常用的匿名 FTP 配置项

anonymous_enable=YES:启用匿名访问

anon_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:限制最大传输速率(字节/秒)

常用的本地用户 FTP 配置项

local_enable=YES:是否启用本地系统用户

local_umask=022:本地用户所上传文件的权限掩码

local_root=/var/ftp:设置本地用户的 FTP 根目录

chroot_local_user=YES:是否将用户禁锢在主目录

local_max_rate=0:限制最大传输速率(字节/秒)


五.本地账户FTP(案例一)

     1.修改配置文件如下

anmous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

xferlog_std_fromat=YES

chroot_local_user=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

2.创建系统账户与测试文件

    useradd  –s /sbin/nologin  tom

    useradd  –s /sbin/nologin  jerry

    useradd  –s /sbin/nologin  smith

    touch  home/{tom,jerry,smith}/test.txt

3.服务管理

    Servicevsftpd  start

一.虚拟用户FTP(案例二)

  1. 创建虚拟用户数据库

首先需要创建明文密码文件,文件中奇数行为用户名,偶数行为密码。然后使用db_load工具将其转换为数据库文件,db_load工具需要通过安装db4utils软件获得,最后通过修改文件权限以增强数据资料的安全性。

 

[root@localhost]# vi /etc/vsftpd/vusers.list

mike

123

john

456

[root@localhost]# cd /etc/vsftpd/

[root@localhost vsftpd]# db_load -T -t hash -f vusers.list vusers.db

[root@localhost vsftpd]# file vusers.db

vusers.db: Berkeley DB (Hash, version 9, native byte-order)

[root@localhost vsftpd]# chmod 600 /etc/vsftpd/vusers.*

[root@localhost vsftpd]# ls -lh /etc/vsftpd/vusers.*

-rw------- 1 root root 12K 6月27 08:51 /etc/vsftpd/vusers.db

-rw------- 1 root root  18 6月27 08:48 /etc/vsftpd/vusers.list

2.创建 FTP 根目录及虚拟用户映射的系统用户

[root@localhost]# useradd -d /var/ftproot -s /sbin/nologin virtual

[root@localhost]# chmod 755 /var/ftproot/

3.建立支持虚拟用户的 PAM 认证文件

[root@localhost]# vi /etc/pam.d/vsftpd.vu

#%PAM-1.0

auth          required     pam_userdb.so db=/etc/vsftpd/vusers

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

4.在 vsftpd.conf 文件中添加支持配置

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

……

local_enable=YES

write_enable=YES

anon_umask=022

guest_enable=YES    //启用用户映射功能

guest_username=virtual    //指定映射的系统用户名称

pam_service_name=vsftpd.vu    //指定新的PAM认证文件

5.为不同的虚拟用户建立独立的配置文件

在 vsftpd.conf 文件中添加用户配置目录支持

 user_config_dir=/etc/vsftpd/vusers_dir 

为用户 mike、john 建立独立的配置目录及文件

 配置文件名与用户名相同

[root@localhost ~]# mkdir /etc/vsftpd/vusers_dir/

[root@localhost ~]# cd /etc/vsftpd/vusers_dir/

[root@localhost vusers_dir]# vi john

anon_upload_enable=YES

anon_mkdir_write_enable=YES

[root@localhost vusers_dir]# touch mike