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

Vsftpd服务器实现基于虚拟用户帐号服务 推荐

2009-12-27 10:57 666 查看
实验环境:LinuxAS4操作系统,双网卡,IP分别为192.10.30.3/24(VM1) | 192.10.10.3/24(VM2)

(一)FTP服务器简述
FTP指的是一种文件传输的网络协议.在Linux和Windows平台下有多种FTP服务器软件可供选择.
Vsftpd是一个基于GPL发布的类Unix系统上使用的FTP服务器软件;Vsftpd是very secure ftp daemon的缩写,安全性是它的最大特点.Vsftpd服务器可使用匿名用户,本地用户和虚拟用户三种用户类型.
FTP服务器使用的端口和传输模式:FTP服务器使用21端口与客户机建立命令(控制)链路;在主动模式下FTP服务器使用20端口与客户机建立数据链路
(二)FTP服务器的两种传输模式
i:主动模式:由服务主动连接客户机建立数据链路.
主动模式建链过程:FTP客户机使用(1024,65535)之间的某端口N向FTP服务器的21端口发起请求建立命令(控制)链路;FTP服务器用21端口回应FTP客户机N端口的请求,并确认建立控制链路;FTP服务器由20端口向FTP客户机的N+1端口主动建立数据链路连接;FTP客户机由N+1端口向FTP服务器的20端口回应,确认数据链路的建立.

ii:被动模式:FTP服务器等待客户机建立数据链路.
被动模式建链过程:FTP客户机使用(1024,65535)之间的某端口N向FTP服务器的21端口发起请求建立命令(控制)链路;FTP服务器用21端口回应FTP客户机N端口的请求,并确认建立控制链路;FTP服务器使用已经建立的控制链路通知客户机自己已经打开(1024,65535)M端口,用于数据链路的建立;当需要传输数据时,FTP客户机会通过N+1端口向FTP服务器的M端口请求建立数据链路;FTP服务器在M端口监听到FTP客户机连接请求后,将从M端口向FTP客户机的N+1端口确认数据链路的建立.
(三)检查vsftpd包的安装状态
[root@localhost]#rpm -qa |grep vsftpd
vsftpd-2.0.1-5.EL4.3

(四)vsftpd的配置文件介绍
i:/etc/vsftpd.ftpusers :用于保存哪些用户不允许登录FTP服务器,可禁止高权限的本地用户登录FTP服务器,提高了系统安全性
ii:/etc/vsftpd.user_list :此文件中的用户在默认情况下(/etc/vsftpd.conf中设置为userlist_enable=YES userlist_deny=YES)禁止登录
iii:/etc/vsftpd/vsftpd.conf :是主配置文件,具体配置如下
[root@localhost vsftpd]#grep -v "^#" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #FTP服务器允许匿名登录
local_enable=YES #允许本地用户登录
write_enable=YES #开放对本地用户写权限
local_umask=022 #设置本地用户新建文件的umask值
anon_upload_enable=YES #允许匿名用户上传文件,同时要求存放上传的文件的目录对匿名用户有写权限
anon_mkdir_write_enable=YES #允许匿名用户上创建目录
dirmessage_enable=YES #在FTP服务器中的某个目录切换时,显示该目录下的.message隐含文件的内容
xferlog_enable=YES #FTP服务器启用上传和下载日志
connect_from_port_20=YES #FTP服务器启用FTP数据端口的连接请求
xferlog_std_format=YES #FTP服务器使用标准的ftpd xferlog日专格式
chroot_local_user=YES #将FTP本地用户禁锢在宿主目录中,即不允许FTP用户切换目录,提高了安全性
pam_service_name=vsftpd #设置PAM认证服务的配置文件名称
userlist_enable=YES #FTP服务器检查userlist_file设置文件中指定的用户是否可以访问vsftpd服务器
userlist_deny=YES #关联userlist_enable=YES,表示禁止此文件中用户登录;若userlist_deny=NO,则只允许vsftpd.user_list中的用户登录;
listen=YES #表示FTP服务器处于独立启动模式
tcp_wrappers=YES #FTP服务器将使用tcp_wrappers作为主机访问控制方式
(五)运行vsftpd
[root@localhost /]#service vsftpd restart #重新启动vsftpd服务
[root@localhsot /]#chkconfig --level 35 vsftpd on #设置vsftpd服务器在运行级别35自启动
[root@loaclhost /]#service vsftpd status #检查vsftpd状态

vsftpd服务器提供匿名用户登录的功能,可使用anonymous或ftp登录(不用密码,直接回车).如在windows平台下:运行-->cmd
C:\>ftp 192.10.30.3
Connected to 192.10.30.3.
220 <vsFTPd 2.0.1>
user <192.10.30.3:<none>>:anonymous
331 Plesase sepcify the password.
password:此处直接按回车即可
>dir #可查看所在目录中的文件详细信息,同 ls -l

(六)vsftpd实现基于虚拟用户帐号服务
虚拟用户:使用独立的文件保存虚拟帐号,安全性较好,可替代本地用户.
i:创建虚拟用户口令库文件
[root@localhost vsftpd]#cat vuser.txt
lilei #奇数行为用户名
123456 #偶数行为用户口令
hanmeimei
123456
jim
123456
ii:生成vsftpd的认证文件
[root@localhost vsftpd]#db_load -T -t hash -f ./vuser.txt /etc/vsftpd/vsftpd_login.db #使用db_load命令生成认证文件
[root@localhost vsftpd]#chmod 600 vsftpd_login.db #设置认证文件只对用户可读可写
iii:建立虚拟用户所需的PAM配置文件
[root@localhost /]#cat /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_user.so db=/etc/vsftpd/vsftpd_login

iv:建立虚拟用户所要访问的目录并设置相应的权限
[root@localhost /]#useradd -d /home/ftp ftpuser
[root@localhost /]#chmod 700 /home/ftp/

v:重新修改vsftpd.conf配置文件如下:
[root@localhost vsftpd]# grep -v "^#" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ftpd_banner=Welcome to blah FTP service.
guest_enable=YES
guest_username=ftp
pam_service_name=vsftpd.vu
chroot_local_user=YES
listen=YES
tcp_wrappers=YES

(七)验证虚拟用户登录
[root@localhost /]#service vsftpd restart #重新启动vsftpd服务程序

[root@localhost /]#ldd /usr/sbin/vsftpd #检查vsftpd是否已经加载pam模块,vsftpd依赖于libpam.so.0
在windows客户端验证结果如下
C:\>ftp 192.10.30.3
Connected to 192.10.30.3.
220 Welcome to blah FTP service.
User (192.10.30.3:(none)): lilei
331 Please specify the password.
Password:
230 Login successful.
ftp>

Vsftpd下的虚拟用户账号就这样创建成功了,呵呵!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux ftp vsftpd GPL pam