通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 爱心红客 电信网通铁通移动 在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 > 文章类 > 安全防御 > 安全相关 > 文章正文
OpenBSD自带ftpd程序搭建ftp服务器
责任编辑:酷酷の鱼   更新日期:2008-7-15
 

来源:安全中国

写在前面

  本文参考OpenBSD 3.8的官方FAQ文档和ftpd的man文档写成,更全面的信息请参看这两个文件。

  ·FAQ: Setting up Anonymous FTP Services

  ·Manual Page: ftpd

  所有操作均在OpenBSD 3.8 Release上测试通过。

  注:本文可以任意转载,但请保留作者信息,谢谢。

  ftpd的三种启动方式

  OpenBSD的ftpd程序没有配置文件,就靠设置运行参数进行配置。所有参数的

  含义都可以在ftpd 的man文档中获得详细信息:

  $Content$nbsp;man ftpd

  ftpd程序的启动有三种方法:

  ·inetd方式

  ·’rc’方式

  ·直接在命令行下执行ftpd命令

  1、inetd方式

  在’etc/inetd.conf’文件中有这么一行:

  ftp stream tcp nowait root /usr/libexec/ftpd ftpd -US

  这里为’ftpd’传递了两个参数’-US’。当然,你还可以组合自己想要的参数。

  (一些常用参数的含义已在下文给出)。使用inetd方式,ftpd由inetd进程管

  理,所以需要启动inetd服务才能启动ftpd。在OpenBSD的默认设置中,inetd被

  配置为随系统启动。查看’/etc/rc.conf’中的’inetd’变量的值:

  inetd=YES

  2、’rc’方式

  所谓’rc’方式,指的就是通过修改’/etc/rc.conf’或者’/etc/rc.conf.local’文件中变

  量的值,为服务的启动添加’entry’,使服务能够随系统启动。使用’rc’方式启

  动fttpd,只需要将’/etc/rc.conf’中的’ftpd_flags’变量设置为自己组合好的参数

  即可。这种方法需要在系统重启后服务才会随系统启动(这里的参数暂时使用

  与’inetd’方式相同的参数):

  ftpd_flags="-US"

  3、直接在命令行执行ftpd命令

  这种方法的好处是不需要重新启动系统就可以启动ftpd服务

  # /usr/libexec/ftpd -4DllUS

  停止ftpd

  1、’/etc/rc.conf’

  如果不需要ftpd随系统启动,则在’/etc/rc.conf’文件中将’ftpd_flags’变量的值设

  置为"NO"”:

  ftpd_flags="NO"

  2、# kill PID

  如果需要现在就结束ftpd进程,则使用kill PID"的方式来实现:

  # kill $(cat /var/run/ftpd.pid)

  ftpd常用参数

  以下是ftpd 常用的一些参数(这里列出的只是常用的,并不是全部。更多的参

  数请查看OpenBSD 的Manual Page。

  · -4 如果指定了-D"参数,则强制ftpd 只使用IPv4地址。

  · -6 和-4"的解释类似;如果指定了-D"参数,则强制ftpd只使用IPv6地址。

  · -A 只允许匿名登录(除非指定了-n"选项)。

  · -D 如果指定了该参数,ftpd 将做为daemon运行,监听ftpd 端口并且fork子进程对连接进行处理。在繁忙的服务器上,这样可以减少系统负载,与使用inetd 方式启动ftpd比起来,这种方式使用更少的系统资源。

  · -d 使用LOG FTP将Debug信息写入syslog。

  · -l 每个成功和失败的ftp session 都将由LOG FTP 工具通过syslog记录下日志。如果这个选项被指定两次(-ll),所有get/put/append/delete/make、 directory/remove、dire操作以及所操作的文件都将被记录进日志。

  · -U 每个并发的ftp session都被记录到日志文件/var/run/utmp,记录的格式就象who(1)命令的输出一样。

  · -n 禁止匿名登录。默认是允许的。

  · -S 如果设置了这个参数,ftpd 将会把所有匿名用户的下载情况记录在文件/var/log/ftpd 中(如果该文件存在的话)。

  · -T maxtimeout 连接超时的时间限制。默认是2小时。

  · -u mask 强制设置umask为指定的mask。而不是使用/etc/login.conf 中的设置(/etc/login.conf 中通常设置为022),并且不允许chmod。

  常用参数组合

  看了上面几个常用选项的含义,你应该可以组合出合适的选项来满足自己的功能需求了。

  1、只允许使用系统帐号登录FTP

  因为匿名用户登录需要使用到系统中的一个名为"ftp"的帐户(更多关于该帐户的描述,请看本文下半部分),而OpenBSD系统中默认没有该帐户,需要手动建立并且设置正确的权限,所以如果只允许用户通过系统帐号登录FTP服务器,则只需要在/etc/rc.conf 中将ftpd °ags 的值简单地设置为"-D"即可(虽然这时候的设置仍然允许匿名用户登录,但是因为系统中没有"ftp"用户,所以无法登录)。当然你也可以多设置一些参数。比如:

  ftpd °ags="-4DllUSn"

  参考上面几个常用选项的说明,你就会明白这是什么意思了。

  2、允许匿名用户登录访问FTP资源

  因为匿名用户登录到FTP服务器后,实际上是以ftp"用户的身份进行所有操作,所以出于安全考虑,这个用户的权限通常被设置得很低。比如:

  · 不为该用户提供一个可用的shell,使其无法登录系统;

  · 没有一个可用的密码(即FAQ上说的"This account shouldn’t have a usable password;");

  · 登录系统后被chroot;

  · ...... 

  接下来我们要做的就是按照上面列出的三个要求来添加和设置这个低权限、处处受限的"ftp"用户。

  1、添加"ftp"帐户以提供匿名访问

  在/etc/shells中添加一个无法实际使用的shell设置"ftp"使用这个shell的目的,是不允许它通过shell登录到系统中。通常我们会有两种选择:

  · /sbin/nologin

  · /usr/bin/false

  为了在添加用户时可以使用这两个shell,我们可以这样做:

  # echo ’/sbin/nologin’ >>/etc/shells

  # echo ’/usr/bin/false’ >>/etc/shells

  或者在未将它们加入到/etc/shells的情况下,在使用adduser添加帐户时加上"-shell"参数:

  # adduser -shell /sbin/nologin

  Enter username []: ftp

  Enter full name []: anonymous ftpd user

  Enter shell bash csh ksh nologin sh [/sbin/nologin]:

  ......

[1] [2] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    推荐文章 瑞星公司07月17日发布 每日计算机病毒及木马播报
    普通文章 安全杂谈:网游帐号被盗后的解决办法
    普通文章 安全精彩:走出误区 真正黑客是门艺术
    推荐文章 安全杂谈:并非万能的防火墙也有漏洞
    普通文章 安全宝典:小心启动项 保护系统安全
    普通文章 安全策略:深度保护企业敏感数据
    普通文章 解决QQ收不到图片问题的小技巧
    普通文章 简单不求人 轻松让你击破ATA硬盘密码
    普通文章 中国的“黑客辣妹”
    普通文章 生物识别加密应用前景可观
    热门文章
    普通文章“雅虎助手”正式向“360卫士”致歉
    普通文章以奥运名义传播新病毒 正席卷全球
    普通文章散播奥运和天灾谣言 暴风僵尸欲借尸还魂
    普通文章网站安全堪忧 完善检测机制是唯一出路
    普通文章趋势CEO:病毒产业糟糕透顶
    普通文章微点主动防御软件三年磨难后正式上市
    普通文章恶意网站调查:10大网络托管半数恶意网站
    普通文章微软发布3款SQL INJECTION攻击检测工具
    普通文章ICANN主页被黑客篡改
    推荐文章推荐:详解还原系统保护技术原理和攻防
    精彩专题