fdeli 发表于 2013-9-18 09:06:12

centos6.4 安装vsftpd

Vsftpd原理vsftpd是linux发行版中的一款ftp服务器程序,它的全称是“very secure ftp daemon”,号称是最安全的ftp服务器。它工作在21,20号端口,主要提供文件传输服务,可以跨越网络提供服务,非常好用。
本文主要内容:
一,ftp的工作原理:
二,vsftpd的配置文件:
三,vsftpd的安装
四,vsftpd的启动与关闭:
五,vsftpd的配置文件/etc/vsftpd/vsftpd.conf解析:
六,用tcp_wraper来控制vsftpd:
七,创建ftp虚拟用户
八,启用ssl,建立安全的传输

一,ftp的工作原理:
ftp的两种工作模式:
1,主动模式
工作原理:客户端从一个任意的非特权端口(大于1024)N连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP 命令“portN+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)
2,被动模式
工作原理:当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(大于1024)N和N+1。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会 提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(大于1024)P ,并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据

主动模式与被动模式的比较:
主动FTP对FTP服务器的管理和安全很有利,但对客户端的管理不利,因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端 的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。目前,ftp服务器一般工作在被动模式。
Last login: Wed Sep 11 19:46:41 2013 from192.168.2.2# rpm -qa | grep vsftpd# yum -y install vsftpddb4-devel db4 db4-utils pam-devel pam pam_pkcs11 ftp
# service vsftpd start为 vsftpd 启动 vsftpd:[确定]# chkconfig vsftpd on
第二步:配置vsftpd服务的宿主
#useradd vsftpdadmin -s /sbin/nologin
这个vsftpdadmin只是用来替换root的,并不需要登录第三步:建立ftp虚拟宿主帐户
#useradd ftpuser-s /sbin/nologin
这ftpuser只个虚拟帐户的宿主,本身是不用登录的

# cp -rf /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak //备份一下,就算最后vsftpd搭建坏了,也可以恢复
# grep -v "#"/etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf//去除#号重定向到/etc/vsftpd/vsftpd.conf文件中。
注:筛选目录一定和重定向目录不能相同,否则里面是空的。
# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES//允许匿名访问local_enable=YES//允许本地用户访问,默认就是YES,不用改write_enable=YES//允许写入,默认是YES,不用改local_umask=022//上传后文件的权限掩码,不用改dirmessage_enable=YES//开启目录标语,默认是YES,开不开无所谓,我是默认就行xferlog_enable=YES//开启日志,默认是YES,不用改xferlog_file=/var/log/vsftpd.log//设定vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来connect_from_port_20=YES//设定连接端口20xferlog_std_format=YES//设定vsftpd的服务日志保存路径,不用改listen=YES//如果设置为YES,则vsftpd将以独立模式运行,由vsftpd 自己监听和处理连接请求
pam_service_name=vsftpd//PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证userlist_enable=YES//拒绝登录用户名单,不用改tcp_wrappers=YES//限制主机对VSFTP服务器的访问,不用改(通过/etc/hosts.deny和/etc/hosts.allow这两个文件来配置)

以上除了日志那项外都是系统默认存在的

chroot_list_enable=YES//不允许FTP用户离开自己主目录,默认是被注释掉的。chroot_list_file=/etc/vsftpd/chroot_list//如果开启了chroot_list_enable=YES,那么一定要开启这个,这条是锁定登录用户只能家目录的位置,如果不开启用户登录时就会报500 OOPS的错。注意:/etc/vsftp/chroot_list本身是不存在的,这要建立vim/etc/vsftp/chroot_list,然后将帐户输入一行一个,保存就可以了# vi /etc/vsftpd/chroot_listvirtual这步如果不写的话,会报500 OOPS: could notread chroot() list file:/etc/vsftpd/chroot_listidle_session_timeout=600//会话超时,客户端连接到ftp但未操作,默认被注释掉,可根据个人情况修改#async_abor_enable=YES//支持异步传输功能,默认是注释掉的#ascii_upload_enable=YES//支持ASCII模式的下载功能,默认是注释掉的#ascii_download_enable=YES//支持ASCII模式的上传功能,默认是注释掉的#ftpd_banner=Welcometo blah FTP service//FTP的登录欢迎语,本身是被注释掉的,去不去都行#chroot_local_user=YES//禁止本地用户登出自己的FTP主目录,本身被注释掉

以上都是配置文件里有,但都是被注释掉的……


还可以增加:
guest_enable=YES //设定启用虚拟用户功能。
guest_username=ftpuser //指定虚拟用户的宿主用户。
virtual_use_local_privs=YES //设定虚拟用户的权限符合他们的宿主用户。
user_config_dir=/etc/vsftpd/vconf //设定虚拟用户个人Vsftp的配置文件存放路径建立日志文件
#touch /var/log/vsftpd.log //日志文件
#chown vsftpdadmin.vsftpdadmin /var/log/vsftpd.log //属于vsftpdadmin这个宿主第六步:建立虚拟用户文件
#mkdir /etc/vsftpd/vconf/
#touch /etc/vsftpd/vconf/vir_user第七步:建立虚拟用户
#vim/etc/vsftpd/vconf/vir_user
virtualuser //用户名
123456 //密码注意:第一行用户名,第二行是上一行用户名的密码,其他人的以此类推第八步:生成数据库
#db_load -T -t hash -f /etc/vsftpd/vconf/vir_user/etc/vsftpd/vconf/vir_user.db第九步:设置数据库文件的访问权限
#chmod 600 /etc/vsftpd/vconf/vir_user.db
#chmod 600 /etc/vsftpd/vconf/vir_user第十步:修改/etc/pam.d/vsftpd内容
authrequired/lib/security/pam_userdb.so db=/etc/vsftpd/vconf/vir_useraccount required/lib/security/pam_userdb.so db=/etc/vsftpd/vconf/vir_user第十步:创建用户的配置文件
注意:用户配置文件的名字要和创建的“虚拟用户”名字对应
#touch/etc/vsftpd/vconf/virtualuser
#vim /etc/vsftpd/vconf/virtualuser
输入:
local_root=/home/virtualuser //虚拟用户的个人目录路径
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=1048576 //本地用户的最大传输速度,单位是Byts/s,我设定的是10M第十一步:建立虚拟用户目录
如果不建立虚拟用户的个人目录,那么所有的虚拟用户登录后所在的目录都是同一个目录下
# mkdir /home/virtualuser
# chown ftpuser.ftpuser ./virtualuser
# chmod 600 /home/virtualuser
配置就此完成,如果想增加新的用户,只要按照上面的第七步、第十步进行就可以了。注意:我的selinux是关闭的……重起FTP 数字代码的意义110 重新启动标记应答。120 服务在多久时间内ready。125 数据链路埠开启,准备传送。150 文件状态正常,开启数据连接端口。200 命令执行成功。202 命令执行失败。211 系统状态或是系统求助响应。212 目录的状态。213 文件的状态。214 求助的讯息。215 名称系统类型。220 新的联机服务ready。221 服务的控制连接埠关闭,可以注销。225 数据连结开启,但无传输动作。226 关闭数据连接端口,请求的文件操作成功。227 进入passive mode。230 使用者登入。250 请求的文件操作完成。257 显示目前的路径名称。331 用户名称正确,需要密码。332 登入时需要账号信息。350 请求的操作需要进一部的命令。421 无法提供服务,关闭控制连结。425 无法开启数据链路。426 关闭联机,终止传输。450 请求的操作未执行。451 命令终止:有本地的错误。452 未执行命令:磁盘空间不足。500 格式错误,无法识别命令。501 参数语法错误。502 命令执行失败。503 命令顺序错误。504 命令所接的参数不正确。530 未登入。532 储存文件需要账户登入。550 未执行请求的操作。551 请求的命令终止,类型未知。552 请求的文件终止,储存位溢出。553 未执行请求的的命令,名称不正确。

常见FTP命令及其功能
FTP命令
功能
FTP命令
功能

ls显示服务器上的目录
ls
显示远程目录remote-dir,并存入本地文件local-file

get remote-file 从服务器下载指定文件到客户端
mget remote-files
下载多个远程文件(mget命令允许用通配符下载多个文件)

put local-file 从客户端上传指定文件到服务器
mput local-file
将多个文件上传至远程主机(mput命令允许用通配符上传多个文件)

open连接FTP服务器
mdelete
删除远程主机文件

close中断与远程服务器的ftp会话(与open对应)
mkdir dir-name
在远程主机中创建目录

open host建立指定的ftp服务器连接,可指定连接端口
newer file-name
如果远程主机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件

cd directory改变服务器的工作目录
rename
更改远程主机的文件名

lcd directory在客户端上(本地)改变工作目录
pwd
显示远程主机的当前工作目录

bye退出FTP命令状态
quit
同bye,退出ftp会话

ascii设置文件传输方式为ASCII模式
reget remote-file
类似于get,但若local-file存在,则从上次传输中断处续传

binary设置文件传输方式为二进制模式
rhelp
请求获得远程主机的帮助

!]在本地主机中交互shell后退回到ftp环境,如:!ls *.zip
rstatus
若未指定文件名,则显示远程主机的状态,否则显示文件状态

accout 提供登录远程系统成功后访问系统资源所需的密码
hash
每传输1024字节,显示一个hash符号(#)

append local-file 将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名
restart marker
从指定的标志marker处,重新开始get或put,如restart 130

bye退出ftp会话过程
rmdir dir-name
删除远程主机目录

case在使用mget命令时,将远程主机文件名中的大写转为小写字母
size file-name
显示远程主机文件大小,如:
size idle 7200

cd remote-dir进入远程主机目录
status
显示当前ftp状态

cdup进入远程主机目录的父目录
system
显示远程主机的操作系统

delete remote-file删除远程主机文件
user user-name
向远程主机表明自己的身份,需要密码时,必须输入密码,如:user anonymous my@email

dir 显示远程主机目录,并将结果存入本地文件
help
显示ftp内部命令cmd的帮助信息,如help get


常见错误:1.500 OOPS: vsftpd: refusing to run withwritable anonymous root
vsftpd是对安全性要求较高的ftp server,所以不允许匿名写ftp主目录。基本是因为对ftp的主目录执行过chmod 777导致。所以,再用chmod命令改变权限即可,一般chmod 750就可以,亦或解决的方法是: chown root ftp; chmod -w ftp 。如果想创建一个允许匿名访问可读写的,就在主目录下再创建一个文件夹,设置成777的权限,修改vsftpd.conf就ok了。

2.ftp:connect:链接被拒绝原因:服务没启动解决:chkconfig vsftpd on
3.could not open chroot() listfile:/etc/vsftpd.chroot_lis
这个问题挺简单,纯属我没有好好动脑,对vsftpd.conf中的个别选项没有比较清楚的理解导致……解决办法把chroot_list_enable=YES 改成no或者comment掉就可以。
4.530 permission deniedLogin failed原因:“/etc/vsftpd.user_list” 文件中不存在当前登录用户解决:echo virtual >> /etc/vsftpd/virtual_user
5.500 00PS:unrecognized variable in configfileConnection closed by remote host原因:参数前有空格解决:将参数前空格删除

zuier 发表于 2013-9-19 16:12:18

长大了娶唐僧做老公,能玩就玩一玩,不能玩就把他吃掉。

黄智勇 发表于 2013-9-20 00:42:18

过来看看的

于一 发表于 2013-9-20 14:55:14

下雨了,别忘了打伞,湿身是小,淋病就麻烦啦*^_^*

24cun_cn 发表于 2013-9-20 18:41:24

如果有一双眼睛陪我一同哭泣,就值得我为生命受苦。

renran421 发表于 2013-9-20 23:25:07

找到好贴不容易,我顶你了,谢了

jinquan26 发表于 2013-9-22 21:44:51

男人有冲动可能是爱你,也可能是不爱,但没有冲动肯定是不爱!
页: [1]
查看完整版本: centos6.4 安装vsftpd