超完整RedHat9.0-vsftp配置大全
3.2VSFTP安全与效能兼备的ftp服务器 3.2.1VSFTP概述
FTP,filetransferprotocol,这是档案传输的通讯协议,也是一般最常用来传送档案的方式。读者在使用RedHat9的时候,可能会感受到ftpserver有一些改变: 第一,就是ftpserver只剩下vsftp,原有的wuftp等都没放入
第二,就是vsftp从XINETD中独立出来,并将设定档从/etc/vsftpd.conf之中移到/etc/vsftpd/vsftpd.conf。
为什么做这样的改变?可以想见的是vsftp已有独立运作的能力,不需要XINETD来做更进一步的管控,并且类似sendmail、httpd、ssh、samba等,将设定文件的放入/etc下独立的目录。
FTP分为两类,一种为PORTFTP,也就是一般的FTP另一类是PASVFTP,分述如下: PORTFTP
这是一般形式的FTP,首先会建立控制频道,默认值是port21,也就是跟port21建立联机,并透过此联机下达指令。第二,由FTPserver端会建立数据传输频道,默认值为20,也就是跟port20建立联机,并透过port20作数据的传输。 PASVFTP
跟PORTFTP类似,首先会建立控制频道,默认值是port21,也就是跟port21建立联机,并透过此联机下达指令。第二,会由client端做出数据传输的请求,包括数据传输port的数字。
这两者的差异为何?PORTFTP当中的数据传输port是由FTPserver指定,而PASVFTP的数据传输port是由FTPclient决定。通常我们使用PASVFTP,是在有防火墙的环境之下,透过client与server的沟通,决定数据传输的port。
3.2.2范例
3.2.1.直接启动VSFTP服务
这个范例是套用RedHat的预设范例,直接启动vsftp。
[root@relayvsftpd]#/sbin/servicevsftpdstartStartingvsftpdforvsftpd:OK]
3.2.2.更换port提供服务:将预设的port21更换为2121
为了安全,或是以port来区隔不同的ftp服务,我们可能会将ftpport改为21之外的port,那么,可参考以下步骤。
Step1.修改/etc/vsftpd/vsftpd.conf 新增底下一行 listen_port=2121 Step2.重新启动vsftpd
[root@homevsftpd]#/sbin/servicevsftpdrestart Shuttingdownvsftpd:OK] Startingvsftpdforvsftpd:OK]
3.2.3.特定使用者peter、john不得变更目录
使用者的预设目录为/home/username,若是我们不希望使用者在ftp时能够 切换到上一层目录/home,则可参考以下步骤。 Step1.修改/etc/vsftpd/vsftpd.conf 将底下三行
#chroot_list_enable=YES #(defaultfollows)
#chroot_list_file=/etc/vsftpd.chroot_list 改为
chroot_list_enable=YES #(defaultfollows)
chroot_list_file=/etc/vsftpd/chroot_list Step2.新增一个档案:/etc/vsftpd/chroot_list 内容增加两行: peter john
Step3.重新启动vsftpd
[root@homevsftpd]#/sbin/servicevsftpdrestart Shuttingdownvsftpd:OK] Startingvsftpdforvsftpd:OK]
若是peter欲切换到根目录以外的目录,则会出现以下警告: ftp>cd/home
550Failedtochangedirectory.
3.2.4.取消anonymous登入
若是读者的主机不希望使用者匿名登入,则可参考以下步骤。 Step1.修改/etc/vsftpd/vsftpd.conf 将
anonymous_enable=YES 改为
anonymous_enable=NO Step2.重新启动vsftpd
[root@homevsftpd]#/sbin/servicevsftpdrestart Shuttingdownvsftpd:OK] Startingvsftpdforvsftpd:OK]
3.2.5.安排欢迎话语
若是我们希望使用者在登入时,能够看到欢迎话语,可能包括对该主机的说明,或是目录的介绍,可参考以下步骤。
首先确定在/etc/vsftpd/vsftpd.conf当中是否有底下这一行 dirmessage_enable=YES
RedHat9的默认值是有上面这行的。
接着,在各目录之中,新增名为.message的档案,再这边假设有一个使用者test1,且此使用者的根目录下有个目录名为abc,那首先我们在/home/test1 之下新增.message,内容如下: Hello~Welcometothehomedirectory Thisisfortestonly...
接着,在/home/test1/abc的目录下新增.message,内容如下: Welcometoabc'sdirectory Thisissubdir...
那么,当使用者test1登入时,会看到以下讯息: 230-Hello~Welcometothehomedirectory 230-
230-Thisisfortestonly...
230-
若是切换到abc的目录,则会出现以下讯息: 250-Welcometoabc'sdirectory 250-
250-Thisissubdir...
3.2.6.对于每一个联机,以独立的process来运作
一般启动vsftp时,我们只会看到一个名为vsftpd的process在运作,但若是读者希望每一个联机,都能以独立的process来呈现,则可执行以下步骤。 Step1.修改/etc/vsftpd/vsftpd.conf 新增底下一行
setproctitle_enable=YES Step2.重新启动vsftpd
[root@homevsftpd]#/sbin/servicevsftpdrestart Shuttingdownvsftpd:OK] Startingvsftpdforvsftpd:OK]
使用ps-ef的指令,可以看告不同使用者联机的情形,如下图所示: [root@homevsftpd]#ps-ef|grepftp
root20901016:41pts/000:00:00vsftpd:LISTENER nobody21202090017:18?00:00:00vsftpd:192.168.10.244: connected
test121222120017:18?00:00:00vsftpd:192.168.10.244/test1: IDLE
nobody21242090017:19?00:00:00vsftpd:192.168.10.244: connected
test221262124017:19?00:00:00vsftpd:192.168.10.244/test2: IDLE
root21291343017:20pts/000:00:00grepftp [root@homevsftpd]#
3.2.7.限制传输档案的速度:
本机的使用者最高速度为200KBytes/s,匿名登入者所能使用的最高速度为50KBytes/s Step1.修改/etc/vsftpd/vsftpd.conf 新增底下两行
anon_max_rate=50000 local_max_rate=200000 Step2.重新启动vsftpd
[root@homevsftpd]#/sbin/servicevsftpdrestart Shuttingdownvsftpd:OK] Startingvsftpdforvsftpd:OK]
在这边速度的单位为Bytes/s,其中anon_max_rate所限制的是匿名登入的 使用者,而local_max_rate所限制的是本机的使用者。VSFTPD对于速度的限 制,范围大概在80%到120%之间,也就是我们限制最高速度为100KBytes/s, 但实际的速度可能在80KBytes/s到120KBytes/s之间,当然,若是频宽不足 时,数值会低于此限制。
3.2.8.针对不同的使用者限制不同的速度:
假设test1所能使用的最高速度为250KBytes/s,test2所能使用的最高速度为500KBytes/s。
Step1.修改/etc/vsftpd/vsftpd.conf 新增底下一行
user_config_dir=/etc/vsftpd/userconf Step2.新增一个目录:/etc/vsftpd/userconf mkdir/etc/vsftpd/userconf
Step3.在/etc/vsftpd/userconf之下新增一个名为test1的档案 内容增加一行: local_max_rate=250000
Step4.在/etc/vsftpd/userconf之下新增一个名为test2的档案 内容增加一行: local_max_rate=500000 Step5.重新启动vsftpd
[root@homevsftpd]#/sbin/servicevsftpdrestart Shuttingdownvsftpd:OK] Startingvsftpdforvsftpd:OK]
3.2.9-1.建置一个防火墙下的ftpserver,使用PORTFTPmode: 预设的ftpport:21以及ftpdataport:20
启动VSFTPD之后执行以下两行指令,只允许port21以及port20开放,其它关闭。