设为主页
加入收藏
联系我们
返回首页
 
 
网吧技术 网吧经营 网管心声 网吧名站
 
   
  您现在的位置>>首页>>网吧技术  
 
     
 

 

教你如何巧妙设定匿名 FTP 的安全

文章来源:中国站长学院


   在网络上,匿名 FTP 是一个很常用的服务,常用于软件下载网站,软件交流网站等,为了提高匿名 FTP 服务开放的过程中的安全性,我们就这一问题进行一些讨论。

   以下的设定方式是由过去许多网站累积的经验与建议组成。我们认为可以让有个别需求的网站拥有不同设定的选择。

   设定匿名 FTP

A.FTP daemon

   网站必须确定目前使用的是最新版本的 FTP daemon 。

B 设定匿名 FTP 的目录

   匿名 ftp 的根目录 (~ftp) 和其子目录的拥有者不能为 ftp 帐号,或与 ftp 相同群组的帐号。这是 一般常见的设定问题。假如这些目录被 ftp 或与 ftp 相同群组的帐号所拥有,又没有做好防止写入的保护,入侵者便可能在其中增加文件或修改其它文件。现在许多网站都拥有 root 帐号,如果让匿名 FTP 的根目录与子目录的拥有者是 root ,所属族群 (group) 为 system? ,如此只有 root 有写入的权力,这能帮助你维持 FTP 服务的安全 ???

   以下是一个匿名 ftp 目录的设定范例:

drwxr-xr-x 7 root system 512 Mar 1 15:17 ./

drwxr-xr-x 25 root system 512 Jan 4 11:30 ../

drwxr-xr-x 2 root system 512 Dec 20 15:43 bin/

drwxr-xr-x 2 root system 512 Mar 12 16:23 etc/

drwxr-xr-x 10 root system 512 Jun 5 10:54 pub/

   所有的文件和链接库,特别是那些被 FTP daemon 使用和那些在 ~ftp/bin 与 ~ftp/etc 中的文件,应该像上面范例中的目录做相同的保护。这些文件和链接库除了不应该被 ftp 帐号或与 ftp 相同群组的帐号所拥有之外,也必须防止写入。

C. 我们强烈建议网站不要使用系统中 /etc/passwd 做为 ~ftp/etc 目录中的密码文件或将系统中 /etc/group 做为 ~ftp/etc 目录中的群组文件。在 ~ftp/etc 目录中放置这些文件会使得入侵者取得它们。这些文件是可自定的而且不是用来做存取控制。

   我们建议你在 ~ftp/etc/passwd 与 ~ftp/etc/group 使用代替的文件。这些文件必须由 root 所拥有。 DIR 命令会使用这代替的文件来显示文件及目录的拥有者和群组名称。网站必须确定 ~/ftp/etc/passwd 档中没有包含任何与系统中 /etc/passwd 文件中相同的帐号名称。这些文件应该仅仅包含需要显示的 FTP 阶层架构中文件与目录的拥有者与所属群组名称。此外,确定密码字段是 " 整理 " 过的。例如使用「 * 」来取代密码字段。

   以下为 cert 中匿名 ftp 的密码文件范例

ssphwg:*:3144:20:Site Specific Policy Handbook Working Group::

cops:*:3271:20:COPS Distribution::

cert:*:9920:20:CERT::

tools:*:9921:20:CERT Tools::

ftp:*:9922:90:Anonymous FTP::

nist:*:9923:90:NIST Files::

   以下为 cert 中匿名 ftp 的群组文件范例

cert:*:20:

ftp:*:90:

II.. 在你的匿名 ftp 提供可写入的目录

   让一个匿名 ftp 服务允许使用者储存文件是有风险存在的。我们强烈提醒网站不要自动建立一个上传目录,除非已考虑过相关的风险。 CERT/CC 的事件回报成员接获许多使用上传目录造成非法传输版权软件或交换帐号与密码信息的事件。也接获恶意地将系统文件灌报造成 denialof service 问题。

  本节在讨论利用三种方法来解决这个问题。第一种方法是使用一个修正过的 FTP daemon 。第二个方法是提供对特定目录的写入限制。第三种方法是使用独立的目录。

A. 修正过的 FTP daemon

   假如你的网站计划提供目录用来做文件上传,我们建议使用修正过的 FTP daemon 对文件上传的目录做存取的控制。这是避免使用不需要的写入区域的最好的方法。以下有一些建议:

1. 限定上传的文件无法再被存取, 如此可由系统管理者检测后,再放至于适当位置供人下载。

2. 限制每个联机的上传资料大小。

3. 依照现有的磁盘大小限制数据传输的总量。

4. 增加登录记录以提前发现不当的使用。

   若您欲修改 FTP daemon , 您应该可以从厂商那里拿到程序代码, 或者您可从下列地方取得公开的 FTP 程序原始码 :

wuarchive.wustl.edu ~ftp/packages/wuarchive-ftpd

ftp://ftp.uu.net/~ftp/systems/unix/bsd-sources/libexec/ftpd

gatekeeper.dec.com ~ftp/pub/DEC/gwtools/ftpd.tar.Z

CERT/CC 并没有正式地对所提到的 FTP daemon 做检测、评估或背书。要使用何种 FTP daemon 由每个使用者或组织负责决定,而 CERT/CC 建议每个机关在安装使用这些程序之前, 能做一个彻底的评估。

B. 使用保护的目录

   假如你想要在你的 FTP 站提供上传的服务, 而你又没办法去修改 FTP daemon , 我们就可以使用较复杂的目录架构来控制存取。这个方法需要事先规划并且无法百分之百防止 FTP 可写入区域遭不当使用, 不过许多 FTP 站仍使用此方法。

   为了保护上层的目录 (~ftp/incoming) , 我们只给匿名的使用者进入目录的权限 (chmod 751~ftp/incoming) 。这个动作将使得使用者能够更改目录位置 (cd) ,但不允许使用者检视目录内容。 Ex:

drwxr-x--x 4 root system 512 Jun 11 13:29 incoming/

   在 ~ftp/incoming 使用一些目录名只让你允许他们上传的人知道。为了要让别人不易猜到目录名称, 我们可以用设定密码的规则来设定目录名称。请不要使用本文的目录名称范例 ( 避免被有心人士发现您的目录名, 并上传文件 )

drwxr-x-wx 10 root system 512 Jun 11 13:54 jAjwUth2/

drwxr-x-wx 10 root system 512 Jun 11 13:54 MhaLL-iF/

   很重要的一点是,一旦目录名被有意无意的泄漏出来, 那这个方法就没什么保护作用。只要目录名称被大部分人知道, 就无法保护那些要限定使用的区域。假如目录名被大家所知道,那你就得选择删除或更改那些目录名。

C. 只使用一颗硬盘 :

   假如你想要在你的 FTP 站提供上传的服务, 而你又没办法去修改 FTP daemon ,您可以将所有上传的资料集中在同一个挂 (mount) 在 ~ftp/incoming 上的文件系统。可以的话 ,将一颗单独的硬盘挂 (mount) 在 ~ftp/incoming 上。系统管理者应持续检视这个目录 (~ftp/incoming) , 如此便可知道开放上传的目录是否有问题。

   限制 FTP 用户目录

   匿名 FTP 可以很好地限制用户只能在规定的目录范围内活动,但正式的 FTP 用户默认不会受到这种限制,这样,他可以自由在根目录、系统目录、其他用户的目录中读取一些允许其他用户读取的文件。

   如何才能把指定的用户象匿名用户一样限制在他们自己的目录中呢?以下我们以 red hat 和 wu-ftp 为例做一介绍。

1 创建一个组,用 groupadd 命令,一般可以就用 ftp 组,或者任何组名 .

----- 相关命令 : groupadd ftpuser

----- 相关文件 : /etc/group

----- 相关帮助 : man groupadd

2 创建一个用户,如 testuser ,建立用户可用 adduser 命令 . 如果你已在先前建立了 testuser 这个用户,可以直接编辑 /etc/passwd 文件,把这个用户加入到 ftpuser 这个组中 .

----- 相关命令 : adduser testuser -g ftpuser

----- 相关文件 : /etc/passwd

----- 相关帮助 : man adduser

3 修改 /etc/ftpaccess 文件,加入 guestgroup 的定义: guestgroup ftpuser 我是这样改的,加的是最后 5 行

compress yes all

tar yes all

chmod no anonymous

delete no anonymous

overwrite no anonymous

rename no anonymous

chmod yes guest

delete yes guest

overwrite yes guest

rename yes guest

guestgroup ftpuser

   除了加 guestgroup ftpuser 这行,其他 4 行也要加上,否则用户登陆后,虽然可以达到用户不能返回上级目录的目的,但是却只能上传,不能覆盖、删除文件 !


----- 相关命令 : vi /etc/ftpaccess

----- 相关文件 : /etc/ftpaccess

----- 相关帮助 : man ftpaccess , man chroot

4 向这个用户的根目录下拷贝必要的文件,拷贝 ftp server 自带的目录,把 /home/ftp/ 下的B in , lib 两个目录拷贝到这个用户的根目录下,因为一些命令 ( 主要是 ls) 需要 Lib 支持,否则不能列目录和文件 .

----- 相关命令 :

cp -rf /home/ftp/lib /home/testuser;cp -rf /home/ftp/bin /home/testuser

5 另外可别忘了关掉用户的 telnet 权,否则就白做了噢 . 怎么不让用户 telnet 呢 ? 很简单 : 在 /etc/shells 里加一行 /dev/null ,然后可以直接编辑 /etc/passwd 文件,把用户的 shell 设置为 /dev/null 就可以了 .

----- 相关命令 : vi /etc/passwd

   这一步可以在步骤 2 创建一个用户时就先做好 .

----- 相关命令 : adduser testuser -g ftpuser -s /dev/null

   小经验 : 只要把 /home/ftp 下的 bin 和 lib 目录 cp 到 /etc/skel 目录里,以后新建用户都会自动把 bin 和 lib 目录 CP 到用户目录里,当然你也可以加上 public_html 目录和 cgi-bin 目录 .

   经过以上设置, testuser 这个用户的所有 FTP 动作将限制在他的 /home/testuser 目录中


【本站声明】本站刊载的部分内容全部来源互联网,对于此类文章本站仅提供交流平台,不为其版权负责。如涉及侵犯您的知识产权的文章,请联系我们,我们将尽快做出更正。并向您表示感谢!同时特别感谢对本站所有支持的网友。

 
 
综合搜索 百度 google 爱问 搜狗 中搜 雅虎 MP3 图片 flash 视频
您好!中国好用是残疾人创办站,欢迎你设为首页,你每一次的使用,就是一份爱心,对我们来说就是一份希望......