1FTP服务

1FTP连接

控制连接(21):建立控制连接并传输控制命令

数据连接(20):建立数据连接并传输数据文件

2)传输模式

主动:服务器主动向客户端发起数据连接,客户机以PORT命令告知服务器......

被动:服务器被动等待客户端发送数据连接,服务器以PASV命令告知客户机.....

注:①无论是主动还是被动模式,控制连接都是由客户端向服务器发起

    ②只有在服务器处于主动模式时才用20端口传送数据;数据传输模式取决于客户端

3)用户类型

匿名用户:anonymousftp,一般用于公共文件的下载

本地用户:本地系统用户,使用本机的系统用户进行验证

虚拟用户:保存于独立的用户数据库,更安全

2vsftpVery Secure FTP Daemon

服务名:vsftpd

1)主配置文件/etc/vsftpd/vsftpd.conf

常用的匿名FTP配置项

anonymous_enable=YES:启用匿名访问

anon_root=/var/ftp:匿名用户的FTP根目录

anon_upload_enable=YES:允许上传文件

anon_mkdir_write_enable=YES:允许创建目录

anon_other_write_enable=YES:开放其他写入权限,如覆盖、删除等

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

anon_umask=022:匿名用户所上传文件的权限掩码

常用的本地用户FTP配置项

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

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

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

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

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

常用的全局配置项

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

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

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

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

download_enableYES:是否允许下载文件

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

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

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

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

pasv_enabled=YES:允许被动模式连接

2)用户控制文件

ftpusers:禁止登陆vsftpd服务器的用户,默认已包含rootbindaemon

user_list:可能被禁止也可能被允许的用户,当userlist_enable=yes时,此文件才生效

如果配置userlist_deny=yes,则仅禁止列表中的用户登陆

如果配置userlist_deny=no,则仅允许列表中的用户登陆

3、匿名访问的vsftpd服务

1)设置FTP目录及权限

chown ftp /var/ftp/pub

2)修改配置文件,允许匿名访问及上传

anonymous_enable=YES

local_enable=NO

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

3重启服务

service vsftpd restart service vsftpd reload

chkconfig vsftpd on

4客户端访问ftp  192.168.1.1匿名用户ftpanonymous

   windowsftp://192.168.1.1

①匿名访问对应的账号为ftp,宿主目录为/var/ftp,即匿名用户访问时默认的根目录为/var/ftp

    ②基于安全性考虑,FTP根目录不允许用户有写入权限,所以不要更改/var/ftp根目录的权限

    ③如果知道下载链接,也可使用wget命令,如wget  ftp://192.168.1.1/a.txt

4、基于本地用户的vsftpd服务

本地用户访问时默认的根目录为自己的宿主目录,且拥有读写权限,并允许切换到其他目录

1)  添加测试用户

useradd jack

passwd 123

2)修改配置文件,开放本地用户

anonymous_enable=NO

local_enable=YES

write_enable=YES

chroot_local_user=YES    //将用户禁锢在其宿主目录提高安全性

local_root=/var/ftproot      //将本地用户的FTP根目录设置为同一个文件夹

local_umask=022          //设置本地用户上传或建立文件时的权限掩码,用于去掉特定的权限

max_clients=20         //限制并发客户端连接数

max_per_ip=2          //限制来自同一IP的客户连接数

local_max_rate=102400  //本地用户下载、上传限速为100KB/s

3只允许特定用户jack使用vsftpd服务

vi /etc/vsftpd/user_list添加用户jack

vi /etc/vsftpd/vsftpd.conf

userlist_enable=YES

userlist_deny=NO

5、基于虚拟用户的vsftpd服务

1安装db4-utils软件包

rpm -ivh /mnt/iso/Server/db4-utils-4.3.29-9.fc6.i386.rpm

注:vsftpd服务使用Berkeley DB格式的数据库文件存放虚拟账号,需要使用db_load工具

2创建用户名和密码列表文件并转化为DB数据库文件

vi /etc/vsftpd/user.list

   tom                       ----奇数行为用户名

   123                       ----偶数行为密码

db_load  -T -t hash -f user.list  user.db

注:-T表示允许其他应用程序使用转换来的db数据文件、-t指定算法、-f 指定源文件

3创建虚拟用户所映射的系统账户

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

chmod 775 /var/ftproot

注:vsftpd服务将所有虚拟用户都映射为一个系统用户

    ②系统账户的宿主目录将作为所有虚拟用户登陆后的FTP根目录

4)建立pam认证文件

vi /etc/pam.d/vsftpd.vu

#%PAM-1.0

auth    required        pam_userdb.so   db=/etc/vsftpd/user      -----省略了.db扩展名

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

注:PAM配置文件主要用于为程序提供用户认证控制,vsftpd服务使用PAM进行用户的认证

    /etc/pam.d/vsftpd文件用于为vsftpd系统用户账号进行认证,虚拟用户需要重新创建PAM文件

5)修改vsftpd.conf文件,添加虚拟用户支持

vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES   //虚拟用户需要映射为本地系统用户

#anon_upload_enable=YES                                               ------注释此配置项

#anon_mkdir_write_enable=YES                                        ------注释此配置项

#local_root=/var/local                                                       ------注释此配置项

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

guest_username=virtual  //将用户映射指定为virtual

pam_service_name=vsftpd.vu  //修改使用的PAM文件位置,原来已存在此配置项,修改即可

注:①虚拟用户默认作为匿名用户来处理,因此其对应的权限通常以none_开头

    ②实验时需要注意前面实验的所添加的用户限制,将其删除,如userlist_enable=yes

6)为不同的用户建立独立的配置文件

vi /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir   //指定用户配置目录位置

mkdir  /etc/vsftpd/vusers_dir      //创建用户配置目录

cd /etc/vsftpd/vusers_dir

vi tom   //tom用户建立独立的配置文件

anon_upload_enable=YES

anon_mkdir_write_enable=YES

touch jack      //为其他用户创建空的配置文件

service vsftpd restart

注:①在vsftpd.conf中启用user_config_dir配置项后需要为每个虚拟用户建立一个单独的配置文件(可以是空文件),否则可能会无法登陆

  ②在验证虚拟用户不同权限时需要将vsftpd.conf文件中的anon_upload_enableanon_mkdir_write_enable配置项删除

         ③默认情况下当启用虚拟用户后,本地系统用户将无法登陆,如果想同时启用,需要做特殊设置