Chinaunix首页 | 论坛 | 博客
  • 博客访问: 109097
  • 博文数量: 55
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 630
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-13 10:59
文章分类
文章存档

2011年(1)

2009年(37)

2008年(17)

我的朋友

分类:

2009-02-26 15:02:03

  来自3
ProFTPD是针对Wu-FTP的弱项而开发的,已经成为继Wu-FTP之后最为流行的FTP,越来越多的站点选用它构筑高效的FTP站点,TurboLinux就是一个例子。
1.使用xinetd方式运行ProFTPD
  ProFTPD能以Stand-alone、xinetd两种模式运行,当用户账号比较少又经常需要连接到ProFTPD时推荐使用xinetd模式运行。使用xinetd方式运行ProFTPD可以有效防范DoS攻击。原理和方法可以查看《网管理员世界》8月的《分类防范Linux的DoS》。
2.隐藏服务器版本信息
  通常软件的版本信息是攻击者寻求最有价值的信息。修改配置文件:/etc/Proftpd.conf:
  ServerIdent off
3.使用非root权限运行Proftpd
  以非root权限运行Proftpd。修改配置文件:/etc/Proftpd.conf:
  User nobody  //设置FTP服务以nobody运行
  Group nobody  //原来是Group nobody,一定要改为“Group nobody”
  上面的配置表示以nobody用户身份运行Proftpd。使用nobody身份运行能够降低缓冲区溢出攻击所带来的危险。
4.监控Proftpd服务器
  通常新部署一个FTP服务器之后需要进行一段时间的监控:记录FTP连接记录、谁连接到我的FTP服务器。Proftpd本身附带了几个命令可以使用:
  usr/local/bin/ftpcout:显示FTP服务器连接数信息。
  usr/local/bin/ftpwho:显示FTP服务器连接用户名称信息。
  可以使用watch命令配合使用,运行下面命令:
  watch -n 60 /usr/local/bin/ftpcount
  这个命令每六十秒显示一次连接数目信息。
5.修改Proftpd服务器配置文件
  Proftpd服务器配置文件/etc/Proftpd.conf中许多选项可以加固服务器。/etc/Proftpd.conf文件格式和Apache服务器配置非常相像。
  (1)通过IP地址限制FTP访问
  假设要允许主机名称myhost.domain.com访问FTP服务器,首先使用命令Ping myhost.domain. com。假设登到IP地址216.112.169. 138,修改配置文件,加入以下内容:
  
  Order Allow,Deny
  Allow from 216.112.169.138
  Deny from all
  

  注意:不要在Allow命令后直接使用主机名称,因为检查主机名称会降低服务器的运行速度。另外主机名称比IP地址更具有欺骗性。

  (2)使用PAM作为ProFTPD授权用户的鉴别方法(这个在我的机子上有问题)
  ProFTPD也可以加入嵌入式认证, 成为PAM-aware的FTP服务器。PAM和PAM-aware相关知识和配置请查看相关资料。这样,用户连接到ProFTPD服务器时都由PAM使 用/etc/pam.d/ftp文件进行认证。在  ProFTPD使用PAM比较简单,在配置文件/etc/Proftpd.conf加入:
  AuthPAMAuthoritative on
  AuthPAMConfig ftp
  ProFTPD服务器会自动把/etc/pam.d/ftp配置用于用户授权。
  (3)限制普通FTP用户可访问的目录
  同样,ProFTPD服务器也要限制普通FTP用户可以访问的目录,和wu-ftpd相比比较简单。如果限制skate组的skate用户登录时不能切换到其他目录,修改配置文件加入:
  DefaultRoot ~skate,skate
  这样它就只能呆在自己的home目录中。
  (4)限制FTP命令特权
  禁止一些用户创建和删除目录的特权。如果发现一些用户有威胁行为,可以把他放在一个特定组中  (badusers)。使用如下的配置:
  
  
  Order deny,allow
  DenyGroup badusers
  AllowAll
  

  

  这样除了那个特定的用户组之外,其他用户可以创建和删除目录。
  (5)控制FTP命令缓冲区大小
  许多攻击者通过发送大尺寸的命令攻击FTP服务器,希望造成服务器缓冲区溢出。可以使用CommandBuffer Size命令限制客户端命令长度,通常设定为512。
  (6)修改ProFTPD服务器使用端口
  ProFTP如果使用Stand-alone模式,可以通过设置proftpd.conf来控制它。使用不同端口的设置也较为简单,只需在proftpd.conf中将“Port xx”改为需要的值即可。


 Q:如何限制用户上载和下载的速率?

  A:请您使用以下参数

  RateReadBPS RateReadFreeBytes

  RateWriteBPS RateWriteFreeBytes

  RateReadBPS和RateWriteBPS限制下载和上载的速率

  RateReadFreeBytes和RateWriteFreeBytes限制当用户现在这么多数据量以后再进行限速,这样可以实现对于

  小文件不限速,而大文件限速。

  Q:如何设置空闲超时时间?

  A:请您检查

  TimeoutIdle 设置空闲连接超时时间

  TimeoutLogin 设置空闲登陆超时时间

  TimeoutNoTransfer 设置当没有数据传输时的超时时间

  TimeoutStalled 设置被阻塞的下载的超时时间


Q:如何禁止admin用户登录自己的home目录?

  A:请您在proftpd.conf中使用DefaultRoot ~ !admin


Q:达到最大用户数限制时,如何给出提示信息?

  A:请您在proftpd.conf中使用MaxHostsPerUser 100 “对不起,已经到达该用户最大连接数100,请您稍候再试!”

  Q:怎么限制每个IP允许的线程数?

  A:请您在proftpd.conf中使用MaxClientsPerHost 1 “对不起,每个ip只允许有1个连接!”

  Q:安装后找不到proftpd.conf?


Q:如何限制一个正常用户登录以后只能访问某个目录?

  A:可以通过指令DefaultRoot来实现。例如若希望将ftpusers组的用户限定在自己的home目录下,则需要首先创

  建该组: /usr/sbin/groupadd ftpusers然后将用户ideal加入到该组中: usrmod -G ftpusers ideal 最后在

  在proftpd.conf文件中添加如下内容: DefaultRoot ~ ftpusers

  也可以限制用户登录以后仅仅访问自己主目录下的一个子目录:

  Default! Root ~/anoftp ftpusers

  当然也可以将用户限制在其他目录之下,而不是自己的home目录下:

  DefaultRoot /tmp ftpusers

  也可以限定一个用户组的某些用户被限制,而其他不作限制:

  DefaultRoot ~ ftpusers,!empolyee

  这个指令指示仅仅限制ftpusers组中的不是empolyee组的用户进行限制。

  Q:如何隐藏服务器版本信息,以增强安全性

  A:请您在proftpd.conf中添加ServerIdent off

  Q:如何设定虚拟主机?

  A:您可以通过指令:VirtualHost来实现,一个最简单的例子:

  ServerName “virtual FTP server”

  若您仅仅希望通过匿名访问某个虚拟主机,则使用如下! 的指令:

  Serv erName “virtual FTP server”

  DenyAll

  User private

  Group private

  AllowAll

  这样192.168.2.35的这台主机则仅仅允许匿名登录。

  Q:为何我配置的proftpd在用flashget的站点资源管理器时总是到list-la这一步时出错,即客户端不能列目录,

  但用ie浏览器就可以自由的进入各个目录?

  A:端口21是ftp 的command端口,而文件列表和数据则是通过数据端口,例如“正在连接 ftp 数据 socket

  61.138.232.37:1120”,估计是防火墙规则的问题,请注意你的防火墙配置是否正确

  Q:如何禁止root登录

  A:请您在proftpd.conf中添加RootLogin off

  Q:如何设置最大尝试次数?

  A:请您在proftpd.conf中添加MaxLoginAttempts 3,其中3是你设的数值

  Q:在Redhat8.0下装proftpd_1.2.6,每次服务启动完后,登陆的时候总是显示:500 FTP server shut down

  (going down at Sat Oct 5 15:59:31 2002) —please try again later. 这是怎么回事啊?

  A:请您删除shutmsg文件,rm -f /etc/shutmsg

  Q:怎么把数据连接类型改成PASV?

  A:请您在proftpd.conf里添加PassivePorts 49152 65534

  Q:在shell下用了ftpshut后,再在shell下用proftpd命令后,总提示ERROR: Syntax error, command

  unrecognized.怎么办?

  A:请您使用ftprestart


如何让匿名用户使用proftpd服务器

建立一个用户,用户名为guest,然后在配置文件中使用下面的配置:

AnonRequirePassword off
User private
Group private
RequireValidShell off


DenyAll




如果要支持下载续传,那么必须指定:
AllowRetrieveRestart on
如果要支持上传续传,那么必须指定:
AllowOverwrite on
AllowStoreRestart on
必须同时指定AllowOverwrite和AllowStoreRestart的原因是由于重新上传或者续传也是属于覆盖文件。
同时记得不要同时使用HiddenStor和AllowStoreRestart。


在配置文件中设置:
ShowDotFiles on
这样就能通过ls看见以"."号开头的文件



proftpd如何实现磁盘限额

首先编译的时候指定--with-modules的时候要包含mod_quota。
然后在配置文件中使用:
Quotas on
QuotaCalc on
DefaultQuota 8000
QuotaBlockSize 1024
QuotaBlockName kb
就可以实现磁盘限额。其中DefaultQuota说明用户只能用8000个block,而QuotaBlockSize则指明每个block大小是1024byte也就是1k。QuotaBlockName只在提示中出现,告诉用户block的单位。



proftpd中MaxClients和MaxInstances有什么不同

为了有效利用系统资源,防止过多连接,有时候可以在proftpd.conf里面有这样的配置:
MaxClients 100
但是有时候却是看到这样的配置:
MaxInstances 100
这两个有什么区别呢?


MaxInstances设置的是proftpd产生的子进程的个数,而MaxClients限制的是登录用户的个数。而客户端只要产生一个连接,即使不登录,也会导致proftpd产生一个子进程。
如果配置文件中限制MaxClients 100的时候,第101个连上的用户会被提示允许连接的客户端个数已达上限,同时断开连接。而设置MaxInstances 100的时候,第101个连接的用户不会得到任何提示,而服务器拒绝接受任何连接。

阅读(1351) | 评论(0) | 转发(0) |
0

上一篇:AX3.0+HA+LVS

下一篇:自己的Gentoo,自己做

给主人留下些什么吧!~~