Proftpd相关问题
原创:网事如烟
Proftpd是我目前用的ftp服务器软件,支持匿名登陆、设置目录权限、带宽限制等功能。在使用的过程中也遇到了一些问题,随着问题的解决自己的知识也在丰富,或许这就是自由软件的一个特点,它提供了丰富的功能但并不假定用户不具有相应的专业知识,实际上为了用好它用户必须具备相应的专业知识。
登陆速度慢
在使用proftpd作为ftp服务器的过程中发现一个奇怪的现象,用户登陆这个 ftp特别的慢,而一旦登陆完成则速度很快.而且,在本机登陆很快,但在实验室其他的机器上则很慢.
查阅了一下proftpd的官方网站的FAQ发现原来是proftpd 在默认配置下会对登陆的用户进行DNS反查和ident查找, 由于网络中大部分主机都是没有DNS名字的,还有许多只有局域网地址,所以这种查询是失败的.失败的查询会花费很多时间,所以登陆也就变得十分缓慢.
解决方案很简单,只要取消DNS反查和ident查找既可. 在proftpd的配置文件中加入下面几行:
UseReverseDNS off
IdentLookups off
让系统的某些目录可被匿名访问
默认情况下匿名的ftp访问被限制在~ftp目录之下,如果你想让你的系统的某些目录,如/usr/portage/distfiles目录,能让匿名登陆的用户访问,那怎么做呢?
你可能想使用符号连接来解决这个问题,例如在~ftp目录下建立一个指向 /usr/portage/distfiles目录的软连接distfiles。但出于安全的考虑 proftpd 不支持符号连接,所以这种方法就不可行。那是否就没折了,至少有两种方法来解决这个问题,这两种方法都是通过将文件系统的某个目录重复mount到一个新的位置来解决。
如果你的linux系统的内核版本大于2.4.0,那么你就可以直接把文件系统的部分mount到一个新的位置,命令如下:
mount --bind olddir newdir
在执行了上面的命令之后olddir和newdir就具有了完全相同的内容了。
如果你的系统不支持上面的将文件系统的部分内容重新mount到一个新位置,那么你可以使用NFS(Network File System)来提供相同的功能。基本思想就是把要那个要匿名访问的目录用NFS导出,然后把它mount到匿名ftp目录下的一个目录上。
/etc/ftpusers
这个文件列出了不允许ftp访问的用户名,例如root、nobody等。这主要是出于安全考虑,当然如果你故意不想让某个用户进行ftp访问,你就可以把那个用户的名字列在这个文件中。
注意:这个文件基本上对所有ftp服务器都具有相同的意义。
使用TLS/SSL
关于FTP over TLS/SSL的功能既证书的产生参见vsftpd的SSL配置部分,下面是我的系统中的proftpd中的与SSL相关的配置:
# I use SSL/TLS to protect my authentication information from sniffing # <IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd-tls.log #lftp can't work properly without this TLSOptions NoCertRequest #Use TLS to protect authentication information #TLSRequired auth #Server's certificate file TLSRSACertificateFile /etc/proftpd/server.crt TLSRSACertificateKeyFile /etc/proftpd/server.key #Don't enforce TLS Renegotiate #TLSRenegotiate required off </IfModule>
Gentoo中的proftpd的一些问题
我在使用proftpd中遇到了一些问题,并解决了它们。这些问题可能只出现于特定的环境和版本中,不是所有的Linux发行版和proftpd的软件版本都有这些问题。
ACL(Access Control List)
ACL自Proftpd的1.3.0rc1版中引入,目前尚处于测试阶段。如果在Gentoo编译 proftpd时加入了USE=acl,而你的/home目录所在的分区在mount时又没有启用acl支持,在anonymous访问时就可能出现问题。
问题--在编译安装了proftpd后,使用lftp进行anonymous登陆时系统显示如下信息:
Unable to set anonymous privilege
检查系统日志tail -f /var/log/message发现下面信息:
Directory ~ftp is unaccessible
出现上面的问题的原因是在用户匿名登陆时不知出于什么原因proftpd要使用 ACL检查目录~ftp的访问权限,而且如果文件系统不支持ACL时就认为此目录无法访问。所以解决的方法有两个,一是在mount文件系统是指定ACL支持,二是编译是指定USE="-acl"。