安全的FTP服务器 vsftpd简介

vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。比如:

非常高的安全性需求
带宽限制
良好的可伸缩性
创建虚拟用户的可能性
IPv6支持
中等偏上的性能
分配虚拟 IP 的可能性
高速

vsftpd 的名字代表"very secure FTP daemon", 安全是它的开发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。

一个例子就是 vsftpd 是在 chroot 模式下工作的,chroot 模式就是为程序(这里就是 vsftpd 了)单独指定一个新的目录,它也就不能访问那个目录之外的程序和文件了 --- 所以这也称为“被锁上的”。一个可能被潜在的攻击者破坏的 FTP 服务器将被从系统的其他部分独立开来,从而避免了更大的损失。

由于有了如此多的特性,其中 FTP 服务的安全性应该是最重要的,vsftpd 比其他 FTP 服务器更加优越。WU-FTPD http://www.wu-ftpd.org/ 在这里可以被视作一个反面的例子,因为它在过去的几年中出现了太多的安全缺陷。

附录1:什么是FTP
FTP Transfer Protocol 件传输协议的缩写,在RFC 959中具体说明。

FTP会话时包含了两个通道,一个叫控制通道,一个叫数据通道。

控制通道:控制通道是和FTP服务器进行沟通的通道,连接FTP,发送FTP指令都是通过控制通道来完成的。

数据通道:数据通道是和FTP服务器进行文件传输或者列表的通道。

FTP协议中,控制连接均有客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式

PORT模式(主动方式)

FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口(一个大于1024的端口)接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

PASV模式(被动方式)

在建立控制通道的时候和PORT模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接传送数据。

如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点非常关键,如果设置错了,那么客户将无法连接。

附录2:FTP用户管理解说

FTP服务器对用户的管理,在默认的情况下是根据 /etc/passwd及/etc/group 来进行的,所以我们一定要了解Linux系统用户和用户组的管理,用户和用户组的管理是一切应用的的基础,有的弟兄不想去了解基础的东西,就想一步成架好各种服务器,事实证明这种学习方法是最不明智的;虽然在您可能在几分钟启动了ftp服务器,但遇到问题时,您不一定能知道是哪里出错;所以基础还是极为重要的;

推荐文章: 《Linux 用户(user)和用户组(group)管理概述》

匿名ftp 用户的理解

当我们访问各大FTP上访问时,可能我们不去想我们以什么身份登录的,如果他的FTP允许匿名登录的话;比如我们在浏览器上打入;

ftp://mirrors.kernel.org

ftp://ftp:ftp@mirrors.kernel.org

我们会发现上面的两行最终都能访问,而且显示的结果也完全一样,最终都跳到 ftp://mirrors.kernel.org 地址;那我们访问这个FTP时,是不是有用户和密码呢?是的,也是需要在的,只是在服务器端允许匿名访问,而匿名访问的用户名和密码都是ftp,只是我们因为匿名访问,没有感觉到他有用户名和密码罢了。第二个地址就是以ftp用户,密码也是ftp来访问 ftp://mirrors.kernel.org;

如果我们以ftp命令连接 mirrors.kernel.org 时,我们会发现需要输入用户ftp,密码ftp才能访问;

在FTP服务器中,匿名用户的用户名和密码都是ftp ;这个用户可以在您的操作系统中的 /etc/passwd 中能找得到;可能有类似下面的一行;

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

说明:

/etc/passwd 是系统用户的配置文件;/etc/group是系统用户组配置文件,您可以通过 《Linux 用户(user)和用户组(group)管理概述》 及其相关文档中了解一些用户管理的一些基础知识;

在ftp用户这行中,我们看到七个字段,每个字段写字段之间用:号分割;

ftp 是用户名
x 是密码字段,是隐藏的;
14 是用户的UID字段,可以自己来设定,不要和其它用户的UID相同,否则会造成系统安全问题;
50 用用户组的GID,可以自己设定,不要和其它用户组共用FTP的GID,否则会造成系统全全问题;
FTP User 是用户说明字段;
/var/ftp 是ftp用户的家目录,可以自己来定义;
/sbin/nologin 这是用户登录SHELL ,这个也是可以定义的,/sbin/nologin 表示不能登录系统;系统虚拟帐号(也被称为伪用户)一般都是这么设置。比如我们把ftp用户的/sbin/nologin 改为 /bin/bash ,这样ftp用户通过本地或者远程工具ssh或telnet以真实用户身份登录到系统。这样做对系统来说是不安全的;如果您认为一个用户没有太大的必要登录到系统,就可以只给他FTP帐号的权限,也就是说只给他FTP的权限,而不要把他的SHELL设置成 /bin/bash 等;

关于ftp用户组的理解

我们查看 /etc/group 的时候,会发现类似这样一条;

ftp:x:50:
/etc/group 是用户组的管理配置文件,上面这行表示用户组ftp,x是密码段,50是GID;我们对照在/etc/passwd中的ftp那行得知ftp用户是属于ftp用户组的,因为ftp用户那行中的GID和ftp用户组的GID是相同的。

匿名ftp用户和ftp用户组是否可以删除

在一般情况下是不能把/etc/passwd和/etc/group 中有把ftp用户和用户组的行删除的,因为FTP服务器是需要他们来对FTP用户实现管理,在默认的情况下。

虽然不能删除,但对/etc/passwd及/etc/group中的ftp用户及ftp用户组的一些相关的东西是能修改的;比如我们可以把ftp用户的家目录改掉,也可以把ftp用户的UID改掉 ... ... 前提是你对用户管理有所了解。系统用户管理是一切应用基础之一,可能初学Linux的弟兄并不了解用户管理的重要性,但慢慢您就会发现这个道理。

(0)

相关推荐

  • FTP与SFTP的区别 知多少

    FTP是文件传输协议.在网站上,如果你想把文件和人共享,最便捷的方式莫过于把文件上传到FTP服务器上,其他人通过FTP客户端程序来下载所需要的文件. FTP进行文件传输需要通过端口进行.一般所需端口为: 1.  控制链路-TCP端口21.控制器端.用于发送指令给服务器以及等待服务器响应. 2.  数据链路---TCP端口20.数据传输端口.用来建立数据传输通道的.主要用来从客户向服务器发送一个文件.从服务器向客户发送一个文件.从服务器向客户发送文件或目录列表. FTP为了适应不同的网络环境,支持

  • vsFTPd 服务器初学者指南

    vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序,非常好用,我都用了好长时间,那下面我就给大家介绍下vsftpd的学习指南. 1.vsFTPd,目前常用FTP服务器套件; vsFTPd是一款在Linux发行版中最受推崇的FTP服务器程序;特点是小巧轻快,安全易用;能让其自身特点得发发挥和掌握,也然最主要的是会用; 目前在开源操作系统中常用的FTPD套件主要有ProFTPD.PureFTPd和wuftpd等;至于哪个FTP服务器套件更好,哪个是你最熟悉的,哪个就是最好的; 2.ft

  • Shell脚本搭建FTP服务器(vsftpd)

    各种知识点都写在注释里. 只需要 sudo $PATH/ftpsetup.sh即可,默认以test/test为用户名密码登录,登录后的根目录只读,子目录writable可写. Ubuntu 13和Linux Mint 15上测试ok. 复制代码 代码如下: #!/bin/bash # by liuhx 2013-Nov-04. # 设置ftp环境的脚本.ftp的根目录为只读,其下的writable目录为可写 # 可自定义以下四项 # ftp用户名 userName="test" # f

  • 全面提高WindowsFTP服务器的安全性能

    但使用IIS5.0 架设的FTP服务器真的安全吗?它的默认设置其实存在很多安全隐患,很容易成为黑客们的攻击目标.如何让FTP服务器更加安全,只要稍加改造,就能做到. 一 取消匿名访问功能 默认情况下,Windows2000系统的FTP服务器是允许匿名访问的,虽然匿名访问为用户上传.下载文件提供方便,但却存在极大的安全隐患.用户不需要申请合法的账号,就能访问FTP服务器,甚至还可以上传.下载文件,特别对于一些存储重要资料的FTP服务器,很容易出现泄密的情况,因此建议用户取消匿名访问功能. 在Win

  • VSFTP 两招帮你提高FTP服务器的安全性

    一.禁止系统级别用户来登录FTP服务器. 为了提高FTP服务器的安全,系统管理员最好能够为员工设置单独的FTP帐号,而不要把系统级别的用户给普通用户来使用,这会带来很大的安全隐患.在VSFTP服务器中,可以通过配置文件vsftpd.ftpusers来管理登陆帐户.不过这个帐户是一个黑名单,列入这个帐户的人员将无法利用其帐户来登录FTP服务器.部署好VSFTP服务器后,我们可以利用vi命令来查看这个配置文件,发现其已经有了许多默认的帐户.其中,系统的超级用户root也在其中.可见出于安全的考虑,V

  • 安全的FTP服务器 vsftpd简介

    vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面.它支持很多其他的 FTP 服务器不支持的特征.比如: 非常高的安全性需求 带宽限制 良好的可伸缩性 创建虚拟用户的可能性 IPv6支持 中等偏上的性能 分配虚拟 IP 的可能性 高速 vsftpd 的名字代表"very secure FTP daemon", 安全是它的开发者 Chris Evans 考虑的首要问题之一.在这个 F

  • Ubuntu 用vsftpd 配置FTP服务器教程详解

    本文在Ubuntu Server 14.04 amd64系统测试. 安装ftp sudo apt-get install vsftpd 配置vsftpd.conf sudo nano /etc/vsftpd.conf #禁止匿名访问 anonymous_enable=NO #接受本地用户 local_enable=YES #允许上传 write_enable=YES #用户只能访问限制的目录 chroot_local_user=YES #设置固定目录,在结尾添加.如果不添加这一行,各用户对应自己

  • 阿里云基于CentOS用vsftpd搭建FTP服务器

    最近需要在一台阿里云的云服务器上搭建FTP服务器,在这篇博文中分享一下我们根据实际需求进行的一些配置. ftp软件用的是vsftpd. vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序.特点是小巧轻快,安全易用. vsftpd 的名字代表"very secure FTP daemon",安全是它的开发者 Chris Evans 考虑的首要问题之一.在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标. 准备工作 安装vsftpd yum install v

  • 搭建FTP服务器的简单实例

    FTP服务器的搭建非常简单 apt-get install vsftpd 开启.停止.重启vsftpd服务也很简单 service vsftpd start | stop | restart 账号 安装后会生产一个ftp组和ftp用户 修改用户密码 passwd ftp 配置 关键配置,修改vsftpd的配置文件vi /etc/vsftpd.conf #禁止匿名访问 anonymous_enable=NO #接受本地用户 local_enable=YES #可以上传 write_enable=Y

  • FTP服务器搭建之本地用户篇

    Vsftpd3.0--FTP服务器搭建之本地用户篇,具体内容如下 FTP服务在工作中是经用到的一种工具,可以实现上传下载等功能.那么今天我们来聊一聊FTP服务器使用本地用户登录的实现模式. 既然是本地用户,就少不了要创建本地用户,下面我们创建2个用户: 第一步:创建用户 第一次创建一个本地可登录的用户 这里2个用户的家目录的所有者都是有写权限的. 第二步:编辑vsftpd.conf配置文件 下面开始编辑/etc/vsftpd/vsftpd.conf 开启本地用户最简单的配置如下: 只需把家目录的

  • centos 搭建ftp服务器详解及简单介绍

    centos 搭建ftp服务器 1.安装vsftpd sudo yum install vsftpd 2.配置vsftpd.conf # Allow anonymous FTP? (Beware - allowed by default if you comment this out). anonymous_enable=NO # When SELinux is enforcing check for SE bool ftp_home_dir local_enable=YES write_ena

  • Linux中FTP服务器的搭建教程

    vmware12上安装的CentOs6.8,最终实现物理机上的windows10能正常访问CentOs上的FTP服务器. 一.查看是否安装有ftp相关的安装包 # rpm -qa | grep vsftpd //ftp的安装包就是vsftpd 查看到我的系统中没有安装相关的包,所以先把安装包装上. # yum -y install vsftpd //这里如果没有配置yum源,可以直接用rpm的方式安装也是一样的 查看一下是否安装成功 二.启动服务并设置开机自启动 # service vsftpd

  • Linux中搭建FTP服务器的方法

    Linux是以后操作系统的趋势所在,目前的大部分国产操作系统,甚至于安卓系统都是与Linux离不开关系.其中,FTP作为其中共享手段存在已久,我们今天就来看看怎么搭建简单的FTP服务器吧. FTP 是文件传输协议(File Transfer Protocol)的缩写.顾名思义,FTP用于计算机之间通过网络进行文件传输.你可以通过FTP在计算机账户间进行文件传输,也可以在账户和桌面计算机之间传输文件,或者访问在线软件归档.但是,需要注意的是多数的FTP站点的使用率非常高,可能需要多次重连才能连接上

  • 详解在Linux中搭建一个FTP服务器

    在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/ftp/ftp2. 两个小组互相不能访问各自的文件,需要限制用户不能离开自己的工作目录. [实现步骤] 1.检查安装vsftpd服务器 以root进入终端后(其他账户进入终端的可以用su root 输入密码后进入root 模式)之后,在终端命令窗口输入以下命令进行验证:# rpm –qa | grep

  • CentOS 7系统下安装ftp服务器的全过程

    在安装配置过程中走过很多弯路,现在就简单点总结.方便大家学习参考.安装步骤如下: 1.安装ftp,相信这步很简单 # yum -y install ftp vsftpd 查看安装情况 #rpm -qc vsftpd /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf 2.服务器配置 创建ftp根目录 /ftp/private(这里有

随机推荐