centos7 vsftpd 虚拟用户 pam模块认证

本文涉及的产品
运维安全中心(堡垒机),企业双擎版|50资产|一周时长
运维安全中心(堡垒机),免费版 6个月
简介:

若开启selinux的话,那么就需要

chcon -R -t public_content_t /var/ftp/user1/

chcon -R -t public_content_t /var/ftp/user2/

setsebool -P ftp_home_dir on

一、首先需要装的包有:

yum install vsftpd lftp ftp libdb-utils(生成虚拟用户验证数据库文件) -y

systemctl restart vsftpd.service  启动服务

systemctl enable vsftpd    设置开机启动

systemctl status vsftpd     查看服务启动状态与启动状态时间,加载的配置文件等。

二、建立一个虚拟用户的数据库文件

#!/bin/bash

cat > /etc/vsftpd/auth_virtual_ftp_user <<END
user1
123
user2
456
END

需要这个文件来生成数据库文件

db_load -T -t hash -f /etc/vsftpd/auth_virtual_ftp_user /etc/vsftpd/auth_virtual_ftp_user.db

-T :允许non-Berkeley DB应用程序容易文本文件加载到数据库

-t:指定生成数据库文件类型

指定了选项-T,那么一定要追加子选项-t;子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型

后面就是要用哪个文件来生成数据库文件了,前面是文本文件,后面是数据库文件,什么名字都可以,但数据库文件必须是以*.db结尾的

三、配置vsftpd文件

首先要备份一份初始文件

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.$(date +%Y-%m-%d).bak

cat /etc/vsftpd/vsftpd.conf.$(date +%Y-%m-%d).bak | grep -v ^# | tr -s '\n' > /etc/vsftpd/vsftpd.conf

把里面多余的空行用tr -s '\n' 来清理掉,接着再重定向到vsftpd的配置文件中。

cat /etc/vsftpd/vsftpd.conf   按以下要求来修改配置文件

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO      (默认是YES,改为NO的话,启动服务时就不会出错了)
listen_ipv6=YES
#userlist_enable=YES     如果这个开启的话,那么必须要有下面的这个文件

#userlist_file=/etc/vsftpd.user_list 只有这文件里面的用户才用访问

pam_service_name=pam_vsftpd   这个文件对应的位置是/etc/pam.d/pam_vsftpd 
userlist_enable=YES
tcp_wrappers=YES
use_localtime=YES
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/user_conf


创建虚拟用户配置目录

mkdir /etc/vsftpd/user_conf/

四、修改pam 模块

[root@server1 ~]# cat /etc/pam.d/pam_vsftpd
auth       required     pam_userdb.so    db=/etc/vsftpd/auth_virtual_ftp_user
account    required     pam_userdb.so    db=/etc/vsftpd/auth_virtual_ftp_user

这里的*.so 文件全部都是默认在/lib64/security/这个目录下

之前我总是认证不成功(登录503错误),我想可能是模块之间有一些影响,所以我把其他的都注释掉,只留下这两个即可。通常使用的情况下,暂无其他问题,若有的话欢迎指出问题,谢谢。

五、创建虚拟用户

touch  /etc/vsftpd/user_conf/{user1,user2}

cat /etc/vsftpd/user_conf/user1

anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_upload_enable=yes
local_root=/var/ftp/user1


cat /etc/vsftpd/user_conf/user2

anon_world_readable_only=no       # 允许匿名用户浏览器整个服务器的文件系统
write_enable=no                             # 允许在文件系统写入权限
anon_mkdir_write_enable=yes              #  允许创建文件夹
anon_other_write_enable=NO                #   允许用户改名和删除文件的权限
anon_upload_enable=yes                            # 允许用户上传文件
local_root=/var/ftp/user2

mkdir  /var/ftp/{user1,user2} 创建虚拟用户的根目录 
六、创建一个用户要与vsftp.conf中的guest_username=ftpuser 所对应上

useradd  -g ftp -s /sbin/nologin ftpuser

分配权限

cd /var/ftp/

chown -R ftpuser *

[root@server1 ftp]# ll -dh /var/ftp/user1/
drwxr-xr-x. 2 ftpuser ftpuser 6 Oct 31 02:38 /var/ftp/user1/


wKiom1Y3QSfis0zJAAGAoiKSnJE505.jpg



本文转自 a120518129 51CTO博客,原文链接:http://blog.51cto.com/silencezone/1708341,如需转载请自行联系原作者

相关文章
|
7月前
|
Linux 网络安全 开发工具
Centos6.5搭建一个简单的vsftpd服务
在CentOS 6.5上配置vsftpd服务器:确保与Win10能互通,更新yum源,安装vsftpd,编辑配置文件禁用匿名访问,重启服务并关闭防火墙。创建新用户和密码,通过FTP在Win10文件管理器中使用实验机IP访问,用创建的用户和密码登录,成功创建远程文件夹,实验机上可见。
102 2
|
7月前
|
网络协议 Linux Go
Centos7CA认证中心
CA是Certificate Authority的缩写,负责发放、更新、撤销和验证数字证书,用于身份认证和数据不可否认性,常通过443端口。配置CA涉及修改openssl.cnf,创建并设置认证中心,删除并新建index文件。客户端则需生成密钥和CSR,将CSR发送至CA,CA签名后回传证书。最终,客户端可查看收到的证书。
151 0
|
网络协议 前端开发 JavaScript
CentOS 环境下部署 vsftpd
CentOS 环境下部署 vsftpd
224 0
|
应用服务中间件 Linux 网络安全
虚拟机Centos下载安装Nginx并安装ssl模块——小白教程
虚拟机Centos下载安装Nginx并安装ssl模块——小白教程
416 0
|
安全 Linux 应用服务中间件
[笔记]CentOS7 vsftpd安装及配置使用
[笔记]CentOS7 vsftpd安装及配置使用
614 0
|
4月前
|
存储 Unix Linux
CentOS之pam_tally2
CentOS之pam_tally2
181 0
|
4月前
|
存储 安全 Linux
如何在 CentOS VPS 上配置 vsftpd 使用 SSL/TLS
如何在 CentOS VPS 上配置 vsftpd 使用 SSL/TLS
93 0
|
Linux 数据安全/隐私保护
13.5.3 【Linux】PAM 模块设置语法
13.5.3 【Linux】PAM 模块设置语法
145 0
|
Shell Linux API
13.5 【Linux】使用者的特殊 shell 与 PAM 模块
13.5 【Linux】使用者的特殊 shell 与 PAM 模块
112 0
|
应用服务中间件 Linux nginx
CentOS 9 安装 Nginx 模块 `subs_filter`
sub_filter 和 subs_filter 区别 sub_filter( 0.7.24):替换响应体(Response Body)中的文本,只能设置一组替换。 subs_filter:替换响应体(Response Body)和响应头(Response Headers)中的文本,可以设置多组替换。
440 0