写这一系列文章的动因很简单,在年前最后一个项目的时候在客户现场做了的几个安全加固。由于时间问题,很多东西就拿来主义没经过思考直接更改了,并未细细品味其中的原理和方法,所以特地搭建实验环境,分析下其中的原因,也帮助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. Kali学习笔记36:AVWS10的使用

    AVWS是一款商业Web扫描工具 适用于Windows操作系统 功能强大,必须掌握 AVWS11以上是Web形式,AVWS10是桌面应用形式 下载安装破解这些基本操作就不说了,百度即可 从安装好开始: ...

  2. Mysql学习笔记整理手册

    目录 (1) str_to_date (2) 递归查询 (3) 排序问题 (4) 条件函数 (5) 列转行函数 (6) find_int_set (7) 类型转换函数 (8) 合并更新 继上一篇博客& ...

  3. 在 .NET Core 下的 Swagger UI 自定义操作

    1.Swagger UI 是什么? Swagger UI 是一个在线的 API 文档生成与测试工具,你可以将其集成在你的 API 项目当中. 支持 API 自动同步生成文档 高度自定义,可以自己扩展功 ...

  4. HTTP/2协议–特性扫盲篇

    HTTP/2协议–特性扫盲篇 随着web技术的飞速发展,1999年制定的HTTP 1.1已经无法满足大家对性能的要求,Google推出协议SPDY,旨在解决HTTP 1.1中广为人知的性能问题.SPD ...

  5. 【转载】“宇宙最强” IDE,Visual Studio 2019 正式发布

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 本文由葡萄城翻译并发布 今天凌晨Visual Studio 2019已经正式发布,现在已经可以下载了.使用V ...

  6. [NewLife.XCode]实体列表缓存(最土的方法实现百万级性能)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

  7. C# 获取 sha256

    C# 获取 sha256, 输入可以是 字符串,也可以是 字节流流: 自定义的输入类型的枚举: public enum Sha26ParseType { StringType, StreamType ...

  8. 一个注意事项:内部类引用的外部变量必须是final的

    之前写过一个项目,好久没更新了,最近翻起以前的代码,发现在这里报了一个错.(现在转到Intellij了,从前在Eclipse luna中是可以编译通过的,Eclipse mars也会报错,JDK版本都 ...

  9. 从2PC到Paxos

    在分布式系统中,一个事务可能涉及到集群中的多个节点.单个节点很容易知道自己执行的事务成功还是失败,但因为网络不可靠难以了解其它节点的执行状态(可能事务执行成功但网络访问超时). 若部分节点事务执行失败 ...

  10. python模块之xml

    xml模块 xml结构 xml是种实现不同语言或程序之间进行数据交换的协议,跟json差不多,但没json使用简单.但是因为历史遗留问题,至今很多行业依然使用xml这种数据格式. xml的格式如下,是 ...