在LINUX系统上建立FTP加密传输在众多的FTP服务器中PROFTPD由于它的配置灵活,安装简便。近年来一直受到人们的喜爱。通常情况下FTP包括认证过程,传输是明文传输的,在传输一些敏感数据时总是不能让人放心。今天我在网上找了一些零散的资料结合自己的实作写了个帖子贡献给大家。
下载最新的软件版本:
# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0rc3.tar.gz
首先创建ROFTPD运行的用户和组:
# groupadd nogroup
# useradd –g nogroup –d /dev/null –s /sbin/nologin nobody
首先创建上传下载的用户和组:
# groupadd ftp
# useradd –g ftp –d /home/down –s /sbin/nologin down
# useradd –g ftp –d /home/upload –s /sbin/nologin upload
用户密码设置略
编译安装PROFRPD:
# tar –zxvf proftpd-1.3.0rc3.tar.gz
# cd proftpd-1.3.0rc3
# ./configure
--prefix=/usr/local/proftpd
--sysconfdir=/etc
--enable-autoshadow
--localstatedir=/var/run
--enable-ctrls
--with-moles=mod_tls
# make
# make install
配置PROFTPD服务器:
# vi /etc/proftpd.conf
================+================+=================
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.
ServerName "llzqq"
ServerType standalone
DefaultServer on
AllowRetrieveRestart on
AllowStoreRestart on
ServerType standalone
ServerIdent on
SystemLog /var/log/proftpd.log
UseReverseDNS off
IdentLookups off
RequireValidShell off
# Port 21 is the standard FTP port.
Port 21
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
MaxInstances 100
# Set the user and group under which the server will run.
User nobody
Group nogroup
# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~
# Normally, we want files to be overwriteable.
<Directory />
AllowOverwrite on
</Directory>
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin .welcome
DisplayFirstChdir .message
# Limit User of being enbled login ftp server
<Limit LOGIN>
AllowGroup ftp
DenyAll
</Limit>
#########################ssl/tls############################
# MOD_TLS SETTING
<IfMole mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd-tls.log
TLSProtocol SSLv23
# Are clients required to use FTP over TLS when talking to this server?
TLSRequired ctrl
# Server's certificate
TLSRSACertificateFile /etc/proftpd.crt
TLSRSACertificateKeyFile /etc/proftpd.key
# Authenticate clients that want to use FTP over TLS
TLSVerifyClient off
#########################ssl/tls############################
<Directory /home/down>
<Limit WRITE>
DenyGroup ftp
</Limit>
TransferRate RETR 150 group ftp
</Directory>
<Directory /home/upload>
<Limit RMD RNFR DELE RETR>
DenyGroup ftp
</Limit>
TransferRate STOR 150 group ftp
</Directory>
MaxClientsPerHost 200
PassivePorts 55000 56000
================+================+=================
创建PROFTPD的日志文件:
# touch /var/log/proftpd.log
# touch /var/log/proftpd-tls.log
# chown nobody:nogroup /var/log/proftpd.log /var/log/proftpd-tls.log
创建SSL传输的证书和密匙:
# cp /usr/share/ssl/openssl.cnf ./
# openssl req -new -x509 -nodes -config openssl.cnf -out proftpd.crt –keyout proftpd.key
这里安装提示需要输入证书信息略
把证书和密匙复制到指定目录:
# cp proftpd.crt proftpd.key /etc/
http://linux.chinaitlab.com/server/520729.html
‘贰’ ftp如何加密访问
我当初搞VSFTPD的时候,加密的话,采用的加密方式是修改源码增加加密支持,我给楼主几个要用的链接吧,因为自己手动打跟相关的链接都差不多的。
http://hi..com/maxmissyou/blog/item/77601b238660f0a34623e8ce.html
http://supersun.biz/2007/10/vsftpdsslftp.html
其实嘛,如果楼主需要传输的文件不是重要文件的话,可以不搞加密,另外,楼主想学习下加密传输也还是挺不错的。
‘叁’ FTP的防范与攻击如何实现
------------------------FTP安全考虑—RFC2577----------------------------------
1.简介
文件传输协议规范(FTP)[PR85]提供了一种允许客户端建立FTP控制连接并在两台
FTP服务器间传输文件的机制。这种“代理FTP”机制可以用来减少网络的流量,客户端命
令一台服务器传输文件给另一台服务器,而不是从第一台服务器传输文件给客户端,然后从
客户端再传输给第二台服务器。当客户端连接到网络的速度特别慢时,这是非常有用的。但
同时,代理FTP还带来了一个安全问题——“跳转攻击(bounce attack)”[CERT97:27]。除
了“跳转攻击”,FTP服务器还可以被攻击者通过强力来猜测密码。
本文档并不考虑当FTP和一些强壮的安全协议(比如IP安全)联合使用的情况。虽然
这些安全关注并不在本文档的考虑范围内,但是它们也应该被写成文档。
本文给FTP服务器的实现者和系统管理员提供了一些信息,如下所示。第二章描述了
FTP“跳转攻击”。第三章提供了减少“跳转攻击”的建议。第四章给基于网络地址限制访
问的服务器提供了建议。第五章提供了限制客户端强力“猜测密码”的建议。接着,第六章
简单的讨论了改善保密性的机制。第七章给出了阻止猜测用户身份的机制。第八章讨论了端
口盗用。最后,第九章讨论了其它跟软件漏洞有关而跟协议本身无关的FTP安全问题。
2.跳转攻击(Bounce Attack)
RFC959[PR85]中规定的FTP规范提供了一种攻击知名网络服务器的一种方法,并且使
攻击者很难被跟踪。攻击者发送一个FTP"PORT"命令给目标FTP服务器,其中包含该主机
的网络地址和被攻击的服务的端口号。这样,客户端就能命令FTP服务器发一个文件给被
攻击的服务。这个文件可能包括根被攻击的服务有关的命令(如SMTP,NNTP等)。由于是
命令第三方去连接到一种服务,而不是直接连接,就使得跟踪攻击者变得困难,并且还避开
了基于网络地址的访问限制。
例如,客户端上载包含SMTP命令的报文到FTP服务器。然后,使用正确的PORT命
令,客户端命令服务器打开一个连接给第三方机器的SMTP端口。最后,客户端命令服务
器传输刚才上载的包含SMTP命令的报文给第三方机器。这就使得客户端不建立任何直接
的连接而在第三方机器上伪造邮件,并且很难跟踪到这个攻击者。
3.避免跳转攻击
原来的FTP规范[PR85]假定使用TCP进行数据链接,TCP端口号从0到1023时报留给
一些众所周知的服务的,比如邮件,网络新闻和FTP控制链接。FTP规范对数据链接没有
限制TCP端口号。因此,使用代理FTP,客户端就可以命令服务器去攻击任何机器上众所
周知的服务。
为了避免跳转攻击,服务器最好不要打开数据链接到小于1024的TCP端口号。如果服
务器收到一个TCP端口号小于1024的PORT命令,那么可以返回消息504(对这种参数命
令不能实现)。但要注意这样遗留下那些不知名服务(端口号大于1023)易受攻击。
一些建议(例如[AOM98]和[Pis94])提供了允许使用除了TCP以外的其他传输协议来
建立数据连接的机制。当使用这些协议时,同样要注意采用类似的防范措施来保护众所周知
的服务。
另外,我们注意到跳转攻击一般需要攻击者首先上载一个报文到FTP服务器然后再下
载到准备攻击的服务端口上。使用适当的文件保护措施就可以阻止这种情况发生。然而攻击
者也可能通过从远程FTP服务器发送一些能破坏某些服务的数据来攻击它。
禁止使用PORT命令也是避免跳转攻击的一种方法。大多数文件传输可以仅通过PASV
命令来实现。但这样做的缺点就是丧失了使用代理FTP的能力,当然代理FTP并不是在所
有场合都需要的。
4.受限制的访问
一些FTP服务器希望有基于网络地址的访问控制。例如,服务器可能希望限制来自某
些地点的对某些文件的访问(例如为了某些文件不被传送到组织以外)。在这种情况下,服
务器在发送受限制的文件之前应该首先确保远程主机的网络地址在本组织的范围内,不管是
控制连接还是数据连接。通过检查这两个连接,服务器就被保护避免了这种情况:控制连接
用一台可信任的主机连接而数据连接不是。同样的,客户也应该在接受监听模式下的开放端
口连接后检察远程主机的IP地址,以确保连接是由所期望的服务器建立的。
注意,基于网络地址的受限访问留下了FTP服务器易受“地址盗用(spoof)”攻击。在
spoof攻击中,攻击机器可以冒用在组织内的机器的网络地址,从而将文件下载到在组织之
外的未授权的机器上。只要可能,就应该使用安全鉴别机制,比如在[HL97]中列出的安全鉴
别机制。
5.保护密码
为了减少通过FTP服务器进行强力密码猜测攻击的风险,建议服务器限制尝试发送正
确的密码的次数。在几次尝试(3~5次)后,服务器应该结束和该客户的控制连接。在结束
控制连接以前,服务器必须给客户端发送一个返回码421(“服务不可用,关闭控制连接”
[PR85])。另外,服务器在相应无效的“PASS”命令之前应暂停几秒来消减强力攻击的有效
性。若可能的话,目标操作系统提供的机制可以用来完成上述建议。
攻击者可能通过与服务器建立多个、并行的控制连接破坏上述的机制。为了搏击多个并
行控制连接的使用,服务器可以限制控制连接的最大数目,或探查会话中的可疑行为并在以
后拒绝该站点的连接请求。然而上述两种措施又引入了“服务否决”攻击,攻击者可以故意
的禁止有效用户的访问。
标准FTP[PR85]在明文文本中使用“PASS”命令发送密码。建议FTP客户端和服务器
端使用备用的鉴别机制,这种鉴别机制不会遭受窃听。比如,IETF公共鉴别技术工作组开
发的机制[HL97]。
6.私密性
在FTP标准中[PR85]中,所有在网络上被传送的数据和控制信息(包括密码)都未被
加密。为了保障FTP传输数据的私密性,应尽可能使用强壮的加密系统。在[HL97]中定义
了一个这样的机制。
7.保护用户名
当“USER”命令中的用户名被拒绝时,在FTP标准中[PR85]中定义了相应的返回码530。
而当用户名是有效的但却需要密码,FTP将使用返回码331。为了避免恶意的客户利用USER
操作返回的码确定一个用户名是否有效,建议服务器对USER命令始终返回331,然后拒绝
对无效用户名合并用户名和密码。
8.端口盗用
许多操作系统以递增的顺序动态的分配端口号。通过合法的传输,攻击者能够观察当前
由服务器端分配的端口号,并“猜”出下一个即将使用的端口号。攻击者可以与这个端口建
立连接,然后就剥夺了下一个合法用户进行传输的能力。或者,攻击者可以盗取给合法用户
的文件。另外,攻击者还可能在从授权用户发出的数据流中插入伪造的文件。通过使FTP
客户和服务器随机的给数据连接分配端口号,或者要求操作系统随机分配端口号,或者使用
与系统无关的机制都可以减少端口盗用的发生。
9.基于软件的安全问题
本文档的重点是和协议相关的安全问题。另外还有一些成文的FTP安全问题是由于不
完善的FTP实现造成的。虽然这种类型的问题的细节超出本文档的范围,还是有必要指出
以下那些过去曾被误用,今后的实现应该慎重考虑的FTP特性。
? 匿名FTP
匿名FTP服务使客户端用最少的证明连接到FTP服务器分享公共文件。如果这样的用
户能够读系统上所有的文件或者能建立文件,那么问题就产生了。[CERT92:09] [CERT93:06]
? 执行远程命令
FTP扩展命令"SITE EXEC"允许客户端执行服务器上任意的命令。这种特性显然需要非
常小心的实现。已经有几个成文的例子说明攻击者利用FTP“SITE EXEC”命令可以破坏服
务器的安全性。[CERT94:08] [CERT95:16]
? 调试代码
前面的一些跟FTP有关危及安全的问题是由于置入了调试特性的软件造成的。
[CERT88:01]
本文建议有这些功能的FTP服务器的实现者在发布软件之前参阅所有的CERT有关这
些问题的攻击以及类似机制的忠告。
10.结论
使用以上建议可以减少和FTP服务器有关的安全问题的发生,而不用删除其功能。
‘肆’ 如何在FTP上加密向FTP上指定文件夹上传文件及文件夹时这些内容均被自动加密,其他人都可以看到
这个FTP服务器做不到,像word excel你可以自己设个密码,其他类型的就没办法了,用加密工具加密也只在本地电脑有效。
‘伍’ 如何对FTP存盘进行加密
windows用户 安装Secure FTP或者 Flash FXP
Secure FTP的使用方法如下:
步骤1:启动Secure FTP,点击工具栏上的红绿灯按钮打开连接对话框,如图3所示,在“hostname”中填入Serv-U FTP Server服务器的IP地址,在下面两栏中分别填入FTP帐户名和密码。
步骤2:切换到“Secutity”标签,点击“Secutity”栏下的下拉框,可以发现它支持两种连接方式:普通的连接和implicit SSL连接,不支持explicit SSL连接(如果您一定要使用这种连接,您可以使用Secure FTP的命令行版本,它支持所有的连接方式),这里我们选择“implicit SSL”项,并勾选“Data Encryption”项。完成后点击“connect”即开始连接服务器。由于是SSL连接,所以连接时间明显比普通连接要长.当第一次使用时,还会弹出一个接受服务器证书的对话框,点击“Grant Always”按钮接受即可。
Flash FXP比较方便 就不说了
‘陆’ ftp虚拟账户设置以及ssl加密
注意1 :
打开 FTP 服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。
详细信息:
200 Switching to ASCII mode.
227 Entering Passive Mode (0,0,0,0,227,175).
解决:
在windows下操作:
打开 “网络和共享中心”,找到“Internet选项” -->【高级】这页,
取消掉“使用被动FTP(用于防火墙和DSL调制解调器的兼容)”
注意2 : 云主机防火墙设置
pasv_min_port=30000 ##被动模式最小端口
pasv_max_port=30010 ##被动模式最大端口
需要在服务器端开放防火墙20/21以及30000/30010即可
参考:
mkdir /etc/vsftpd/sslkey
cd /etc/vsftpd/sslkey
openssl req -x509 -nodes -keyout /etc/vsftpd/sslkey/vsftpd.pem -out /etc/vsftpd/sslkey/vsftpd.pem -days 365 -newkey rsa:2048
vim /etc/vsftpd/vsftpd.conf 添加
参考:
1 FTP匿名访问是FTP安全问题中最常见的问题,取消匿名访问
2 未限制登录用户访问目录权限,配置加固
除了chroot_list中的用户都不能访问上级根目录
3 使用虚拟账户
4 密码和文件内容都使用明文传输,可能产生不希望发生的窃听,使用ftps ftp+ssl
注意登录必须使用
5 在使用FTP时,如果客户端机器和FTP服务器双方之间的所有端口都是开放的,那连接不存在问题。如果客户端与服务器之间有防火墙,如果没配置好防火策略和采用合适的连接模式,会导致登录成功,但无法List列表的问题。要避免出现这样的问题,首先要了解FTP的工作模式。我采取的是被动模式
可参考
6 tcpmp port 21 -nA 可通过此命令查看ftp如果不添加ssl就是明文传输
‘柒’ 如何为FTP服务器加密
第一步首先在A计算机上安装sniffer嗅探工具,并启动该程序。在sniffer软件中通过上方的“matrix”(矩阵)按钮启动监测界面,打开监测界面后我们就可以开始监测网络中的数据包了。通过菜单栏的“capture(捕获)→start(开始)”启动。在检测数据包窗口中我们点左下角的objects(对象)标签,然后选择station(状态),这样将把当前网络中所有通信都显示在窗口中。
至此我们就通过sniffer工具将员工在FTP服务器上的用户名和密码嗅探出来,该方法在员工和安装了sniffer的计算机处在同一个子网的情况下有效。