linux初探

首页

应用服务器

Linux技巧

中文文档

Linux初级

服务器源代码

命令详解

Linux技术应用

Linux安全应用

Linux业界新闻

UniX技术文章

Linux编程与内核

Linux数据库

Linux服务器

Linux安装指导

Linux论坛


首页>>Linux安全应用>>

热门文章

·利用135端口漏洞入侵个人电脑
·网吧频繁掉线(ARP)与解决方
·新手学堂:防火墙在网络中的
·害怕受网络攻击 英国公民干脆
·知己知彼:IEXPLORE命令行参
·保护个人隐私 隐藏在图片背后
·顶尖网络高手写的alexa作弊完
·国庆期间有45万余台计算机感
·病毒门诊:清除猖狂的Sxs.ex
·电脑用户须知 忘记分级审查密

推荐文章

vsftpd - 非常安全的FTP Daemon


概述

文件传输协议(FTP)的目的是在互联网上进行平台无关的数据传输,它基于一个客户机/服务器架构。RFC 959[1] 规定 FTP 将通过两个信道(端口)传输,一个传输数据(TCP 端口 20),另一个传输控制信息(TCP 端口 21)。在控制信道之上,双方(客户机和服务器)交换用于发起数据传输的命令。
一个 FTP 连接包含4个步骤:
  • 用户鉴权
  • 建立控制信道
  • 建立数据信道
  • 关闭连接

FTP 的连接控制使用 TCP (Transmission Control Protocol, 传输控制协议),它保障了数据的可靠传输。因此,FTP 在数据传输中不需要关心分组丢失和数据错误检测。因为 TCP 保障了每个分组都按照顺序的、没有错误的、无重复的到达。

FTP 中根据发送方式的不同分为有三种不同的传输类型,流(stream)模式以 end-of-file (EOF) 标志传输的结束,另两种传输模式以 end-of-record (EOR) 来标志传输的结束

  • 流 (Stream)
  • 块 (Block)
  • 压缩 (Compressed)

另外还有两种不同的传输模式:

  • ASCII
  • Binary(二进制)

ASCII 模式用于文本文件的传输,而二进制模式用于程序和类似的数据的传输。用户不需要选择特定的传输模式,现在所有的客户端都可以识别传输的文件的类型自动切换模式。

鉴权用的用户名和密码都是使用明文传输的,这是一个非常严重的安全隐患。这也是一些有关FTP的安全的考虑的出发点。1997 年10月,RFC2228[2] 终于发布了,它定义了 FTP 的安全性补充规范。

 

vsftpd

vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。比如:
  • 非常高的安全性需求
  • 带宽限制
  • 良好的可伸缩性
  • 创建虚拟用户的可能性
  • IPnG(译注:IPv6)支持
  • 中等偏上的性能
  • 分配虚拟 IP 的可能性
  • 高速

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

一个例子就是 vsftpd 是在 chroot 模式下工作的,chroot 模式就是为程序(这里就是 vsftpd 了)单独指定一个新的目录,它也就不能访问那个目录之外的程序和文件了 --- 所以这也称为“被锁上的”。一个可能被潜在的攻击者破坏的 FTP 服务器将被从系统的其他部分独立开来,从而避免了更大的损失。有关 chroot 的更多信息可以在下边的文章[3]中得到。如果您对于 vsftpd 的其他安全机制有兴趣,推荐阅读文章 [4]。

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

 

安装

vsftpd 守护程序的安装相当简单,在每个主要发行版中你都可以找到 vsftpd 的 RPM 包,很多情况下,它已经被装上了。如果没有的话,源代码可以在 [6] 找到,然后手工安装。

得到源代码并解开 tarball 后,进入新建的目录目录并运行 make。下面是必要的命令的示例:

neo5k@phobos> tar xzvf vsftpd-x.x.x.tar.gz
neo5k@phobos> cd vsftpd-x.x.x
neo5k@phobos> make

这之前我们应该看看用户 "nobody" 和目录 "/usr/share/empty" 是否存在,如果需要的话我们就新建这个用户和这个目录。如果我们允许用户匿名访问,用户 "ftp" 和目录"/var/ftp" 也需要创建。这可以用如下两个命令完成:

neo5k@phobos> mkdir /var/ftp
neo5k@phobos> useradd -d /var/ftp ftp

由于安全原因,目录 "/var/ftp" 不应该属于用户 "ftp",也不应该有写权限。如果用户已经存在了的话,用下面的两个命令,我们可以改变目录的所有者并去掉其他用户的写权限:

neo5k@phobos> chown root.root /var/ftp
neo5k@phobos> chmod og-w /var/ftp

达到了所有的先决条件后,我们可以安装 vsftp-daemon 了:

neo5k@phobos> make install

程序和 manpage 应该已经被拷贝到系统中的正确的位置了。如果出现了异常情况,麻烦一点的手工拷贝也可以完成这项工作。

neo5k@phobos> cp vsftpd /usr/sbin/vsftpd
neo5k@phobos> cp vsftpd.conf.5 /usr/share/man/man5
neo5k@phobos> cp vsftpd.8 /usr/share/man/man8

现在我们的配置文件的例子还没有拷贝呢 --- 它会让我们的介绍更简单一些 --- 我们需要手工拷贝:

neo5k@phobos> cp vsftpd.conf /etc

 

配置

配置文件可以在"/etc/vsftpd.conf"找到。和大多数配置文件一样,vsftpd 的配置文件中以 # 开始注释。

# Comment line

一个配置的例子是这样的:

# Anonymus FTP-access permitted? YES/NO
anonymous_enable=NO
 
# Permit anonymus upload? YES/NO
anon_upload_enable=NO
 
# Permission for anonymus users to make new directories? YES/NO
anon_mkdir_write_enable=NO
 
# Permission for anonymus users to do other write operations - like renaming or deleting? YES/NO
anon_other_write_enable=NO
 
# Log on by local users permitted? YES/NO
local_enable=YES
 
# Shall local users be locked into their home directory? YES/NO
chroot_local_user=YES
 
# Highest permitted data transfer rate in bytes per second for local logged on users. Default = 0 (unlimited)
local_max_rate=7200
 
# General write permission? YES/NO
write_enable=YES
 
# Enable messages when changing directories? YES/NO
dirmessage_enable=YES
 
# Welcome banner at users logon.
ftpd_banner="Welcome to neo5k's FTP service."
 
# Activate logging? YES/NO
xferlog_enable=YES
 
# Logging of all FTP activities? YES/NO
# Careful! This can generate large quantities of data.
log_ftp_protocol=NO
 
# Confirm connections are established on port 20 (ftp data) only.Linux联盟收集整理

相关文章:

·Ubuntu网络设置:CVS服务安装
·Linux上的后门技术和防范
·rsync服务器的快速搭建和使用
·LINUX用户和用户组配置文件详解
·ProFTPD 详解
·proftpd学习笔记
·vsftpd编译安装
·VSFTPD配置简洁中文手册
·vsftpd 配置手册

Copyright@2005 www.linuxGoo.com All Right Reserved