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> [...] |
我们现在可以使用IfUser
和IfGroup
部分进行异常,但只有当我们将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链接
- ProFTPd: http : //www.proftpd.org/
- mod_ifsession: http : //www.proftpd.org/docs/contrib/mod_ifsession.html