使用DenyHosts防止SSH被攻击

DenyHosts是用Python编写的针对SSH服务器的一个基于日志的入侵预防安全工具,通过监测身份验证登录日志中失败的登录尝试,屏蔽这些登录者的IP地址,从而预防对SSH服务器的暴力破解。

2016-05-10 12:36:08

官网:http://denyhosts.sourceforge.net/

DenyHosts通过监测身份验证登录日志的末尾,来获取近期失败的登录尝试信息。DenyHosts记录了有关登录者IP地址的信息,并将失败的登录尝试次数与用户指定的阈值进行比较。如果失败的登录尝试次数太多,DenyHosts假定发生了字典式攻击,并通过将IP地址添加到服务器上的/etc/hosts.deny,屏蔽相关IP,防止其进一步的攻击。DenyHosts 2.0及以上的版本支持集中同步,从而可以阻止攻击过多台电脑的惯犯。 从多台计算机,DenyHosts 2.0 及以上支持集中同步,所以重复的罪犯将被阻止。denyhosts.net网站从运行了该软件的计算机上收集统计信息。

DenyHosts仅对使用IPv4的连接有效。它在IPv6下不起作用。

DenyHosts可以手动运行,可以作为一个守护进程,也可以作为一个cron任务。

该配置文件结构比较简单,简要说明主要参数如下:
PURGE_DENY:当一个IP被阻止以后,过多长时间被自动解禁。可选如3m(三分钟)、5h(5小时)、2d(两天)、8w(8周)、1y(一年);

PURGE_THRESHOLD:定义了某一IP最多被解封多少次。即某一IP由于暴力破解SSH密码被阻止/解封达到了PURGE_THRESHOLD次,则会被永久禁止;

BLOCK_SERVICE:需要阻止的服务名;

DENY_THRESHOLD_INVALID:某一无效用户名(不存在的用户)尝试多少次登录后被阻止;

DENY_THRESHOLD_VALID:某一有效用户名尝试多少次登陆后被阻止(比如账号正确但密码错误),root除外;

DENY_THRESHOLD_ROOT:root用户尝试登录多少次后被阻止;

HOSTNAME_LOOKUP:是否尝试解析源IP的域名;


另外,最好在使用此软件的同时,修改ssh的端口,使用证书登陆,关闭root登陆,这样更加安全

徜徉于这片废土的我们.....应当去哪里追寻更好的自己?