您的位置:首页 > 编程语言 > PHP开发

ftp下vsftpd虚拟账号的实现

2012-12-19 12:19 190 查看
[align=center]ftp下vsftpd虚拟账号的实现[/align]

vsftpd虽然英文全称叫Very Secure FTP ,也就是非常安全的ftp.但是我们平时如果用本地系统账号来开放下载,上传权限时还是容易被一些不怀好意的Hacker窃取我们的用户名密码进入系统.一定层面上也给系统带来的不安全的隐患.那么解决这种问题建立虚拟账号来管理我的ftp不失为一个好办法.下面就来讨论下vsftpd的虚拟账号配置.

安装vsftp
[root@localhost ~]# cd /mnt/cdrom/Server
[root@localhost Server]# ll vsftp*
-r--r--r-- 86 root root 143838 Jul 24 2009 vsftpd-2.0.5-16.el5.i386.rpm
[root@localhost Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm
warning: vsftpd-2.0.5-16.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:vsftpd ########################################### [100%]
[root@localhost Server]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@localhost Server]# cd /etc/vsftpd/
[root@localhost vsftpd]# ll
total 20
-rw------- 1 root root 125 May 13 2009 ftpusers
-rw------- 1 root root 361 May 13 2009 user_list
-rw------- 1 root root 4579 May 13 2009 vsftpd.conf
-rwxr--r-- 1 root root 338 May 13 2009 vsftpd_conf_migrate.sh
[root@localhost vsftpd]# vi virtualuser.txt建立一个虚拟文件





然后我们需要生成hash加密的数据库文件以便让后续的pam.userdb 这个模块来读取我们的用户名密码进行验证.
安装db4-util:
[root@localhost Server]# rpm -ivh db4-utils-4.3.29-10.el5.i386.rpm
warning: db4-utils-4.3.29-10.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:db4-utils ########################################### [100%]
[root@localhost Server]#
[root@localhost Server]# db_load
usage: db_load [-nTV] [-c name=value] [-f file]
[-h home] [-P password] [-t btree | hash | recno | queue] db_file
usage: db_load -r lsn | fileid [-h home] [-P password] db_file
[root@localhost Server]# cd /etc/vsftpd/
[root@localhost vsftpd]# db_load -T -t hash -f virtualuser.txt virtualuser.db 转换成数据库文件
[root@localhost vsftpd]# cd /etc/pam.d/
编辑
[root@localhost pam.d]# cp vsftpd vsftpd.bak
[root@localhost pam.d]# vi vsftpd





这里的db=后面指的就是我们生成好的hash数据文件.文件后缀的.db是不需要打的,pam_userdb.so这个模块会自动帮我们识别.还有就记住/etc/pam.d/vsftpd 文件里面原先的内容一定要注释掉.只留新添加的两行即可.因为虚拟账号要登陆系统必须要影射到我们系统的真实用户上.不可能一个无缘无故的用户跑到我们系统上来.所以需要建立一个虚拟用户影射的系统账号:useradd user1不需要给这个用户密码,那么他也永远不能登陆系统.
[root@localhost security]# |less /usr/share/doc/pam
pam-0.99.6.2/ pam_ccreds-3/ pam_krb5-2.2.14/ pam_passwdqc-1.0.2/ pam_pkcs11-0.5.3/ pam_smb-1.1.7/
[root@localhost security]# |less /usr/share/doc/pam-0.99.6.2/txts/README.pam_userdb
-bash: syntax error near unexpected token `|'
[root@localhost security]# less /usr/share/doc/pam-0.99.6.2/txts/README.pam_userdb 查看帮助文档

[root@localhost security]# useradd -s /sbin/nologin -M user1 建立用户不启动shell不建立家目录
[root@localhost security]# vi /etc/vsftpd/vsftpd.conf 编辑主配置文档





重启服务:
[root@localhost security]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
这时用本地主机发现访问ftp不行,老是失败。
然后可以这样做:
[root@localhost security]# userdel -r user1 删除user1
userdel: error removing directory /home/user1
[root@localhost security]# vi /etc/passwd
[root@localhost security]# useradd -s /sbin/nologin user1重新创建user1并不赋予shell权限
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /home
[root@localhost home]# pwd
/home
[root@localhost home]# ll
total 12
drwx------ 3 liu liu 4096 Nov 20 01:24 liu
drwx------ 3 user1 user1 4096 Dec 18 03:42 user1
[root@localhost home]# cd user1
[root@localhost user1]# touch f1 在user1下建立一个简单文件f1可以在下面显示
[root@localhost user1]# cd ..
[root@localhost home]# chmod a+r user1 给user1读权限





用test用户可以访问>

本文出自 “海阔天空” 博客,请务必保留此出处http://liufan0321.blog.51cto.com/6155778/1093868
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: