其实无所谓安全加固,因为proftp默认就是限制用户FTP登录的,这里有点凌乱得研究和实验了proftpd如何进行限制的,以及可能的放开限制。懂了这些才能更好的进行防护配置。
RootLogin指令其实主要作用就是启用ROOT访问。通常,proftpd在任何情况下都不允许root登录,因为默认RootLogin off。如果客户端试图以root身份使用正确的密码登录,则会记录一条特殊的安全消息:
SECURITY VIOLATION: Root login attempted
当配置RootLogin on时,root用户可以像任何其他用户一样进行身份验证(假设没有其他访问控制措施拒绝访问);但是,root登录安全消息仍然被记录:
ROOT FTP login successful.
上面已经说了,在没有其他访问控制措施拒绝访问的情况下,启用RootLogin,则会开启root登录。但是,是有其他访问措施的,开启后访问会提示密码错误。显然是被PAM认证模块给毙了。
USER root (Login failed): Incorrect password
当我们在/etc/ftpusers中注释掉root,再次登录则会成功。
#root
USER root: Login successful.
主要是因为:当客户端试图进行身份验证时,传统FTP服务器通常会检查一个特殊的授权文件(通常是/etc/ftpusers)。如果在该文件中找到用户名,则拒绝FTP访问。一般ftp软件都会遵从在/etc/ftpusers中的用户不允许登录,最初/etc/ftpusers是由wu-ftp上使用,为了行为的兼容性,Proftpd在默认情况下类似地支持任何/etc/ftpusers文件,以减轻站点从wu-ftpd迁移到Proftpd的难度。官方强调可以通过UseFtpUsers off来关闭上述逻辑。但是,通过实验,貌似关不掉。/etc/ftpusers中的用户始终会被PAM毙掉。
查看proftpd.conf中配有AuthPAMConfig ,指定了PAM名称:
# Use pam to authenticate (default) and be authoritative
AuthPAMConfig proftpd
AuthOrder mod_auth_pam.c* mod_auth_unix.c
查看/etc/pam.d/proftpd:
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
如果注释掉AuthPAMConfig,则会认证失败,即便不在/etc/ftpusers中的用户也无法正常登录:
USER user1 (Login failed): Incorrect password
上面我们,看到AuthPAMConfig紧跟着一个AuthOrder,这个指令配置了认证顺序,如果注释掉,将导致查询不到用户,而认证失败:
pam_listfile(proftpd:auth): Refused user root for service proftpd
USER root (Login failed): No such user found
综上,通过上面的了解,如果要限制用户访问proftpd,那么,只需要确保:
1、/etc/ftpusers要存在
2、auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed要存在且正确:sense=deny /etc/ftpusers为黑名单,sense=allow /etc/ftpusers为白名单
3、不能显式配置UseFtpUsers off
4、不能显式配置RootLogin on
参考链接:ProFTPD module mod_auth