FTP服务器的创建及相关配置

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

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

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

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP ,它的特点是安全,高速和高稳定性,由于我们使用的是RedHat5.4的系统,而红帽自带的ftp服务器端的工具就是vsftpd,所以在此就使用vsftpd来搭建ftp服务器。

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

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

#yum –y install vsftpd

#service vsftpd start     //启动服务

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

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

二:基于ssl的ftp服务器(此时我们选择的是自己建立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      // 重启后测试

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/7e61ef9a99414de1a2fc411288945676.html