我在Windows Server 2008机器上运行Cygwin和SSH deamon。 我正在查看事件查看器,并注意到来自不同IP的最近一周左右失败的login尝试次数达到每秒5次(蛮力)。
我怎样才能自动阻止这些IP,而不是手动一个一个地阻止它们呢?
谢谢,艾哈迈德
我写了一个程序来阻止IP地址,就像你在几年前要求的一样,但是却把它作为一个客户工作来雇用。 由于今天晚上我有了一些“空余”的时间,我select从头开始重新实施整个事情,写一些有用的文档,并且通常使它成为一个可见的程序。 由于我从多个人那里听说,这似乎是一个方便的事情,似乎这可能是值得的。 希望你和其他社区成员能从中获得一些用处。
sshd_block是一个VBScript程序,充当WMI事件接收器来接收由sshdlogging的Windows事件日志条目。 它parsing这些日志条目,并按如下操作:
如果IP地址尝试使用标记为“立即禁止”的用户名login,则IP地址将立即被禁止。
如果IP地址尝试login的次数超过了给定时间段内的允许次数,则IP地址被禁止。
与重复login尝试相关联的“立即禁用”用户名和阈值可在脚本的“configuration”部分进行configuration。 默认设置如下:
一旦在禁令期间被禁止的第二个IP地址被解除绑定(通过从路由表中删除黑洞路由)。
你可以在这里下载软件,并可以在这里浏览档案。
编辑:
截至2010年1月20日,我已经更新了代码,以支持在Windows Vista / 2008/7/2008 R2上使用“高级防火墙”,通过创build防火墙规则来执行黑名单(这更符合“fail2ban”的行为)。 我还添加了一些额外的匹配string来捕捉“非法用户”而不是“非法用户”的OpenSSH版本。
在Linux上,denyhosts没有办法,不能告诉你它是否可以在Windows / Cygwin上运行。 试一试。
这一个非常有趣,我们目前正在评估这个解决scheme:
Syspeace与Windows紧密合作,以最佳性能检测可能的威胁。 对事件日志中的事件不断进行监视以发现可疑行为。 如果某个事件被视为对系统的威胁,则Syspeace将通过检查内部规则库来进行下一步操作,该规则库将简单地阻止IP地址并将规则添加到Windows防火墙。
本地白名单
用户可以随时将IP地址添加到本地白名单中,以防止阻塞任何内部networking或临时添加单台PC。 这应该谨慎使用,因为此列表中的任何IP都被Syspeace认为是可信的,并且会被忽略。
本地黑名单
任何威胁都将被Syspeace自动添加到本地黑名单中。 您可以随时查看黑名单,并根据需要添加或删除黑名单。 然而,我们build议您不要对此列表进行任何更改,因为您可能会意外地为未知的黑客铺平道路。
全球黑名单
Syspeace的一个关键function是能够预先阻止已知的全球黑名单IP地址。 通过select此选项,Syspeace会将全局黑名单导入到您的客户端,并按照相应的操作将所有全局黑名单IP地址添加到防火墙规则集中。
消息
无论何时发生重要事件,服务启动或停止,规则被放置在防火墙中或从中移除,或者中央许可证和全局黑名单服务器的通信状态被改变,Syspeace能够发送邮件给合适的人你的组织。
报告
在发生重大事件时收到电子邮件可能会很好,但有时您也想得到摘要。 Syspeace会在您的系统上编译所有攻击尝试的日常报告,并向您发送一条包含该信息的消息。 Syspeace也以相同的方式编译每周报告。
从中国/美国/印度在我的服务器上的所有login尝试几乎都尝试pipe理员login,我已禁用。
如果禁用pipe理员login,然后编写一个脚本阻止尝试使用“pipe理员”作为用户名login的所有IP地址,是不是更容易?
您可能需要弄乱Windows防火墙; Cygwin不会有这种types的function。
你可以考虑使用SSHBlock – 一个用于控制蛮力尝试的Perl脚本。
SSHBlock是一个守护进程,用于监视系统日志日志,以便使用SSH进行尝试,并通过向/etc/hosts.allow(TCP Wrappers)添加行来自动阻止错误的主机。 有几个门槛是预先定义的,以便能够阻止那些在较长或较短的时间内尝试多次尝试。 使用-h查看命令行选项。
我从来没有在Cygwin上使用它。
但是,这里是一个链接到另一篇文章描述sshblock与其他方式:
捍卫蛮力ssh攻击