FTP 服务器(二)之vsftpd 服务器基础设定

参考博客:


终于要来聊一聊这个简单的 vsftpd 啰!vsftpd 的全名是『Very Secure FTP Daemon 』的意思, 换句话说,vsftpd 最初发展的理念就是在建构一个以安全为重的 FTP 服务器呢!我们先来聊一聊为什么 vsftpd 号称『非常安全』呢?然后再来谈设定吧!


一. 为何使用 vsftpd

1.1 vsftpd 服务器介绍

为了建构一个安全为主的 FTP 服务器, vsftpd 针对操作系统的『程序的权限 (privilege)』概念来设计, 如果你读过基础篇的十七章程序与资源管理的话, 应该会晓得系统上面所执行的程序都会引发一个程序,我们称他为 PID (Process ID), 这个 PID 在系统上面能进行的任务与他拥有的权限有关。也就是说, PID 拥有的权限等级越高, 他能够进行的任务就越多。举例来说,使用 root 身份所触发的 PID 通常拥有可以进行任何工作的权限等级。

不过,万一触发这个 PID 的程序 (program) 有漏洞而导致被网络怪客 (cracker) 所攻击而取得此 PID 使用权时, 那么网络怪客将会取得这个 PID 拥有的权限吶!所以,近来发展的软件都会尽量的将服务取得的 PID 权限降低,使得该服务即使不小心被入侵了,入侵者也无法得到有效的系统管理权限,这样会让我们的系统较为安全的啦。 vsftpd 就是基于这种想法而设计的。

除了 PID 方面的权限之外, vsftpd 也支持 chroot 这个函式的功能,chroot 顾名思义就是『 change root directory 』的意思,那个 root 指的是『根目录』而非系统管理员。 他可以将某个特定的目录变成根目录,所以与该目录没有关系的其他目录就不会被误用了。

举例来说,如果你以匿名身份登入我们的 ftp 服务的话,通常你会被限定在 /var/ftp 目录下工作, 而你看到的根目录其实就只是 /var/ftp ,至于系统其他如 /etc, /home, /usr… 等其他目录你就看不到了! 这样一来即使这个 ftp 服务被攻破了,没有关系,入侵者还是仅能在 /var/ftp 里面跑来跑去而已,而无法使用 Linux 的完整功能。自然我们的系统也就会比较安全啦!


1.2 vsftpd 特点

vsftpd 是基于上面的说明来设计的一个较为安全的 FTP 服务器软件,他具有底下的特点喔:

  • vsftpd 这个服务的启动者身份为一般用户,所以对于 Linux 系统的权限较低,对于 Linux 系统的危害就相对的减低了。此外, vsftpd 亦利用 chroot() 这个函式进行改换根目录的动作,使得系统工具不会被 vsftpd 这支服务所误用;

  • 任何需要具有较高执行权限的 vsftpd 指令均以一支特殊的上层程序所控制, 该上层程序享有的较高执行权限功能已经被限制的相当的低,并以不影响 Linux 本身的系统为准;

  • 绝大部分 ftp 会使用到的额外指令功能 (dir, ls, cd …) 都已经被整合到 vsftpd 主程序当中了,因此理论上 vsftpd 不需要使用到额外的系统提供的指令,所以在 chroot 的情况下,vsftpd 不但可以顺利运作,且不需要额外功能对于系统来说也比较安全。

  • 所有来自客户端且想要使用这支上层程序所提供的较高执行权限之 vsftpd 指令的需求, 均被视为『不可信任的要求』来处理,必需要经过相当程度的身份确认后,方可利用该上层程序的功能。 例如 chown(), Login 的要求等等动作;

  • 此外,上面提到的上层程序中,依然使用 chroot() 的功能来限制用户的执行权限。

由于具有这样的特点,所以 vsftpd 会变的比较安全一些咯!底下就开始来谈如何设定吧!


二. 所需要的软件以及软件结构

vsftpd 所需要的软件只有一个,那就是 vsftpd 啊!^_^!如果你的 CentOS 没有安装,请利用 yum install vsftpd 来安装他吧!软件很小,下载连同安装不需要几秒钟就搞定了!而事实上整个软件提供的配置文件也少的令人高兴!简单易用就是 vsftpd 的特色啊!这些设定数据比较重要的有:

  • /etc/vsftpd/vsftpd.conf
    严格来说,整个 vsftpd 的配置文件就只有这个档案!这个档案的设定是以 bash 的变量设定相同的方式来处理的, 也就是『参数=设定值』来设定的,注意, 等号两边不能有空白喔!至于详细的 vsftpd.conf 可以使用 『 man 5 vsftpd.conf 』来详查。

  • /etc/pam.d/vsftpd
    这个是 vsftpd 使用 PAM 模块时的相关配置文件。主要用来作为身份认证之用,还有一些用户身份的抵挡功能, 也是通过这个档案来达成的。你可以察看一下该档案:

cat /etc/pam.d/vsftpd 

这里写图片描述

上面那个 file 后面接的档案是『限制使用者无法使用 vsftpd 』之意, 也就是说,其实你的限制档案不见得要使用系统默认值,也可以在这个档案里面进行修改啦! ^_^

  • /etc/vsftpd/ftpusers
    与上一个档案有关系,也就是 PAM 模块 (/etc/pam.d/vsftpd) 所指定的那个无法登入的用户配置文件啊! 这个档案的设定很简单,你只要将『不想让他登入 FTP 的账号』写入这个档案即可。一行一个账号,看起来像这样:
cat /etc/vsftpd/ftpusers 
# Users that are not allowed to login via ftp 
root 
bin 
daemon

瞧见没有?绝大部分的系统账号都在这个档案内喔,也就是说,系统账号默认是没有办法使用 vsftpd 的啦! 如果你还想要让某些使用者无法登入,写在这里是最快的!

  • /etc/vsftpd/user_list
    这个档案是否能够生效与 vsftpd.conf 内的两个参数有关,分别是『 userlist_enable, userlist_deny 』。 如果说 /etc/vsftpd/ftpusers 是 PAM 模块的抵挡设定项目,那么这个 /etc/vsftpd/user_list 则是 vsftpd 自定义的抵挡项目。事实上这个档案与 /etc/vsftpd/ftpusers 几乎一模一样, 在预设的情况下,你可以将不希望可登入 vsftpd 的账号写入这里。不过这个档案的功能会依据 vsftpd.conf 配置文件内的 userlist_deny={YES/NO} 而不同,这得要特别留意喔!

  • /etc/vsftpd/chroot_list
    这个档案预设是不存在的,所以你必须要手动自行建立。这个档案的主要功能是可以将某些账号的使用者 chroot 在他们的家目录下!但这个档案要生效与 vsftpd.conf 内的『 chroot_list_enable, chroot_list_file 』两个参数有关。 如果你想要将某些实体用户限制在他们的家目录下而不许到其他目录去,可以启动这个设定项目喔!

  • /usr/sbin/vsftpd
    这就是 vsftpd 的主要执行档咯!不要怀疑, vsftpd 只有这一个执行档而已啊!

  • /var/ftp/
    这个是 vsftpd 的预设匿名者登入的根目录喔!其实与 ftp 这个账号的家目录有关啦!

大致上就只有这几个档案需要注意而已,而且每个档案的设定又都很简单!真是不错啊!


三. vsftpd.conf 设定值说明

事实上,/etc/vsftpd/vsftpd.conf 本身就是一个挺详细的配置文件,且使用『 man 5 vsftpd.conf 』则可以得到完整的参数说明。 不过我们这里依旧先将 vsftpd.conf 内的常用参数给他写出来,希望对你有帮助:

3.1 与服务器环境较相关的设定值

  • connect_from_port_20=YES (NO)
    记得在前一小节提到的主动式联机使用的 FTP 服务器的 port 吗?这就是 ftp-data 的埠号;

  • listen_port=21
    vsftpd 使用的命令通道 port,如果你想要使用非正规的埠号,在这个设定项目修改吧! 不过你必须要知道,这个设定值仅适合以 stand alone 的方式来启动喔!(对于 super daemon 无效)

  • dirmessage_enable=YES (NO)
    当用户进入某个目录时,会显示该目录需要注意的内容,显示的档案默认是 .message ,你可以使用底下的设定项目来修订!

  • message_file=.message
    当 dirmessage_enable=YES 时,可以设定这个项目来让 vsftpd 寻找该档案来显示讯息!

  • listen=YES (NO)
    若设定为 YES 表示 vsftpd 是以 standalone 的方式来启动的!预设是 NO 呦!所以我们的 CentOS 将它改为 YES 哩!这样才能使用 stand alone 的方式来唤醒。

  • pasv_enable=YES (NO)
    支持数据流的被动式联机模式(passive mode),一定要设定为 YES 的啦!

  • use_localtime=YES (NO)
    是否使用本地时间?vsftpd 预设使用 GMT 时间(格林威治),所以预设的 FTP 内的档案日期会比台湾晚 8 小时,建议修改设定为 YES 吧!

  • write_enable=YES (NO)
    如果你允许用户上传数据时,就要启动这个设定值;

  • connect_timeout=60
    单位是秒,在数据连接的主动式联机模式下,我们发出的连接讯号在 60 秒内得不到客户端的响应,则不等待并强制断线咯。

  • accept_timeout=60
    当用户以被动式 PASV 来进行数据传输时,如果服务器启用 passive port 并等待 client 超过 60 秒而无回应, 那么就给他强制断线!这个设定值与 connect_timeout 类似,不过一个是管理主动联机,一个管理被动联机。

  • data_connection_timeout=300
    如果服务器与客户端的数据联机已经成功建立 (不论主动还是被动联机),但是可能由于线路问题导致 300 秒内还是无法顺利的完成数据的传送,那客户端的联机就会被我们的 vsftpd 强制剔除!

  • idle_session_timeout=300
    如果使用者在 300 秒内都没有命令动作,强制脱机!避免占着茅坑不拉屎~

  • max_clients=0
    如果 vsftpd 是以 stand alone 方式启动的,那么这个设定项目可以设定同一时间,最多有多少 client 可以同时连上 vsftpd 哩!限制使用 FTP 的用量!

  • max_per_ip=0
    与上面 max_clients 类似,这里是同一个 IP 同一时间可允许多少联机?

  • pasv_min_port=0, pasv_max_port=0
    上面两个是与 passive mode 使用的 port number 有关,如果你想要使用 65400 到 65410 这 11 个 port 来进行被动式联机模式的连接,可以这样设定 pasv_max_port=65410 以及 pasv_min_port=65400。 如果是 0 的话,表示随机取用而不限制。

  • ftpd_banner=一些文字说明
    当使用者联机进入到 vsftpd 时,在 FTP 客户端软件上头会显示的说明文字。不过,这个设定值数据比较少啦! 建议你可以使用底下的 banner_file 设定值来取代这个项目;

  • banner_file=/path/file
    这个项目可以指定某个纯文本档作为使用者登入 vsftpd 服务器时所显示的欢迎字眼。同时,也能够放置一些让使用者知道本 FTP 服务器的目录架构!


3.2 与实体用户较相关的设定值

  • guest_enable=YES (NO)
    若这个值设定为 YES 时,那么任何实体账号,均会被假设成为 guest 喔 (所以预设是不开放的)! 至于访客在 vsftpd 当中,预设会取得 ftp 这个使用者的相关权限。但可以通过 guest_username 来修改。

  • guest_username=ftp
    在 guest_enable=YES 时才会生效,指定访客的身份而已。

  • local_enable=YES (NO)
    这个设定值必须要为 YES 时,在 /etc/passwd 内的账号才能以实体用户的方式登入我们的 vsftpd 服务器喔!

  • local_max_rate=0
    实体用户的传输速度限制,单位为 bytes/second, 0 为不限制。

  • chroot_local_user=YES (NO)
    在预设的情况下,是否要将使用者限制在自己的家目录之内(chroot)?如果是 YES 代表用户默认就会被 chroot,如果是 NO, 则预设是没有 chroot。不过,实际还是需要底下的两个参数互相参考才行。为了安全性,这里应该要设定成 YES 才好。

  • chroot_list_enable=YES (NO)
    是否启用 chroot 写入列表的功能?与底下的 chroot_list_flie 有关!这个项目得要开启,否则底下的列表档案会无效。

  • chroot_list_enable=YES
    那么就可以设定这个项目了!这个项目与 chroot_local_user 有关,详细的设定状态请参考 chroot 的说明。

  • userlist_enable=YES (NO)
    是否藉助 vsftpd 的抵挡机制来处理某些不受欢迎的账号,与底下的参数设定有关;

  • u

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值