手机版
你好,游客 登录 注册
背景:
阅读新闻

Linux FTP服务器之 vsftpd配置使用

[日期:2013-11-01] 来源:Linux社区  作者:pingdan [字体: ]

What is FTP

大伙都知道FTP就是文件传输协议,File Transfer Protocol, 此协议诞生于互联网发展初期,历史悠久,主要用于文件共享,工作在TCP/IP应用层。

How it works

FTP主要工作在两种模式,一种是主动模式,也有人叫标准模式Standard; 另一种是被动模式,也叫pasv模式(passive),在这里所言主动与被动皆相对于服务器而言。

在主动模式下,客户端首先随机启动一个端口如2021向服务器TCP21端口发起连接,此过程就是我们常说的tcp三次握手,此过程即是FTP的控制连接过程,一旦连接建立除非服务端定义的超时时间或其他的连接策略,否则连接会一直保持下去。之后客户端根据需求向服务端发送相应的命令请求,服务端收到命令请求会根据本地的配置来验证客户端是否有相应的权限,如果有则通过20端口向客户端2022端口返回相应数据,如果2022端口非空闲则发送给2023,以此类推,直到找到空闲的端口为止;如果经查此人无此权限,则返回给相应的错误信息。

下图为我用Dia画的一个简单示意图,真的是不画图不知道,一画才顿感自己的知识掌握的程度是如此令人汗颜,愧哉愧哉,看着马哥讲解PPT上信手拈来,如此轻松,真的到自己来有点无从下手之感,归根结底还是知识掌握不扎实,动手太少,书到用时方恨少,不能做到拳不离手,曲不离口又何来如马哥般的烂熟于心?向马可致敬,为自己之前的眼高手低做深刻检讨,从现在开始,坚持博客总结,小伙伴们,能把自己的知识倒给别人跟自己会使用真是不是一个境界。子曰:学而时习之,不变乐乎;有朋自远方来,不亦悦乎;人不知而不愠,不亦君子乎?扯远了。。。 言归正传。。。

image

在主动模式下,有个缺陷,如果客户端开启了防火墙,未放行外来不明端口那么就悲剧了,连接建立却无法进行数据通信。于是乎被动模式就此诞生了:此模式下,客户端与服务端建立控制连接后,由服务端主动向客户端发出一个通知包告之自己数据服务工作在哪个端口,等待客户端有数据请求时连接上来。通常是这样的格式,e.g 100,56 客户端计算出100*256+56=25656然后随机打开一个端口去连接服务器25656端口建立数据连接通道。

 

image

此模式下仍旧会有问题产生,因为众所周知,通常情况下为了安全考虑,服务器一般是处于防火墙内的,而每次服务器通知给客户端的数据连接端口都是随机产生的,这样一来服务端的防火墙开放的端口就不好控制了,解决这个问题就需要防火墙的连接跟踪功能了,防火墙可以自动追踪到和这个连接相关的连接,打上related标签,这样只要是相关的连接,防火墙都会信任放行了,关于这个会在以后iptables应用中详细解释。

用户类型

FTP服务器支持的用户账号类型主要有三种

1. 匿名用户 anonymous

2. 系统用户 :提供服务的系统自身存在的用户

3. 虚拟用户

不过其实不管是哪种类型的用户,事实上最终都是系统用户,匿名用户和虚拟用户其实是映射到系统的一个用户上来,以这个用户的身份来访问系统共享出来的资源的。

安装配置

提供ftp服务的软件有很多,这里以红帽提供的vsftpd为例,vsftpd 是Very Secured ftp Deamon的缩写,由此可见安全是他的强项。

安装比较简单,我们直接用yum 安装就好了 ,软件很小

yum –y install vsftpd

安装完成可以用rpm –ql vsftpd 查看都生成了哪些文件

[root@ha1 ~]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd.log
/etc/pam.d/vsftpd
/etc/rc.d/init.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/sbin/vsftpd
/usr/share/doc/vsftpd-2.0.5
/usr/share/doc/vsftpd-2.0.5/AUDIT
/usr/share/doc/vsftpd-2.0.5/BENCHMARKS

我们可以看到vsftpd的配置文件是/etc/vsftpd/vsftpd.conf, 下面对配置文件的常用选项作简单说明:

anonymous_enable=yes|no 是否启用匿名用户

write_enable=yes|no 系统用户是否可以上传文件

anon_upload_enable=yes|no 是否允许匿名用户上传文件,此功能必须要先让对应的文件夹ftp用户具有rwx权限,由于vsftpd文件权限受SELinux控制,可用setfacl –m u:ftp:rwx /path/to/dir 给权限,不过一般匿名用户不会给这么大的权限

anon_mkdir_enable=yes|no 是否允许匿名用户创建文件夹

anon_other_write_enable=yes|no 是否允许匿名用户删除文件

dirmessage_enable=yes|no 此选项启用,可以对应目录下创建一个.message文件,里面定义想要显示的内容,当用户切换到此目录时,屏幕会打印出.message内定义好的内容

local_enable=yes|no 是否允许本地系统用户通过ftp登陆

chroot_local_user=yes 禁锢所有本地系统用户在其家目录, 如果需要禁锢部分用户可分别定义

chroot_local_enable=no|yes 此项若为yes则自定义的chroot_list中的用户是不被禁锢的,如果是no则定义的用户是被禁锢的

chroot_list_enable=yes

chroot_list_file=/etc/vsftpd/chroot_list

xferlog_enable=yes|no

xferlog_file=/path/to/file

listen=YES 服务使用独立守护进程,如果为NO则为瞬时守护进程, 需要在/etc/xinet.d/下为其提供相应格式的脚本或配置文件

pam_service_name=vsftpd pam认证的配置文件, 本例表示/etc/pam.d/vsftpd , 用户列表文件/etc/vsftpd/ftpuser

userlist_enable=YES 用户列表文件/etc/vsftpd/user_list

userlist_deny=YES|NO 如果此项为Yes则user_list中定义的用户不可以登陆ftp, 反之亦然.

更多详情见请继续阅读下一页的精彩内容http://www.linuxidc.com/Linux/2013-11/92211p2.htm

推荐阅读

玩转vsftpd服务器的四大高级配置:http://www.linuxidc.com/Linux/2013-09/90565.htm

vsFTPd配置教程:http://www.linuxidc.com/Linux/2013-09/90562.htm

Ubuntu实用简单的FTP架设 http://www.linuxidc.com/Linux/2012-02/55346.htm

Ubuntu 上架设FTP服务器和Apache服务器 http://www.linuxidc.com/Linux/2011-04/35295.htm

Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

RHEL6平台下SeLinux和vsftpd的匿名上传的简单案例 http://www.linuxidc.com/Linux/2013-04/82300.htm

Linux系统vsftpd源码安装 http://www.linuxidc.com/Linux/2013-03/81475.htm

vsftpd的安全配置案例分析 http://www.linuxidc.com/Linux/2012-12/76501.htm

linux
相关资讯       vsftpd  vsftpd配置 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款