系统管理指南:网络服务

控制 FTP 服务器访问

可以使用 /etc/ftpd 目录中的以下配置文件控制对 FTP 服务器的访问。

Procedure如何定义 FTP 服务器类

要登录到 FTP 服务器,用户在使用 ftpaccess 文件时必须是某类的成员。要将 class 指令添加到 ftpaccess 文件中,应指定允许通过特定主机进行访问的用户的 class 名称和 typelist

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. ftpaccess 文件中为匿名用户、临时用户和实际用户添加项。


    class class typelist addrglob[addrglob...]
    class

    用于定义 FTP 用户的关键字。

    class

    class 关键字定义的名称。每次登录会与所定义类的列表进行比较。已登录的用户将视为匹配的第一个类的成员。

    typelist

    与三类用户(anonymousguestreal)匹配的、用逗号分隔的关键字列表:

    addrglob

    域名簇或数字地址簇。addrglob 也可以是包含其他地址簇、以斜杠 (`/`) 开头的文件名:address:netmaskaddress/cidr

    以下是一些地址簇示例:

    • 数字 IPv4 地址: 10.1.2.3

    • 域名簇 *.provider.com

    • 数字 IPv4 地址簇 10.1.2.*

    • 数字 IPv4 地址:网络掩码 10.1.2.0:255.255.255.0

    • 数字 IPv4 地址/CIDR 10.1.2.0/24

    • 数字 IPv6 地址: 2000::56:789:21ff:fe8f:ba98

    • 数字 IPv6 地址/CIDR:2000::56:789:21ff:fe8f:ba98/120


示例 28–1 定义 FTP 服务器类


class  local  real,guest,anonymous *.provider.com

class  remote real,guest,anonymous *

上一示例将 local 类定义为从 *.provider.com 登录的 realguestanonymous 类型的任何用户。最后一行将 remote 定义为从除 *.provider.com 之外的任何位置登录的任何用户。


Procedure如何设置用户登录限制

您可以使用 ftpaccess 文件中设置的指令限制同时登录的某类用户的数量。每个登录限制包含类名、UUCP 样式的周日期列表和超出限制时将显示的消息文件。

要设置用户登录限制,请使用以下过程中的步骤。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将以下项添加到 ftpaccess 文件中:


    limit class n times [message_file]
    limit

    用于限制同时登录的关键字,即对属于某个已定义类的指定数目的用户在特定连接时段的同时登录进行限制。

    class

    class 关键字定义的名称。每次登录会与所定义类的列表进行比较。已登录的用户将视为匹配的第一个类的成员。

    n

    用户数。

    times

    可以连接相应类的周日期和时间。用 Any 表示任何日期。

    message_file

    如果用户被拒绝访问将显示的消息文件。


示例 28–2 设置用户登录限制


limit   anon     50  Wk0800-1800		/etc/ftpd/ftpmsg.deny

limit   anon    100  Any				/etc/ftpd/ftpmsg.deny

limit   guest   100  Any				/etc/ftpd/ftpmsg.deny

上面示例中的第一行显示,在每周的工作时间内,允许同时登录的 anon 类用户不能超过 50 个。第二行将工作时间之外可同时登录的 anon 用户限制为 100 个。最后一行显示,在任何时间,允许同时登录的 guest 用户不能超过 100 个。有关如何指定日期和时间参数的信息,请参见 ftpaccess(4)

该示例还说明,达到指定的登录限制时,将返回 /etc/ftpd/ftpmsg.deny 文件的内容(假设 ftpmsg.deny 存在)。有关使用 /usr/sbin/ftpcount 命令查看在特定时间登录的每类用户的数量和登录限制的信息,请参见 ftpcount(1)

除非达到了指定的限制,否则将允许用户登录到 FTP 服务器。匿名用户以用户 ftp 的身份登录。 实际用户以真实身份登录;临时用户以实际用户身份登录,但其访问权限受 chroot 环境限制。

有关使用 /usr/sbin/ftpwho 命令检查登录到 FTP 服务器的用户的身份的信息,请参见 ftpwho(1)


Procedure如何控制无效登录尝试的次数

如果因为出现问题(如需要的信息拼写错误)导致登录到 FTP 服务器失败,则通常会重复登录。在将消息记录到 syslog 文件之前,允许用户连续尝试登录特定的次数。然后,将断开用户的连接。通过执行以下过程中的步骤,可对登录尝试失败的次数设置限制。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将以下项添加到 ftpaccess 文件中。


    loginfails n
    
    loginfails

    用于指定在终止 FTP 连接之前,允许登录失败的次数的关键字。

    n

    登录可以失败的次数


示例 28–3 控制无效登录尝试的次数


loginfails 10

上面的示例说明,在尝试登录失败 10 次后,将会断开用户与 FTP 服务器的连接。


Procedure如何禁止特定用户访问 FTP 服务器

/etc/ftpd/ftpusers 文件列出了不允许登录到 FTP 服务器的用户名。尝试登录时,FTP 服务器将会检查 /etc/ftpd/ftpusers 文件,以确定是否拒绝该用户访问。如果在该文件中未找到该用户名,服务器将会在 /etc/ftpusers 文件中搜索。

如果 /etc/ftpusers 中存在匹配的用户名,则会写入一条 syslogd 消息,声明在过时的文件中找到匹配。该消息还建议使用 /etc/ftpd/ftpusers,而不要使用 /etc/ftpusers


注 –

此发行版不再支持 /etc/ftpusers 文件。如果安装 FTP 服务器时存在 /etc/ftpusers 文件,则会将该文件移到 /etc/ftpd/ftpusers 中。


有关其他信息,请参见 syslogd(1M)in.ftpd(1M)ftpusers(4)

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将不允许登录到 FTP 服务器的用户的项添加到 /etc/ftpd/ftpusers 文件中。


示例 28–4 如何禁止 FTP 服务器访问


root

daemon

bin

sys

adm

lp

uccp

nuucp

listen

nobody

noaccess

nobody4

上面的示例列出了 ftpusers 文件中的典型项。用户名与 /etc/passwd 中的项匹配。该列表通常包括 root 及其他管理和系统应用程序标识。

作为安全措施,根项包括在 ftpusers 文件中。缺省安全策略是禁止 root 的远程登录。对于 /etc/default/loginfile 中设置为 CONSOLE 项的缺省值,也遵守该策略。请参见 login(1)


Procedure如何限制对缺省 FTP 服务器的访问

除了上面提到的控制方法,还可以向 ftpaccess 文件中添加显式声明来限制对 FTP 服务器的访问。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将以下项添加到 ftpaccess 文件中。

    1. 缺省情况下,允许所有用户访问缺省(非虚拟)FTP 服务器。要拒绝特定用户(anonymous 用户之外的用户)的访问,请添加以下项:


      defaultserver deny username [username...]
      defaultserver

      用于标识拒绝或允许对其进行访问的非虚拟服务器的关键字

      username

      拥有对 defaultserver 的受限制访问权限的用户的登录名

    2. 要允许 deny 行中未列出的用户的访问,请添加以下行:


      defaultserver allow username [username...]
    3. 要阻止匿名用户的访问,请添加以下项:


      defaultserver private

示例 28–5 限制对缺省 FTP 服务器的访问


defaultserver deny *

defaultserver allow username

上面的示例说明,FTP 服务器拒绝除 anon 用户和 allow 行中列出的那些用户之外的所有用户的访问。

也可以使用 ftphosts 文件拒绝来自各种主机对特定登录帐户的访问。有关其他信息,请参见 ftphosts(4)