虚拟用户FTP部署

Linux vsftp创建虚拟用户
FTP有三种登录方式:匿名登录、本地系统用户登录和虚拟用户登录。
虚拟用户是ftp服务器的专用用户,它的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。在VSFTP中,认证这些虚拟用户使用的是单独的口令库文件(pam_userdb),由可插入认证模块(PAM)认证。使用这种方式更加安全,并且配置更加灵活。

—、关闭防火墙

> systenmctl stop firewalld
> setenforce 0 #不关闭启动会报错
[root@client vsftpd]# systemctl restart vsftpd
Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details.
或者永久性关闭防火墙
# vim /etc/selinux/config
SELINUX=disable

二、安装vsftpd服务

使用yum安装vsftpd
# yum -y install vsftpd*
备份vstpd主配置文件
# cp /etc/vsftpd/vsftpd.conf{,.bak}

三、配置虚拟用户访问的vsftpd服务

1、创建虚拟用户密码文件,奇数行为用户名,偶数行为密码

# vim /etc/vsftpd/vir_user 
user1 
1234567a 
user2
1234567b

2、生成虚拟用户数据库

# yum -y install libdb-utils 
# db_load -T -t hash -f /etc/vsftpd/vir_user /etc/vsftpd/vir_user.db 
# chmod 600 /etc/vsftpd/vir_user.db

3.配置vsftpd pam 验证文件 修改先前备份文件

# cp /etc/pam.d/vsftpd{,.bak}
将auth、account的所有配置行均注释掉,添加以下两行
# vim /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vir_user 
account required pam_userdb.so db=/etc/vsftpd/vir_user

4.添加一个系统用户‘virftp’,所有虚拟用户都会映射到此用户后对文件系统进行读写操作

# mkdir /ftproot 
# useradd -d /ftproot -s /sbin/nologin virftp 
# chown -R virftp:virftp /ftproot

5.设置vsftpd主配置文件  

### 注意配置文件中不能有空格 否则会导致启动失败

vim /etc/vsftpd/vsftpd.conf
#禁止匿名用户登录
anonymous_enable=NO
#允许本地用户登录
local_enable=YES
#启用虚拟账户
guest_enable=YES
#把虚拟账户映射到系统账户
guest_username=virftp
#使用虚拟用户验证(PAM验证)
pam_service_name=vsftpd
#设置存放各虚拟用户配置文件的目录(此目录下与虚拟用户名相同的文件为他的配置文件)
user_config_dir=/etc/vsftpd/vsftpd_viruser
#启用chroot时,虚拟用户根目录允许写入
allow_writeable_chroot=YES

6.配置虚拟用户各自的配置文件,文件名称是‘虚拟用户名’    ### 注意配置文件中不能有空格 否则会导致登录失败

vim /etc/vsftpd/vsftpd_viruser/user1
#允许写入
write_enable=YES
#允许浏览FTP目录和下载
anon_world_readable_only=NO
#允许虚拟用户上传文件
anon_upload_enable=YES
#允许虚拟用户创建目录
anon_mkdir_write_enable=YES
#允许虚拟用户执行其他操作(如改名、删除)
anon_other_write_enable
=YES #上传文件的掩码,如022时,上传目录权限为755,文件权限为644
anon_umask
=022 #指定虚拟用户的虚拟目录(虚拟用户登录后的主目录)
local_root
=/ftproot/admin/

7.创建虚拟用户的根目录,要保证虚拟用户映射的系统用户,对这个根目录有读写权限

# mkdir -p /ftproot/admin/ 
# chown -R virftp.virftp /ftproot/admin/

8.关闭可以访问的用户 #vim /etc/vsftpd/ftpusers

四、测试配置结果

1.重启vsftpd服务
# systemctl restart vsftpd
# systemctl enable vsftpd
2.关闭防火墙
# systemctl stop firewalld
附:vsftp配置文件翻译
anonymous_enable=YES     是否允许匿名登陆
local_enable=YES     允许本地登陆
write_enable=YES     启用任何形式的ftp 写入命令
local_umask=022     FTP上本本地的文件权限,默认是077,不过vsftp安装后的配置文件里默认是022
anon_upload_enable=YES     允许匿名ftp 用户上传文件
anon_mkdir_write_enable=YES     允许匿名用户 创建新的目录
dirmessage_enable=YES     激活目录消息,向远程用户发送消息,进入某个目录
xferlog_enable=YES     激活上传/下载 日志记录
connect_from_port_20=YES     确保RORT传输连接来自端口 20
chown_uploads=YES 
chown_username=whoever     设置 匿名用户上传文件的默认用户,不推荐使用root xferlog_file=/var/log/xferlog     日志文件路径 xferlog_std_format=YES     日志文件使用标准ftpd xferlog格式的日志文件 ,默认位置 /var/log/xferlog idle_session_timeout=600     更改超时空闲会话的默认值 data_connection_timeout=120     超时数据连接的默认值 nopriv_user=ftpsecure     创建ftp服务器 独立的用户 async_abor_enable=YES     启用 异步 ABOR 请求 ascii_upload_enable=YES     允许ASCII模式上传文件 ascii_download_enable=YES     允许ASCII模式下载文件 ftpd_banner=Welcome to blah FTP service.     自定义登陆标题字符串 deny_email_enable=YES     指定不允许匿名登陆电子邮件 banned_email_file=/etc/vsftpd/banned_emails     默认路径 chroot_local_user=YES
chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list    指定 chroot 参数 CHROOT就是Change Root,也就是改变程序执行时所参考的根目录位置。CHROOT可以增进系统的安全性,限制使用者能做的事 ls_recurse_enable=YES     启用 ls –R 选项 listen=NO     启用 listen 指令,vsftp 以独立模式运行侦听ipv4 套接字,该指令不能同时使用 with listen_inv6     指令 listen_ipv6=YES     监听ipv6 pam_service_name=vsftpd     虚拟用户使用PAM认证方式 userlist_enable=YES     只允许userlist 文件中的账户登陆 tcp_wrappers=YES     是否允许tcp_wrappers 管理 anon_other_write_enable=YES     允许匿名用户改名和删除文件 anon_world_readable_only=YES     匿名用户可以读文件 反之就是不能读 pasv_min_port=30000
pasv_max_port=35000    PASV模式下指定端口范围
 

posted @ 2021-09-02 11:09  太阳的阳ฅ  阅读(129)  评论(0编辑  收藏  举报