陈金莲
(黄冈职业技术学院 电子信息学院, 湖北 黄冈 438002)
Linux下FTP 服务器配置的几个疑难点分析
陈金莲
(黄冈职业技术学院 电子信息学院, 湖北 黄冈 438002)
ftp服务器是互联网中非常重要、应用广泛的一种服务器,在linux的纯纯本配置环境下有很多细节地方容易使学习者产生混乱。通过对配置过程中一些疑难点进行由现象到原因的分析,让学习者对linux环境下的ftp服务器配置有一个更清楚的认识,以便在具体应用中能做到有的放矢。
ftp服务器;匿名用户;权限;安全控制
Linux下的FTP服务器是一种常见的服务器,基本配置过程看似简单,但要想弄清整个配置过程,还是有相当多的问题要解决的。
Linux下的 FTP服务器软件比较多,比如vsftpd、WU-ftp等,其中以vsftpd最为常见。下面以vsftpd为例来解析这几个疑难点。
我们都知道,ftp服务器在默认情况下可以匿名登录,匿名的帐号和密码都是ftp,匿名登录的主目录是/var/ftp,匿名的读权限默认就有,在此情况下匿名帐号可登录系统,并完成资源的下载。但当手动开放/var/ftp目录的写权限,并允许匿名用户可上传文件(亦即对主目录可写),如图1和图2所示。
图1 开放主目录的写权限
图2 允许匿名用户上传文件
再次通过客户端登录系统,则出现如图 3所示提示信息,在开启匿名用户对服务器根目录的写权限的情况下,vsftpd拒绝运行,直接关闭客户端连接。
经过多方查证,原来linux下的ftp出于安全的考虑,禁止匿名帐号对服务器根目录的写权限,而对于非匿名帐号,则无此限制[1],如图4所示。
图3 禁止匿名帐号登录
图4 允许非匿名帐号登录
而解决这一问题的方法很很单,对于匿名用户而言,在根目录下建一个子目录,让匿名帐号对子目录有写权限即可完成匿名帐号的上传功能。其实,对于一般的ftp服务器而言,匿名帐号的上传权限一般不开放的,否则服务器的安全无法保证。
ftp服务器不仅可以匿名登录,还可以允许帐号认证登录,这个帐号数据库共用了/etc/passwd文件中的本地帐号。默认情况下,所有本地普通帐号,都可以用于ftp服务器的登录,而root帐号和系统帐号则不能,这是如何实现的呢?还有,如果只想让部分指定的本地用户能登录 ftp服务器(这也是正常的工程环境需求),这又如何来实现呢?下面的分析会给出一个清晰的答案。
ftp服务器软件包安装成功后,在/etc/vsftpd目录下除了有 vsftpd.conf的主配置文件外,还有ftpusers和user_list两个帐号配置文件,这两个文件中默认就有系统帐号和 root帐号,而且系统帐号和 root帐号默认是不能网络登录到 ftp服务器的。那么,这两个文件中的帐号是如何控制哪些用户能网络登录ftp服务器,哪些不能登录呢?新添加的用户是否加到这两个文件中或其中一个呢?[2]
/etc/vsftpd目录下的user_list文件中的帐号是登录白名单还是黑名单,与主配置文件vsftpd.conf中的userlist_enalbe和userlist_deny两个配置选项的值有关,而ftpusers则是独立起作用。它们之间存在以下关系。
首先,ftpusers文件中的帐号会一直是登录ftp服务器的黑名单,其中的帐号不受主配置文件的控制,所以,如果只是简单地让某个用户无法登录ftp服务器的话,只需要将其帐户名加入到该文件中,做为一个独立行即可[3]。而user_list文件中的帐号则有登录白名单或黑名单两种可能,是黑名单还是白名单与主配置文件中的两个配置项的值存在以下三种关系:
(1)如果Userlist_enalbe=yes ,Userlist_deny=no 则userlist文件中的帐号为登录白名单
(2)如果Userlist_enalbe=yes ,Userlist_deny=yes,则 user_list文件中的帐号为登录黑名单。在缺省的情况下,userlist_deny=yes。
(3)如果Userlist_enalbe=no ,Userlist_deny=no(或yes),则user_list文件不起控制作用,所有本地用户都能登录。
系统的缺省配置是 Userlist_enalbe=yes,而userlist_deny配置选项没有,这就是以上关系的第二种,即user_list文件是黑名单。
ftp服务器安装成功后,按照默认配置,在图形模式下,就能以匿名的方式访问服务器,并且我们知道访问的主目录是/var/ftp。如果是在命令行的方式下匿名访问服务器的话,需要输入形式上的用户名和密码,它们都是“ftp”,而这些信息在ftp服务器的初始配置文件中并无相关配置选项涉及。那么,服务器系统是通过什么来检查和控制匿名用户的访问呢?经过查阅vsftpd说明文件[4],原来在ftp软件包的安装过程中,安装程序自动在系统的帐号和组数据库/etc/passwd、/etc/group文件中分别创建了以下内容:
ftp:X:14:50:FTP User:/var/ftp:/sbin/nologin
ftp:x:50:
以上信息说明,帐号ftp登录系统的主目录是/var/ftp目录,并且该帐号不允许控制台登录。
当然,/var/ftp目录只是匿名帐号的默认登录目录,管理员可以在配置文件中通过配置项anon_root和local_root分别将匿名用户和本地用户的登录点导向其它的目录。
SELinux即Security-Enhanced linux,是linu x内核2.6及以后版本中提供的一个内核级别的强制访问控制系统,在这种安全控制机制下,进程只能访问那些在他的任务中所需要文件,开启SE Linux使得系统的安全级别由原来的C2级上升到了 B1级,极大地提高了系统的安全性[5]。所以,一般情况下,不建议关闭SELinux。但开启SELin ux,使进程对系统资源的访问有诸多限制,对于不熟悉SELinux机制的管理者而言,可能会在架设服务器的过程中造成一些令人迷惑不解的故障[6]。下面仅以一例说明之。
在开启SELinux的情况下,已经在配置文件中给了匿名帐号创建目录的权限,即anon_mkdir_wr ite_enable=YES,也在本地权限中对pub目录给了其它用户组写权限,如下列表:
drwxrwxrwx 4 root root 4096 04-12 18:39 pub
但匿名登录后在 pub目录下创建新目录时,出现如图5所示提示。
图5 无法创建目录
其它配置不做任何修改,直接关闭SELinux,再来创建目录,则可成功创建,如图6所示。
图6 成功创建目录
怎么在打开SELinux的情况下,允许匿名用户来写目录呢?通过查阅系统的日志文件可知,应该修改pub目录的安全上下文,并将策略allow_ft pd_anon_write设置为1才可。用命令chcon -R-t public_content_rw_t pub 修改pub目录的安全上下文;用命令setsebool –P allow_ftpd_a non_write=1修改bool值,开放匿名ftp进程对目录的写权限。这些设置完成之后,再去创建目录,则能成功创建[7]。
在ftp服务器的配置过程中,我们不仅要关注配置文件中的相关配置项,资源在系统中的本地权限的设置,在开启了SELinux功能的系统中,还要关注相应资源的 SELinux安全上下文类型及相应的bool值的设置,将三者有机地结合起来,才能避免在设置过程中出现一些莫名其妙的问题。
[1]Bovet.深入理解 Linux 内核[M].北京:中国电力出版社,2008.
[2]刘晓辉.网管天下[M].北京:电子工业出版社,2011.
[3]Matt Welsh &LarKaufman.Linux 权威指南[M].北京:中国电力出版社,2000.
[4]余柏山.Linux 系统管理与网络管理[M].北京:清华大学出版社,2010.
[5]赵炯.Linux 内核完全剖析[M].北京:机械工业出版社,2006.
[6]张恒杰.Red Hat Enterprise Linux 服务器配置与管理[M].北京:清华大学出版社,2013.
[7]丁明一.Linux 运维之道[M].北京:电子工业出版社,2016.
Analysis of Some Difficulties in FTP Server Configuration under Linux
Chen Jinlian
(Huanggang Vocational and Technical College, Huanggang 438002 Hubei)
The FTP server is one of the most important and widely used servers in the Internet. In the pure text configuration environment of linux, there are many details that can easily cause confusion to learners.Through the analysis of some difficult points in the configuration process from phenomenon to reason, the learners can have a clearer understanding of ftp server configuration in linux environment, so that they can be targeted in specific applications.
FTP server; Anonymous user; Permissions; Security control
TP311.53
A
1672-1047((2017)06-0113-03
10.3969/j.issn.1672-1047.2017.06.34
2017-11-18
陈金莲,女,湖北红安人,硕士,高级工程师。研究方向:网络工程、网络安全。
罗幼平]