浅谈运维中的安全问题-FTP篇
写这一系列文章的动因很简单,在年前最后一个项目的时候在客户现场做了的几个安全加固。由于时间问题,很多东西就拿来主义没经过思考直接更改了,并未细细品味其中的原理和方法,所以特地搭建实验环境,分析下其中的原因,也帮助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匿名访问如果想造成实质危害需要满足很多条件,并非简简单单匿名登录了就能造成危害,以下为条件都需要满足才能造成实质危害:
- 配置文件三要素要满足,上文提到的vsftp.conf中的三个配置选项必须打开,这个是匿名访问的根本。我测试用的为Cent OS6.5通过yum安装的vsftpd发现配置文件conf中的默认匿名访问是开启的,若运维人员缺乏安全意识可能会导致匿名访问情况发生。
- 由于匿名访问需要Linux ftp账户登录,所以在var/ftp目录下,存在匿名登录的目录至少为755权限,否则匿名用户是无法上传与下载或读取相关文件。
- 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篇的更多相关文章
- autohotkey在运维中的应用
AutoHotkey是一个自由.开源的宏生成器和自动化软件工具,它让用户能够自动执行重复性任务.AutoHotkey可以修改任何应用程序的用户界面(例如,把默认的Windows按键控制命令替 ...
- linux运维中的命令梳理(一)
在linux日常运维中,我们平时会用到很多常规的操作命令. 下面对常用命令进行梳理: 命令行日常系快捷键(不分大小写)CTRL + A 移动光标到行首CTRL + E 移动光标到行末CTRL + U ...
- 转: 浅谈C/C++中的指针和数组(二)
转自:http://www.cnblogs.com/dolphin0520/archive/2011/11/09/2242419.html 浅谈C/C++中的指针和数组(二) 前面已经讨论了指针和数组 ...
- 转:浅谈C/C++中的指针和数组(一)
再次读的时候实践了一下代码,结果和原文不一致 error C2372: 'p' : redefinition; different types of indirection 不同类型的间接寻址 /// ...
- 转载 浅谈C/C++中的static和extern关键字
浅谈C/C++中的static和extern关键字 2011-04-21 16:57 海子 博客园 字号:T | T static是C++中常用的修饰符,它被用来控制变量的存贮方式和可见性.ext ...
- DBA避坑宝典:Oracle运维中的那些事儿
对于Oracle运维中的那些事儿,我的最终目的:不是比谁更惨,而是能够从中吸取经验和教训. 从我的理解来看,我会从下面的几个方面来进行说明DBA运维中的一些事儿. 每个部分都是非常关键的,缺一不可,而 ...
- 浅谈C语言中的强符号、弱符号、强引用和弱引用
摘自http://www.jb51.net/article/56924.htm 浅谈C语言中的强符号.弱符号.强引用和弱引用 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2014- ...
- 漫谈ELK在大数据运维中的应用
漫谈ELK在大数据运维中的应用 圈子里关于大数据.云计算相关文章和讨论是越来越多,愈演愈烈.行业内企业也争前恐后,群雄逐鹿.而在大数据时代的运维挑站问题也就日渐突出,任重而道远了.众所周知,大数据平台 ...
- 安全运维中基线检查的自动化之ansible工具巧用
i春秋作家:yanzm 原文来自:安全运维中基线检查的自动化之ansible工具巧用 前几周斗哥分享了基线检查获取数据的脚本,但是在面对上百台的服务器,每台服务器上都跑一遍脚本那工作量可想而知,而且都 ...
随机推荐
- ES6 块级作用域
作用域包括:全局作用域,函数作用域,块级作用域. 为什么要用块级作用域: 1.内层变量可能会覆盖外层变量. var name = "kevin"; function call() ...
- linux性能优化参数小节
总结一些和性能相关的常见参数 内核相关参数 位于/etc/sysctl.conf文件,向文件中添加 用sysctl -a可以查看默认配置 修改后可以通过sysctl -p执行并看看有没有错误 例如设置 ...
- C# 结合 using 语句块的三种实用方法
一.简介 阅读 Abp 源码的过程中,自己也学习到了一些之前没有接触过的知识.在这里,我在这儿针对研究学习 Abp 框架中,遇到的一些值得分享的知识写几篇文章.如果有什么疑问或者问题,欢迎大家评论指正 ...
- 解决:MVC对象转json包含\r \n
项目中对象转json字符串时,如下:JsonSerializerSettings jsetting = new JsonSerializerSettings(); jsetting.DefaultVa ...
- 【bioinfo】生物信息学——代码遇见生物学的地方
注:从进入生信领域到现在,已经过去快8年了.生物信息学包含了我最喜欢的三门学科:生物学.计算机科学和数学.但是如果突然问起,什么是生物信息学,我还是无法给出一个让自己满意的答案.于是便有了这篇博客. ...
- 高性能Mysql笔记 — 索引
index优化 对于频繁作为查询条件的字段使用索引 注意索引字段类型的隐式转换,数据库类型和应用类型要一致 索引的种类 唯一索引,成为索引的列不能重复 单列索引,一个索引只包含一列 单列前缀索引,有些 ...
- noteless的博客导航页 所有文章的导航页面
导航 <spring springmvc mybatis maven 项目整合示例系列-导航页> <JAVA 基础知识点拾遗系列 JAVA学习 -1层 导航页> <计 ...
- 【Jquery系列】之Jquery 选择器
1 概述 本篇文章为穿插文章,ASP.NET MVC系列目前写了如下几篇: 详解google Chrome浏览器(理论篇) 详解Google Chrome浏览器(操作篇)(上) 详解Google ...
- 【Go】IP地址转换:数字与字符串之间高效转换
转载:https://blog.thinkeridea.com/201903/go/ip2long.html IP 地址库中 IP 地址的保存格式一般有两种,一种是点分十进制形式(192.168.1. ...
- python元组类型
元组类型简介 使用括号包围的数据结构是元组(tuple).例如: >>> (1,2,3) (1, 2, 3) >>> T = (1,2,3,) >>&g ...