ProFTPd:根据用户或组启用/禁用TLS

ProFTPd:启用/禁用基于用户或组的TLS

FTP是非常不安全的协议,因为所有密码和所有数据都以明文形式传输。 通过使用TLS,可以对整个通信进行加密,从而使FTP更加安全。 虽然这是一件好事,但并不是所有的FTP客户端都支持TLS。 本文介绍如何基于FTP用户或组在ProFTPd中启用或禁用TLS。

我不会保证这将为您工作!

1初步说明

我假设您已经设置了TLS,例如本教程中所述: 在Debian Squeeze上设置ProFTPd + TLS

当然,您可以在ProFTPd配置中使用TLSRequired ,因为这允许TLS和非TLS登录,但是如果要使FTP设置尽可能安全,则应强制使用TLS,并仅对使用不支持TLS的FTP客户端的用户或组(如果使用另一个FTP客户端不是这些用户的选项)。

2基于用户/组的TLS配置

假设您的ProFTPd配置中有以下TLS配置,强制每个人使用TLS:

[...]
<IfModule mod_tls.c>
          TLSEngine                  on
          TLSLog                     /var/log/proftpd/tls.log
          TLSProtocol                SSLv23
          TLSOptions                 NoCertRequest
          TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
          TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
          TLSVerifyClient            off
          TLSRequired                on
</IfModule>
[...]

我们现在可以使用IfUserIfGroup部分进行异常,但只有当我们将TLSOptions AllowPerUser行添加到TLS配置中时,它们才会生效,如下所示:

[...]
<IfModule mod_tls.c>
          TLSEngine                  on
          TLSOptions                 AllowPerUser
          TLSLog                     /var/log/proftpd/tls.log
          TLSProtocol                SSLv23
          TLSOptions                 NoCertRequest
          TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
          TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
          TLSVerifyClient            off
          TLSRequired                on
</IfModule>
[...]

(确保您在TLSEngine之后添加行,因为顺序似乎算在 - 在我的第一次尝试中,我将它添加到TLSRequired行之前,似乎没有任何效果。)

如果我们要允许FTP用户testuser使用普通FTP而不是FTP,我们可以配置如下:

[...]
<IfModule mod_tls.c>
          TLSEngine                  on
          TLSOptions                 AllowPerUser
          TLSLog                     /var/log/proftpd/tls.log
          TLSProtocol                SSLv23
          TLSOptions                 NoCertRequest
          TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
          TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
          TLSVerifyClient            off
          TLSRequired                on
</IfModule>

<IfUser testuser>
          TLSRequired off
</IfUser>
[...]

对于组测试组,配置将如下所示:

[...]
<IfModule mod_tls.c>
          TLSEngine                  on
          TLSOptions                 AllowPerUser
          TLSLog                     /var/log/proftpd/tls.log
          TLSProtocol                SSLv23
          TLSOptions                 NoCertRequest
          TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
          TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
          TLSVerifyClient            off
          TLSRequired                on
</IfModule>

<IfGroup testgroup>
          TLSRequired off
</IfGroup>
[...]

也可以否定用户/组,例如:

[...]
<IfModule mod_tls.c>
          TLSEngine                  on
          TLSOptions                 AllowPerUser
          TLSLog                     /var/log/proftpd/tls.log
          TLSProtocol                SSLv23
          TLSOptions                 NoCertRequest
          TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
          TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
          TLSVerifyClient            off
          TLSRequired                on
</IfModule>

<IfUser testuser>
          TLSRequired off
</IfUser>

<IfUser !testuser>
          TLSRequired on
</IfUser>
[...]

这对除testuser之外的所有用户强制执行TLS(这仅仅是为了演示的目的,在本示例中,TLS在<IfModule mod_tls.c>部分中全局启用)。 同样对于组:

[...]
<IfModule mod_tls.c>
          TLSEngine                  on
          TLSOptions                 AllowPerUser
          TLSLog                     /var/log/proftpd/tls.log
          TLSProtocol                SSLv23
          TLSOptions                 NoCertRequest
          TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
          TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
          TLSVerifyClient            off
          TLSRequired                on
</IfModule>

<IfGroup testgroup>
          TLSRequired off
</IfGroup>

<IfGroup !testgroup>
          TLSRequired on
</IfGroup>
[...]

这就是这一切。 您可以在ProFTPd文档中找到有关IfUser / IfGroup的更多详细信息: http : //www.proftpd.org/docs/contrib/mod_ifsession.html

一如往常,修改配置后,别忘了重新启动ProFTPd!

3链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏