FTPS

    FTPS也称作“FTP-SSL”和“FTP-over-SSL” ,它是一种更安全的FTP传输服务

一种多传输协议,相当于加密版的FTP。

    FTPS优势

    FTP传输并不是很安全,在FTP上所有的交流都是简单的文本,可以很容易的获取到,当你在FTP服务器上收发文件的时候,你面临两个风险。第一个风险是在上载文件的时候为文件加密。第二个风险是,这些文件在你等待接收方下载的时候将停留在FTP服务器上,这时你如何保证这些文件的安全。你的第二个选择(创建一个支持SSL的FTP服务器)能够让你的主机使用一个FTPS连接上载这些文件。这包括使用一个在FTP协议下面的SSL层加密控制和数据通道。一种替代FTPS的协议是安全文件传输协议(SFTP)。这个协议使用SSH文件传输协议加密从客户机到服务器的FTP连接。  

    FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型TFP协议,为FTP协议和数据通道增加了SSL安全功能。SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。  和sftp连接方法类似,在windows中可以使用FileZilla等传输软件来连接FTPS进行上传,下载文件,建立,删除目录等操作,在FileZilla连接时,有显式和隐式TLS/SSL连接之分,连接时也有指纹提示。

尽管这个并不是特别的危险,但是我们可以稍微的修改下使之更加安全。

 配置Vsftpd服务

 测试环境

FTP: Vsftpd

由于FTP的用户分为以下三类实体用户,访客,匿名登录者,下面就从主要的实用

户和匿名用户来分别说明。

实体用户设置

LDAP用户设置:

由于系统已经配置完成openldap,这里就可以让LDAP里面的用户能够使用FTP.

cd /etc/pam.d/

mv vsftpd{,.bak}

cp /etc/pam.d/system-auth /etc/pam.d/vsftpd

 编辑配置文件:

vim /etc/vsftpd/vsftpd.conf

#Anonymous users

anonymous_enable=NO

#Local users

local_enable=YES

write_enable=YES

local_umask=022

local_root=/home/pub/ #共享目录

userlist_enable=YES

userlist_deny=YES

userlist_file=/etc/vsftpd/user_list

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list #实现chroot功能的用户名单

#Host

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

pam_service_name=vsftpd

listen=YES

tcp_wrappers=YES

use_localtime=YES

banner_file=/etc/vsftpd/welcome.txt #登录FTP后的欢迎信息

local_max_rate=100000

max_clients=10

#max_per_ip=1

创建文件

touch /etc/vsftpd/chroot_list

mkdir /home/pub

chmod o+w /home/pub

touch /etc/vsftpd/welcome.txt

echo "Welcome" >>welcome.txt

启动FTP

/etc/init.d/vsftpd start

ftp localhost

Connected to test.com.

220-Welcome to my FTP Server

220

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (localhost:root): jack #使用系统里面的帐号和密码

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

ftp localhost

Connected to test.com.

220-Welcome to my FTP Server

220

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (localhost:root): user1 #使用LDAP用户登录

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

默认对实体用户没有限制,想让用户不能访问那个目录以外的目录,则把用户写

/etc/vsftpd/chroot_list 文件里面这里想让jack这个用户只能访问/home/pub

目录,不能访问其他目录:

echo "jack" >/etc/vsftpd/chroot_list

ftp localhost

 匿名登录者设置

CentOS默认的匿名根目录在/var/ftp中,并且匿名在使用FTP服务时,默认可以使用

ftp用户的权限,只是被chroot/var/ftp.

 编辑配置文件:

vi /etc/vsftpd/vsftpd.conf

#Anonymous Users

anonymous_enable=YES

no_anon_password=YES

anon_max_rate=50000

data_connection_timeout=60

idle_session_timeout=600

#匿名进行上传/下载目录

write_enable=YES

anon_other_write_enable=YES

anon_mkdir_write_enable=YES

anon_upload_enable=YES

chown_uploads=YES

chown_username=root

#Local Users

local_enable=NO

#Host

use_localtime=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

pam_service_name=vsftpd

listen=YES

tcp_wrappers=YES

banner_file=/etc/vsftpd/welcome.txt

max_clients=50

max_per_ip=5

 进行测试

/etc/init.d/vsftpd restart

ftp localhost

Connected to test.com.

220-Welcome to my FTP Server

220

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (localhost:root): anonymous

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

227 Entering Passive Mode (127,0,0,1,177,234)

150 Here comes the directory listing.

drwxr-xr-x 2 0 0 4096 May 25 2008 pub

3.配置匿名进行上传和下载:

由于匿名用户取得的身份是FTP,所以要想上传文件到/var/ftp/upload,则:

 mkdir /var/ftp/upload

 chown ftp /var/ftp/upload

 ftp localhost

进行文件上传测试,看是否可以上传成功.

配置FTPS

配置过程

这里再次描述下FTPS的作用:它其实就是在普通的FTP服务(端口21)里面加入安全传输层(TLS-Transport Layer Security)以及安全套接层(SSL-Secure Sockets Layer)

生成自定义的安全证书:

root@test ~: openssl req -x509 -nodes -days 365 -newkey rsa:1024

-keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

Generating a 1024 bit RSA private key

.............++++++

.....................++++++

writing new private key to '/etc/vsftpd/vsftpd.pem'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [GB]:CN

State or Province Name (full name) [Berkshire]:SH

Locality Name (eg, city) [Newbury]:shanghai

Organization Name (eg, company) [My Company Ltd]:zzdx

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) []:mkt

Email Address []:www.abc.com

vi /etc/vsftpd/vsftpd.conf

#anonymous

anonymous_enable=YES

#Local users

local_enable=YES

write_enable=YES

local_umask=022

local_root=/home/pub/

userlist_enable=YES

userlist_deny=YES

userlist_file=/etc/vsftpd/user_list

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

#Host

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

banner_file=/etc/vsftpd/welcome.txt

local_max_rate=100000

max_clients=10

#FTP over SSL

rsa_cert_file=/etc/vsftpd/vsftpd.pem

ssl_enable=YES

force_local_logins_ssl=YES

force_local_data_ssl=YES

ssl_tlsv1=YES

ssl_sslv2=YES

ssl_sslv3=YES