浅谈运维中的安全问题-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工具巧用 前几周斗哥分享了基线检查获取数据的脚本,但是在面对上百台的服务器,每台服务器上都跑一遍脚本那工作量可想而知,而且都 ...
随机推荐
- centos 安装setup命令的方法
yum -y install setuptool 安装setup命令工具 yum -y install ntsysv 安装setup工具配套的系统服务组件 yum -y install system- ...
- Xamarin.Android 制作搜索框
前段时间仿QQ做了一个搜索框样式,个人认为还不错,留在这里给大家做个参考,希望能帮助到有需要的人. 首先上截图(图1:项目中的样式,图2:demo样式): 不多说直接上代码: Main.axml &l ...
- ImportError: No module named '_tkinter', please install the python3-tk package
ImportError: No module named '_tkinter', please install the python3-tk package 先更新包,命令:sudo apt-get ...
- pylot测试工具环境搭建
1.下载Pylot:www.pylot.org/ 2. 安装Python 2.5 + (必须) 3. 安装wxPython(可选 - 用于GUI模式) 4. 安装numpy的(可选 - 用于报告以图表 ...
- Spring系列之手写注解与配置文件的解析
目录 Spring系列之IOC的原理及手动实现 Spring系列之DI的原理及手动实现 Spring系列之AOP的原理及手动实现 引入 在前面我们已经完成了IOC,DI,AOP的实现,基本的功能都已经 ...
- Chapter 4 Invitations——10
"Mr. Cullen?" the teacher called, seeking the answer to a question that I hadn't heard. “C ...
- HttpSessionListener的用法
Session创建事件发生在每次一个新的session创建的时候,类似地Session失效事件发生在每次一个Session失效的时候. 这个接口也只包含两个方法,分别对应于Session的创建和失效: ...
- SpringBoot2.0应用(三):SpringBoot2.0整合RabbitMQ
如何整合RabbitMQ 1.添加spring-boot-starter-amqp <dependency> <groupId>org.springframework.boot ...
- 使用minukube部署kubernetes admission webhook实现etcd pod安全删除
本需求来自于一道面试题
- Go语言学习笔记(六) [包]
日期:2014年7月30日 1.定义:包时函数和数据的集合.使用package关键字定义一个包,文件名不需要与包名一致,包名约定使用小写字符,Go包可以由多个文件组成,但是需要使用相同的packa ...