频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

用vsftpd架设安全的FTP服务器

来源:Chinabyte 作者:1 出处:巧巧读书 2006-08-19 进入讨论组
关 键 词:access  cpu  director  dos  ftp  

  两种运行模式

  像其它守护程序一样,vsftpd提供了standalone和inetd(inetd或xinetd)两种运行模式。

简单解释一下,standalone一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,因此经常应用于对实时反应要求较高的专业FTP服务器。inetd恰恰相反,由于只在外部连接发送请求时才调用FTP进程,因此不适合应用在同时连接数量较多的系统。此外,inetd模式不占用系统资源。除了反应速度和占用资源两方面的影响外,vsftpd还提供了一些额外的高级功能,如inetd模式支持per_IP(单一IP)限制,而standalone模式则更有利于PAM验证功能的应用。

  1.inetd运行模式

  从某种inetd运行vsftpd可以提供一种不错的功能——per_IP连接限制。这也是vsftpd 1.1.3版本最新推出并推荐的一种运行模式。实现per_IP连接限制要依赖于vsftpd提供的tcp_wrappers支持。如果使用标准的“inetd”,需编辑/etc/inetd.conf文件,并添加下面一行代码:

  $ ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd

  确保删除或注释掉任何原存的FTP服务语句行。假如没有安装tcp_wrappers,或不需要使用它,可去掉“/usr/sbin/tcpd”部分。然后重载配置文件,命令如下:

  $ kill -SIGHUP 'pidof inetd'

  大多数较新的系统采用的是xinetd超级服务守护进程。使用“vi /etc/xinetd.d/vsftpd” 看一下它的内容,如下:

  disable = no

  socket_type = stream

  wait = no

  # 这表示设备是激活的,它正在使用标准的TCP Sockets。

  user = root

  server = /usr/local/sbin/vsftpd

  # 说明服务程序/usr/local/sbin/vsftpd已被用来控制FTP接入请求,并且该程序是作为root身份运行的(可能瞬间拥有过大的特权)。请确信已经把vsftpd二进制执行代码安装在了“/usr/local/sbin”目录下。

  per_source = 5

  instances = 200

  # 由于安全原因,从一个单一IP地址联入的最大允许数值是5。当前最大连接总数是200。

  no_access = 192.168.1.3

  # 地址192.168.1.3将被拒绝访问。

  banner_fail = /etc/vsftpd.busy_banner

  # 显示给用户当连接被禁止时的文件。不论因任何原因而被拒绝(太多用户,IP被禁止)。

  下面一行是产生的例子:

  echo "421 Server busy, please try later." > /etc/vsftpd.busy_banner

  log_on_success += PID HOST DURATION

  log_on_failure += HOST

  这将按照时间顺序日志所有尝试连接的IP地址,无论连接成功与否。假如连接启动了一个FTP服务,其进程ID和使用期也将被载入日志。如果使用的是Red Hat,这个日志信息将出现在/var/log/secure文件中。

  最后,重启xinetd,命令如下:

  $ /etc/rc.d/init.d/xinetd restart

  需要注意的是,“/etc/xinetd.d”目录中仅能开启一个FTP服务。

  2.standalone模式

  standalone模式便于实现PAM验证功能。进入这种模式首先要关闭xinetd下的vsftpd,设置“disable = yes”,或者注销掉“/etc/inetd.conf”中相应的行。然后修改“/etc/vsftpd.conf”中的选项为“listen=YES”。

  配置vsftpd.conf

  下面来了解一下核心配置文件vsftpd.conf。它的地址为“/etc/vsftpd.conf”,控制语句格式为“语句=值”,注意不要在格式间加入任何空格和标点符号。man手册页中把控制语句分为布尔类(值为YES或NO)、数字类(值为数字)和字符串类(值为字符串)三种。为了管理方便、思路清晰,按照访问权(Access rights)、安全(Security)、功能(Features)和性能(Performance)分成四大类。下面是一个样本配置文件内容,用来说明常用的控制语句:

  # Access rights

  anonymous_enable=YES

  /*若不想启用匿名访问请修改值为NO*/

  local_enable=NO

  /*关闭本地用户登陆服务,指所有非匿名用户*/

  write_enable=NO

  /*关闭任何用户的写权限*/

  anon_upload_enable=NO

  /*关闭匿名用户上传数据的能力*/

  anon_mkdir_write_enable=NO

  /*关闭匿名用户建立目录的能力*/

  anon_other_write_enable=NO

  /*关闭匿名用户执行建立和上传之外的写入类命令的操作,比如更

  改名字和删除操作的能力*/

  # Security

  anon_world_readable_only=YES

  /*开启匿名用户只能使用许可权为全部可读的资源*/

  connect_from_port_20=YES

  /*从标准端口20触发连接*/

  hide_ids=YES

  /*隐藏FTP服务器中用户的ID,用“FTP"取代*/

  pasv_min_port=50000

  pasv_max_port=60000

  /*设置pasv传输模式下的端口范围为50000-60000*/

  # Features

  xferlog_enable=YES

  /*开启日志,记录传输状态到文件/var/log/vsftpd.log*/

  ls_recurse_enable=NO

  /*关闭“ls -R"命令,该命令常被用于DoS攻击,非常浪费系统资源,

  但“mirror"镜像工具会用到它*/

  ascii_download_enable=NO

  /*关闭ASCII模式下载,防止被用于DoS攻击,ASCII下载很消耗CPU负担*/

  async_abor_enable=YES

  /*开启支持早期FTP客户端“async ABOR"命令的能力*/

  # Porformance

  one_process_model=YES

  /*开启每个IP单一进程模式,该模式仅支持具备一定能力的内核,

  比如linux kernel 2.4*/

  idle_session_timeout=120

  /*踢出空闲了两分钟后的用户*/

  data_connection_timeout=300

  /*踢出空闲了五分钟后的下载*/

  accept_timeout=60

  /*踢出挂起了一分钟后的passive连接*/

  connect_timeout=60

  /*踢出挂起了一分钟后的活动连接*/

  anon_max_rate=50000

  /*限止单个用户的下载速度为不超过50kbytes每秒*/

更多文章 更多内容请看FreeBSD系统安全管理  FTP的安全  FTP服务器专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
·路由安全配置专题 (11376篇文章)
·FTP服务器 (5813篇文章)
·打造安全服务器 (12814篇文章)
·服务器行业应用 (5344篇文章)
·服务器配件 (5481篇文章)
·服务器技术 (5344篇文章)
·服务器分类 (5344篇文章)
·MySQL安全 (9495篇文章)
·IMail服务器 (5432篇文章)
·电子邮件安全 (8020篇文章)
热点标签: access  cpu  director  dos  ftp  
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
百度推荐,商机无限
搜索您感兴趣的内容
 
Web 本站
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章