提高IIS的FTP安全性 管理员的九阴真经
《九阴真经》是很多武林高手蒙昧以求的武林秘籍,在系统管理员这个武林中也有很多类似《九阴真经》一样的秘籍。在这里就向大家介绍一下有关提高IIS的FTP安全性的实用技巧。对广大直面各种网络攻击的网络安全工程师来说,工作中必然会遇到会遇到各种各样的FTP攻击,普通管理员会认为Windows 下FTP服务安全性比较弱,安全性无法保证,所以在
Windows server加装了第三方FTP 程序,以满足自己的要求。
经过笔者多年研究发现,其实利用IIS下的FTP服务器,经过和系统配合设置就能很好的瞒住您的要求。所谓维护型安全FTP是指不公开使用或者很少公开使用的,一般只供网络管理员或者安全工程师在维护服务器时使用的FTP系统。这样的系统在工作中非常需要,但是因为本身是不公开的,所以安全性往往得不到足够的重视,成为很多攻击者喜欢攻击的目标。本文讲述了不为大家熟知九种技巧来教授如何使用大家都不看好的IIS FTP Server来构建足够网络管理员维护使用的FTP服务器,而且安全性足够高。
真经基础阶段
真经第一重易筋锻骨篇—— 指定FTP IP地址并修改默认端口
1.使用专用IP进行FTP服务器搭建
以典型的Windows 2003 Server系统为例,安装完成IIS以及FTP以后,依次选择“开始->管理工具->Internet信息服务IIS管理器”,指向“FTP站点”
650) this.width=650;" width="277" height="160" class="fit-image" alt="使用专用IP进行FTP服务器搭建" src="http://images.51cto.com/files/uploadimg/20101222/1115061.png" border="0" />
右击并选择“新建->FTP站点”,进入“FTP站点创建向导”。在此向导中,重点介绍为即将建立的安全的维护型FtP服务器指定IP地址并修改端口。
2.使用足够隐蔽的端口进行通信
“端口”设置建议不使用默认端口,而是将默认端口设置成一个不常用的,大于10000、小于65535的端口号。之所以要设置大于10000,小于65535是因为很多端口扫描工具默认情况下都不会扫描这部分端口,而攻击者如果手动设置扫描端口的话,出于时间和速度的考虑,也很少定义1-65535这样的端口扫描规则,所以很容易迷惑攻击者,让他们根本不知道原来还有一个高端端口隐蔽在系统中发挥作用。
650) this.width=650;" width="312" height="222" class="fit-image" alt="使用足够隐蔽的端口进行通信" src="http://images.51cto.com/files/uploadimg/20101222/1115062.png" border="0" />
即使攻击者用扫描器扫到了这个端口,往往也会因为这个陌生的端口而不明白具体运行的服务,需要详细探测才有可能发现是FTP服务。接下来,将对此新建的FTP服务器进行详细的安全配置。
经第二重疗伤篇——定制详细的FTP日志记录相关信息
IIS的FTP系统有非常完善、丰富的日志记录系统,使用日志系统来时刻记录FTP服务器的运行状态是非常重要的。
1.启用FTP服务器的日志记录功能
在默认情况下,IIS管理器下FTP站点中的某个站点的FTP日志系统默认是启用的。
2.FTP服务器的高级日志配置
和普通的FTP服务器要求不同,如果需要建立足够安全的FTP服务器,需要对日志系统进行详细的高级定义,定义的内容就是设置攻击者或者可能发生的攻击可能存在的典型特征。
详细需要定制的高级规则如下:
“新日志计划”:此选项控制每个日志文件的生成规则,默认是每天生成一份新的FTP日志。
假定攻击者绕过了种种限制,对某目标FTP服务器进行了大批量的分布式暴力破解攻击,如果FTP日志是按默认的记录方式记录的,则会产生无比庞大的单一文件有时候日志记录文件可能达到数十GB的大小,甚至撑破系统盘的空间,导致系统的正常运行出现问题。
所以这里需要首先确定FTP的日志按照文件大小来生成,选择“新日志计划”下的“当文件大小达到20MB”时开始生成新的日志记录文件,方便分析和调用;
“日志文件目录”:此选项是非常重要的选项,定义FTP日志的存放地址,默认是存放在“C:\WINDOWS\system32\LogFiles”下。
650) this.width=650;" width="433" height="251" class="fit-image" alt="FTP服务器的高级日志配置" src="http://images.51cto.com/files/uploadimg/20101222/1115063.png" border="0" />
对于任何被攻击者广泛了解的默认选项,都应该进行相关的在可允许范围内修改。同时,出于对操作系统所在盘的保护,建议将FTP的日志系统定义到每个FTP用户单独使用的文件夹下,但不能赋予该用户对此日志记录文件的访问权限。
3.定义FTP服务器日志的详细记录规则
在配置好日志文件的生成规则和路径以后,需要对日志文件记录信息的类型进行详细配置。一个能记录绝大多数攻击者和使用者行为的日志文件应该包含以下记录信息:
日期(非默认选中,需要手动选中);
时间(默认选中);
客户端IP地址(默认选中);
用户名(非默认选中,需要手动选中)
方法(默认选中);
URL资源(默认选中);
协议状态(默认选中);
Win32状态(默认选中);
所用时间(非默认选中,需要手动选中);
用户代理(非默认选中,需要手动选中);
需要注意的是,并不是日志系统记录的信息越多就越好,因为日志系统记录FTP用户(攻击者或者正常用户)的访问毕竟需要消耗资源,而且生成的日志记录同样需要存放空间。如果记录项目过多,可能引起系统资源消耗日志文件占用空间大的问题。
真经第三重点穴篇——取消匿名访问
匿名访问是FTP服务器的默认设置,此设置可以很好地支持普通用户的FTP访问,但是要建立安全性足够的FTP服务器的话,此项设置必须去除。
650) this.width=650;" width="356" height="252" class="fit-image" alt="取消匿名访问" src="http://images.51cto.com/files/uploadimg/20101222/1115064.png" border="0" />
去除FTP服务器的匿名访问功能很简单,只需要指向IIS管理器下的需要修改的FIP站点,右击并选择“属性”,进入“安全账户”标签,取消“允许匿名连接”前的即可。
真经第四重摧心掌——强制安全密码规则
在有意无意之中,一些用户的FTP账号密码设置得过于简单,为了提高FTP服务器的安全性,特别是需要建立安全性足够强的维护型FTP服务器,必须强制用户设置复杂的账号密码。
1.组策略简介
在Windows系统中,密码的规则设置是由组策略所控制的。简单地说,组策略设置就是在修改注册表中的配置。当然,组策略使用了萄託每的管理组织方法,可以对各种对象中的设置进行管理和配置,远比手工修改注册表方便、灵活,功能也更加强大。
依次指向“开始一运行”,输入“gpedit.msc”进入Windows 2003 Server系统的组策略选项。进入组策略选项以后,在左方快速链接栏中依次指向“计算机配置一〉Windows设置一〉账户策略一〉密码策略”,这里可以设置很多密码的相关安全规则。
650) this.width=650;" width="490" height="242" class="fit-image" alt="组策略简介" src="http://images.51cto.com/files/uploadimg/20101222/1115065.png" border="0" />
2.启用密码复杂性要求策略
在右侧矿体中找到“密码必须符合复杂性要求”项,然后双击打开后,选中“已启用”按钮,最后单击确定使之生效。
650) this.width=650;" width="291" height="342" class="fit-image" alt="启用密码复杂性要求策略" src="http://images.51cto.com/files/uploadimg/20101222/1115066.png" border="0" />
如果启用“密码必须符合复杂性要求”策略,在更改或创建账户(密码)时就会执行复杂性策略检查,密码必须符合下列最低要求:
a.密码不能包含账户名:
b.密码不能包含用户名中超过两个连续字符的部分:
c.密码至少有6个字符长度;
d.策略包含以下4类字符中的至少3类字符:英文大写字母(A-Z)、英文小“.写字母(a-z)、10个基本数字(0-9)、特殊字符(例如!、$、#、%)
3.启用密码长度最小值策略
另外,更具安全密码规则中密码长度的要求,可以双击“密码长度最小值”进行最小密码长度的设置。例如把最小长度设置为8个字符,经过这样的设置,FTP用户(乃至系统用户)的密码安全性就大大地提高了,系统安全性也就大大增强了。
真经第五重蛇行狸翻之术——使用专用账户访问FTP服务
维护型的FTP服务器使用者一般是网络管理员,所以不存在大量用户使用的问题,一般都是机构管理员在分别使用。
针对这样的情况,如果采用IIS下的FIP Server构建服务器的话,首先应该考虑的是去掉默认FTP服务器中的匿名访问,然后建立专用的FTP账户,最后为专用的FTP账户指派访问目录。
1.建立专用FTP账户
假定有5个管理员需要对服务器进行经常性的维护,而且各自的工作职能不同,那就需要建立至少5个专用FTP账户。
650) this.width=650;" width="431" height="120" class="fit-image" alt="建立专用FTP账户" src="http://images.51cto.com/files/uploadimg/20101222/1115067.png" border="0" />
Net user ft01 pass11@! wd /add
重复上述用户建立设置,依次建立ftp01~ftp05等几个账户。
2.建立专用账户对应的FTP文件夹
建立好FTP专用账户以后,需要为专用账户指派FTP目录,以系统管理员身份找到n(y的根文件夹,分别为每个用户建立一个对应的文件夹,例如用户ftp01就对应ftp01文件夹、ftp02用户对应ftp02文件夹。
真经高手阶段
上述几个步骤只是简单地建立了几个可用账户,远远没有达到实现安全FTP的目的,下述内容将进行详细设置。
真经第六重九阴白骨爪——使用NTFS约束FTP用户权限
在管理员各自对应的FTP用户建立好之后,并不能直接使用,需要对各账户进行详细的权限设置。
1.将FTP用户权限限定为Guest组
使用“net user”命令建立的系统用户默认是属于“user”组,在系统中具有一定的权限。首先需要做的是删除这些Fl
P用户的“user”组权限,并将它指派成Guest用户组中的一员。
使用如下命令删除刚刚建立的各账户的“user”组权限:
Net localgroupusers ftp01 /del
然后使用如下命令将该账户指派到系统的“Guest”用户组:
Net localgroup guests ftp01 /add
650) this.width=650;" width="484" height="100" class="fit-image" alt="使用NTFS约束FTP用户权限" src="http://images.51cto.com/files/uploadimg/20101222/1115068.png" border="0" />
现在的各个FTP账户都处于“Guest”用户组,权限非常低。删除并更改完FTP用户的所属用户组以后,需要对各个FTP用户对应的文件夹进行权限设置。
2.删除各FTP文件夹继承权限
以ftp01账户对应的ftp01文件夹为例,以系统管理员身份登录,选中文件夹并右键选择“安全”选项卡,默认情况下这里有非常多的已经继承于上级文件夹的权限,
我们需要做的是删掉这些默认的权限,但是在删除的时候会出现系统提示:
因为“SYSTEM”从其父系继承权限,您无法删除此对象。要删除“SYSTEM
“必须阻止对象继承权限。关闭继承权限的选项,然后重试删除“SYSTEM”
因为权限是继承上级文件夹的,所以不能直接删除,需要单击“高级”按钮,进入此文件夹的“高级安全设置”,
650) this.width=650;" width="488" height="369" class="fit-image" alt="高级安全设置" src="http://images.51cto.com/files/uploadimg/20101222/1115069.png" border="0" />
3.为FTP用户指派文件夹访问权限
此时的文件夹是系统中很多用户都不能直接使用的,拄即使是管理员也无法直接打开。这时候需要为FTP账户指派访问权限。选中文件夹“安全”选项卡下的“添加”,分别选择“高级-立即查找”,选中上述建立的FTP专用用户即可。此时ftp01默认已经有部分权限,包括“读取和运行”、“列出文件夹目录”、“读取”3种。作为系统管理员们使用的维护型FTP,显然需要经常使用上传功能,所以这里需要选中“写入”权限。
上述各选项均为基本的FTP设置选项,完成以后具有一定安全性的维护型FTP服务器就建立好了,但是要要做到高安全性还是不够,需要进行其他一些设置。
真经第七重白蠎鞭——强制密码更改时间与强制密码历史策略
如果遇到构造巧妙的暴力破解攻击,管理员是很难受的。一个安全的、少数人使用的FTP服务器中,每个用户应当经常性(在用户可以承受的日期以内)地修改密码,以缩短被暴力破解的时间,保护密码安全是需要重点注意的。在Windows 2003 Server系统中,组策略可以使用“强制密码更改时间”和“强制密码历史”策略做到这一点。具体来说,如何在尽量不影响用户正常使用的前提下,尽量限制暴力破解的时间呢?在Windows系统下,可以使用强制密码更改时间策略实现;如何避免很多用户(包括管理员)习惯使用2,3个固定密码进行循环得非安全机制呢?可以使用强制密码历史策略。
1.启用强制密码更改时间策略
为了大大缩短暴力破解攻击可以发起的时间,极度减低暴力破解的成功率,在不影响用户的正常使用的前提下,强制性地要求用户定期修改自己的FTP密码是非常重要的一个安全措施—组策略可以完成这样的策略指派。
使用“gpedit.msc”命令打开组策略编辑器,在“计算机配置”下的“安全设置”、“账户策略”、“密码策略”下,可以看到“密码最短使用期限”和“密码最长使用期限”。
“密码最长使用期限”这个安全设置是确定系统要求用户更改密码之前可以使用该密码的时间(单位为天),也就是说这个时间控制用户必须在多少天之内修改密码,
管理员可以将密码的过期天数设置在1~999天之间。具体来说,分为以下3种情况:
如果将天数设置为0,则指定密码永不过期;
如果密码最长使用期限在1~999天之间,那么“密码最短使用期限”必须小于密码最长使用期限;
如果密码最长使用期限设置为0,则密码最短使用期限可以是1~998天之间的任何值。
兼顾到正常用户的使用,这里建议设置的密码过期天数是30~90天。这是一种实际证明比较优秀的安全策略。通过这种方式,攻击者只能够在有限的时间内破解用户密码。这个策略应该和上面的最长使用期限相配合,合理的设置应该是30天左右。
2.启用强制密码历史策略
“强制密码历史”策略是指用户在重新使用旧密码之前,该用户所使用的新密码必须不能与自己所使用的最近的旧密码一样。该策略通过确保旧密码不能在某段时间内重复使用,使用户账户更安全,需要说明的是,如果管理员希望“强制密码历史”安全策略选项设置有效,需要将“密码最短有效期限”配置为大于0。如果没有密码最短有效期限,则FTP用户可以重复循环通过密码规则的密码,直到获得喜欢的旧密码。
默认设置不遵从这种推荐方法,因此管理员可以为用户指定密码,然后要求当用户登录时更改管理员定义的密码。
如果将该密码的历史记录设置为0,则用户不必选择新密码。因此,一般情况下将密码历史记录设置为1。
真经第八重移魂大法——错误锁定策略指派
通过上文的一些设置,现在的密码安全策略已经有了保障,但是面对头疼的暴力破解攻击,如何让维护型的FTP服务器具有强悍的防御能力呢?这就需要使用错误锁定策略。
1.定义账户锁定阀值
“错误锁定”策略在组策略“计算机配置”中的“安全设置”、“账户策略”、“密码策略”下。双击打开“账户锁定阀值”,
这个安全策略确定导致FTP用户账户被锁定的登录尝试失败的次数,在管理员重置锁定账户或账户锁定时间期满之前,无法使用该锁定账户。也就是说,如果达到管理员设置的登陆错误次数,则该账户将被锁定。管理员可以将登录尝试失败次数设置为介于0~999之间的值,如果将值设置为0,则永远不会锁定账户。
一般情况下,为了对暴力破解(或者社会工程学猜解)攻击的防御,设置账号登录的最大次数在5~10次左右,如果攻击者尝试登录该账户超过此数值,账号会被自动锁定。
2.定义账户锁定时间
设置完“错误锁定”策略后,打开“账户锁定时间”策略,这里设置FTP账号被锁定的时间,账号一旦被锁定,超过这个时间值,才能重新使用,界面如图
真经第九重大伏魔拳——启用目录安全性杜绝大多数各类FTP 攻击
经过上述设置,一个安全性足够、使用效率很高的FTP服务器已经架设成功,但是作为一个专门为管理员服务的维护型FTP服务器,如果能做到下面的一个设置,将把整体的安全性提高至少2个档次!
不管是什么样的FTP攻击,能登录是最基本的一个步骤,也是绝大部分攻击发起的目标成果,如果系统管理员采用“一招制敌”的方式,直接掐断非法用户的FTP登录功能,让攻击者无法使用(或者非常难使用)暴力破解攻击,让攻击者得到FTP账户密码也没有登录权限的话,就能解决起码90%以上的攻击!
在IIS的FTP Server中,“目录安全性”可以实现这个功能,不过根据管理员不同的环境,策略会有些许变化。
依次指向IIs管理器的FTP站点,右击并选择“ftp属性”,打开“目录安全性”,在界面中选择“拒绝访问”,然后单击“添加”按钮定义允许访问的单一计算机、多台计算机,设置好的界面“目录安全性”是通过FTP用户的登录IP进行判断的一种机制,上图中的“拒绝访问”代表默认拒绝所有IP的FTP使用请求,除非请求登录FTP的计算机IP地址包含在“下面列出的除外”列表框中。
650) this.width=650;" width="392" height="275" class="fit-image" alt="启用目录安全性杜绝大多数各类FTP" src="http://images.51cto.com/files/uploadimg/20101222/11150610.png" border="0" />
通过这个设置,管理员可以控制唯一的,或者是极少的绝对信任IP可以使用P)(y功能。例如,在一个大型的公司网络中,全部员工都是使用的固定IP连接网络(或使用固定IP地址的出口网关上网),管理员可以定义只允许此IP地址的计算机(或计算机群)进行FTP服务器的使用,其他所有的I1)地址均不能访问FTP服务器。
经过这样的设置,所有的外部攻击者都被阻挡在FTP服务器以外了。不过这个功能在两种情况下可能存在缺陷:
第一种
情况是攻击者使用了IP伪造技术,不但成功欺骗了互联网,还成功欺骗了服务器,让服务器以为攻击者就是被允许访问中的一员,从而让攻击者达到攻击网[y服务器的目的。不过这样的攻击难度实在太大,相信没有几个攻击者愿意尝试。
第二种
情况是攻击者通过渗透攻击等方式,控制了和服务器管理员同IP的计算机,比如管理员的同事等,然后在管理员同事的计算机上进行FTP攻击。当然,这样的渗透攻击本身就难于FTP攻击,所以现实中存在的类似攻击也是相当少。
真经总卷:对配置后的服务器进行最后的演练
有防御就有攻击,任何安全工程师都不可能说自己构建的防御体系是完美的,是不可能被攻破的。所以下面将针对上述的各项安全措施防御的维护型FTP服务器,进行理论化的高级攻防演练:
如果攻击者采用传统的暴力破解技术,那无疑是不能直接对上述加固后的FTP服务器进行穷举的,因为FTP服务器不但有IP限制策略,也就是目录安全性策略,就算攻击者成功地获得了一台允许使用FTP服务器的计算机(或某IP),丕有很大几率会卡在FTP服务器的端口隐藏策略、密码安全策略、密码更换策略、账户登录错误锁定策略等相关安全策略之中。
就现在的网络技术而言,一般情况下要对上述的安全FTP服务器进行暴力破解,成功率接近于零。如果攻击者想采用漏洞攻击,先不说目录安全性策略是否能绕过,就目前存在的、公布的漏洞来看,这样的漏洞还没有可用的(当然,不排除有非常牛的攻击者研究出了IIS下的FTP惊天漏洞而未公布)。如果攻击者采用嗅探技术获得上述FTP服务器的密码,那么接着需要解决的就是目录安全性的问题(也就是IP策略)、可能遇到的密码定期更改问题等。
总的来说,上述IIS下FTP服务器可能随着攻防技术的不断进步而产生漏洞,但就目前的技术水平来看,单就FTP服务本身而言(不包括服务器其他方面的服务出现漏洞等情况),安全性有了显著提高。
本文出自 “李晨光原创技术博客” 博客,谢绝转载!
- [转] Linux 中提高 VsFTP 服务器的安全性
FTP是互联网应用中的一个元老级人物了,其方便企业用户文件的共享.但是,安全问题也一直伴随在FTP左右.如何防止攻击者通过非法手段窃取FTP服务器中的重要信息;如何防止攻击者利用FTP服务器来传播木马 ...
- Windows2012安装IIS和FTP
Windows2012安装IIS和FTP 1.打开Windows 2012的服务器管理器,选择 管理→添加角色和功能 2.进入 添加角色和功能向导,选择 “Web服务器(IIS)” 3.根据情况选 ...
- IIS下FTP服务器的PASV端口范围修改方法
应该有不少使用IIS自带的FTP服务器,IIS的FTP里的PASV模式下默认端口范围1024 - 65535,连接时会从中随机选择到响应.这样的超大范围就给服务器安全带来的隐患. 虽然可以通过一些方法 ...
- windows2003通过iis配置ftp服务器
以前习惯于用filezilla作为windows的ftp服务器,但是现在新版本的filezilla已经不支持windows2003了,所以趁机试一下iis配置ftp服务器. 前面都是很常规的配置 参考 ...
- IIS部署FTP服务器步骤
本文介绍如何在IIS中部署FTP服务端.首先确认windows开启了ftp功能:确认方法:进入控制面板->程序->打开或关闭windows功能如下图所示: 确认FTP勾选 确认后打开IIS ...
- Linux 中提高的 SSH 的安全性
SSH 是远程登录 Linux 服务器的最常见的方式.且 SSH 登录的时候要验证的,相对来讲会比较安全.那只是相对,下面会介绍一些方式提高 SSH 的安全性 SSH 的验证 而SSH 登录时有两种验 ...
- Windows2008 IIS配置FTP站点
视频教程:http://vodcdn.video.taobao.com/player/ugc/tb_ugc_pieces_core_player_loader.swf?version=1.0.2015 ...
- IIS 配置 FTP 网站 H5 音频标签自定义样式修改以及添加播放控制事件
IIS 配置 FTP 网站 在 服务器管理器 的 Web服务器IIS 上安装 FTP 服务 在 IIS管理器 添加FTP网站 配置防火墙规则 说明:服务器环境是Windows Server 200 ...
- Windows下IIS搭建Ftp服务器
第一步:启用Windows IIS Web服务器 1.1 控制面板中找到"程序"并打开 1.2 程序界面找到"启用或关闭Windows功能"并打开 1.3 上面 ...
随机推荐
- Varnish 缓存加速, Varnish 菜鸟看过来,Varnish实战
Varnish可以有效降低web服务器的负载,提升访问速度.按照HTTP协议的处理过程,web服务器接受请求并且返回处理结果,理想情况下服务器要在不做额外处理的情况下,立即返回结果,但实际情况并非如此 ...
- swift学习之数组
首先数组的定义:以有序的方式存储同样类型的值 (1)数组的简写(shorthand)语法 你能够通过Array<Element>,在这里,Element时数组存储元素的值的类型.也能够通过 ...
- 从零開始怎么写android native service?
从零開始怎么写android native service Android service对于从事android开发的人都不是一个陌生的东西,非常多人可能会认为服务非常easy. 服务是简单,由于复杂 ...
- Mysql基础第二部分,针对以后python使用
#外键 表与表相连 列名 MUL 外键 参照完整性 不能添加另一个表没有的字段create table study_record( id int auto_increment primary key, ...
- Integer 和 int的种种比较
public static void main(String[] args) { int i = 128; Integer i2 = 128; Integer i3 = new Integer(128 ...
- spring 中国下载点
http://repo.spring.io/libs-release-local/org/springframework/spring/ spring 中国下载点
- Flex 集合 ArrayCollection 的使用
转:http://keren.iteye.com/blog/380847 转:http://callan.iteye.com/blog/335551 集合是ActionScript 中功能强大的基于索 ...
- vue.js中compted与model的区别
在p便签内写的{{reversemessage}}方法,若js里对应的函数为computed则不需要加上括号 若js里对应的函数为model则应该将{{reversemessage}}改为{{reve ...
- 【 正确使用vim编辑器的姿势】
vi:可视化接口(Visual Interface) vim:是vi的增强版(vi iMprove) vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样 ...
- nio实现文件读取写入数据库或文件
1.nio实现读取大文件,之后分批读取写入数据库 2.nio实现读取大文件,之后分批写入指定文件 package com.ally; import java.io.File; import java. ...