免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 889 | 回复: 0
打印 上一主题 下一主题

如何建立安全的ProFTPD应用经验谈(全) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-03 01:16 |只看该作者 |倒序浏览
ProFTPD是针对Wu-FTP的弱项而开发的,除了改进的安全性,还具备许多Wu-FTP没有的特点,能
以Stand-alone、xinetd模式运行等。ProFTP已经成为继Wu-FTP之后最为流行的FTP服务器软件,越来越多的站点选用它构筑安全
高效的FTP站点,ProFTP配置方便,并有MySQL和Quota模块可供选择,利用它们的完美结合可以实现非系统账号的管理和用户磁盘的限制。
一、 ProFTPD服务面临的安全隐患
ProFTPD服务面临的安全隐患主要包括:缓冲区溢出攻击(Buffer Overflow)、数据嗅探和匿名访问缺陷。
1、缓冲区溢出攻击

期以来,缓冲区溢出已经成为计算机系统的一个问题。利用计算机缓冲区溢出漏洞进行攻击的最著名的案例是莫里斯蠕虫,发生在1988年11月。但即使其危害
人所共知,缓冲区溢出仍然是现在入侵的一个重要手段。缓冲区溢出的概念:缓冲区溢出好比是将一百公斤货物放进一个只能装十公斤的容器里。
缓冲区溢出漏洞是一个困扰了安全专家30多年的难题。简单来说,它是由于编程机制而导致的、在软件中出现的内存错误。这样的内存错误使得黑客可以运行一段恶意代码来破坏系统正常地运行,甚至获得整个系统的控制权。
2、数据嗅探
FTP
是传统的网络服务程序,在本质上是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序
的安全验证方式也是有其弱点的,就是很容易受到"中间人"(man-in-the-middle)这种方式的攻击。
所谓"中间人"的
攻击方式,就是"中间人"冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被"中间人"转手后做
了手脚之后,就会出现很严重的问题。
截获这些口令的方式主要为暴力破解。另外使用sniffer程序监视网络封包捕捉FTP开始的会话信息,便可顺手截获root密码。
3. 匿名访问缺陷
匿名访问方式在FTP服务当中被广泛的支持,但是由于匿名FTP不需要真正的身份验证,因此很容易为入侵者提供一个访问通道,配合缓冲区溢出攻击,会造成很严重的后果。
4. 拒绝服务攻击

绝服务是一种技术含量低,但攻击效果明显的攻击方式,受到这种攻击时,服务器或网络设备长时间不能正常提供服务,并且由于某些网络通讯协议本身固有的缺
陷,难以提出一个行之有效的解决办法。防范拒绝服务攻击需要我们从全局去部署防御拒绝服务攻击策略,多种策略联动防范,将拒绝服务攻击的危害降至最低。
二、 加固ProFTPD服务端
1.升级版本
升级陈旧的ProFTPD版本,因为早期的ProFTPD版本存在的安全漏洞。对于一个新配置的ProFTPD服务器来说使用最新稳定版本是最明智的选择,可以在其官方网站下载其源代码进行编译。ProFTPD最新版本是1.2.10,官方网址:
http://www.ProFTPD.org

2.使用xinetd方式运行ProFTPD
ProFTPD能以Stand-alone、xinetd两种模式运行,当用户账号比较少又经常需要连接到ProFTPD服务器时推荐使用xinetd模式运行。使用xinetd方式运行ProFTPD可以有效防范DoS攻击。
从传统的守护进程的概念可以看出,对于系统所要通过的每一种服务,都必须运行一个监听某个端口连接所发生的守护进程,这通常意味着资源浪费。为了解决这个问题,一些Linux引进了"网络守护进程服务程序"的概念。
Redhat
Linux 8.0以后的版本使用的网络守护进程是xinted(eXtended InterNET
daemon)。和stand-alone模式相比xinted模式也称 Internet
Super-Server(超级服务器)。xinetd能够同时监听多个指定的端口,在接受用户请求时,他能够根据用户请求的端口不同,启动不同的网络服
务进程来处理这些用户请求。
可以把xinetd看做一个管理启动服务的管理服务器,它决定把一个客户请求交给那个程序处理,然后启动相应的守护进程。xinetd模式工作原理见图1。
img: http://tech.ccidnet.com/col/attachment/2006/1/562935.jpg
图1 xinetd模式网络服务
和stand
-alone工作模式相比,系统不想要每一个网络服务进程都监听其服务端口。运行单个xinetd就可以同时监听所有服务端口,这样就降低了系统开销,保
护系统资源。但是对于访问量大、经常出现并发访问时,xinetd想要频繁启动对应的网络服务进程,反而会导致系统性能下降。察看系统为Linux服务提
供那种模式方法在Linux命令行可以使用pstree命令可以看到两种不同方式启动的网络服务。
xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。能有效的防止拒绝服务攻击(Denial of Services):
1、限制同时运行的进程数。
通过设置instances选项设定同时运行的并发进程数:
instances=20
当服务器被请求连接的进程数达到20个时,xinetd将停止接受多出部分的连接请求。直到请求连接数低于设定值为止。
2.限制一个IP地址的最大连接数:
通过限制一个主机的最大连接数,从而防止某个主机独占某个服务。
per_source=5
这里每个IP地址可以连接单个IP地址的连接数是5个。
3.限制负载。
xinetd还可以使用限制负载的方法防范拒绝服务攻击。用一个浮点数作为负载系数,当负载达到这个数目的时候,该服务将暂停处理后续的连接:
max_load = 2.8

面的例子中当一项系统负载达到2.8时,所有服务将暂时中止,直到系统负载下降到设定值以下。说明要使用这个选项,编译时要加入--with-
loadavg ,xinetd将而已处理max-load配置选项。从而在系统负载过重时关闭某些服务进程,来实现某些拒绝服务攻击。
4.限制所有服务器数目(连接速率) 。
xinetd可以使用cps选项设定连接速率,下面的例子:
cps = 25 60
第一个参数表示每秒可以处理的连接数,如果超过了这个连接数之后进入的连接将被暂时停止处理;第二个参数表示停止处理多少秒后继续处理先前暂停处理的连接。即服务器最多启动25个连接,如果达到这个数目将停止启动新服务60秒。在此期间不接受任何请求。
使用xinetd方式运行ProFTPD的步骤:
(1)检查确省运行情况
确省情况下ProFTPD以stand-alone工作模式运行,可以使用"ps aux| grep proftpd"命令查看进程号,然后使用kill命令中止运行。
(2)修改配置文件
修改/etc/proftpd.conf文件的ServerType选项由"standalone"改为"inetd"。
(3)建立用户组
groupadd nogroup
(4)创建配置文件/etc/xinetd.d/proftpd,代码如下:
Quote:
service ftp
{
flags = REUSE socket_type =
stream instances = 30 cps =
25 60max_load = 3.0wait =
no user = root server =
/usr/local/sbin/proftpd log_on_success =
HOST PID log_on_failure =
HOST RECORD disable = no
}
5)重新启动xinetd配置
killall -USR1 xinetd
(6)使用命令连接服务器
可以使用"ftp localhost"连接本地服务器,如果连接被拒绝,可以使用命令:
tail -f /var/log/messages
查看错误信息。
3.隐藏ProFTPD服务器版本信息
通常软件的BUG信息是和特定版本相关的,因此版本号是黑客寻求最有价值的信息。隐藏ProFTPD版本号比较简单,修改配置文件:
Quote:
/etc/Proftpd.conf:
ServerIdent off

4.伪装ProFTPD服务器
Windows下的FTP服务多是Serv-U,可以把ProFTPD伪装为Serv-U,方法是修改配置文件proftpd.conf,添加如下内容:
ServerIdent on \"Serv-U FTP
Server v5.0 for WinSock ready...\"

存盘退出后,重新启动proftpd服务,登录到修改了提示信息的FTP服务器进行测试:
Quote:
C:\\>ftp 192.168.0.1Connected to
192.168.0.1.220 Serv-U FTP Server
v5.0 for WinSock ready...
User (192.168.0.1:(none)):
331 Password required for (none).
Password: 530 Login incorrect.
Login failed.
ftp > quit 221 Goodbye.

这样从表面上看,服务器就是一个运行着Serv-U的Windows了。
5. 使用非root权限运行ProFTPD
以非root权限运行ProFTPD。修改配置文件:
Quote:
/etc/Proftpd.conf:
User nobody

#设置FTP服务以nobody运行 Group nogroup
#注意:原来是"Group nobody",一定要改为"Group nogroup "
上面的配置表示以nobody用户身份运行ProFTPD服务器。使用nobody身份运行能够降低缓冲区溢出攻击所带来的危险。
6.监控ProFTPD服务器运行情况
通常新部署一个ProFTPD服务器之后需要进行一段时间的监控:记录FTP连接记录、谁连接到我的FTP服务器。Proftpd本身附带了几个命令可以使用。
(1)记录FTP连接数
使用usr/local/bin/ftpcout命令,可以显示FTP服务器连接用户数量信息。 我们还可以使用watch命令配合使用,运行下面命令:
Quote:
watch -n 360 /usr/local/bin/ftpcount

这个命令每三百六十秒显示一次连接用户数量的信息。
(2)查找谁与FTP服务器连接
使用usr/local/bin/ftpwho命令可以显示谁连接到FTP服务器。一个简单的输出如下:
Quote:
Master proftpd process 8322:
8387 0m1s proftpd: sheila -
reboot.intevo.com: IDLE 8341
3m59s proftpd: kabir -
k2.intevo.com: IDLE - - 2 users

以上输出显示有两个用户(sheila和kabir)从不同的计算机连接到FTP服务器,输出内容还包括:为这些用户服务的ProFTPD的进程和主ProFTPD的进程ID。
7.修改配置文件加固服务器
ProFTPD使用的配置文件和Apache类似:
单线指令:ServerName 和 ServerType
多线容器指令:和
如果以前配置过Apache的话,会很容易掌握。Proftpd服务器配置文件etc/Proftpd.conf中的许
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12056/showart_1810582.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP