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