加载中…
个人资料
孟三
孟三
  • 博客等级:
  • 博客积分:0
  • 博客访问:15,469
  • 关注人气:7
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

vsFTP服务器搭建

(2011-03-10 13:17:58)
标签:

it

分类: linuxftp服务

FTP服务配置及使用

1.  介绍:

FTP File Transfer Protocol文件传输协议 的英文简称,而中文简称为文传协议。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通 过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些 计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

1.1.      工作原理

1FTP服务器运行FTPd守护进程,等待用户的FTP请求。

2)用户运行FTP命令,请求FTP服务器为其服务。

 例:FTP 202.119.2.197

3FTPD守护进程收到用户的FTP请求后,派生出子进程FTP与用户进程FTP交互,建立文件传输控制连接,使用TCP端口21

4)用户输入FTP子命令,服务器接收子命令,如果命令正确,双方各派生一个数据传输进程FTP-DATA,建立数据连接,使用TCP端口20,进行数据传输。

5)本次子命令的数据传输完,拆除数据连接,结束FTP-DATA进程。

6)用户继续输入FTP子命令,重复(4)、(5)的过程,直至用户输入quit命令,双方拆除控制连接,结束文件传输,结束FTP进程。

1.2.      FTP服务器访问的方法

Dos c:\>ftp ftp.chinaitlab.com

windows:filezlilla,IE,mozilla

linux:$ftp ftp.chinaitlab.com

gftp ftp.china.itlab.com

1.3.      FTP服务器软件

Wu-ftpd:早期Unix系统流行的匿名自由FTP服务器软件。

Proftpd:使用类似apache配置文件格式。

Vsftpd:最安全最高效的FTP服务器。

1.4.      vsFTP简介

vsFTP是一种基于GPL的在UNIX/Linux中非常安全且快速的FTP服务器,其中vs是“Very Secure”的缩写,具有安全、高速和稳定的性能。在速度方面,使用ASCII模式下载数据时,速度是WU-FTP的两倍,如果Linux使用的是2.4.x版本的内核,在千兆以太网上的下载速度可达86Mbps。在稳定性方面,在单机服务器上支持4000个以上的并发连接,最高可支持15000个并发连接。除此之外,vsFTP还具有如下特性:支持基于IP的虚拟FTP服务器;支持虚拟用户;支PAMxinetd/tcp_wrappers的认证方式;支持两种运行方式:standalonexinetd方式;支持每个虚拟用户的独立配置;支持带宽限制。

vsFTP运行模式一种是独立(standalone)运行模式,另外一种是xinetdeXtended Internet Services Daemon,即:扩展的Internet服务守护进程)模式。两种模式运行机制是不同的,独立运行模式适合专业的FTP服务器,且FTP总是一直有人访问,占用资源比较大,如果FTP服务器总是有人访问和登入建议采用这种模式。如果FTP服务器访问人数比较少,建议您用xinetd模式。xinetd模式的运行方式一直监听端口,当客户端(Client)有FTP连接请求时,首先会将连接传至xinetdxinetd再将此要求传至vsftpd,启动相应的vsftp服务进程(即:vsftpd)。

2.  安装

2.1.      vsFTP服务器的安装

下载完服务器对应vsFTP包(vsftpd-2.2.0.tar.gz)之后安装,命令如下:

#tar  zxvf  vsftpd-2.2.0.tar.gz

#cd  vsftpd-2.2.0

 

[ vsftpd-2.2.0]# useradd nobody

这里需要加一个默认的nobody用户,nobody用户不存在,则需要添加。

[vsftpd-2.2.0]# mkdir /usr/share/empty

这一步同上。服务器需要一个empty的空目录放  /usr/share/下。可以使用ls /usr/share/empty查看。如果存在就不需要了。

[vsftpd-2.2.0]# mkdir /var/ftp/ 

创建供匿名用户使用的目录

[vsftpd-2.2.0]]# useradd -d /var/ftp ftp

 

创建ftp用户并且指定家目录为/var/ftp,这个步骤一般的系统也有。如果创建提示:user ftp exists就表示用户已经存在。

[vsftpd-2.2.0]]# chown root:root /var/ftp

设置/var/ftp,也就是ftp用户的家目录属组和属主都是root,为了安全。

vsftpd-2.2.0]]# chmod og-w /var/ftp

更改权限,去掉属组和其他人的写权限

[vsftpd-2.2.0]]# make

编译二进制文件(因本机是64位机子,更改了脚本)。

[vsftpd-2.2.0]]# make install

安装,安装的时候可以看到安装的相关文件。

[vsftpd-2.2.0]]# cp vsftpd.conf /etc/ 

[vsftpd-2.2.0]]# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd 

因为make install 不能拷贝vsftpd.confvsftpd.pam/etc目录下面,所有拷贝配置此文件。拷贝PAM安全验证文件此为验证文件所在的目录。

[vsftpd-2.2.0]]# vi /etc/vsftpd.conf

因为是在独立模式下运行的vsftpd,所以在#listen=YES 前面去掉#,保存退出。同时需要确定xinetd目录下vsftpd服务是关闭。可以用chkconfig vsftpd off。可以用chkconfig vsftpd --list查看状态。或者直接删除/etc/xinetd.d/vsftpd

[vsftpd-2.2.0]# /usr/local/sbin/vsftpd &    

后台启动vsftp;或者可以echo "/usr/local/sbin/vsftpd &" > /etc/rc.local 追加到启动脚本上。需要重新启/etc/rc.local

3.  几种ftp服务器的配置

3.1.      针对于匿名帐户的设置

# vi /etc/vsftpd.conf

[anonymous]

anonymous_enable=YES                    

local_enable=NO                       

anon_upload_enable=YES                 

anon_mkdir_write_enable=YES            

chown_uploads=YES                      

chown_username=root                    

idle_session_timeout=600               

# mkdir /var/ftp/incoming 

# chmod go+w /var/ftp/incoming          

# killall 9 vsftpd

# /usr/local/sbin/vsftpd &

只有匿名帐户可以登陆;在FTP目录下创建incoming目录;允许匿名访问,但不允许在ftp目录中创建,删除;允许匿名用户在incoming目录中上传,创建,删除目录;匿名帐户上传的文件,自动变为alice所属;用户空闲600秒自动中断。

# ftp 127.0.0.1

Connected to 127.0.0.1.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (127.0.0.1:root): ftp

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>     

连接本地测试,能够正常登录,同时也能getput数据。

3.2.      以用户test登录

#useradd -s /sbin/nologin -d /home/test -M test

#passwd test

#vi /etc/vsftpd/vsftpd.conf

[test]

anonymous_enable=NO

local_enable=YES

write_enable=YES

ftpd_banner=Welcome  NFSchina

pam_service_name=vsftpd

tcp_wrappers=YES

#useradd -s /sbin/nologin -d /home/test -M test

#passwd test

# service vsftpd restart

经实践能够正常登录。也可以写入数据。登录效果如下:

Connected to 192.168.12.36.

220 Welcome NFSchina.

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.12.36:root): test

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

227 Entering Passive Mode (192,168,12,36,106,212)

150 Here comes the directory listing.

226 Transfer done (but failed to open directory).

ftp>      

3.3.      建立用户自己的目录

一般用户局限在自己的目录下,不能返回上一层。以test用户为例,开启chroot_list_enable=YES,并把用户test加入/etc/vsftpd/chroot_list中,test用户可以返回到home目录。

# vi /etc/vsftpd/vsftpd.conf

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

#echo "test" >> /etc/vsftpd/chroot_list

#servic vsftpd restart

#ftp 127.0.0.1

……

ftp> pwd

257 "/home/test"

ftp> cd ..

....

ftp>pwd

257 "/home"

重新启动vsftpd服务,用test登录后pwd查看当前显示目录为"/home/test","cd .."后可以返回上一层。

3.5.      用户控制

用户可以开启userlist_enable=yes和配置参数 pam.d/vsftpd来开启指定或限制用户登录。

#vi /etc/vsftpd/vsftpd.conf

userlist_enable=yes

pam_service_name=vsftpd

#vi /etc/vsftpd/ftpuser

#echo "test" >>/etc/vsftpd/ftpuser

#service vsftpd restart

#vi /etc/pam.d/vsftpd

auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

 

可以看出 sense=deny说明ftpuser里的用户被拒绝。尝试以test用户登录,登录状态为:

530 Login incorrect.

Login failed.

3.6.      虚拟帐号登录方式:dbv4+vsftpd 配置ftp虚拟帐户

首先在/etc/vsftpd/下添加vusers.txt 加入

#vi /etc/vsftpd/vusers.txt

tom

123456

jack

123456

确定是否已经安装db4-tils,db_load 生成db文件。

#rpm -qa |grep db4-utils

db4-utils-4.3.29-9

#db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vsftpd_login.db

#chmod 600 /etc/vsftpd/vsftpd_login.db

需要编辑pam.d/vsftpd模块映射虚拟帐号,同时注释掉以前的动作,用[tab]键隔开。

#vi /etc/pam.d/vsftpd

Auth  required pam_userdb.so db=/etc/vsftpd/vsftpd_login

Account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

关闭所有与anonymous有关的配置,打开guest账号。

#vi /etc/vsftpd/vsftp.conf

local_enable=NO             

write_enable=NO

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

listen=YES
pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

guest_enable=yes                     

guest_username=virtualguest           

user_config_dir=/etc/vsftpd/vuser_conf  

/etc/vsftpd/vuser_conf目录下分别建立tom,jack这两个文件,文件名必须跟虚拟用户名一致,然后我们就可以在这些文件里面添加用户所对应的权限。

anon_world_readable_only=NO

download_enable=YES

write_enbale=YES

anon_write_mkdir_enable=YES

anon_max_rate=200000 (限速为200K

最后用tom账号登陆即可。

4.  参考资料

http://baike.baidu.com/view/369.htm

http://wenku.baidu.com/view/ecf3b851f01dc281e53af02e.html

 

 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有