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

ProFTPd服务器安全加固设置

ProFTPD是针对Wu-FTP的弱项而开发的,除了改进的安全性,还具备许多Wu-FTP没有的特点,能以Stand-alone、xinetd模式运行等。ProFTP已经成为继Wu-FTP之后最为流行的FTP服务器软件,越来越多的站点选用它构筑安全高效的FTP站点,ProFTP配置方便,并有mysql和Qu

ProFTPD是针对Wu-FTP的弱项而开发的,除了改进的安全性,还具备许多Wu-FTP没有的特点,能以Stand-alone、xinetd模式运行等。ProFTP已经成为继Wu-FTP之后最为流行的FTP服务器软件,越来越多的站点选用它构筑安全高效的FTP站点,ProFTP配置方便,并有mysql和Quota模块可供选择,利用它们的完美结合可以实现非系统账号的管理和用户磁盘的限制。
  一、 ProFTPD服务面临的安全隐患

  ProFTPD服务面临的安全隐患主要包括:缓冲区溢出攻击(Buffer Overflow)、数据嗅探和匿名访问缺陷。

  1、缓冲区溢出攻击

  长期以来,缓冲区溢出已经成为计算机系统的一个问题。利用计算机缓冲区溢出漏洞进行攻击的最著名的案例是莫里斯蠕虫,发生在1988年11月。但即使其危害人所共知,缓冲区溢出仍然是现在入侵的一个重要手段。

  缓冲区溢出的概念:缓冲区溢出好比是将一百公斤货物放进一个只能装十公斤的容器里。缓冲区溢出漏洞是一个困扰了安全专家30多年的难题。简单来说,它是由于编程机制而导致的、在软件中出现的内存错误。这样的内存错误使得黑客可以运行一段恶意代码来破坏系统正常地运行,甚至获得整个系统的控制权。

  2、数据嗅探

  FTP是传统的网络服务程序,在本质上是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到"中间人"(man-in-the-middle)这种方式的攻击。

  所谓"中间人"的攻击方式,就是"中间人"冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被"中间人"转手后做了手脚之后,就会出现很严重的问题。 截获这些口令的方式主要为暴力破解。另外使用sniffer程序监视网络封包捕捉FTP开始的会话信息,便可顺手截获root密码。

  3. 匿名访问缺陷

  匿名访问方式在FTP服务当中被广泛的支持,但是由于匿名FTP不需要真正的身份验证,因此很容易为入侵者提供一个访问通道,配合缓冲区溢出攻击,会造成很严重的后果。

  4. 拒绝服务攻击

  拒绝服务是一种技术含量低,但攻击效果明显的攻击方式,受到这种攻击时,服务器或网络设备长时间不能正常提供服务,并且由于某些网络通讯协议本身固有的缺陷,难以提出一个行之有效的解决办法。防范拒绝服务攻击需要我们从全局去部署防御拒绝服务攻击策略,多种策略联动防范,将拒绝服务攻击的危害降至最低。

  二、 加固ProFTPD服务端

  1.升级版本

  升级陈旧的ProFTPD版本,因为早期的ProFTPD版本存在的安全漏洞。对于一个新配置的ProFTPD服务器来说使用最新稳定版本是最明智的选择,可以在其官方网站下载其源代码进行编译。ProFTPD最新版本是1.2.10,官方网址:http://www.ProFTPD.org .

  2.使用xinetd方式运行ProFTPD

  ProFTPD能以Stand-alone、xinetd两种模式运行,当用户账号比较少又经常需要连接到ProFTPD服务器时推荐使用xinetd模式运行。使用xinetd方式运行ProFTPD可以有效防范DoS攻击。

  从传统的守护进程的概念可以看出,对于系统所要通过的每一种服务,都必须运行一个监听某个端口连接所发生的守护进程,这通常意味着资源浪费。为了解决这个问题,一些Linux引进了"网络守护进程服务程序"的概念。Redhat linux 8.0以后的版本使用的网络守护进程是xinted(eXtended InterNET daemon)。和stand-alone模式相比xinted模式也称 Internet Super-Server(超级服务器)。

  xinetd能够同时监听多个指定的端口,在接受用户请求时,他能够根据用户请求的端口不同,启动不同的网络服务进程来处理这些用户请求。可以把xinetd看做一个管理启动服务的管理服务器,它决定把一个客户请求交给那个程序处理,然后启动相应的守护进程。xinetd模式工作原理见.


   xinetd模式网络服务

  和stand-alone工作模式相比,系统不想要每一个网络服务进程都监听其服务端口。运行单个xinetd就可以同时监听所有服务端口,这样就降低了系统开销,保护系统资源。但是对于访问量大、经常出现并发访问时,xinetd想要频繁启动对应的网络服务进程,反而会导致系统性能下降。察看系统为Linux服务提供那种模式方法在linux命令行可以使用pstree命令可以看到两种不同方式启动的网络服务。

  xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。能有效的防止拒绝服务攻击(Denial of Services):

  1、限制同时运行的进程数。

  通过设置instances选项设定同时运行的并发进程数:

  instances=20

  当服务器被请求连接的进程数达到20个时,xinetd将停止接受多出部分的连接请求。直到请求连接数低于设定值为止。

  2.限制一个IP地址的最大连接数:

  通过限制一个主机的最大连接数,从而防止某个主机独占某个服务。

  per_source=5

  这里每个IP地址可以连接单个IP地址的连接数是5个。3.限制负载。

  xinetd还可以使用限制负载的方法防范拒绝服务攻击。用一个浮点数作为负载系数,当负载达到这个数目的时候,该服务将暂停处理后续的连接:

  max_load = 2.8

  上面的例子中当一项系统负载达到2.8时,所有服务将暂时中止,直到系统负载下降到设定值以下。说明要使用这个选项,编译时要加入DDwith-loadavg,xinetd将而已处理max-load配置选项。从而在系统负载过重时关闭某些服务进程,来实现某些拒绝服务攻击。

  4.限制所有服务器数目(连接速率)。xinetd可以使用cps选项设定连接速率,下面的例子:

  cps = 25 60

  第一个参数表示每秒可以处理的连接数,如果超过了这个连接数之后进入的连接将被暂时停止处理;第二个参数表示停止处理多少秒后继续处理先前暂停处理的连接。即服务器最多启动25个连接,如果达到这个数目将停止启动新服务60秒。在此期间不接受任何请求。

  使用xinetd方式运行ProFTPD的步骤:

  (1)检查确省运行情况

  确省情况下ProFTPD以stand-alone工作模式运行,可以使用"ps aux| grep proftpd"命令查看进程号,然后使用kill命令中止运行。

  (2)修改配置文件

  修改/etc/proftpd.conf文件的ServerType选项由"standalone"改为"inetd".

  (3)建立用户组

  groupadd nogroup

  (4)创建配置文件/etc/xinetd.d/proftpd,

  service ftp

  {

  flags = REUSE socket_type = stream

  instances = 30

  cps = 25 60max_load = 3.0wait = no

  user = root server =

  /usr/local/sbin/proftpd

  log_on_success = HOST PID

  log_on_failure = HOST RECORD disable = no

  }

  (5)重新启动xinetd配置

  killall -USR1 xinetd

  (6)使用命令连接服务器

  可以使用"ftp localhost"连接本地服务器,如果连接被拒绝,可以使用命令:

  tail -f /var/log/messages


推荐阅读
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • ThinkPHP 数据库配置详解
    本文详细介绍了如何在 ThinkPHP 框架中正确配置数据库连接参数,包括数据库类型、服务器地址、数据库名称等关键配置项。 ... [详细]
  • PostgreSQL 最新动态 —— 2022年4月6日
    了解 PostgreSQL 社区的最新进展和技术分享 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
  • 如何从python读取sql[mysql基础教程]
    从python读取sql的方法:1、利用python内置的open函数读入sql文件;2、利用第三方库pymysql中的connect函数连接mysql服务器;3、利用第三方库pa ... [详细]
  • Eclipse 中 JSP 开发环境配置指南
    本文详细介绍了如何在 Eclipse 集成开发环境中配置 JSP 运行环境,包括必要的软件下载、Tomcat 服务器的配置以及常见问题的解决方法。 ... [详细]
author-avatar
百脑汇惠州店_956
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有