Vsftpd -- 验证方式
vsftpd程序提供的FTP服务可选认证方式,分别为匿名访问、本地用户和虚拟用户:
匿名访问:任何人无需验证口令即可登入FTP服务端。
本地用户:使用FTP服务器中的用户、密码信息。
虚拟用户:创建独立的FTP帐号资料。
1、匿名访问模式
FTP匿名访问模式是比较不安全的服务模式,尤其在真实的工作环境中千万不要存放敏感数据,以免泄漏。
vsftpd程序默认允许匿名访问模式,只要开启匿名用户的上传和写入权限。
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
#允许匿名访问模式。anon_umask=022
#匿名用户上传文件的umask值。anon_upload_enable=YES
#允许匿名用户上传文件anon_mkdir_write_enable=YES
#允许匿名用户创建目录anon_other_write_enable=YES
#允许匿名用户修改目录名或删除目录
保存退出vsftpd.conf文件,重启vsftpd服务程序并设置为开机自动启动。
匿名访问时注意ftp根目录的所有者/组。
2、本地用户模式
vsftpd服务程序默认已经允许本地用户模式,只要添加设置本地用户模式权限的参数。
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
#禁止匿名访问模式。local_enable=YES
#允许本地用户模式。write_enable=YES
#设置可写入权限。local_umask=022
#本地用户模式创建文件的umask值。userlist_deny=YES
#参数值为YES即禁止名单中的用户,参数值为NO则代表仅允许名单中的用户。userlist_enable=YES
#允许“禁止登陆名单”,名单文件为ftpusers与user_list。
ftpusers或者user_list 禁止登录用户名单列表文件
3、虚拟用户模式
因为虚拟用户模式的帐号口令都不是真实系统中存在的,所以只要配置妥当虚拟用户模式会比本地用户模式更加安全,但是Vsftpd服务配置虚拟用户模式的操作步骤相对复杂一些,具体流程如下:
第1步:建立虚拟FTP用户数据库文件。
第2步:创建FTP根目录及虚拟用户映射的系统用户。
第3步:建立支持虚拟用户的PAM认证文件。
第4步:在vsftpd.conf文件中添加支持配置。
第5步:为虚拟用户设置不同的权限。
第6步:重启vsftpd服务,验证实验效果。
第1步:建立虚拟FTP用户数据库文件。
切换至vsftpd程序目录:
cd /etc/vsftpd/
创建用于生成FTP用户数据库的原始帐号和密码文件:
vi vuser.list //单数行为帐号,双数行为密码。 probe pa33w0rd black
pa22w1rd
使用db_load命令用HASH算法生成FTP用户数据库文件vuser.db:
db_load -T -t hash -f vuser.list vuser.db
查看数据库文件的类型:
file vuser.db vuser.db: Berkeley DB (Hash, version 9, native byte-order)
FTP用户数据库内容很敏感,所以权限给小一些:
chmod 600 vuser.db
删除原始的帐号和密码文件:
rm -f vuser.list
第2步:创建FTP根目录及虚拟用户映射的系统用户。
创建用户virtual并设置为不允许登陆系统并定义该用户的家目录:
useradd -d /var/ftproot -s /sbin/nologin virtual
查看该用户的家目录权限:
ls -ld /var/ftproot/ drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/
为保证其他用户可以访问,给予rwxr-xr-x权限:
chmod -Rf 755 /var/ftproot/
第3步:建立支持虚拟用户的PAM认证文件:
vi /etc/pam.d/vsftpd.vu //参数db用于指向刚刚生成的vuser.db文件,但不要写后缀。 auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
第4步:在vsftpd.conf文件中添加支持配置。
vi /etc/vsftpd/vsftpd.cong
anonymous_enable=NO
#禁止匿名开放模式。local_enable=YES
#允许本地用户模式。guest_enable=YES
#开启虚拟用户模式。guest_username=virtual
#指定虚拟用户帐号。pam_service_name=vsftpd.vu
#指定pam文件。allow_writeable_chroot=YES
#允许禁锢的FTP根目录可写而不拒绝用户登入请求。
第5步:为虚拟用户设置不同的权限
指定用户独立的权限配置文件存放的目录:
vi /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers_dir
创建用户独立的权限配置文件存放的目录:
mkdir /etc/vsftpd/vusers_dir/
切换进入到该目录中:
cd /etc/vsftpd/vusers_dir/
创建空白的probe的配置文件:
touch probe
指定black用户的具体权限:
vi black
anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
第6步:重启vsftpd服务,验证实验效果。
确认填写正确后保存并退出vsftpd.conf文件,重启vsftpd程序并设置为开机后自动启用.
可插拔认证模块PAM:
可插拔认证模块PAM(Pluggable Authentication Modules)是一种认证机制,通过一些动态链接库和统一的API将系统提供的服务与认证方式分开,使得系统管理员可以根据需求灵活的调整服务程序的不同认证方式。
通俗来讲PAM是一组安全机制的模块(插件),让系统管理员可以轻易的调整服务程序的认证方式,此时可以不必对应用程序做任何的修改,易用性很强,PAM采取了分层设计的思想——应用程序层、应用接口层、鉴别模块层。
PAM API作为应用程序层与鉴别模块层的连接纽带,让应用程序可以根据需求灵活的在其中插入所需的鉴别功能模块,当应用程序需要PAM认证时,一般在应用程序中定义负责其认证的PAM配置文件,真正灵活的实现了认证功能,读者不必精通PAM模块,也不用对参数做细致的讲解,只需认识PAM模块的重要目录:
/lib/security:pam认证模块。
/etc/pam.d:针对不同服务而定义好的pam配置文件。
例如vsftpd程序就会在其主配置文件("/etc/vsftpd/vsftpd.conf")中写入下面的参数:
pam_service_name=vsftpd
表示登陆FTP服务器时是根据/etc/pam.d/vsftpd的文件内容进行安全认证的。
Vsftpd -- 验证方式的更多相关文章
- C# 中参数验证方式的演变
一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空,如果是字符可能有长度限 ...
- SQLSERVER误删除了Windows登录用户验证方式使用Windows身份验证的解决方法
SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法 今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问 ...
- 两系统用asp.net forms 身份验证方式实现跨域登录信息共享
1.两个系统的 web.config 都配置为 forms 验证方式( system.web —> authentication 节点) 2.在两个系统的Web.config里配置相同的 sys ...
- Azure Service Bus 中的身份验证方式 Shared Access Signature
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js)
最近在学习asp.netMVC,发现其中的验证方式书写方便快捷,应用简单,易学好懂. 验证方式基于jQuery的validate 验证方式,也可以说是对jQuery validate的验证方式的扩展, ...
- Asp.net Mvc4 基于Authorize实现的模块权限验证方式
在MVC中,我们可以通过在action或者controller上设置Authorize[Role="xxx"] 的方式来设置用户对action的访问权限.显然,这样并不能满足我们的 ...
- Webservice加上SoapHeader验证方式
提供一种基于SoapHeader的自定义验证方式,代码如下: public class MySoapHeader : System.Web.Services.Protocols.SoapHeader ...
- IIS下的身份验证方式管理
设置.查看身份验证方式 #导航到某站点下: cd IIS:\Sites\DemoSite\DemoApp #启用站点test01下的Windows身份验证 Set-WebConfigurationPr ...
- asp.net中常用的几种身份验证方式
转载:http://www.cnblogs.com/dinglang/archive/2012/06/03/2532664.html 前言 在B/S系统开发中,经常需要使用"身份验证&q ...
随机推荐
- c/c++中使用指针需要注意的问题
一.使用指针的时候需要注意几点: 分配空间 初始化 释放 二.常见的错误有几种: 1)内存分配未成功,却使用了它 编程新手常犯这种错误,因为他们没有意识到内存分配会不成功.常用解决办法是,使 ...
- ThinkPHP3.1快速入门(12)自动验证
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 验证规则 数据验证可以进行数据类型.业务规则.安全判断等方面的验证操作.数据验证有两 ...
- lightoj1104(数学概率与期望)
题意: 增加一年有n天; 那么至少有几个人,能够保证至少两个人同一天生日的概率大于等于0.5; 思路: 转化一下题意; 就是求全部人生日都不同的概率小于等于0.5(那么至少两个人同一天就是大于等于0, ...
- mha日常维护命令
mha日常维护命令 http://m.blog.chinaunix.net/uid-28437434-id-3959021.html?/13033.shtml 1.查看ssh登陆是否成功masterh ...
- mac中vmware tools进行磁盘压缩和vmware-tools-cli的使用方法
前言: 高高兴兴的在vmware9.0中安装了mac10.8系统,然后学习iphone开发,但是发现下载的pdf都是基于xcode3.2.5的,又在10.8上面安装3.2.5,出现“五国”无法解决,最 ...
- C#_MVC_ajax for form
在上一篇介绍MVC中的Ajax实现方法的时候,曾经提到了除了使用Ajax HTML Helper方式来实现之外,Jquery也是实现Ajax的另外一种方案. 通过get方法实现AJax请求 View ...
- Route Filters
Route Filters The Controller's Middleware, represents a High-Level processing API, executed by the r ...
- Android(java)学习笔记137:Android中SimpleAdapter,ArrayAdapter和BaseAdapter常见的适配器
1.SimpleAdapter(BaseAdapter子类扩展类): simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片)等.可以显示比较复杂的列表, ...
- quartz定时任务中常用的cron表达式
一:定时cron的格式,一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素. 按顺序依次为: 1.秒(0~59) 2.分钟(0~59) 3.小时(0~23) 4.天(月(0~31,但是你需 ...
- 关于Spring中AOP的理解
AOP简介[理解][重点] 1.AOP(Aspect Oriented Programing)面向切面/方面编程 2.AOP隶属软件工程的范畴,指导开发人员如何制作开发软件,进行结构设计 3.AOP联 ...