【Centos8.4-VSFTPD服务安装配置】

一、什么是VSFTPD服务

VSFTPD(Very Secure FTP Daemon) 是一种专为类Unix系统(如Linux、BSD、Solaris等)设计的高安全性、轻量级FTP服务器软件。
VSFTPD服务监听端口分为:
TCP21:指令通道
TCP20:数据通道
工作原理:
(1)被动模式:默认
当客户端访问FTP服务器端,首先会尝试连接服务器端TCP 21端口,建立命令通道,服务器端会随机开启一个数据端口(>1024端口),客户端会尝试连接服务器端数据通道,从而建立数据连接。
(2)主动模式:
当客户端访问FTP服务器端21端口时,建立命令通道,此时客户端开启一个随机端口,服务器端用
20端口去连接客户端随机端口,从而建立数据通道,主动模式使用一般在局域网内,跨网络一般防火墙会阻挡。

二、安装vsftpd服务

[root@web2 ~]# yum install -y vsftpd

配置文件

[root@web2 ~]# rpm -qc vsftpd 
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers    //类似于黑名单
/etc/vsftpd/user_list    //使用userlist_deny=NO时,此文件为白名单;
						   默认为userlist_deny=YES,也是类似于黑名单
/etc/vsftpd/vsftpd.conf  //主配置文件

三、匿名用户、本地用户、虚拟用户配置方式

(1)匿名用户

1、配置VSFTPD主配置文件/etc/vsftpd/vsftpd.conf

[root@web2 ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES   ##开启匿名访问
anon_upload_enable=YES  ##允许匿名上传
anon_mkdir_write_enable=YES  ##允许匿名创建文件夹
anon_other_write_enable=YES   ##允许匿名用户删除、修改目录
anon_umask=022  ##匿名用户上传文件默认的权限掩码
pasv_min_port=16000  ##数据传输随机最小端口
pasv_max_port=16100  ##数据传输随机最大端口

2、重启VSFTPD服务

[root@web2 ~]# systemctl restart vsftpd
[root@web2 ~]# chmod 777 /var/ftp/pub/

3、客户端测试

[root@localhost ~]# ftp 192.168.10.201
Connected to 192.168.10.201 (192.168.10.201).
220 (vsFTPd 3.0.3)
Name (192.168.10.201:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,10,201,172,208).
150 Here comes the directory listing.
drwxrwxrwx    2 0        0              20 Apr 12 03:42 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir test   ##匿名创建文件夹
257 "/pub/test" created
ftp> rename test test1   ##匿名用户重命名文件夹
350 Ready for RNTO.
250 Rename successful.
ftp> ls
227 Entering Passive Mode (192,168,10,201,174,212).
150 Here comes the directory listing.
-rw-------    1 14       50           2598 Apr 12 03:42 passwd
drwxr-xr-x    2 14       50              6 Apr 12 04:32 test1
226 Directory send OK.
ftp> put /etc/shadow shadow ##匿名上传文件
local: /etc/shadow remote: shadow
227 Entering Passive Mode (192,168,10,201,97,111).
150 Ok to send data.
226 Transfer complete.
1360 bytes sent in 3.4e-05 secs (40000.00 Kbytes/sec)
ftp> ls
227 Entering Passive Mode (192,168,10,201,247,58).
150 Here comes the directory listing.
-rw-------    1 14       50           2598 Apr 12 03:42 passwd
-rw-r--r--    1 14       50           1360 Apr 12 04:33 shadow
drwxr-xr-x    2 14       50              6 Apr 12 04:32 test1
226 Directory send OK.

(2)本地用户

允许使用本地用户登录,且用户登录默认到/data/ftp目录中,仅允许user1和user2用户登录,其他用户不可以登录该FTP服务器,用户登录时不能跳出FTP目录。
1、配置VSFTPD主配置文件/etc/vsftpd/vsftpd.conf

[root@web2 ~]#  mkdir /data/ftp
[root@web2 ~]# vim /etc/vsftpd/vsftpd.conf
local_enable=YES ##允许使用本地用户登录
local_root=/data/ftp  ##本地用户登录目录
write_enable=YES ##允许本地用户写
local_umask=077 ##本地用户上传文件默认的权限掩码
chroot_local_user=YES ##限制用户跳出登录目录
userlist_deny=NO  ##/etc/vsftpd/user_list文件为白名单
[root@web2 ~]# useradd user1
[root@web2 ~]# useradd user2
[root@web2 ~]# useradd user3
[root@web2 ~]# echo redhat |passwd --stdin user1
Changing password for user user1.
passwd: all authentication tokens updated successfully.
[root@web2 ~]# echo redhat |passwd --stdin user2
Changing password for user user2.
passwd: all authentication tokens updated successfully.
[root@web2 ~]# echo redhat |passwd --stdin user3
Changing password for user user3.
passwd: all authentication tokens updated successfully.

2、添加白名单,仅允许user1和user2用户登录

[root@web2 ~]# vim /etc/vsftpd/user_list
user1
user2

当/etc/vsftpd/ftpusers和/etc/vsftpd/user_list两个文件中同时存在一个用户时,会拒绝该用户登录,黑名单大于白名单
3、重启服务并客户端测试

[root@web2 ~]# systemctl restart vsftpd
[root@web2 ~]# mkdir /data/ftp/test
[root@web2 ~]# setfacl -m u:user1:rwx /data/ftp/test/
[root@web2 ~]# setfacl -m u:user2:rwx /data/ftp/test/
///到客户端测试
##user1测试
[root@localhost ~]# lftp 192.168.10.201
lftp 192.168.10.201:~> user user1
Password: 
lftp user1@192.168.10.201:~> cd test/
lftp user1@192.168.10.201:/test> mkdir user1
mkdir ok, `user1' created
lftp user1@192.168.10.201:/test> put /etc/passwd
2598 bytes transferred
lftp user1@192.168.10.201:/test> ls
-rw-------    1 1001     1001         2598 Apr 12 04:59 passwd
drwx------    2 1001     1001            6 Apr 12 04:59 user1
##user2测试
[root@localhost ~]# lftp 192.168.10.201
lftp 192.168.10.201:~> user user2
Password: 
lftp user2@192.168.10.201:~> cd test/
lftp user2@192.168.10.201:/test> ls
-rw-------    1 1001     1001         2598 Apr 12 04:59 passwd
drwx------    2 1001     1001            6 Apr 12 04:59 user1
##user3测试
[root@localhost ~]# ftp 192.168.10.201
Connected to 192.168.10.201 (192.168.10.201).
220 (vsFTPd 3.0.3)
Name (192.168.10.201:root): user3
530 Permission denied.
Login failed.
ftp> 

(3)虚拟用户

1、创建虚拟用户数据库

[root@web2 ~]# useradd vuser  ##创建一个用户和虚拟用户进行对应
[root@web2 ~]# chmod 755 /home/vuser     # 确保目录可访问
[root@web2 ~]# cd /etc/vsftpd/
[root@web2 vsftpd]# vim logins.txt
admin1
redhat
admin2
redhat
[root@web2 vsftpd]# db_load -T -t hash -f logins.txt /etc/vsftpd/login.db
[root@web2 vsftpd]# chmod 600 /etc/vsftpd/login.db

2、创建一个使用新数据库的PAM文件。

[root@web2 ~]# 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/ftpusers onerr=succeed
#auth       required	pam_shells.so
#auth       include	password-auth
#account    include	password-auth
#session    required     pam_loginuid.so
#session    include	password-auth
auth	required	pam_userdb.so	db=/etc/vsftpd/login
account required 	pam_userdb.so 	db=/etc/vsftpd/login

3、修改vsftpd服务主配置文件。

[root@web2 ~]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES ##启动虚拟用户
guest_username=vuser  ##设置虚拟用户和本地vuser用户绑定
allow_writeable_chroot=YES ##允许创建文件.
user_config_dir=/etc/vsftpd/vuser_conf  # 用户独立配置目录
[root@web2 ~]# mkdir /etc/vsftpd/vuser_conf

4、配置虚拟用户权限。
定义用户权限文件,每个虚拟用户对应一个文件(如/etc/vsftpd/vuser_conf/admin1):

[root@web2 ~]# cd /etc/vsftpd/vuser_conf/
[root@web2 vuser_conf]# vim admin1
write_enable=YES ##允许写权限
anon_upload_enable=YES ##允许上传
anon_mkdir_write_enable=YES ##允许创建目录
anon_other_write_enable=YES ##允许删除、修改目录

5、重启服务并客户端测试。

[root@web2 ~]# systemctl restart vsftpd
///客户端测试
###虚拟用户admin1测试
[root@localhost ~]# lftp 192.168.10.201
lftp 192.168.10.201:~> user admin1
Password:
lftp admin1@192.168.10.201:~> ls
-rw-r--r--    1 1004     1004         1360 Apr 12 05:50 shadow
lftp admin1@192.168.10.201:/> mkdir 1
mkdir ok, `1' created
lftp admin1@192.168.10.201:/> mv 1 2
rename successful
lftp admin1@192.168.10.201:/> ls
drwx------    2 1004     1004            6 Apr 12 05:59 2
-rw-r--r--    1 1004     1004         1360 Apr 12 05:50 shadow
lftp admin1@192.168.10.201:/> rm  -r 2
rm ok, `2' removed
lftp admin1@192.168.10.201:/> ls
-rw-r--r--    1 1004     1004         1360 Apr 12 05:50 shadow
lftp admin1@192.168.10.201:/> put /etc/passwd
2598 bytes transferred
lftp admin1@192.168.10.201:/> ls
-rw-------    1 1004     1004         2598 Apr 12 06:00 passwd
-rw-r--r--    1 1004     1004         1360 Apr 12 05:50 shadow
###虚拟用户admin2测试
[root@localhost ~]# lftp 192.168.10.201
lftp 192.168.10.201:~> user admin2
Password: 
lftp admin2@192.168.10.201:~> ls
-rw-------    1 1004     1004         2598 Apr 12 06:00 passwd
-rw-r--r--    1 1004     1004         1360 Apr 12 05:50 shadow
lftp admin2@192.168.10.201:/> put /etc/group 
put: /etc/group: Access failed: 550 Permission denied. (group)
lftp admin2@192.168.10.201:/> mkdir admin2
mkdir: Access failed: 550 Permission denied. (admin2)
lftp admin2@192.168.10.201:/> rm passwd 
rm: Access failed: 550 Permission denied. (passwd)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值