首页 > 代码库 > 2.3FTP服务

2.3FTP服务

FTP服务概述:

FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。

FTP(File Transfer Protocol: 文件传输协议)作用: Internet 上用来传送文件的协议

常见FTP服务器:

windows:Serv-U FTP Server

Linux:ProFTPD:(Professional FTP daemon)一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。  

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。

特点:它是一个安全、高速、稳定的FTP服务器;

模式: C/S 模式

端口:20 (传数据)   21 (传指令)

fsp(File Service Protocol): 文件服务协议。

安装vsftp服务器端 vsftpd    ,

客户端 lftp:

lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。llftp的界面非常好一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。

配置文件

 /var/ftp/pub/                            #默认的共享目录

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

/etc/vsftpd/ftpusers           #用户指定哪些用户不能访问ftp服务器,黑名单

/etc/vsftpd/user_list           #用户指定哪些用户能访问ftp服务器,白名单

/var/ftp/                                   #默认情况下匿名用户的根目录,默认权限755,不用更改该权限

启动服务 service vsftpd restart

开机启动chkconfig vsftpd on

 监听 netstat -anptu | grep ftp

tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      2877/vsftpd

为什么看不到20端口?:因为没有数据通信。

例1:

允许所有员工上传和下载文件,并允许创建用

户自己的目录。

允许匿名用户访问

anonymous_enable=YES

允许匿名用户上传文件并可以创建目录

anon_upload_enable=YES

anon_mkdir_write_enable=YES  

将ftp跟目录的用户属性改:chown ftp /var/ftp/XXXX

重启服务后可以看见能上传,能新建,但不能重命名  ,谁建谁删,加1权限

注:工作中,匿名用户只是只读访问,写的权限也没有的。

例2:

结合FTP 和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文

件、创建目录、更新网页等等。创建team1 和team2 帐号登录FTP 服务器,但不能登录本地系统,并将

这两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录。

只允许:team1和team2两用户 可以上传。 vsftp禁止匿名。

useradd -s /sbin/nologin team1  和 2

echo "123456" | passwd --stdin team1 和 2

主配置文件

cp vsftpd.conf vsftpd.conf.back

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO:禁止匿名用户登录

local_enable=YES:允许本地用户登录

local_root=/var/www/html:设置本地用户的根目录为/var/www/html

chroot_list_enable=YES:激chroot 功能

chroot_list_file=/etc/vsftpd/chroot_list:设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名

创建文件touch /etc/vsftpd/chroot_list

添加用户vim /etc/vsftpd/chroot_list  #写入以下内容,一行,一个用户名

team1

team2

重启service vsftpd restart

改权限:chmod -R o+w /var/www/html/ 

g+s会继成文件的权限属性

验证,测试 Linux:lftp ip  ;window ftp://ip

例3:

普通员工只能查看和下载,经理有上传和下载。

ftp虚拟用户的使用跟软连接相似,ftp的用户和系统用户进行分离,这样即使黑客破解了ftp的账号和密码,也只是能访问ftp共享出来的内容,对服务器本身没有任何影响,能提高服务器的安全性。

创建用户文本文件,在此文件中添加虚拟用户,两行为一组,分别对应用户名和密码

 vim /etc/vsftpd/vusers.list

xsb

123

boss

456

注:其中xsb为普通员工登录账号,boss为经理登录账号

2、生成数据库

使用db_load生成,如果没有此命令,可以使用以下命令进行安装

rpm -qf `which db_load`

yum -y install db4-utils

生成用户数据库

 db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db

 注:-T:允许应用程序能够将文本文件转 译载入数据库

       -t:hash使用hash码加密

       -f:指定包含用户名和密码的文本文件

 3、修改数据库文件的访问权限,提高安全性,只允许root用户拥有读写权限,防止非法用户盗取

 chmod 600 /etc/vsftpd/vusers.db

4、创建两个系统用户virtual和rm并修改目录权限

chmod 600 /etc/vsftpd/vusers.db

useradd -d /var/ftp/xsb -s /sbin/nologin virtual

useradd -d /var/ftp/boss -s /sbin/nologin lhz

chmod 755 /var/ftp/xsb/

5、配置PAM文件

为了是服务器能使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块

PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安装应用系统,通过修

改指定的配置文件,调整对该程序的认证方式。PAM 模块配置文件路径为/etc/pam.d/目录,此

目录下保存着大量与认证有关的配置文件,并以服务名称命名。

vim /etc/pam.d/vsftpd.vu

#%PAM-1.0

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers

注:文件最后调用的数据库文件时省略掉了db后缀

6、修改主配置文件

 vim /etc/vsftpd/vsftpd.conf

匿名用户 NO

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

write_enable=YES                             #允许写入

local改anon _umask=022                   #设置上传文件的默认权限

chroot_local_user=YES                      #限制目录

#guest_enable=YES                          #开启虚拟用户支持,可以在用户单独配置文件中设置

#guest_username=virtual                 #设置映射本地用户,可以在用户单独配置文件中设置

pam_service_name=vsftpd.vu           #指定PAM文件

max_clients=300                               #最大接入的客户端数量

max_per_ip=10                                 #设置每个IP地址最大连接数

 如果在主配置文件中开启了虚拟用户支持,并配置了虚拟用户映射的本地用户,那么这些配置好之后虚拟用户就能在客户端进行登录了,但是所有的虚拟用户权限一样。

 建立独立的配置文件,设置不同用户的权限

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir    #指定用户配置文件的路径

vim /etc/vsftpd/vusers_dir/xsb

guest_enable=yes

guest_username=virtual

anon_world_readable_only=no                 #允许匿名用户浏览整个服务器的文件

anon_max_rate=50000                             #设置传输速率为50KB/s

vim /etc/vsftpd/vusers_dir/boss

guest_enable=yes

guest_username=lhz

anon_world_readable_only=no

write_enable=yes

anon_mkdir_write_enable=yes                 #允许创建目录

anon_upload_enable=yes                         #允许上传文件

anon_max_rate=100000                            #甚至传输速率为100KB/s

anon_other_write_enable=yes                  #允许修改、重命名、删除文件

 客户端验证

使用xsb用户登录时,上传文件失败,权限不允许

chmod 755 /var/ftp/boss/

 

2.3FTP服务