vsftp搭建文档
FTP全名是File Transfer Protocol(文件传输协议) C/S架构简介:
下面是关于FTP这个服务的属性
(1)FTP服务相关软件
IIS Serv-U Vsftpd proftpd pureftpd
(2)FTP客户端相关软件
ftp命令 CuteFTP FlashFTP LeapFTP Filezilla gftp kuftp
(3)VSFTP的守护进程
/usr/sbin/vsftpd
(4)FTP的启动脚本
/etc/init.d/vsftpd
(5)FTP的端口
TCP协议的20,21端口与客户端进行通信
20用于建立数据连接,传输文件数据。(数据端口)
21用于建立控制连接,并传输FTP控制命令。(命令端口)
(6)用户控制列表文件
/etc/vsftpd/ ftpusers文件中的用户禁止登录FTP服务器(黑名单)
/etc/vsftpd/ user_list文件中的用户可能被禁止或允许登录FTP服务器,具体看vsftpd.conf的设置
(7)工作模式
主动模式:
客户端想服务端21端口发送建立连接请求,需要传输数据时,客户端会通过port命令告诉服务器自己监听的端口,服务器会主动通过20端口与客户端建立数据连接。
被动模式
客户端想服务端21端口发送建立连接请求,需要传输数据时,
服务器以pasv命令告诉客户我打开了某个端口(非20端口),你来连接我,客户端会像服务器的非20端口建立数据连接
(8)根据传输文件是否进行字符转换分为:
文本模式(又称为ASCII)以文本序列传输数据,用的较多
二进制模式(又称为Binary模式)以二进制序列传输数据
主配置文件
/etc/vsftpd/vsftpd.conf
搭建FTP服务:
1、搭建yum仓库
(1)mount /dev/cdrom /mnt
(2)cat /etc/yum.repos.d/rhel-debuginfo.repo
name=Red Hat Enterprise Server
baseurl=file:///mnt/Server
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
2、安装
yum -y install vsftpd*
配置选项讲解
实验1
[*]创建测试文件
[*]匿名用户ftp对/var/ftp/pub有写入权限
[*]允许匿名用户浏览
[*]允许用户(匿名,本地,虚拟)有上传权限
[*]允许匿名用户有上传权限
[*]允许匿名用户有上传文件夹权限
[*]禁止匿名用户有删除,覆盖等权限
(1)查看ftp的默认根路径,默认是有一个pub目录(默认的跟目录),# ls /var/ftp/pub(2)备份配置文件cd /etc/vsftpd/vsftpd.confg cp vsftpd.conf vsftpd.bakvim vsftpd.conf内容如下write_enable=YESanon_umask=022anonymous_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=NO 是否允许匿名用户有其他写入权(改名,删除,覆盖)dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES(3)启动服务service vsftpd start(4)改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root。chown ftp /var/ftp/pub
验证:在网络或是计算中输入ftp地址:格式如下图。我们会看到默认的pub目录。图1
进入到pub目录下,可以创建和上传测试目录了。如图2
图2 注意:(1)修改完配置之后需要重启完服务才能生效(2)还需要从新从客户端登陆,否则修改后的配置看不到效果。
实验2
[*]创建测试帐号u1、u2、u3密码都为“user”
[*]允许本地用户访问
[*]将权限掩码设为077
[*]将本地帐号禁锢在宿主目录中
[*]只允许u1、u2两个用户可以登录
创建测试用户,并且设置密码# useradd u1# echo "user" |passwd --stdin u1# useradd u2# echo "user" |passwd --stdin u2# useradd u3# echo "user" |passwd --stdin u3
在配置文件中加入红色部分内容# vi /etc/vsftpd/vsftpd.conf
local_enable=YESlocal_umask=077chroot_local_user=YESwrite_enable=YESdirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=YESpam_service_name=vsftpduserlist_enable=YESuserlist_deny=NOtcp_wrappers=YES
将允许登陆的用户加入到白名单中
vi /etc/vsftpd/user_list u1u2
service vsftpd restart
登陆验证格式为:ftp://用户名:密码@ftpIP地址
登陆上默认是空白的,因为这是用户的家目录。
用u3用户登陆,会报错误(windows不同系统报错不会完全一致):
实验3构建基于虚拟用户的FTP服务创建账号数据1.建立虚拟FTP用户的帐号数据库文件2.创建FTP根目录及虚拟用户映射的系统用户3.建立支持虚拟用户的PAM认证文件添加虚拟用户支持4.在vsftpd.conf文件中添加支持配置5.为个别虚拟用户建立独立的配置文件启动服务并测试6.重新加载vsftpd配置7.使用虚拟FTP账户访问测试
实验部分1.建立虚拟FTP用户的帐号数据库文件用到db_load工具先安装软件包rpm -ivh db4-utils-4.7.25-17.el6.x86_64.rpm cd /etc/vsftpd/2、创建虚拟用户文件vim usera1b1c1
基数行代表用户名,偶数行代表密码
通过db_load工具创建出Berkeley DB格式的数据库文件db_load -T -t hash -f user user.db
-f 指定数据原文件-T允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件-t hash读取文件的基本方法3、创建虚拟用户对应的系统用户useradd -s /sbin/nologin vu4、建立支持虚拟用户的PAM认证文件vi /etc/pam.d/vsftpd.vu加入以下两行auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/useraccount required /lib64/security/pam_userdb.so db=/etc/vsftpd/user对应刚才生成user.db的文件5、在vsftpd的配置文件中支持虚拟用户注意:在做虚拟用户的时候,一定要去掉userlist_deny=NO这个选项,否则会显示用户验证失败vi /etc/vsftpd/vsftpd.confguest_enable=YES启用用户映射功能guest_username=vu指定映射的系统用户名称pam_service_name=vsftpd.vu指定新的PAM认证文件local_enable=YESlocal_umask=077chroot_local_user=YES如果红色3条配置没有的话就会报错:用户身份验证失败
virtual_use_local_privs=YES如果没有这条配置的话 上传将会显示错误.这条最重要还要注意每行配值的末尾不要有空行,否则也会有报错
6.为个别虚拟用户建立独立的配置文件vi /etc/vsftpd/vsftpd.conf 加入下面一行user_config_dir=/etc/vsftpd/user_dir用户配置目录支持为用户a、b建立独立的配置目录及文件 这一行也是必须有的
mkdir /etc/vsftpd/user_dirvim alocal_root=/test 规定了a用户的根目录注意:一定要把目录的属主改为虚拟用户对应的系统用户。
默认就是所有权限
总结:本地用户和虚拟用户不能同时登录、因为认证方式只有一种本地是pam_service_name =vsftpd虚拟是pam_service_name =vsftpd.vu
实验4
[*]修改vsftpd服务的监听地址,端口
[*]IP为:192.168.200.129
[*]端口为:2121
[*]使用vsftpd服务的被动模式
[*]下限端口为24500
[*]上限端口为24600
[*]限制vsftpd服务的并发数,传输速度
[*]限制并发客户连接最多200
[*]限制每个IP地址的连接数最多50
[*]限制匿名用户传输速率为50KB/s
[*]限制本地用户传输速率为200KB/s# netstat -naptu |grep "vsftpd"# vi /etc/vsftpd/vsftpd.conflisten=YESlisten_address=192.168.200.129listen_port=2121
pasv_enable=YESpasv_min_port=24500pasv_max_port=24600
max_clients=200max_per_ip=50anon_max_rate=50000local_max_rate=200000
# service vsftpd restart# netstat -naptu |grep "vsftpd"tcp 0 0 192.168.200.129:2121 0.0.0.0:* LISTEN 3552/vsftpd
页:
[1]