热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ProFTPd服务器的安装及使用

一.proftpd简介proftpd是一款开放源码的ftp服务器软件,它是原来世界范围使用最广泛的wu-ftpd的改进版,它修正了wu-ftpd的许多缺陷,在许多方面进行了重大的改进,其中一个重要变化就是它学习了Apache的配置方式,使proftpd的配置和管理更加简单易懂。本

一. proftpd 简介


  proftpd是一款开放源码的ftp服务器软件,它是原来世界范围使用最广泛的wu-ftpd的改进版,它修正了wu-ftpd的许多缺陷,在许多方面进行了重大的改进,其中一个重要变化就是它学习了Apache 的配置方式,使proftpd的配置和管理更加简单易懂。本文将介绍它在Red hat Linux 9中最基本的安装和配置。


  二.软件的相关资源


  官方网站:http://www.proftpd.org/


  源码软件包:proftpd是开源的软件,可以去其官方网站下载。目前最新稳定版本为1.2.10。


  帮助文档: 该软件包中包含。


  FAQ:该软件包中包含。


  配置文件样例:该软件包中包含。


  三.软件的安装


  1.安装


  由其官方网站中下载其源码软件包proftpd-1.2.10. tar.gz。接下来我将对安装过程的一些重要步骤,给出其解释:


  [root@localhost root]

  #tar xzvf proftpd-1.2.10. tar.gz

  [root@localhost root]

  #cd bind-9.3.1

  [root@localhost bind-9.3.1]

  #./configure

  [root@localhost bind-9.3.1]

  #make

  [root@localhost bind-9.3.1]

  #make install



  tar xzvf bind-9.3.1.tar.gz 解压缩软件包。


  ./configure 针对机器作安装的检查和设置,大部分的工作是由机器自动完成的,但是用户可以通过一些参数来完成一定的设置,其常用选项有:


  ./configure --help 察看参数设置帮助。


  --enable-ipv6 支持ipv6。


  可以设置的参数很多,可以通过 -help察看需要的,一般情况下,默认设置就可以了。


  默认情况下,安装过程应该建立了:


  proftpd的deamon为/usr/local/sbin/proftpd


  proftpd的配置文件,/usr/local/etc/proftpd.conf。


  2.启动:


  [root@localhost root]

  # /usr/local/sbin/proftpd -c

  /usr/local/etc/proftpd.conf



  -c选项用来指定配置文件的位置,不指定的话默认位置是 /usr/local/etc/proftpd.conf 。


  正常情况下proftpd应该启动了,ps aux 应该可以查到proftpd的进程,或netstat -an 也可以看到21端口的服务已经起来了。(ftp默认端口)


  如果要设置开机自启动ftp server,只需在/etc/rc.d/rc.local中加入一行


  /usr/local/sbin/proftpd


  #!/bin/sh

  #

  # This script will be executed

  *after* all the other init scripts.

  # You can put your own

  initialization stuff in here if you don't

  # want to do the full Sys V style init stuff.

  touch /var/lock/subsys/local

  /usr/local/sbin/proftpd



  四.软件的配置


  1.初始配置文件


  默认配置文件的位置为:


  /usr/local/etc/proftpd.conf (如果文件不存在可以从压缩包中把配置文件样例拷贝过来即可)下面逐项分析其中一些常选项:(#后面的部分是注释)


  # This is a basic ProFTPD

  configuration file

  (rename it to

  # 'proftpd.conf' for actual use.

  It establishes a single server

  # and a single anonymous login.

  It assumes that you have a user/group

  # "nobody" and "ftp" for normal

  operation and anon.


  ServerName       "

  ServerType

  standalone

  DefaultServer

  on

  # Port 21 is the standard FTP port.

  Port 21


  ServerType 指定FTP Server 的启动类型,一般使用standalone方式比较简单,如果访问量不大,为节省资源考虑用xinetd侦听启动,必须在这里指定。Port 指定FTP的侦听端口,一般使用21端口



  # Umask 022 is a good standard

  umask to prevent new dirs and files

  # from being group and world writable.

  Umask       022


  # To prevent DoS attacks, set the

  maximum number of child processes

  # to 30. If you need to allow

  more than 30 concurrent connections

  # at once, simply increase this value.

  Note that this ONLY works

  # in standalone mode, in inetd mode

  you should use an inetd server

  # that allows you to limit maximum

  number of processes per service

  # (such as xinetd).

  MaxInstances    30



  Umask 指定FTP server 进程的Umask 值,022与Linux系统得默认值一致。


  MaxInstances 指定 FTP server 的最大连接数。


  # Set the user and group under

  which the server will run.

  User     nobody

  Group     nogroup

  # To cause every FTP user to be

  "jailed" (chrooted) into their home

  # directory, uncomment this line.

  #DefaultRoot ~

  DefaultRoot



  User 和Group 指定proftpd 进程启动时的有效用户ID,处于安全考虑默认的身份是nobody,有一点要指出的是,一般Red Linux 9.0 中默认是没有nogroup 这个组的,把Group指定为nobody 即可。


  DefaultRoot 选项限制Linux 系统用户通过FTP方式登录时将被限制在其home 目录下。



  # Set the maximum number of seconds

  a data connection is allowed

  # to "stall" before being aborted.

  #TimeoutStalled         300


  AllowRetrieveRestart       on

  AllowStoreRestart        on


  # Normally, we want files to be overwriteable.


  AllowOverwrite        on



  TimeoutStalled 指定一个连接的超时时间。


  AllowRetriveRestart 和AllowStroeRestart 指定允许断点续传。



  User       ftp

  Group      ftp


  # We want clients to be able to

  login with "anonymous"

  as well as "ftp"

  UserAlias    anonymous ftp

  # Limit the maximum number of anonymous logins

  MaxClients          10

  # We want 'welcome.msg' displayed

  at login, and '.message' displayed

  # in each newly chdired directory.

  DisplayLogin    welcome.msg

  DisplayFirstChdir  .message

  # Limit WRITE everywhere

  in the anonymous chroot


  DenyAll




  这一部分,将在后面详细介绍。


  2.配置文件结构分析


  #全局设置

  设置项目1 参数1

  设置项目2 参数2


  #某个目录的设置


  ...

  ...



  #关于匿名登陆的设置


  ...

  ...


  ...

  ...




  常用全局设置


  DefaultRoot ~ # 限制每个FTP用户在自己的目录下,不可查看上一级目录


  AllowRetrieveRestart on #下载时,允许断点续传


  AllowStoreRestart on #上传时,允许断点续传


  ServerIdent off #屏蔽服务器版本信息


  TransferRate STOR|RETR 速度(Kbytes/s) user 使用者 #设定用户传输速率


  MaxHostsPerUser 1 #每个帐户最多允许来源ip为1个, 对防止ftp帐号还是比较有用的。


  MaxClientsPerUser 1 #每个帐户在每个客户端最多可以同时登陆1次,可以防止多线程软件下载对服务器的破坏


  MaxClientsPerHost 1 #同一个客户端只能最多1个帐号可以登陆


  WtmpLog on #是否要把ftp记录在日志中,如果不想可以设置成off屏蔽掉log日志。


  TimeoutIdle 600 #客户端idle时间设置,默认就是600秒


  DisplayLogin welcome.msg #设置ftp登陆欢迎信息文件


  RootLogin on #允许root用户登录,默认是不允许的,安全起见不推荐此选项。


  欢迎词设置


  关于欢迎文件的设置包含如下参数:


  %T 目前的时间


  %F 所在硬盘剩下的容量


  %C 目前所在的目录


  %R Client 端的主机名称


  %L Server 端的主机名称


  %U 使用者帐户名称


  %M 最大允许连接人数


  %N 目前的服务器连接人数


  %E FTP服务器管理员的 email


  %i 本次上传的文件数量


  %o 本次下载的文件数量


  %t 本次上传+下载的文件数量


  知道这些参数,可以写出一个友好的欢迎语文件,例如:


  欢迎您%

  1.隐藏ProFTPD服务器版本信息

    通常软件的BUG信息是和特定版本相关的,因此版本号是黑客寻求最有价值的信息。隐藏ProFTPD版本号比较简单,修改配置文件:/etc/Proftpd.conf:

ServerIdent off

    2.伪装ProFTPD服务器

    Windows下的FTP服务多是Serv-U,可以把ProFTPD伪装为Serv-U,方法是修改配置文件proftpd.conf,添加如下内容:

ServerIdent on \"Serv-U FTP Server v5.0 for WinSock ready...\"

存盘退出后,重新启动proftpd服务,登录到修改了提示信息的FTP服务器进行测试:

C:\\>ftp 192.168.0.1

Connected to 192.168.0.1.

220 Serv-U FTP Server v5.0 for WinSock ready...

User (192.168.0.1:(none)):

331 Password required for (none).

Password:

530 Login incorrect.

Login failed.

ftp > quit

221 Goodbye.

    这样从表面上看,服务器就是一个运行着Serv-U的Windows了。

    3. 使用非root权限运行ProFTPD

    以非root权限运行ProFTPD 。修改配置文件:/etc/Proftpd.conf:

User nobody      #设置FTP服务以nobody运行

Group nogroup        #注意:原来是“Group nobody”,一定要改为“Group nogroup ”

上面的配置表示以nobody用户身份运行ProFTPD服务器 。使用nobody身份运行能够降低缓冲区溢出攻击所带来的危险。

    4.监控ProFTPD服务器运行情况

    通常新部署一个ProFTPD服务器之后需要进行一段时间的监控:记录FTP连接记录、谁连接到我的FTP服务器。Proftpd本身附带了几个命令可以使用。

    (1) 记录FTP连接数

    使用usr/local/bin/ftpcout命令,可以显示FTP服务器连接用户数量信息。 我们还可以使用watch命令配合使用,运行下面命令:

watch -n 360 /usr/local/bin/ftpcount

    这个命令每三百六十秒显示一次连接用户数量的信息。

    (2) 查找谁与FTP服务器连接

    使用usr/local/bin/ftpwho命令可以显示谁连接到FTP服务器。一个简单的输出如下:

Master proftpd process 8322:

8387 0m1s proftpd: sheila - reboot.intevo.com: IDLE

8341 3m59s proftpd: kabir - k2.intevo.com: IDLE

- - 2 users

    以上输出显示有两个用户(sheila和kabir)从不同的计算机连接到FTP服务器,输出内容还包括:为这些用户服务的ProFTPD的进程和主ProFTPD的进程ID。


推荐阅读
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • Valve 发布 Steam Deck 的新版 Windows 驱动程序
    Valve 最新发布了针对 Steam Deck 掌机的 Windows 驱动程序,旨在提升其在 Windows 环境下的兼容性、安全性和性能表现。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
author-avatar
思路
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有