FTP的全称是File Transfer Protocol(文件传输协议)

FTP服务器可以简单的理解为是依照ftp协议提供文件共享的主机。

在使用计算机的过程中,一般我们重要的目的就是实现信息共享,但不同的操作系统有着不同的ftp应用程序,要实现信息的共享,就需要这些应用程序都遵循同一种协议,而此时用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得自己所需要的文件。

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP ,它的特点是安全,高速和高稳定性

由于我们使用的是redhat5.4的系统,而红帽自带的ftp服务器端的工具就是vsftpd,所以在此就使用vsftpd来搭建ftp服务器

 

 

一:ftp服务器端工具的安装

vsftpd的软件包在红帽光盘上是有的,如果你已经配置好yum源指向光盘,可直接用yum安装,如果没有光盘镜像,你也可去互联网上下载vsftpdrpm包来安装,由于我们在此有配置yum源,所以采用yum安装

  #yum –y install vsftpd

  #service vsftpd start     //启动服务

  #netstat –tnlp | grep 21   //ftp服务是监听在21端口上的,此为查看是否正常启动

 此时,一个简易的ftp服务器就可使用了。

二:基于sslftp服务器(此时我们选择的是自己建立CA)

  #cd /etc/pki

  #cd CA

  #vim ../tls/openssl.cnf  

  dir         = ../../CA     将此行改为

     dir         =/etc/pki/CA                      //以此作为工作目录

  #(umask 077;openssl genrsa 1024 > private/cakey.pem)  //生成非对称密钥

  #openssl req –new –x509 –key private/cakey.pem –out cacert.pem –days 3650

                                               //根据自己的情况输入相关信息

  #mkdir certs newcerts crtl                        // 创建CA所用的目录及

  #touch index.txt                                //创建CA所用的文件

  #echo 01 > serial                               //创建CA所用的文件

  #cd /etc/vsftpd/

  #mkdir ssl                                    //此目录为了放置所用的公钥私钥

  #cd ssl

  #(umask 077;openssl genrsa 1024 > vsftpd.key)

  #openssl req –new –key vsftpd.key –out vsftpd.csr

  #openssl ca –in vsftpd.csr –out vsftpd.crt –days 3650   //颁发证书

  #vim /etc/vsftpd/vsftpd.conf                       //添加内容如下

ssl_enable=YES

ssl_tlsv1=YES

ssl_sslv2=YES

ssl_sslv3=YES

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt

res_private_key_file=/etc/vsftpd/ssl/vsftpd.key

#service vsftpd restart                         //此时数据的传输就基于ssl加密了

:ftp服务器支持虚拟用户登录

  简介:虚拟用户指的是非系统上能够登录的用户,它是不能登录操作系统的,但是可用于访问ftp服务器,虚拟用户实现认证的机制可有多种,:file,LDAP,mysql,此处使用mysql来存放虚拟用户的账号,密码.默认pam认证是不支持mysql存放账号,密码的因此我们需要借助于pam_mysql.so这个模块来实现

  1:生成所需模块

# tar zxvf  pam_mysql-0.7RC1.tar.gz             //此压缩包可从互联网上下载

# cd  pam_mysql-0.7RC1

# ./configure --with-mysql=/usr/local/mysql --with-openssl

# make

# make install                               //此步结束后可生成pam_mysq.so模块

2:准备数据库及相关表,我们建立名为vsftpd的数据库来存放相关虚拟用户的帐号(提示:需要你提前建好mysql数据库,并且能正常启用)

mysql> create database vsftpd;    

mysql> use vsftpd;

mysql> create table users (        //创建表

       -> id int AUTO_INCREMENT NOT NULL PRIMARY KEY,

       -> name char(20) NOT NULL UNIQUE KEY,

       -> password char(48) NOT NULL

       -> );

mysql> insert into users(name,password) values('ccle',password('123456'));

                          //添加测试的虚拟用户,其密码采取加密存放的方式

mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123456';

mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by '123456';

                              //  将此数据库的所有表权限赋予给vsftpd的用户

mysql> select * from users;    //查看结果

mysql>flush privileges       // 同步,保证其生效

3:创建pam认证所需文件

#vim /etc/pam.d/vsftpd.mysql   // 添加如下两行

auth required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2

account required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2

  4:创建用户及修改配置文件

#useradd -s /sbin/nologin -d /var/ftproot ftpuser

//建立虚拟用户映射的系统用户及对应的目录

#chmod go+rx /var/ftproot

#vim /etc/vsftpd/vsftpd.conf

请确定/etc/vsftpd/vsftpd.conf中的以下选项的状态为此

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES

/etc/vsftpd/vsftpd.conf添加以下选项

guest_enable=YES

guest_username=ftpuser

修改/etc/vsfptd/vsftpd.conf中的pam_service_name=vsftpd为如下内容:

pam_service_name=vsftpd.mysql

 

#service vsftpd restart      // 重启后测试

此时,虚拟用户ccle应是可以登录的,但系统本身的用户是不能正常登录的,建议可多配置虚拟用户,如需要系统用户登录ftp服务器,还需要修改相应的配置文件,此处暂不叙述。另vsftpd创建的ftp服务器的访问控制,可基于tcp wrapper来实现,也可基于iptables来实现其功能,根据自己的需要来配置即可。