vsftpd部署-使用虚拟账户

乡下的树 2015年12月19日 458次浏览

本实验配置用户在被动模式下,限制在ftp主目录内,可读写权限
如果在内网环境,服务器防火墙关闭状态,选择被动模式;
如果在外网环境,服务器防火墙开启状态,选择主动模式,需客户端关闭防火墙;

  1. 概述
    FTP是文件传输协议,在内外网的文件传输中使用广泛。
    本篇博客主要介绍FTP服务器的部署和测试。
  2. 软件环境部署
    查看系统是否安装FTP软件(vsftpd),执行命令:rpm -qa | grep vsftpds,如下图
    1.png
    安装
yum install -y vsftpd

  1. 配置vsftpd
    2.png
    配置目录
    vsftpd的主配置目录在/etc/vsftpd目录下,进入该目录cd /etc/vsftpd
    创建用户列表
vim /etc/vsftpd/vir_user_list
--然后添加两行
ftp_vita
dFJee#sddegbed0
ftp_stri
JEdldedbN#WrcC

第一行是虚拟ftp的账号,第二行是该账号的密码,多个账号以此类推增加
生成加密文件
执行命令:

db_load -T -t hash -f /etc/vsftpd/vir_user_list /etc/vsftpd/vir_user_list.db

修改权限:

chmod 600 /etc/vsftpd/vir_user_list.db

创建虚拟用户配置目录和配置文件
执行命令:

mkdir -p /etc/vsftpd/vir_user_conf

创建虚拟用户配置文件:

touch /etc/vsftpd/vir_user_conf/ftp_vita
--添加以下内容
local_root=/home/www/upload   --用户
anon_mkdir_write_enable=yes   --创建目录权限
anon_other_write_enable=yes   --写入权限
anon_upload_enable=yes        --上传权限
anon_world_readable_only=yes  --读取权限

配置vsftpd主配置文件
编辑配置文件/etc/vsftpd/vsftpd.conf,清空配置文件内容,写入如下信息:

#vim /etc/vsftpd/vsftp.conf
listen=YES
listen_port=21
pasv_enable=yes   --使用被动模式 ,如果想要使用主动模式pasv_enable=NO
anonymous_enable=NO
virtual_use_local_privs=YES
write_enable=yes   --允许用户写入,如果文件夹有写入权限,但这里不允许,一样不能写入,会提示550 Permission denied
local_umask=022
anon_upload_enable=NO
local_enable=YES
chroot_local_user=YES     --限制用户在ftp主目录内
allow_writeable_chroot=YES  --允许ftp根目录有写权限;默认如果启用chroot,必须保证ftp根目录不可写,否则会提示异常500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
guest_enable=yes
guest_username=ftp      --操作系统中真实存在的系统用户,默认为ftp用户,必须保证ftp系统用户对ftp目录有读取和写入的权限; 
max_clients=10
max_per_ip=10
pam_service_name=vsftpd.pam       --使用的pam认证文件
user_config_dir=/etc/vsftpd/vir_user_conf  --虚拟用户配置目录
xferlog_enable=YES
xferlog_file=/var/log/vsftp.log
xferlog_std_format=YES

配置vsftpd采用PAM认证
3.png
编辑配置文件/etc/pam.d/vsftpd,内容修改如下:

# vim /etc/pam.d/vsftpd
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/vir_user_conf onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

--file=/etc/vsftpd/vir_user_conf  修改为虚拟用户配置目录

--新建文件
# touch /etc/pam.d/vsftpd.pam    
--增加以下内容
auth     required       pam_userdb.so   db=/etc/vsftpd/vir_user_list
account  required       pam_userdb.so   db=/etc/vsftpd/vir_user_list

--db=/etc/vsftpd/vir_user_list  为用户列表文件

修改FTP根目录的权限
由于上述内容中,配置了虚拟用户使用系统用户ftp来作为文件系统的访问用户,访问目录/home/www/upload。
因此需要ftp用户对该目录具有一定的权限。
执行命令:

#chown ftp /home/www/upload

启动vsftp服务

#service vsftpd start

命令行验证

# curl ftp://ftp_vita:'dFJee#sddegbed0'@192.168.31.115
-rw-r--r--    1 0        0               4 May 19 13:53 index.html