写这一系列文章的动因很简单,在年前最后一个项目的时候在客户现场做了的几个安全加固。由于时间问题,很多东西就拿来主义没经过思考直接更改了,并未细细品味其中的原理和方法,所以特地搭建实验环境,分析下其中的原因,也帮助IT运维的同事在平时的安全巡检与维护中能够关注与理解一些运维上的安全问题。

   FTP存在的安全问题

  • 匿名访问

   FTP匿名访问是FTP安全问题中最常见的问题,详情可以见wooyun。今天通过一天时间通过反复的复测,尝试,发现一个看似简单的FTP匿名访问实则存在很多隐藏的小坑。所以写出来帮助大家在安全运维的道路上能够更加游刃有余。

   首先是大家都知道的,以最常见的Linux FTP软件VSFTP为例,我们分析他的配置文件,发现涉及匿名访问的主要conf项有如下几项。

anonymous_enable=YES         是否允许FTP匿名访问登录
anon_upload_enable=YES   是否允许FTP匿名上传
anon_mkdir_write_enable=YES  是否允许FTP匿名用户创建目录

  

  (以下实验过程有些繁琐,了解的朋友可以直接看后面加粗字体结论)

    通常朴素的思维,我们把anonymous_enable配置项置为Off了,我们就可以解决匿名访问的问题。这句话这么说的确不假,但wooyun上大FTP匿名访问的数量不在少数,以及自己在做内网渗透时,内网的匿名访问问题更加严重。

   

  我经过多次试验,发现FTP匿名访问如果想造成实质危害需要满足很多条件,并非简简单单匿名登录了就能造成危害,以下为条件都需要满足才能造成实质危害:

  1. 配置文件三要素要满足,上文提到的vsftp.conf中的三个配置选项必须打开,这个是匿名访问的根本。我测试用的为Cent OS6.5通过yum安装的vsftpd发现配置文件conf中的默认匿名访问是开启的,若运维人员缺乏安全意识可能会导致匿名访问情况发生。
  2. 由于匿名访问需要Linux ftp账户登录,所以在var/ftp目录下,存在匿名登录的目录至少为755权限,否则匿名用户是无法上传与下载或读取相关文件。
  3. vsftp.conf中必须配置 anon_umask=022 才可造成真正的敏感文件读取泄露问题。我经过反复大量的实验发现,vsftpd上传文件的读写权限与不受系统的umask和原有配置文件中local_umask项影响,要想保证上传文件的可读可写性。必须要运维人员手动添加anon_umask值,来确保ftp目录下上传的文件可读可下载。

  结论:匿名访问无论在内网还是外网都应该被杜绝的,尤其wooyun上大量案例使用FTP匿名访问,通过实验应该是企业内部将FTP当做了一个便携式局域网“U盘”使用造成了相关的安全问题。

  • 未限制登录用户访问目录权限

  未限制FTP登陆用户在自己的家目录中活动,导致可遍历系统的敏感文件,若系统umask设置不当,可上传写入木马等。输入/etc发现目录依旧可以访问。导致服务器安全出现问题。

  

  vsftp默认登录,用户在home家目录下的ftpuser下。

  

  我们可以通过如下方法来加固,做法如很多博客文章介绍的一样,编辑vsftpd.conf目录下的文件特定配置如下:

  

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

  除了chroot_list中的用户都不能访问上级根目录,效果如下:

  

  将ftpuser添加进入,chroot_list再次实验,效果如下:

  

  

  以下是一些,自己在安全加固中FTP方面的一些浅显的认识,希望能帮助到大家。

  

  

  

  

  

  

浅谈运维中的安全问题-FTP篇的更多相关文章

  1. autohotkey在运维中的应用

         AutoHotkey是一个自由.开源的宏生成器和自动化软件工具,它让用户能够自动执行重复性任务.AutoHotkey可以修改任何应用程序的用户界面(例如,把默认的Windows按键控制命令替 ...

  2. linux运维中的命令梳理(一)

    在linux日常运维中,我们平时会用到很多常规的操作命令. 下面对常用命令进行梳理: 命令行日常系快捷键(不分大小写)CTRL + A 移动光标到行首CTRL + E 移动光标到行末CTRL + U ...

  3. 转: 浅谈C/C++中的指针和数组(二)

    转自:http://www.cnblogs.com/dolphin0520/archive/2011/11/09/2242419.html 浅谈C/C++中的指针和数组(二) 前面已经讨论了指针和数组 ...

  4. 转:浅谈C/C++中的指针和数组(一)

    再次读的时候实践了一下代码,结果和原文不一致 error C2372: 'p' : redefinition; different types of indirection 不同类型的间接寻址 /// ...

  5. 转载 浅谈C/C++中的static和extern关键字

    浅谈C/C++中的static和extern关键字 2011-04-21 16:57 海子 博客园 字号:T | T   static是C++中常用的修饰符,它被用来控制变量的存贮方式和可见性.ext ...

  6. DBA避坑宝典:Oracle运维中的那些事儿

    对于Oracle运维中的那些事儿,我的最终目的:不是比谁更惨,而是能够从中吸取经验和教训. 从我的理解来看,我会从下面的几个方面来进行说明DBA运维中的一些事儿. 每个部分都是非常关键的,缺一不可,而 ...

  7. 浅谈C语言中的强符号、弱符号、强引用和弱引用

    摘自http://www.jb51.net/article/56924.htm 浅谈C语言中的强符号.弱符号.强引用和弱引用 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2014- ...

  8. 漫谈ELK在大数据运维中的应用

    漫谈ELK在大数据运维中的应用 圈子里关于大数据.云计算相关文章和讨论是越来越多,愈演愈烈.行业内企业也争前恐后,群雄逐鹿.而在大数据时代的运维挑站问题也就日渐突出,任重而道远了.众所周知,大数据平台 ...

  9. 安全运维中基线检查的自动化之ansible工具巧用

    i春秋作家:yanzm 原文来自:安全运维中基线检查的自动化之ansible工具巧用 前几周斗哥分享了基线检查获取数据的脚本,但是在面对上百台的服务器,每台服务器上都跑一遍脚本那工作量可想而知,而且都 ...

随机推荐

  1. 解决Python中PyCharm导入模块时,模块名下出现红色波浪线的问题

    在博主第一次在PyCharm中导入模块时,模块名下出现红色波浪线,不影响程序执行,但强迫症忍不了 以下是解决办法 Let's do it ... 进入设置,找到Console下的Python Cons ...

  2. Redis 常用操作命令,非常详细!

    下面总结并演示了 Redis 的 常用管理命令.key 操作.字符串.集合.列表.散列类型的操作命令. 你需要掌握的 Redis 知识 史上最全 Redis 高可用解决方案总结 为什么分布式一定要有R ...

  3. mysql 开发进阶篇系列 43 逻辑备份与恢复(mysqldump 的基于时间和位置的不完全恢复)

    一. 概述 在上篇讲到了逻辑备份,使用mysqldump工具来备份一个库,并使用完全恢复还原了数据库.在结尾也讲到了误操作是不能用完全恢复的.解决办法是:我们需要恢复到误操作之前的状态,然后跳过误操作 ...

  4. mysql 开发基础系列8 表的存储引擎

    一. 表的存储引擎 1. 概述 插件式存储引擎是mysql数据库最重要的特性之一, 用户可以根据应用的需要选择如何存储和索引数据,是否使用事务等.在mysql 5.0里支持的引擎包括: MyISAM, ...

  5. 解决java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList的问题

    一.背景 最近闲来无事,想自己搭建一套Spring+SpringMVC+Mybatis+Mysql的环境(搭建步骤会在以后博客中给出),结果运行程序时,适用@ResponseBody注解进行返回Lis ...

  6. 项目ITP(三) 玩玩 服务端 到 app端

    前言 系列文章:[传送门] 泡泡脚,写写博客,规律生活,睡个好觉,待会看会书. 正文 上面讲了二维码生成,及 手机端扫一扫,大家有兴趣去看看. 今天我们讲一下,百度云推送平台. 每天想着问题,问题只会 ...

  7. 使用IntelliJ IDEA新建Java Web后端resfulAPI模板

    初始化项目 打开IntelliJ IDEA,我的版本是Version 2018.1.4.点击Create New Project.在左侧的列表中选择Maven.然后在右侧勾选Create from a ...

  8. PHP Socket 编程进阶指南

    学习准备 Linux 或者 Mac 环境: 安装有 Sockets 扩展: 了解 TCP/IP 协议. socket函数只是PHP扩展的一部分,编译PHP时必须在配置中添加 --enable-sock ...

  9. 在.net core 中PetaPoco结合EntityFrameworkCore使用codefirst方法进行开发

    在.net core开发过程中,使用最多的就是注入方法.但是在.net core使用PetaPoco时,PetaPoco还不支持进行注入方式进行处理一些问题. 今天对PetaPoco进行了一些扩展,可 ...

  10. Ubuntu16.04环境下搭建基于三台主机的mysql galera cluster集群(实测有效)

    (注意: (1)文中红色字体部分不一定需要操作 (2)由于word文档编辑的原因,实际操作时部分命令需要手动输入!!直接复制粘贴会提示错误!! ) 一  搭建环境: 1 Ubuntu16.04版本(系 ...