一、用户分类:
1、Real账号
这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等
2、Guest(虚拟用户)
在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件
3、Anonymous(匿名用户)
这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。
在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。 默认情况下,Vsftpd服务器会把建立的所有帐户都归属为Real用户。但是,这往往不符合企业安全的需要。因为这类用户不仅可以访问自己的主目录,而 且,还可以访问其他用户的目录。这就给其他用户所在的空间带来一定的安全隐患。所以,企业要根据实际情况,修改用户所在的类别。
二、部署配置
1、安装vsftpd
yum –y install vsftpd
2、修改配置文件 /etc/vsftpd/vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconfig(该配置已存在,用于控制用户的不同操作目录)
guest_enable=YES 开启虚拟用户
guest_username=ftpvirtual 虚拟用户映射到的实用户ftpvirtual ,即系统用户,用户名称任意
pam_service_name=vsftpd pam验证文件,名称任意,但是要和/etc/pam.d/下文件名保持一致,我这边均是vsftpd ,默认。
allow_writeable_chroot=YES
其他设置:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_list_enable=YES
systemctl restart vsftpd
3、 创建被映射的系统用户
useradd -s /sbin/nologin -d /home/virtual ftpvirtual
touch /etc/vsftpd/virtual.txt
vim virtual.txt (奇数行为用户名,偶数行为 密码。)
test1
test1
test2
test2
创建虚拟用户文件库
db_load -T -t hash -f /etc/vsftpd/virtual.txt /etc/vsftpd/virtual.db
4、修改pam验证模块(添加如下两行)
vim /etc/pam.d/vsftpd
auth sufficient pam_userdb.so db=/etc/vsftpd/virtual
account sufficient pam_userdb.so db=/etc/vsftpd/virtual
添加完之后应该是如下图所示:virtual是指步骤3中生成的db文件,但是这里不能加db后缀,会出问题(其中我机器上的用户db文件和文章略有不同virtual_list)
5、 添加虚拟用户,以及配置控制目录和权限
mkdir /home/virtual/test1
mkdir /home/virtual/test2
touch /etc/vsftpd/userconfig/test1
touch /etc/vsftpd/userconfig/test2
vim /etc/vsftpd/userconfig/test1
local_root=/home/virtual/test1
write_enable=yes
download_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_world_readable_only=no
# vim /etc/vsftpd/userconfig/test2
local_root=/home/virtual/test2
write_enable=yes
download_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_world_readable_only=no
6、修改虚拟用户操作目录权限
虚拟目录权限全部赋给映射的实用户ftpvirtual 即可
chown -R ftpvirtual: /home/virtual
7、 登录 测试
[root@node1 ~]# ftp 10.0.0.6
Connected to 10.0.0.6 (10.0.0.6).
220 (vsFTPd 3.0.2)
Name (10.0.0.6:root): test2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
8、 ssl
[root] # openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
在配置文件中添加
rsa_cert_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES
force_local_logins_ssl=YES
force_local_data_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
require_ssl_reuse=NO
重启vsftpd