[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 应用专题 > FTP > 正文

如何建立安全的ProFTPD应用经验谈(2)

作者:曹江华 来源:赛迪网 (2007-02-02 10:43:23)

  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,代码如下:

  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版本号比较简单,修改配置文件:

  /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服务器进行测试:

  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。修改配置文件:

  /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命令配合使用,运行下面命令:

  watch -n 360 /usr/local/bin/ftpcount

  这个命令每三百六十秒显示一次连接用户数量的信息。

  (2)查找谁与FTP服务器连接

  使用usr/local/bin/ftpwho命令可以显示谁连接到FTP服务器。一个简单的输出如下:

  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。


(http://www.fanqiang.com)



 
 相关文章

★  感谢所有的作者为我们学习技术知识提供了一条捷径  ★
www.fanqiang.com