shinedisk固态硬盘:CentOS 5.5之vsFTPd服务器配置图解

来源:百度文库 编辑:中财网 时间:2024/04/28 16:34:17

CentOS 5.5之vsFTPd服务器配置图解

[日期:2011-11-27]来源:51cto博客  作者:300secondvsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。在搭建vsftpd服务器之前,首先了解一下FTP的工作原理。

FTP的传输使用的可靠的TCP协议,使用了两个连接,分别是命令通道和数据流通道。一般来说,FTP服务占用两个端口:20和21端口。其中21端口用来建立命令通道,20端口用来建立数据通道。FTP分为两种模式建立连接,分别为主动模式和被动模式。

主动模式:通过客户端使用一个大于1024的随机端口向服务器的21端口发起请求,通过三次握手建立命令通道。如果此时有进行文件的上传或下载,服务器会使用20端口向客户端的另一个大于1024的端口发起请求,经过三次握手后建立数据通道。

被动模式:建立命令通道的方式和主动模式一样,都是在21端口上建立。当有数据传输的指令时,客户端会在命令通道内向服务器发起请求;此时服务器会启用一个端口来监听,但不是20端口,而是一个大于1024的随机端口。这样一来服务器和客户端两端的数据通道会建立在大于1024的端口之间。

接下来就开始VSFTPD服务器的搭建配置(环境:CentOS 5.5)

1、查询系统是否安装了vsftpd服务器,同时开启vsftpd服务。

2、来到windows客户端,用命令行登陆ftp服务器,使用匿名账号anonymous或ftp登陆,密码空。即可成功登陆!默认的匿名FTP根目录为/var/ftp

3、这时可以用一些简单的命令查看用户目录的信息,例如dir是查看服务器根目录下的文件夹,可以发现有一个名为pub的文件夹。 !dir则是查看自己计算机用户根目录下的文件夹,如下图所示。

4、pwd可以用来查看服务器当前目录的路径。在这里通过匿名用户登陆的ftp目录的路径是相对路径,即只能在/var/ftp这个目录里面访问,没有访问服务器其他路径的权限。lcd则可以用来查看本地计算机的当前路径。

5、默认情况下匿名用户只有下载的权限,而没有上传的权限。如图所示,上传dns.txt文件时被服务器拒绝,但是可以成功下载ftptest文件。另外使用bye命令可以退出ftp服务器。

vsftpd相关配置文件介绍:

/etc/vsftpd/vsftpd.conf      #vsftpd的主配置文件

/etc/pam.d/vsftpd      #这是使用PAM相关模块时用到的文件,用作身份验证之用。

/etc/vsftpd.ftpusers      #这个文件相当于一个黑名单,包含了无法登陆FTP的用户。

/etc/vsftpd.ftpuser_list      #这个文件既可以作黑名单也可作为白名单,主要看如何设置策略。

/etc/vsftpd.chroot_list      #这个文件默认不存在,需要手动建立,用途是将一些用户的根目录锁定在默认目录下,无法进入服务器其他目录。

/etc/sbin/vsftpd      #vsftpd的启动文件。

/var/FTP      #vsftpd的默认匿名用户登陆的根目录。

vsftpd.conf文件设置值的说明:

anonymous_enable=YES    #允许匿名用户登陆

local_enable=YES    #允许本地用户登陆

write_enable=YES    #允许用户上传

local_umask=022    #默认情况下上传的文件夹权限为777,文件的权限为666,022这个值的意思就是在默认权限的基础上减去022,即把文件可写的权限给去除掉,这样别人就只能读取文件,而不能修改文件

anno_upload_enable=YES    #允许匿名用户上传,默认被注释掉

anno_mkdir_write_enable=YES    #允许匿名用户创建文件夹,默认被注释掉

dirmessage_enable=YES    #当用户进入某个目录时,会显示该目录需要注意的内容,默认文件为.message

xferlog_enable=YES    #开启客户端上传和下载的日志记录

connect_from_port_20=YES    #FTP数据通道端口号

xferlog_std_enable=YES    #日志采用标准格式

pam_service_name=vsftpd      #用户的认证文件为vsftpd

userlist_enable=YES      #可以用于检测userlist_file文件中的用户是否可以访问服务器

listen=YES      #工作在独立模式下

tcp_wrappers=YES      #linux自带的安全保护程序
 
vsftpd的登陆方式(三种)
 
1、匿名用户登陆
 
使用默认用户名anonymous或ftp,如CentOS 5.5之vsftpd服务器配置(上)一节所示,登陆后的根目录为/var/ftp。
 
2、本地用户登陆
 
使用系统账号和口令登陆ftp服务器,登陆后的根目录为用户的宿主目录,并且可以转换到其他系统目录。首先创建一个名为centos的系统账号。 
  useradd centos
 
passwd centos
 
在windows客户端用centos账户登陆FTP服务器,登陆后的根目录就是centos的宿主目录,而且可以改变路径前往其他目录。如图centos前往到了/home/centos目录以外的/etc/vsftpd目录下。而且在它自己的根目录下,拥有可读可写可执行的权限,也就是说在/home/centos目录下可以自由上传和下载。
 
注:.message的作用就是在ftp用户访问FTP目录时显示欢迎信息。我们在用户根目录下用vi来创建一个.message文件
  
用windows客户端登录ftp,发现多了一行:Hello,everyone!Welcome to 51cto!其实不仅仅是在根目录,在其他目录中也可以使用。
 
这时如果要把系统账号锁定在自己的根目录下,那么可以在vsftpd.conf中添加一条语句chroot_loacl_user=YES,这样就能限制系统账号了。记住要重启vsftpd服务才能生效。
 
回到windows客户端登录ftp,发现centos账号无法改变到其他目录下了。
 
3、虚拟用户登录
 
由于本地用户存在一定的方式安全隐患,所以又有了另外一种登录方式,即虚拟用户代替本地用户登录。虚拟用户账户和本地账户没有任何关联,而是保存在一个加密的文件中。下面来看一下虚拟用户的创建和登录过程。
 
1)建立虚拟用户口令库文件
 
在任意目录下创建一个文本文件vuser_list.txt (这里在/etc/vsftpd目录下)
 
[root@300second ~]# cd /etc/vsftpd
 
[root@300second vsftpd]# vi vuser_list.txt
 
其中奇数行代表用户名,偶数行代表密码,注意不要有多余的回车。
 
2)生成vsftpd的认证文件到/etc/vsftpd目录下
 
[root@300second ~]# db_load -T -t hash -f vuser_list.txt /etc/vsftpd/vuser_list.db
 
系统不能识别db_load命令,说明没有安装db4软件,那么用yum安装下
 
这时再重新执行指令:db_load -T -t hash -f vuser_list.txt /etc/vsftpd/vuser_list.db ,就没有报错
  
[root@300second ~]# chmod 600 /etc/vsftpd/vuser_list.db               # 设置认证文件只对用户可读可写
 
3)建立虚拟用户所需的PAM配置文件
 
在/etc/pam.d/目录下,有一个名为vsftpd的文件,这是使用PAM相关模块时用到的文件,主要用作本地用户身份验证之用。因为这时要用的是虚拟用户,所以不能用这个文件了,可以在这个目录下新创建一个文件vsftpd.vuser,输入以下内容:[root@300second pam.d]# vi /etc/pam.d/vsftpd.vuser
 
建一个本地用户(vuser),但不要创建密码,那么创建的虚拟用户根目录都可以映射到这个本地用户的根目录下。
 
接下来修改vsftpd.conf文件,如下:
 
guest_enable=YES     #允许虚拟用户访问
 
guest_username=vuser    #虚拟用户所映射的本地用户名
 pam_service_name=vsftpd.vuser    #将原有的vsftpd认证文件改为新创建的vsftpd.vuser
 [root@300second ~]# service vsftpd restart       #重启vsftpd服务
 这时就可以用之前创建的vuser1和vuser2登陆了,但是不能再用本地用户登陆。
 不过这时的虚拟用户权限很低,只有最基本的访问权限。所以还需要在主配置文件里修改不同虚拟用户的权限。在没有指定虚拟账号根目录的情况下,vuser1和vuser2的根目录都在/home/vuser目录下。
 [root@300second home]# cd /etc/vsftpd/
 [root@300second vsftpd]# mkdir /etc/vsftpd_vuser   #创建一个用于包含虚拟用户权限的目录
 [root@300second vsftpd]# vi vsftpd.conf   #进入vsftpd.conf,增加一行,指向刚才创建的目录
 对于虚拟用户来说,有下面4个权限可以设置。如果包含了后三个权限的话,就代表这个虚拟用户拥有了所有的权限。
 anon_world_readable_only=NO    #用户的只读权限
 anon_upload_enable=YES    #允许上传
 anon_mkdir_write_enable=YES    #允许创建和删除目录的权限
 anon_other_write_enable=YES    #允许其他可写权限(如改名和删除)
 进入/etc/vsftpd/vsftpd_vuser目录,创建两个文件vuser1和vuser2
 [root@300second vsftpd]# cd vsftpd_vuser
 [root@300second vsftpd_vuser]# vi vuser1
 [root@300second vsftpd_vuser]# vi vuser2
 [root@300second ~]# service vsftpd restart       #重启vsftpd服务
这时对于vuser1来说,可以进行上传、下载、创建、删除等各种操作。
而对于vuser2来说,几乎没有任何权限,什么都做不了。