热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Linux中FTP服务器的安全设定

文章标题:Linux中FTP服务器的安全设定。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

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

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

  需求的网站拥有不同设定的选择。

  设定匿名FTP

  A.FTP daemon

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

  B设定匿名FTP的目录

  匿名ftp的根目录(~ftp)和其子目录的拥有者不能为ftp帐号,或与ftp相同群组的帐号。这是

  一般常见的设定问题。假如这些目录被ftp或与ftp相同群组的帐号所拥有,又没有做好防止写入的保护,入侵者便可能在其中增加文件(例如:。rhosts?n)或修改其它文件。许多网站?市硎褂?oot帐号。让匿名FTP的根目录与子目录的拥有者是root,所属族群(group)为system??⑾薅ù嫒∪?如chmod 0755),如此只有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.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/下的bin,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目录中。


推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • SAP羞辱国产软件商:技术停在10年前
    SAP中国研究院总裁芮祥麟表示,国产软件厂商过于热衷概念炒作,技术水平停留在10年前的客户端架构水平。他认为,国内厂商推出基于SOA的产品或转型SAAS模式是不可能的,研发新架构需要时间。当前最热门的概念是云计算,芮祥麟呼吁国产厂商应该潜心研发底层架构。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文讲述了孙悟空写给白骨精的信件引发的思考和反省。孙悟空在信中对自己的行为进行了反思,认识到自己胡闹的行为并没有给他带来实际的收获。他也揭示了西天取经的真相,认为这是玉皇、菩萨设下的一场陷阱。他还提到了师傅的虚伪和对自己的实心话,以及自己作为师傅准备提拔的对象而被派下来锻炼的经历。他认为路上的九九八十一难也都是菩萨算计好的,唐僧并没有真正的危险。最后,他提到了观音菩萨在关键时刻的指导。这封信件引发了孙悟空对自己行为的思考和反省,对西天取经的目的和自己的角色有了更深入的认识。 ... [详细]
  • Windows2003 IIS上设置301定向,实现不带www域名跳转带www域名的方法
    打开IIS,建一个网站,主机头用不带www的域名,随便指向一个目录。然后在这个网站上点右键,属性--主目录--重定向到URL如图ÿ ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • 本文详细介绍了使用 SQL Load 和 Excel 的 Concatenate 功能将数据导入 ORACLE 数据库的方法和步骤,同时介绍了使用 PL/SQL tools 将数据导入临时表的方法。此外,还提供了一个转链接,可参考更多相关内容。摘要共计XXX字。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 作者表示自己最近工作非常忙碌,无法抽出时间写作。他计划在未来的几天内写关于namespace与C#的名字解析以及数据库内容转化为excel文件下载的知识。 ... [详细]
author-avatar
工商领域LW
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有