文件传输协议(FTP)是用来在网络上传输文件的早期 TCP 协议。因为所有服务器的事务,包括用户验证,都是不经加密的,所以它也被认为是不安全的协议,应该被谨慎配置。
红帽企业 Linux 提供三种 FTP 服务器。
gssftpd — 使用了 Kerberos 的,基于 xinetd 的 FTP 守护进程。它不在网络中传递验证信息。
红帽内容加速器(Red Hat Content Accelerator,tux)— 带有 FTP 能力的内核空间万维网服务器。
vsftpd — 一个独立的面向安全的 FTP 服务。
以下保安原则适用于设置 vsftpd FTP 服务。
在提供用户名和口令前,所有的用户都会看到一个问候横幅。按照默认设置,该横幅含有版本信息,这有利于怪客找出系统的弱点。
要改变 vsftpd 的问候横幅,把以下指令添加到 /etc/vsftpd/vsftpd.conf 中:
ftpd_banner=<insert_greeting_here> |
把以上指令中的 <insert_greeting_here> 替换成问候消息。
对于多行横幅,你最好是使用一个横幅文件。要简化对多个横幅的管理,把所有横幅都放在一个叫做 /etc/banners/ 的新目录中。在这个例子中,FTP 连接的横幅文件是 /etc/banners/ftp.msg。以下是这类文件的例子:
#################################################### # Hello, all activity on ftp.example.com is logged.# #################################################### |
注记 | |
---|---|
你不必让文件的每一行都以 220 开头,如第 5.1.1.1 节中所指定。 |
要为 vsftpd 引用这个问候横幅文件,把以下指令添加到 /etc/vsftpd/vsftpd.conf 中:
banner_file=/etc/banners/ftp.msg |
你还可能使用 TCP 会绕程序给进入连接发送附加横幅,如第 5.1.1.1 节中所描述。
/var/ftp/ 目录的存在会激活匿名帐号。
创建这个目录的最简单方法是安装 vsftpd 软件包。该软件包会为匿名用户设置目录树并把目录的权限为匿名用户配置为只读。
按照默认设置,匿名用户不能对任何目录进行写操作。
小心 | |
---|---|
如果允许用户对 FTP 服务器进行匿名访问,你需要留意保密信息的存储位置。 |
要允许匿名用户上传文件,推荐你在 /var/ftp/pub/ 内创建只写目录。
要做到它,键入:
mkdir /var/ftp/pub/upload |
下一步,改变权限使匿名用户看不到目录中的内容,键入:
chmod 730 /var/ftp/pub/upload |
长格式的目录列表看起来应该像:
drwx-wx--- 2 root ftp 4096 Feb 13 20:05 upload |
警告 | |
---|---|
允许匿名用户在目录中读写的管理员经常发现他们的服务器成为被窃软件的仓库。 |
此外,在 vsftpd 下添加以下一行/etc/vsftpd /vsftpd.conf 到文件中:
anon_upload_enable=YES |
因为 FTP 在不安全的网络中传递明文用户名和口令来验证,拒绝系统用户从他们的用户帐号来进入服务器是一个好办法。
要在 vsftpd 中禁用用户帐号,在 /etc/vsftpd/vsftpd.conf 中添加以下指令:
local_enable=NO |
禁用某组特定帐号(如根用户帐号,以及有 sudo 特权的用户帐号)的最简单方法是使用 PAM 列表文件,如第 4.4.2.4 节中所描述。vsftpd 的 PAM 配置文件是 /etc/pam.d/vsftpd。
你还可能在每个服务中直接禁用用户帐号。
要在 vsftpd 中禁用指定用户帐号,把用户名添加到 /etc/vsftpd.ftpusers 中。
使用 TCP 会绕程序来控制到每种 FTP 守护进程的访问,如第 5.1.1 节中所概述。