Gzip是一种流行的文件压缩算法,现在的应用十分广泛,当应用Gzip压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。使用Gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器。这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度,除了节省流量,改善用户的浏览体验外,还有一个潜在的好处是Gzip与搜索引擎的抓取工具有着更好的关系。例如Google就可以通过直接读取gzip文件来比普通手工抓取更快地检索网页。这些好处并不仅仅限于静态内容,ASP、ASPX、PHP动态页面和其他动态生成的内容均可以通过使用Gzip压缩,加上其他的性能调整机制和相应的服务器端缓存规则,这可以大大提高网站的性能。
先说明下服务器环境:Windows2003+IIS+PHP+ISAPI Rewrite,检查iis的配置内容没有任何问题,但查询HTTP状态都是未开启Gzip状态,今天在访问服务器上一个Discuz论坛的时候底部一行信息: Gzip On。灵光一闪,难道是PHP自带的的Gzip与IIS的冲突?赶紧动手测试,打开PHP配置文件,将php_zip.dll的extension关闭,重启IIS。
上面的操作完成后,检测状态,现在已经是开启了Gzip的状态了。原来那个Gzip开启的批处理文件没有任何问题,问题在于PHP也开启了Gzip,IIS再开的时候冲突了。也说明了另外一个问题,PHP.ini的处理优先级高于Metabase.xml。
文章来自: 聚友
1,登录进VPS控制面板,准备好随时重启VPS。
2,关闭Web Server先,过高的负载会导致后面的操作很难进行,甚至直接无法登录SSH。
3,以防万一,把设置的Web Server系统启动后自动运行去掉。
(如果已经无法登录进系统,并且重启后负载过高导致刚刚开机就已经无法登录,可联系管理员在母机上封掉VPS的IP或80端口,在母机上用虚拟控制台登录进系统,然后进行2&3的操作,之后解封)
二,找出攻击者IP
1,在网站根目录建立文件ip.php,写入下面的内容。
$real_ip = getenv('HTTP_X_FORWARDED_FOR');
if(isset($real_ip)){
shell_exec("echo $real_ip > real_ip.txt");
shell_exec("echo $_SERVER['REMOTE_ADDR']> proxy.txt");
}else{
shell_exec("echo $_SERVER['REMOTE_ADDR'] > ips.txt")"
}
echo'服务器受到攻击,正在收集攻击源,请在5分钟后访问本站,5分钟内多次访问本站有可能会被当作攻击源封掉IP。谢谢合作!';
?>
2,设置伪静态,将网站下的所有访问都rewrite到ip.php。
Nginx规则:
rewrite (.*) /ip.php;
Lighttpd规则:
url.rewrite = (
"^/(.+)/?$" => "/ip.php"
)
3,启动Web Server开始收集IP
进行完1和2的设置后,启动Web Server,开始记录IP信息。
收集时间建议为3到5分钟,然后再次关闭Web Server。
real_ip.txt,这个文件中保存的IP有80%以上都相同的,这个IP就是攻击者实施攻击的平台的IP。
proxy.txt,这个文件中保存的是攻击者调用的代理服务器的IP,需要封掉。
ips.txt,这里记录的是未表现出代理服务器特征的IP,根据访问次数判断是否为攻击源。
三,对上一段的补充
如果VPS上启用了WEB日志,可以查看日志文件的增长速度来判断是哪个站点被攻击。
如果没有启用日志,并且站点数量很少,临时启用日志也很方便 。
如果没有启用日志,并且站点数量过多,可以使用临时的Web Server配置文件,不绑定虚拟主机,设置一个默认的站点。然后在ip.php里加入下面一行
shell_exec("echo $_SERVER['HTTP_HOST']>> domain.txt");
domain.txt里将保存被访问过的域名,被CC攻击的站点将在里面占绝大多数。
四,开始封堵IP
建立文件ban.php
$threshold = 10;
$ips = array_count_values(file('ips.txt'));
$ban_num = 0;
foreach($ips as $ip=>$num){
if($num > $threshold){
$ip = trim($ip);
$cmd = "iptables -I INPUT -p tcp --dport 80 -s $ip -j DROP";
shell_exec($cmd);
echo "$ip baned! ";
$ban_num ++;
}
}
$proxy_arr = array_unique(file('ips.txt'))'
foreach($proxy_arr as $proxy){
$proxy = trim($proxy);
$cmd = "iptables -I INPUT -p tcp --dport 80 -s $ip -j DROP";
shell_exec($cmd);
echo "$ip baned! ";
$ban_num ++;
}
echo "total: $ban_num ips ";
?>
用下面的命令执行脚本(确保php命令在PATH中)
php ban.php
这个脚本依赖于第二段中ips.txt里保存的结果,当其中记录的IP访问次数超过10次,就被当作攻击源给屏蔽掉。如果是代理服务器,则不判断次数直接 封掉。
封完IP之后,把所有的网站设置恢复正常,站点可以继续正常运行了。
运行去掉。
五,一些细节
为保持对操作过程的描述尽量简洁,没有在上面的内容中加入过多的解释,留在这段统一讲述。
1,关于"代理服务器"的一些本质
两个与TCP&HTTP协议相关的值,REMOTE_ADDR和HTTP_X_FORWARDED_FOR。
(1)REMOTE_ADDR总是取离Web服务器最接近的一台主机的IP,如果没有使用代理,这个值就是访问者本身的IP,如果使用了代理,这个值就是 代理服务器的IP,如果通过多个代理服务器进行的连接,这个值就是到达Web服务器前最后一台代理服务器的IP。
REMOTE_ADDR是由TCP/IP层决定的,不能修改不能伪造。
(2)HTTP_X_FORWARDED_FOR,因为这个值是属于HTTP部分,而不是TCP/IP,所以这个值不管是什么,都不影响数据的传输。事实 上,一般情况下,如果是访问者直接访问Web服务器,这个值为空;通过透明代理的时候,这个值会被代理服务器设置为访问者的IP;通过匿名代理连接时,这 个值可能为代理服务器的IP也可能是空的也有可能是随机的。
HTTP_X_FORWARDED_FOR可以被任意修改。大多数代理服务器都是透明代理,也就是说,会把这个值设置为最原始访问者的IP。
2,关于解决CC攻击的层面问题
按处理效率从高到低排列。
(由于本文是针对VPS服务器所写,而VPS简单来说就是服务器的低端替代品,内存和CPU等资源普遍偏低,当然是处理效率越高越好。)
(1)网络传输层。也就是本文所用的iptables,这个工具本身是工作于系统内核,在建立网络连接时直接把攻击者的连接给否了。在这一层面上将攻击源处理掉后,消耗掉的资源几乎可以忽略不计。
(2)Web Server层,大多数Web Server都可以设置禁止访问的IP。在这一层上解决的意义和上面的差不多,但是效率要差些。
(3)脚本层,从脚本程序上制定适合于本身的策略过滤掉攻击源。网络上有很多流传的在这一层面的解决方案,但是不太适用于VPS,而且设置难度可能要增加几倍或者几十倍。
3,为什么不是从日志收集IP?
主要是考虑两点,一是大多数VPS使用者都因为硬盘空间过小,经常清除日志很麻烦,而直接禁止了日志。
二是如果从日志收集IP,脚本复杂程度要高很多,而且可能要根据情况做些调整,考虑到将要读到本文的人大多数都未必掌握更多的技术,本文的目的就是按部就班的依本文进行操作,即可解决问题。
大家通常会认为暴力破解攻击只是针对某一种FTP服务器发起的攻击,能具有代表性吗?
随着Internet的发展出现了由于大量傻瓜化黑客工具,任何一种黑客攻击手段的门槛都降低了很多,但是暴力破解法的工具制作都已经非常容易,大家通常会认为暴力破解攻击只是针对某一种FTP服务器发起的攻击,能具有代表性吗?可以拓展到其他的网络?或服务器上吗?答案当然是肯定的。暴力破解这种软件,使用起来没有什么技术含量原理就是一个接一个的试,直到试验出正确的密码,也就是破解成功了。不过这种破解方式成功几率不高,耗费时间多,技术成分低,不是迫不得已是不使用的。在网络的实际情况中,很多FTP服务器虽说都是经过了层层的安全防护的,即便是经过防护的FTP服务器,同样可以在攻击者简单地调整攻击方式以后,运用暴力破解快速突破。本文谈谈各种攻击技术对服务器的影响,仅供网络管理人员在平时工作中,制定安全防范策略时参考使用。
一、网络本身的负载能力与高速网络
所有的网络攻击,都是基于网络而发起的,这就决定了网络是一切网络攻击、安全防护技术的根本。如果攻击者处于一个网络资源极度缺乏的环境之中,想要发起高级的网络攻击也是力不从心的。同时,如果防御者处于一个并非优秀的网络中,网络正常服务本身都很难为正常用户提供,更不用说进行网络安全防护了。
1. 网络带宽的束缚
从国内刚刚出现互联网开始,到今天网络的普及,网龄比较长的网民都经历了使用调制解调器拨号上网的举步维艰,也都经历了1Mb/s、2Mb/s甚至10Mb/s的高速网络,而网络安全,同样经历了这样的一个由慢到快、从低速到高速的过程,在这个过程之中,很多原本看起来根本不可能的攻击技术,也已经可以很顺畅地发起了。很多攻击者在进行这样的攻击的时候,都会发现一个很奇特的现象:刚刚对目标发起了分布式的暴力破解攻击,10分钟后目标服务器因为带宽拥堵,竟然瘫痪了……
对攻击者来说,这是很让人啼笑皆非的事情,因为攻击者的目标原本是为了通过暴力破解获得某些机密的、内部的FTP资料,但是无意间却造成了目标服器的整体瘫痪,这显然是攻击者不愿意看到的结果。这也是攻击者和网络安全工程师因为网络带宽造成的困扰之一。
另一方面,暴力破解因为自身特性,所有的验证过程都是通过向服务器据提交信息、获得服务器返回信息并进行判断而进行的。在这个过程中,不管是服务器的网络带宽质量,还是攻击者使用的僵尸计算机本身的网络带宽速度,都在很大程度上决定了暴力破解整个完成时间的长短。就目前的网络带宽来说,要顺畅、高速地发起FTP的暴力破解攻击,还是有一定难度的。一般情况下攻击者动用上百台僵尸计算机进行攻击就已经是暴力破解的极限,因为即使再增加僵尸计算机,网络带宽的限制也不允许更多的数据收发的进行。所以,第二个限制暴力破解攻击整体效率提高的因素,就是僵尸计算机本身的网络带宽质量。
从现阶段国内四处都在进行的轰轰烈烈的网络速度提升来看,不难预见不久后的将来,整体网络速度将有非常大的提高。就像今天国际公认的平均个人网速最快的国家韩国一样,人均网速达到10Mb/s,20Mb/s甚至更多。
虽然网络速度的提升正在飞速的发展着,但是对攻击者来说,不可能恰好子就遇到拥有高速网络的僵尸计算机或者目标服务器。于是就有读者提问:现阶段的攻击者是如何解决网络带宽的问题的呢?以后如果出现网络整体速度都得到很大提升的时候,攻击者的暴力破解攻又将有怎么样的发展呢?
2.内部高速网络和分布式破解解决带宽难题
先解决第一个问题:现阶段的攻击者是如何解决网络带宽的问题的呢?举例来说,一个攻击者妄图获得某会员制网站的FTP账户权限,因为里面有很多内部付费使用的资料。但是这个会员制网站服务器的网络带宽质量并不高,如果采用分布式的暴力破解攻击,可能十几台僵尸计算机就足以让这个服务器瘫痪了,攻击者显然是不愿意看到这样情况的发生的。
在实际的网络攻击案例中,很多攻击者都遇到了这样的问题,他们的解决方法也很巧妙,也非常实用:利用内部网络通信的高速来解决暴力破解的网络带宽难题。有一定网络经验的网民都知道,中国现在的服务器,一般都是托管在IDC或者机房的,而正常情况下IDC或者机房会进行很多的网络带宽限制,在机房的入口路由或者机柜的防火墙上限制带宽,让由外对内的网络带宽变得很窄-毕竟机房很多情况下都是通过带宽来进行托管收费的。
现在的服务器配置一般都是千兆网卡,但是对外的网络带宽不可能做到千兆全开。一般中小站点能购买5~10Mb/s的独立带宽就很不错了,也就是说这样的服务器在提供对外的访问的时候,即使网络堵塞了,用户打不开网站了,FTP无法提供正常服务了。实际上就服务器本身的硬件性能来说,还有极大的容余可以用来提供网络服务,只是出入口网络带宽不足而已。就目前国内的整体网络安全意识来看,对资深的攻击者来说,在一个存放着几百台服务器的机房中找寻一台"肉鸡",并不是很难的技术问题。找到这样的内部服务器有什么用呢?攻击者当然可以选择用来发起暴力破解攻击。对一个千兆网卡来说,如果是在内部网络中进行访问,数据的中转和网络损耗本是可以忽视的。这就好比由一个1Mb/s的ADSL猫连接的两个家用计算机,虽然从网络上下载文件大概只有150Mb/s的速度,但是如果两个计算机之间传送文件的话,8Mb/s的内网速度还是很容易实现的。所以,现阶段的攻击者如果想要发起效率非常高的FTP暴力破解,在目标服务器的网络带宽存在束缚的时候,-机柜中的服务器,并利用内部网络高速的特点发起超快的FTP暴力破解。
再说说另一个问题:以后如果出现网络整体速度都得到很大提升的情况,攻击者的暴力破解攻击又将有怎么样的发展呢? 其实同第一个问题相比,这个问题已经在大范围内得到了解决,而且很多攻击者现在就是这样发起攻击的,那就是:分布式暴力破解。在之所有有些攻击者因为网络带宽的问题无法发起大范围的分布式暴力破解攻击,原因更多的还是目标服务器的网络带宽限制,而不是僵尸计算机本身的网络带宽。因为僵尸计算机的网络带宽就算不足,就算很慢,攻击者完全可以使用数量代替质量的方式,利用很多网络带宽不好的僵尸计算机发起大规模的暴力破解,毕竟因为网络安全意识低下,僵尸计算机还是很容易捕获的。当目标服务器的带宽在不久后的未来得到大力提升的时候,攻击者完全可以利用成千上万的僵尸计算机发起大规模的分布式暴力破解攻击,只要目标计算机的网络带宽足以承受这样的攻击,那么攻击者在极短的时间内就可以完成看似非常庞大的密码集的暴力破解攻击。
二、CPU运算、处理能力低下的解决方法
同几年前的硬件性能相比,现在的计算机、服务器的运算处理能力已经得到了飞速的发展。正如计算机专家普遍认为的一样,可以预见的是,硬件处理能力的提高将在很长一段时间内,持续而稳定地高速进步。
1. 运算处理能力的束缚
单就暴力破解来说,运算处理能力包括两方面的束缚:一方面是目标服务器的处理能力,另一方面是发起攻击的计算机的处理能力。目标服务器的处理能力决定了攻击者可以运用多大量级的攻击规模。
比如针对一个普通的小型FTP服务器,典型的配置是4GB左右的CPU速度,2~4GB的内存容量。针对这样的小型FTP服务器,在不考虑网络带宽的理论状态情况下,攻击者使用每秒10000~20000次左右的暴力破解攻击效率就基本达到了极限,就算攻击者发起更高效率的暴力破解也无法获得更快的结果。在实际情况中,攻击者要发起这样效率的攻击是比较简单的,甚至不用使用到大规模的僵尸计算机群就可以做到。
随着计算机硬件的发展,如果服务器在处理包含了数个指令的FTP暴力破解信息的时候,能够做到每秒理论上数十万、数百万次的请求和应答运算,那攻击者完全就可以放开手脚进行暴力破解攻击了。
现在的网络中,有些攻击者动用庞大的僵尸计算机群,发起每秒上十万次的FTP暴力破解请求,因为FTP暴力破解的过程是通过连接服务器→获得连接信息→发送账户→获得需求密码信息→发送可能的密码→获得反馈信息→再次发起服务器连接,这样的过程循环进行的,所以看似快速的服务器处理能力并不能满足不断堆积的攻击者计算机连接请求。这就导致了很多攻击计算机发送的密码验证信息被丢弃,攻击计算机无法获得正常的服务器返回信息,最终导致暴力破解失败。发起攻击的计算机的处理能力决定了攻击者是否需要动用分布式的暴力破解攻击。同被攻击目标服务器不同的是,被攻击者控制的僵尸计算机的运算能力并不直接决定暴力破解的成败,而是对暴力破解的整个时间和成功率有非常重要的影响。
在理论极限中,不考虑网络带宽,只考虑硬件处理能力的情况下,假使FTP服务器每次处理一个完整的FTP连接请求需要万分之一秒,而同时能处理的请求数目是10000个。那么,最完美的暴力破解模型是使用10000个僵尸计算机,完成万分之一秒内的暴力破解攻击。也就是说,在最小的目标服务器的处理能力下,使用目标服务器最大的处理能力来进行暴力破解。这样的暴力破解攻击成功率理论是100%,而在保证了成功率的基础上,时间是最短的。那么,现在的攻击者是如何解决服务器和僵尸计算机运算处理能力的呢?
2. 分布式暴力破解提高成功率
分布式暴力破解在很多时候是提高成功率的保障。对攻击者来说,目标服务器的处理能力是不可控的,攻击者是无法提高目标服务器的处理能力的,所以必须适应目标服务器的处理能力,由此才采用了分布式的暴力破解技术。
采用分布式穷举的好处是,在攻击者不知道目标服务器的负载能力的时候,可以通过灵活的调整僵尸计算机的数量,来逐渐摸索目标服务器的负载能力,以便达到在目标服务器不丢包、不误报的情况下,在保证最高成功率的前提下,尽量提升暴力破解的时间。举例来说,如果目标服务器的负载能力是每秒处理1000次FTP连接、账户密码验证、信息发送,攻击者如果使用每秒可以完成10次上述过程的僵尸计算机进行暴力破解,如果攻击者使用了10000台僵尸计算机,那目标服务器的运算能力显然是跟不上的,也就可能出现误报或者错误的情况,最佳的情况是使用100台僵尸计算机,满足目标服务器的运算处理能力最大化,并且也能够在保证100%成功的基础上最大化地缩小暴力破解时间。
总的来说,分布式暴力破解是对攻击者的攻击经验的一种考验。如果分布的僵尸计算机数量太多,结果可能是很快完成了暴力破解,但是因为误报和丢弃的存在,而无法获得正确的密码:如果分布的僵尸计算机数量太少,虽然可以很稳妥地进行完全部的暴力破解攻击,获得想要的密码,但是时间可能极长。
3.根据僵尸计算机的性能编写高效率的暴力破解程序
另外一个能在保证成功率的前提下,同时大大缩短暴力破解的时间的方法是调整暴力破解程序的运行速度。一个适合僵尸计算机处理能力的暴力破解程序在攻击过程中是非常重要的。
如果暴力破解程序在僵尸计算机上运行很吃力,已经超出了僵尸计算机的处理能力,结果可能是原本正确的密码也得不到相应的正确结果,因为僵尸计算机已经无法完成各种信息的收发和处理了。
如果暴力破解程序在僵尸计算机上运行得很轻松,系统性能有很多的容余,这样的情况下,整个暴力破解的时间将会很长。所以,要发起一个在保证成功率的前提下,还要尽量缩短暴力破解时间的攻击,需要攻击者根据自己的僵尸计算机的情况,选择不同的暴力破解程序消耗,以尽量达到成功率和时间两者的平衡。
三、 安全策略的突破
如果苛刻地说网络带宽和运算处理能力都是非技术因素,无法可控地进行优化的话,那么安全策略就是最直接也是最有效的防御措施了。对暴力破解来说,安全策略在很大程度上对暴力破解的成功率、时间甚至是否能发起攻击都存在着很大的影响。不过之所以说暴力破解是一种放之四海而皆准的攻击方式,就在于它可以经过攻击者简单的变化,而达到突破安全策略的目的。需要指出的是,本节的安全策略是单独的和暴力破解相关的安全策略,并没有涉及诸如密码期限、密码长度、通信加密等与暴力破解无关的安全策略。
1. 连接频率限制及其突破
随着网络安全意识的逐渐提高,重视安全的管理员一般会限制FTP服务器的连接频率。所谓的连接频率是指管理员定义了在特定时间段内的同一用户的连接次数,在这个次数限制之内可以任意连接,如果超出这个次数限制则拒绝连接。
网络安全工程师或管理员通过对连接频率的限制,一方面可以合理地分配FTP服务器的处理运算能力,避免出现某一个用户因为使用了超快的连接而大量占用服务器资源的情况,另一方面可以对普通的基于账户密码的暴力破解攻击进生行之有效地限制。
大家注意实际网络中也存在其他时间和连连接频率限制的规则,不一定是5秒一次连接,也不一定是10秒后才允许下一次连接。如果是默认的高效率的FTP暴力破解,一般情况下都是一秒发起上百次连接尝试,大大地超出了服务器允许的范围,所以这样的暴力破解显然是不能成功的,会被服务器一直拒绝连接。针对这样的情况,有经验的攻击者在发现目标服务器存在这样的连接频率限制以后,会适当地修改暴力破解程序的连接频率,让攻击程序在满足安全策略的前提下进行暴力破解。
比如,攻击者完全可以定义攻击程序每5.1秒进行一次FTP暴力破解尝试,以达到躲开安全策略限制的目的。这样的频率限制策略看似在效率上大大地阻碍了暴力破解的进行, 但是如果只有这一种安全策略的话,是无法阻挡攻击者发起高效的暴力破解的,实际上攻击者可以通过其他攻击策略的改变来变相提高整个暴力破解的效率。
2. 尝试错误次数限制及其突破
同连接频率相比,错误次数限制更常见一些,网络上很多FTP服务器的管理员或者工程师都使用了这个安全策略。尝试错误次数限制是指某FTP用户的错误发生次数,当该用户的密码尝试次数超过规定的次数以后,则短期拒绝该用户的连接。举例来说,网络安全工程师可以设定这样的安全策略:从某用户尝试登录开始,连续5次输入密码错误,则返回错误信息,并在FTP系统中拒绝该用户的下一次密码验证,直到超过设定的限制时间结束。
这样做的好处可以在很大程度上限制普通暴力破解攻击的发起,因为很多暴力破解攻击都是在无数的错误中找寻一个正确的密码。如果遇到这样的策略,暴力破解就几乎没有成功率可言了。不过错误次数限制实际上也是可以突破的,而且突破的方法也并不难。
对有经验的攻击者来说,一旦发现目标系统存在错误次数限制,则会通过手工验证的方式,彻底摸清究竟允许几次密码错误,后续的拒绝连接时间究竟是多少?一旦弄明白这两点,攻击者会很容易地调整暴力破解策略,突破次数限制。举例来说,如果管理员限制了5次连续错误后30秒不允许连接,则攻击者可以定义暴力破解程序以5次为一个循环,每发起5次攻击就暂停30秒,然后再继续尝试。 另外一种方式是每5次尝试一个新账户,在服务器开始拒绝当前账户连接的时候,使用新的账户进行暴力破解尝试,直到所有的用户名都尝试过一遍再重头开始。还有一个大多数攻击者采用的方式就是利用分布式的攻击来解决错误次数的限制,每个僵尸计算机都使用独立秒,然后再进行后续的尝试。
3. IP锁定及其突破
同上面的两种安全策略相比,IP锁定比较难解决一些,不过只要目标FTP考虑让正常用户使用,那暴力破解就肯定可以发起。IP锁定策略一般是和连接频率、错误次数策略配合使用,也就是说当某账户进行连接以后,如果连接频率过高,或者错误次数超过限制,则开始运用IP锁定策略。
在实际网络中,IP锁定策略有两个典型的应用方式,一种是当某账户出现异常以后,FTP服务器记录这个账户的IP地址,然后加入自己的黑名单,从此以后均拒绝此IP的连接,除非该用户联系管理员解除黑名单限制;另一种方式是IP限制是暂时的,过一段时间会自动解除。针对自动解除限制的情况,攻击者可以制一样的方法,调整暴力破解的循环时间,在限制时间过后,继续发起暴力破解攻击。针对永久封锁IP的情况,有四种方法可以突破:
(1).使用代理突破IP封锁
单纯地使用代理来进行FTP暴力破解是无法突破IP锁定的,只有暴力破解程序可以自动读取代理列表,然后在目标系统允许的情况下,发起几次暴力破解,然后再更换代理继续发起攻击。这个方法实现起来虽然简单,但是实际效果并不好,因为就算是网络攻击者也不能够保证构建一个拥有足够多代理,并且连接速度稳定、不产生意外数据接收错误的代理群,如何获得更多的代理呢?我们可以去网页上搜索,也可以自己用代理猎手来找代理,他最大的特点是搜索速度快,最快可以在十几分钟内搜完一个B类地址。如果单纯的代理无法满足需要的话我们还可以换用Muti Proxy实现IP动态自由切换功能,通过使用Sockscap+Sksockserver实现完美组合以达到组合代理的需求。如下图1、2所示。
图1
图2
2) .使用ADSL类的动态IP机制突破IP封锁
很多人都知道ADSL每次重新拨号以后都会分配一个新的IP,而且网络中也已经存在很多不断自动拨号的程序,如果攻击者愿意,自己编写一个类似的程序和暴力破解程序相配合,完全可以做到无差别的暴力破解。当然,使用网络上己有的自动拨号程序也可以满足要求。
这个方法总的来说是比较好的,但是对攻击者的僵尸计算机有一定的要求。
3) .使用SteganosIntemet Anonym Pro和Hide Ip Easy之类的程序突破IP封锁
图3
Steganos Internet Anonym Pro是国外顶级黑客研究出的自动变化IP,的程序,是一套功能强大的网络身份隐藏工具软件,用户可以通过该软件很简单地隐藏自已的IP、更换自己的IP。一般情况下,Steganos Internet Anonym Pro的IP变化是1秒钟变一次,而IP地址的位置一会儿在英国,一会儿在加拿大,变换频率非常快。从原理上讲,Steganos Intemet Anonym Pro是通过代理方式实现IP地址不停变化目的的,因此在IP地址变换之前,需要先测试该程序内置代理服务器的工作是否正常,并根据测试结果筛选出工作性能最稳定的代理服务器,如图4所示。使用Steganos Intemet Anonym Pro发起暴力破解攻击的话,攻击者如果适当地调整了暴力破解程序和循环间隔,以适应SteganosIntemet Anonym Pro的IP变换间隔,完全可以做到无视IP限制策略。
图4
4). 计算机标识限制及其突破
最烦琐的FTP安全策略就是使用用户计算机的标识来进行限制了。所谓用户计算机的标识是指在FTP服务器和用户计算机的交互中,服务器通过某种途径记录了用户计算机的某些标识,如MAC地址、Ccookies信息、硬件编号等。当管理员设置的连接频率、错误次数限制达到的时候,FTP服务器就会根据计算机标识来识别用户计算机,进而进行连接限制。
这样的限制方法在网络上出现的不多,不过国外的某些营利性组织经常使用这样的方法来进行安全保障,比如投资公司、股票顾问、非法博彩等站点。从技术上说,这样的策略是比较狠的,要对这样策略下的FTP服务器进行暴力破解攻击,比较难--但不是说毫无办法。举例来说,常见的这种限制是通过网卡的MAC地址识别来实现的,而MAC地址是可以更改的,攻击者完全可以自己编写程序,每次暴力破解发起的时候,都改变一次MAC地址。当然,网络中到处都是MAC地址的改变程序,甚至很多硬件信息也是可以随意生成的,如Mac MakeUp等,如图5
图5
如果目标FTP服务器是通过cookies等信息来辅助验证的话,突破方法就更为简单了。攻击者可以自己编程实现每次暴力破解前都清空一次cookies,也可以使用SteganosIntemet Anonym Pro等工具实现cookies自动删除、浏览记录自动删除等。
四、应对措施第三方软件Fail2ban加固方法
魔高一尺道高一丈,总的来说,只要FTP服务器妄图让正常用户使用,要彻底地杜绝FTP的暴力破解攻击就非常困难,至少目前没有办法实现,下面我们用第三方软件来进行加固,经过笔者长期对比发现Fail2ban对于解决暴力破解、非法扫描能起到比较好的效果,它是一个基于防火墙链添加新规则构成,并发送e-mail通知系统管理员。Fail2ban不仅可以使用自动识别可能的暴力入侵,而且可按照快速且简易的用户自定义规则去分析,因为fail2ban 的原理是调用iptables 实时阻挡外界的攻击,按照你的要求在一段时间内找出符合条件的日志,然后动作,所以你的系统里必选装有iptables,以及Python的支持。
1.下载安装:
在基于debian系统下安装fail2ban是非常畅快的。以root用户执行下列命令
# apt-get install fail2ban
在GNU/Linux 系统上源码安装,为了编译Fail2ban,你需要下载最新的源码(http://sourceforge.net/projects/fail2ban )。当获取后,你可以该改变你的源码目录,并执行下列命令:
#tar xvjf fail2ban-x.x.x.tar.bz2
你会在当前工作目录下得到一个Fail2ban的解压后的源码目录。你须CD到新的目录中。现在以root用户执行安装:
#./setup.py install
Fail2ban 会安装在 /usr/share/fail2ban/ 和 /usr/bin/目录中,装好后,稍微根据自己的情况改一下配置就可以使用了。
2.系统配置
一个典型的配置文件如下:
/etc/fail2ban/
├── action.d
│ ├── dummy.conf
│ ├── hostsdeny.conf
│ ├── iptables.conf
│ ├── mail-whois.conf
│ ├── mail.conf
│ └── shorewall.conf
├── fail2ban.conf
├── fail2ban.local
├── filter.d
│ ├── apache-auth.conf
│ ├── apache-noscript.conf
│ ├── couriersmtp.conf
│ ├── postfix.conf
│ ├── proftpd.conf
│ ├── qmail.conf
│ ├── sasl.conf
│ ├── sshd.conf
│ └── vsftpd.conf
├── jail.conf
└── jail.local
每个.conf文件都会被名为 .local的文件覆盖。.conf首先被读取,其次是.local。新的配置会覆盖早先的。因此,.local 文件不必包含每个相应于.conf中的选项,只是填写你想要覆盖的设置。
首先编辑fail2ban.conf
#vi /etc/fail2ban.conf #以 daemon 方式启动 fail2ban
background = true #允许尝试次数
maxfailures = 3 #触发 maxfailures 之後的封锁时间(秒); 设为 -1 表示永远封锁
bantime = 3600 #以 findtime (秒) 时间内的错误记录作为 maxfailures 的计数基准
findtime = 600 #排除 IP 范围, 以空白隔开
ignoreip = 127.0.0.1 192.168.0.0/24 #不启用 mail 通知
[MAIL]enabled = false #修改自 VSFTPD, 未提及的部份保持原设定
[PROFTPD]enabled = true
logfile = /var/log/proftpd/proftpd.log
failregex = no such user|Incorrect password #未提及的部份保持原设定
[SSH]enabled = true
logfile = /var/log/secureservice fail2ban
开始启动这个服务启动以后,每天都能在 /var/log/fail2ban.log 中看到有攻击的肉鸡被 ban 了。
下面一步就复制初始化脚本到系统的 /etc/init.d 目录下,执行chkconfig 和update-rc.d或手工创建一个符号链接,设置权限
# chmod 755 /etc/init.d/fail2ban
#chkconfig -a fail2ban
#ln -s /etc/init.d/fail2ban /etc/rc2.d/S20fail2ban
最后,整合fail2ban到日志循环中
创建文件:"/etc/logrotate.d/fail2ban":
/var/log/fail2ban.log {
weekly
rotate 7
missingok
compress
postrotate
/usr/local/bin/fail2ban-client reload 1>/dev/null || true
endscript
最后是Iptables微调,只允许每组IP同时5个21端口转发 ,类似功能大家可以去发挥。
#iptables -A FORWARD -p tcp --syn --dport 21 -m connlimit --connlimit-above 5 --connlimit-mask 24 -j DROP
好了,经过安装、配置下面我们看看使用它的效果吧,先浏览一下iptables
#iptables -L -nv
pkts bytes target protopt in out source destination
301 12740 fail2ban-ftp tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
3354 253K fail2ban-SSH tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
438 33979 fail2ban-httpdtcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 5703 packets, 829K bytes)
pkts bytes target prot opt in out source destination
Chain fail2ban-SSH (1 references)
pkts bytes target prot opt in out source destination
3354 253K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain fail2ban-ftp (1 references)
pkts bytes target prot opt in out source destination
301 12740 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain fail2ban-httpd (1 references)
pkts bytes target prot opt in out source destination
438 33979 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
查看fail2ban的日志
通过以下命令就能方便的查看到被记录的非法暴力破解IP
# cat fail2ban.log | grep '] Ban '
最后,我们要注意fail2ban是一个日志分析器,在写入日志前不会做任何事情。大多数系统日志守护进程都会缓冲他们的输出。这可能会和fail2ban性能有所冲突。因此,最好能禁止缓冲你的系统日志守护进程,以提高性能。目前来看,只要FTP服务器希望让正常用户使用,要完全杜绝FTP暴力破解攻击就会很难,因此要从细微之处入手,尽量降低被暴力破解的概率。