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的文件内容进行安全认证的。

上一篇:安装Django(1)


下一篇:洛谷P2042 [NOI2005]维护数列