一 基本配置和vsftp服务安装
1 安装Linux Centos7过程省略
2 修改主机名(要重新登录才会显示修改后的主机名)
[root@192 ~]# hostnamectl set-hostname FTP
3 安装net-tools、VIM,bash-completion sysstat
[root@192 ~]# yum -y install bash-completion net-tools vim*
4 检查vsftpd是否已安装
5 安装vsftpd
[root@ftp ~]# yum -y install vsftpd
6 启动vsftpd服务并设置开机启动
[root@ftp ~]# systemctl start vsftpd
[root@ftp ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
7 检查vsftpd服务是否正常启动
8 检查ftp服务端口是否正常
9 检查ftp服务是否运行
二 vsftpd配置文件
/etc/vsftpd/vsftpd.conf #FTP主配置文件
/etc/vsftpd/ftpusers #拒绝用户登录到FTP服务器,系统默认是黑名单文件
/etc/vsftpd/user_list #user_list需要参照userlist_deny来决定该文件是黑名单还是白名单
vsftpd通过ftpusers和user_list对用户进行ACL访问控制
注1:配置文件中的userlist_enable=YES,启用"禁止用户名单"功能。ftpusers默认是黑名单文件,user_list需要参照userlist_deny来决定该文件是黑名单还是白名单。userlist_deny=YES表示黑名单,userlist_deny-NO表示白名单。
注2:黑名单表示仅拒绝名单中的用户访问FTP,其他所有帐户默认允许访问FTP。白名单表示仅允许在名单中的用户访问FTP,其他所有帐户默认拒绝访问FTP。
/etc/vsftpd/user_list
/etc/vsftpd/ftpusers (系统默认黑名单)
三 用户添加和访问权限管理
vsftp常用三种登录方式:
(1)匿名登录(2)本地帐户登录(3)虚拟帐户登录
注1:如果启用本地帐户登录,需要设置anonymons_enable=NO,其默认路径为帐户个人家目录。
注2:开启本地帐户登录后,FTP用户可以离开家目录,进入系统其他目录中。需要设置chroot_local_user=YES,默认为NO。
注3:SELinux默认不允许FTP共享家目录
注4:如果要使用虚拟帐户登录,使用guest_enable=YES开启虚拟帐户功能。
案例1:配置本地FTP
(1)备份配置文件
[root@ftp vsftpd]# cp vsftpd.conf vsftpd.conf.bak
[root@ftp vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
(2)删除vsftpd配置文件中所有内容
使用快捷键删除所有内容
ESC :%d
(3)修改配置文件
anonymous_enable=NO #禁止匿名访问
local_enable=YES #启用本地帐户
#local_root=/softtest #指定本地帐户登录ftp的根目录
write_enable=YES #允许上传/下载文件
local_umask=022 # umask决定目录和文件被创建时得到的初始权限,022为8进制。文件=666-022,目录=777-022,默认不给x位权限(g和o)
#chroot_local_user=YES时表示锁定用户在其主目录下。chroot_local_user=NO时表示不锁定用户在其主目录下,可以浏览根目录。
#当chroot_local_user=YES时,chroot_list_enable=YES表示开启白名单的功能。在 chroot_list名单中的用户不受限制。为例外用户。当chroot_local_user=NO时,chroot_list_enable=YES表示开启黑名单功能 。在 chroot_list名单中的用户受到限制在其主目录下,其他的用户为例外。
#chroot_list_file=/etc/vsftpd/chroot_list #在此文件中添加例外用户,一行一个用户
listen=YES
pam_service_name=vsftpd
#当userlist_enable=YES时,启用“禁用用户名单”功能。当userlist_enable=NO时,不启用上述功能。
#/etc/vsftpd/ftpusers
#userlist_file=/etc/vsftpd/user_list
#ftpusers为系统默认黑名单,在此名单中的用户永久不能访问FTP。user_list可为白名单、黑名单或无效名单(userlist_enable和userlist_deny为NO时)
其取决于userlist_deny的设置值。当userlist_deny=YES时,其为黑名单;当userlist_deny=NO时,其为白名单,此时除了白名单中的用户可以访问FTP外,其他的用户都不能访问。如果一个用户在白名单中,同时又在ftpusers名单中,该用户也不能访问FTP。
#tcp_wrappers=YES
#use_localtime=YES
#dual_log_enable=YES
allow_writeable_chroot=YES
#ftpd_banner=“欢迎登录” #Linux客户端登录才有此提示
#dirmessage_enable=YES #当用户进入某个目录时,会显示该目录需要注意的容。
#xferlog_enable=YES
#xferlog_std_format=YES
(3)创建系统帐户和设置密码
[root@ftp ~]# useradd -s /sbin/nologin dsa
[root@ftp ~]# useradd -s /sbin/nologin dsb
[root@ftp ~# useradd -s /sbin/nologin dsc
[root@ftp ~]# passwd dsa
Changing password for user dsa
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@ftp ~]# passwd dsb
Changing password for user dsb.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@ftp ~]# passwd dsc
Changing password for user dsc.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
(4)创建测试文件
[root@ftp ~]# touch /home/{dsa,dsb,dsc}/test.txt
(5)启动服务
注1:为了测试通过,暂时关闭系统防火墙和SELinux这二个组件。
[root@ftp ~]# setenforce 0
[root@ftp ~]# getenforce
Permissive
[root@ftp ~]# systemctl stop firewalld.service
[root@ftp ~]# systemctl start vsftpd
[root@ftp ~]# systemctl enable vsftpd
(6)安装ftp客户端
[root@ftp ~]# yum -y install ftp
(7)访问测试
root用户登录时,提示530 Permission denied,Login failed.
(8)处理过程
1.将/etc/vsftpd/ftpusers和/etc/vsftpd/user_list中的root用户注释掉
2.在配置文件内写入 allow_writeable_chroot=YES, 给账户加入写入权限
3.使用创建的dsa、dsb和dsc进行测试,都出现530 Login incorrent。
4. vim /etc/shells,增加/sbin/nologin
5.再次访问测试
6.ls查看发现dsa的ftp主目录为其家目录
7.dsa试图进入系统的其他目录,如/opt目录,提示550,不能改变主目录。
(9)客户端软件访问测试
测试1:修改配置文件userlist_enable=YES,userlist_deny=NO。user_list根据主配置文件中的userlist_deny来决定该文件是黑名单还是白名单。在这个测试案例中,user_list=NO表示访文件为白名单。
ftpusers中将dsa用户注释掉,在user_list中也添加dsa用户。
•vsftpd.conf配置文件
•ftpusers名单
•userlist名单
•dsa用户可以访问
•root用户不可以访问
•将ftpusers中的dsa注释去掉后,再次测试提示530 Login incorrect . Login failed
结论:
在配置中启用了白名单功能,并且将userlist_deny设置为NO,即表示在user_list名单中的用户允许访问FTP,其他用户不可访问。但是当ftpusers文件中同时有该用户dsa时,尽管user_list中允许dsa,拒绝大于允许,所以也会提530错误。
测试2:将userlist_enable设置为YES,userlist_deny设置为YES。即表示在ftpusers名单和user_list名单中的用户都不可以访问FTP,除此之外的其他用户都可以访问。user_list根据主配置文件中的userlist_deny来决定该文件是黑名单还是白名单。在这个测试案例中,user_list=YES为黑名单。在ftpusers中把dsa,和root注释掉,允许dsb和dsc。在user_list中允许root和dsa。。
•验证dsa和root能否访问
•验证dsb和dsc能否访问
•vsftpd.conf配置文件
•ftpusers名单
•userlist名单
•dsa访问测试
•root访问测试
•dsb和dsc访问测试
结论:
配置文件中修改userlist_enable=YES,userlist_deny=YES。ftpusers是默认的黑名单文件,userlist_deny=YES决定了user_list文件成为黑名单文件。即在配置文件中同时设置此二项时,在此二个文件名单的用户都无法访问FTP服务。
测试3:配置所有的ftp用户登陆后都进入指定的目录。
创建ftp目录并添加一个softtest.txt的文件
mkdir /softtest
touch /softtest softtest.txt
ftpusers名单
user-list名单
vsftpd.conf配置文件
.
重启vsftpd服务
测试验证用户登陆ftp后,是否进入指定的/softtest目录
创建文件,提示FTP服务器已拒绝
检查softtest目录权限,除了文件创建所有者写入权限外,go均没有w写入权限
chmod o+w softtest 给其他用户添加w写入权限
在ftp客户端上测试
上传文件
在ftp服务器上查看softtest文件夹
在Linux客户端下上传文件到FTP服务器
下载文件到本机