vsftpd安装及虚拟用户配置

FTP服务是最经常使用的跨平台文件共享服务之一vim

============= 完美的分割线 ===============安全

0.FTP两种模式的区分

1)PORTFTP和PASVFTP,PORTFTP是通常形式的FTP。
2)这两种FTP在创建控制链接时操做是同样的,都是由客户端首先和FTP服务器的控制端口(默认值为21)创建控制连接,并经过此连接进行传输操做指令。它们的区别在于使用数据传输端口(ftp-data)的方式。
3)PORTFTP由FTP服务器指定数据传输所使用的端口,默认值为20。
4)PASVFTP由FTP客户端决定数据传输的端口。PASVFTP这种作法,主要是考虑到存在防火墙的环境下,由客户端与服务器进行沟通(客户端向服务器发出数据传输请求中包含了数据传输端口),决定二者之间的数据传输端口更为方便一些。服务器

1.安装FTP服务端

1.1.环境准备

# 检查系统环境,若是系统版本较低,建议升级内核等app

# 在CentOS6.x和7.x版本安装方法基本相同tcp

uname -a
cat /etc/redhat-release 
# yum update -y       # 若是是新服务器或者是ftp独占能够升级,其余看状况

1.2.安装vsftpd

# 包括服务端和客户端工具

yum install vsftpd ftp -y

1.3.启动vsftpd服务并配置开机自启动

/etc/init.d/vsftpd start
netstat -anptl|grep vsftpd
chkconfig vsftpd on
chkconfig --list vsftpd

1.4.配置查看ftp相关日志

# 从xferlog能够查看到用户上传下载等的操做记录,删除不会显示测试

vim /etc/logrotate.d/vsftpd 
/var/log/vsftpd.log {
    # ftpd doesn't handle SIGHUP properly
    nocompress
    missingok
}
/var/log/xferlog {
    # ftpd doesn't handle SIGHUP properly
    nocompress
    missingok
}
tail -f /var/log/xferlog

2.配置匿名方式访问FTP服务端

2.1.安装好vsftpd服务,默认为匿名访问ui

1)能够直接输入IP端口,能够打开ftp服务器
2)容许匿名用户登陆,宿主目录为/var/ftp,不能离开,下载目录为/var/ftp/pub,且只能下载,不能上传
3)容许本地用户登陆,且可离开主目录,本地用户容许上传/下载
4)写在文件/etc/vsftpd/ftpusers中的本地用户禁止登陆
5)服务器使用独占方式启动,且无限制链接数加密

3.配置虚拟用户认证的FTP服务端

3.1.修改vsftpd.conf 文件

cd /etc/vsftpd/
vim vsftpd.conf 

# 修改配置文件,确认如下选项spa

anonymous_enable=NO     # 修改,禁止匿名用户登陆
local_enable=YES        # 默认启用,容许本地用户登陆,虚拟用户须要映射到本地用户才可使用
write_enable=YES        # 默认启用,本地用户开放写权限
#local_umask=022        # 注释掉,本地用户建立的文件的权限反码022,建立的文件为644
userlist_enable=YES        # 默认启用,默认为容许user_list中的用户进行访问
# userlist_deny=yes        # 也能够用这个,默认拒绝user_list中的用户访问FTP服务器,保留一种便可
userlist_file=/etc/vsftpd/user_list
chroot_local_user=YES      # 默认启用,将本地用户锁定在自家目录中

# made for virtual user
guest_enable=YES              # 增长,启用虚拟用户模式
guest_username=ftpvuser        # 增长,配置虚拟用户映射到的本地用户名
pam_service_name=/etc/pam.d/ftpvuser.pam    # 修改,配置虚拟用户的认证方式
user_config_dir=/etc/vsftpd/vuser.d    # 增长,虚拟用户的配置文件目录
anon_umask=022            # 增长,匿名用户新增文件的umask数值。默认值为077,须要修改成022,不然上传后的文件为600

# 其余配置选项,根据实际需求修改

dirmessage_enable=YES          # 设置切换到目录时显示message 隐含文件的内容
xferlog_enable= YES             # 激活上传和下载日志
connect_from_port_20= YES          # 启用FTP数据端口链接
pam_service_name=vsftpd            # 设置PAM认证服务的配置文件名称,  该文件存放在/etc/pam.d目录下
userlist_enable= YES            # 容许vsftpd.user_list文件中的用户访问服务器
userlist_deny= YES             # 拒绝vsftpd.user_list文件中的用户访问服务器
listen= YES                    # 是否使用独占启动方式
tcp_wrappers= YES              # 使用防火墙
#file_open_mode=0755

# vsftpd配置文件

/etc/vsftpd/vsftpd.conf         # 主配置文件
/etc/vsftpd/ftpusers             # FTP限制访问的用户,里面是一些系统用户,默认不容许访问,防止被入侵
/etc/vsftpd/user_list            # 受权用户列表,能够控制哪些用户能够访问或者禁止访问

# 注意:
1)vsftpd.conf 文件中每一个选项设置为一行,格式为“option=value”,“=”号两边不能留空白符
2)除了主配置文件外,还能够给特定用户设定我的配置文件
3)虚拟用户默承认以读写,访问时映射为本地用户,因此须要启用对本地用户的控制
4)实际的访问权限可由用户独立的配置文件进行单独控制

3.2.建立虚拟用户相关文件

1)建立受权认证文件

cd /etc/pam.d/
mv vsftpd vsftpd.ori        # 备份原有的ftp的pam认证文件
vim ftpvuser.pam          # 建立新的ftp虚拟用户认证文件

写入如下内容:

#%PAM-1.0
auth       required     pam_userdb.so db=/etc/vsftpd/vuser.d/vuser        # 不能够加.db的扩展名,不然认证不成功
account    required     pam_userdb.so db=/etc/vsftpd/vuser.d/vuser

2)建立虚拟用户的秘钥文件

mkdir -p /etc/vsftpd/vuser.d
cd /etc/vsftpd/vuser.d
touch vuser.list

3)加密虚拟用户的秘钥文件

# 使用db_load工具生成加密

yum install db4-utils -y
db_load -T -t hash -f vuser.list vuser.db
file vuser.list 
file vuser.db 

# 为了安全,修改虚拟用户文件的访问权限

chmod 600 /etc/vsftpd/vuser.*
ll /etc/vsftpd/vuser.*

3.3.配置一个虚拟用户访问权限的实例

1)建立或修改虚拟用户秘钥信息

cd /etc/vsftpd/vuser.d
vim  vuser.list
--------------------
admin
123456
--------------------

2)设置能够访问ftp的虚拟用户列表user_list

# 注释掉其余本地用户认证的内容,由于启用了guest_enable后,本地用户将失效,全部非匿名用户变成虚拟用户
# 由于须要受权访问的用户比较少,因此user_list设置为能够访问ftp服务的用户

vim /etc/vsftpd/user_list 
---------------------
admin
----------------------

3)每一个用户单首创建受权文件

cd /etc/vsftpd/vuser.d
vim admin
---------------------------
# 指定宿主目录,配置访问权限
write_enable=YES
local_root=/data/ftpdata/admin     # 宿主目录
anon_upload_enable=YES               # 上传
anon_mkdir_write_enable=YES          # 建立目录写权限
anon_other_write_enable=YES          # 其余写入权限
---------------------------

4)建立ftp虚拟用户的宿主目录

# 建立的ftp本地用户及其根目录,用于映射虚拟用户,注意修改目录权限

mkdir -p /data/ftpdata/admin            # 虚拟用户的宿主目录须要预先建立
useradd -d /data/ftpdata/ -s /sbin/nologin ftpvuser
chmod 755 /data/ftpdata/
ll /data/ftpdata/ -d

5)配置完成刷新配置信息,进行测试

service vsftpd reload

4.常见报错处理

错误现象1:文件显示上传成功,刷新就是不显示。

报错分析:

1)检查发现上传的文件权限为600,是上传文件权限设置问题

解决方法:修改虚拟用户权限配置

local_umask=022 改成 anon_umask=022

2)另外,在建立虚拟用户映射的ftp本地用户的时候,使用useradd建立的宿主目录权限默认为700

这样,虽然上传文件的权限为644可读,文件夹755可读,但因为ftp的上层目录不可读,子目录也会受限

解决方法:修改宿主目录的权限为755便可

chmod 755 /data/ftpdata/

5.附:防火墙配置

若是ftp被动模式用到防火墙,能够参考如下配置

iptables -I INPUT -p tcp --dport 21 -j ACCEPT          #FTP链接端口
iptables -I INPUT -p tcp --dport 33000:34000 -j ACCEPT      #pasv模式下的随机端口
iptables-save >/etc/sysconfig/iptables              #保存防火墙配置

systemctl restart iptables.service
systemctl restart vsftpd.service

======== 完毕,呵呵呵呵 ========

相关文章
相关标签/搜索