每天有几百次闯入企图是否正常?

我刚刚检查了我的服务器的/var/log/auth.log ,发现我每天收到超过500次失败的密码/闯入尝试通知! 我的网站很小,而且它的url很模糊。 这是正常的吗? 我应该采取什么措施?

    在今天的互联网上,这很可悲。 有大量的僵尸networking试图login到他们在整个IPnetworking中find的每个服务器。 通常,他们使用简单的字典攻击知名的帐户(如根或某些应用程序帐户)。

    攻击目标不是通过Google或DNS条目find的,但是攻击者只是尝试某个子网中的每个IP地址(例如已知的根服务器托pipe公司)。 所以你的URL(因此DNS条目)是相当模糊的没关系。

    这就是为什么它如此重要:

    • 在SSH中禁止rootlogin( howto )
    • 在任何地方使用强密码(在您的Web应用程序中)
    • 对于SSH,尽可能使用公钥authentication,并完全禁用password-auth( howto )

    此外,您可以安装fail2ban ,它将扫描authlog,如果发现一定数量的来自IP的失败的login尝试,它将继续将该IP添加到/etc/hosts.deny或iptables / netfilter以locking攻击者几分钟。

    除了SSH攻击外,扫描web服务器以查找易受攻击的web应用程序(一些博客应用程序,CMS,phpmyadmin等)也变得很常见。 所以一定要保持最新的和安全的configuration!

    几百就好了…上个月,我发现我的一个服务器有40K失败的尝试。 我经历了策划他们的麻烦: 地图

    一旦我改变了ssh端口并实现了Port Knocking,数字就下降到了0 🙂

    我一个人使用“tarpit”除了只允许公共密钥身份validation和禁止根login。

    netfilter有一个recent模块,你可以使用( INPUT链):

     iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --set --name tarpit --rsource iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 6 --name tarpit --rsource -j DROP iptables -A INPUT -i if0 -p tcp --dport 22 -j ACCEPT 

    所做的就是,每个连接到端口22的尝试都被recent模块用IP和其他一些名为“tarpit”的模块列出(如果你好奇的话,看看/proc/net/xt_recent/tarpit )。 显然你可以使用其他的名字。

    列出或取消IP使用:

     echo "+123.123.123.123" > /proc/net/xt_recent/tarpit echo "-123.123.123.123" > /proc/net/xt_recent/tarpit 

    这个速度将尝试限制在300秒内。 请注意,拥有现有连接的用户不会受到此限制的困扰,因为他们已经build立了连接,并且可以创build更多(甚至超过速率限制)。

    根据自己的喜好调整规则,但要确保按顺序添加规则(即,按照顺序添加,然后以相反的顺序插入)。

    这极大地降低了噪音。 它还提供了实际的安全(反对暴力),而不像改变港口的安全感。 但是,如果在您的环境中可行,我仍然build议更改端口。 它也会降低噪音水平

    你仍然可以将它与fail2ban结合起来,虽然我没有它,只有上面的规则运行得很好。

    编辑:

    这样做可以locking自己,所以你可以添加如下的东西,让你通过敲一个特定的端口来清除你的禁令:

     iptables -A INPUT -i if0 -p tcp --dport <knockport> -m state --state NEW -m recent --name tarpit --remove 

    你可以实现fail2ban ,或类似的方法,如lockingSSH到你的IP。 可悲的机器人试图暴力访问,所以这是非常正常的,你需要确保你有一个很好的密码。

    是的 。 现在很正常

    如果可能的话,请仅使用公钥authentication进行pipe理。 在工作站上生成一个私钥:

     $ ssh-keygen -t dsa 

    〜/ .ssh / id_dsa.pub的内容复制到你的服务器〜/ .ssh / authorized_keys (和/root/.ssh/authorized_keys,如果你需要直接rootlogin)。

    configuration你的服务器/ etc / ssh / sshd_config只接受公钥authentication:

     PubkeyAuthentication yes PasswordAuthentication no PermitRootLogin without-password 

    如果你有太多的服务器,你可以使用Puppet来运行公钥和configuration。

    查看Denyhostsfail2ban以阻止重复的SSHlogin尝试,如果需要完整的IDS / IPS,请参阅Snort

    使用http://denyhosts.sourceforge.net/

    是的,你应该使用公钥authentication和禁用密码authentication。

    这些尝试是机械化的,所以数字看起来确定(是的,他们是比较高的网站和较低的比较)。 您应该采取通常所需的步骤:即使您未检测到攻击,您也可以将您的站点视为攻击目标, 没有检测到攻击,并不意味着它不存在 。

    我只能说只有500个是低的。

    在以前的雇主中,其中一位计算机安全研究人员称不断尝试“互联网等值的宇宙噪音 ”。 他形容这是一个正常的,持续不断的恶意stream量,在互联网上search系统,并自动利用脚本试图劫持系统。 僵尸networking和其他恶意系统将像SETI一样永久扫描和重新扫描互联网以寻找易受攻击的系统。

    是,

    这是常见的,但这并不意味着你不应该打好战斗。 以下是关于如何使服务器更安全的一些步骤。

    避免DNS关联的IP地址

    您可以通过禁用与​​域名关联的任何IP地址上的SSH访问,在共享或共置环境中大大减less此数量。 未列出的非域IP地址将获得较less的这种types的stream量,因此购买一个未列出的IP并仅使用此IP进行SSH访问。

    使用VPN进行所有SSH访问

    如果您处于可以在您的服务器环境中将IPsec / VPN应用于专用networking的环境中,这非常理想。 禁用所有的SSH Internet访问,确保你有一个集成的熄灯解决scheme。 设置你的VPN,只允许从你的VPN访问SSH。

    实施SSH访问的IP地址规则

    如果VLAN不是选项,请configuration您的路由器或防火墙规则,以仅允许来自已知IP地址范围的SSH连接。

    如果你按照这些步骤进行操作,你将会在夜间睡得更容易,因为知道有人不得不妥协你的托pipe公司networking来通过SSH访问服务器。

    很正常,看到数百个失败的SSH连接。

    如果您有select,我只需将我的SSH端口更改为非标准端口。 这不一定会让你的服务器更安全,但它确实清理了日志(并让你看到任何人故意试图插入!)

    除了使用fail2ban之类的自动locking机制之外,还有一个select:实际联系攻击者的滥用地址ISP。 这可能看起来完全没有用处,但对于脚本小孩来说,他们的ISP更愿意对他们采取行动。

    要find滥用地址,请从arin.net开始,使用whois查找IP地址。 您可能被redirect到另一个区域registry,但最终您可以find包含该地址的IP块的负责的ISP。 寻找滥用@地址或只是邮件的技术联系人。

    向他们发送包含相关日志文件条目的礼貌消息(确保删除任何私人信息),并要求他们对违规主机采取行动。

    我build议不要使用fail2ban,而是在非标准端口上运行SSH(和其他)。 我不相信安全的默默无闻,但我认为这是一个很好的方法来减less日志中的噪音。

    在非标准端口上login失败的情况很less,也可能表明更有针对性的攻击。

    你甚至可以更进一步的安装SSH蜜jar,比如Kippo ,让“ 闯入 ”bruteforcers,看看他们会有机会做些什么。

    是的,这很正常。 我在小网站上告诉客户您的情况。

    总是准备好被黑客攻击。

    在开发服务器上有一个你的网站的副本。 这可以是你的Windows桌面使用XAMPP,你可以免费获得。

    始终对您的开发者服务器进行更改,然后将其上传到您的实时网站。 如果它是一个类似于WordPress的CMS,请在开发者服务器上发帖,然后将其复制并粘贴到活动服务器中。

    切勿从您的实时网站下载任何东西到您的开发者服务器。

    定期监视您的网页,以了解您没有做过的任何更改。 特别是隐藏的药物或“增强”产品的链接。 你可以find很多的浏览器插件和程序,将为你做这个。

    如果你被入侵。 通知您的主机,删除所有内容,更改所有的密码,并将您的清洁开发服务器上传到现在空的networking服务器。 与您的主机合作,以防止再次发生。

    你不应该需要一个小型网站的安全团队。 这是你的主机应该提供的。 如果他们不这样做,那么得到另一个主机,当你有一个开发服务器,而不是试图移动活动的服务器时,更容易做到这一点。

    希望这可以帮助。

    阻止它的另一种方法(因为我个人不喜欢移动SSH端口):决定是否能列出所有您想要login的networking,然后只允许它们访问您的SSH端口。

    当地ISP的WHOIS条目帮助我将攻击减less到每月1-2次login尝试(当时约为1k /天)。 我通过仍然使用denyhosts检测到这些。

    除了已经收到的其他优秀build议之外,我还喜欢在给定的服务器上使用AllowUsers指令。 这只允许指定的用户通过SSHlogin,这大大降低了通过不安全configuration的访客/服务/系统帐户获得访问的可能性。

    例:

     AllowUsers admin jsmith jdoe 

    AllowUsers选项指定并控制哪些用户可以访问ssh服务。 可以指定多个用户,用空格分隔。

    是的,这是正常的。 您可以 :

    • 通过使用fwknop减less攻击的机会

    Fwknop是更好的端口爆发实现之一,因为它不是可伪造的,而是实际进行身份validation,而不是授权连接。

    • 你可以改变Openssh使用的端口,但是你并没有真正提高安全性。

    • 使用Google身份validation器或wikid强化 ssh身份validation

    这将保护基于密码的攻击和一个确定的攻击者/有针对性的攻击可能危及您的pipe理员的机器,并窃取您的SSH密钥和密码组合。

    只要看看最新的pwn2own压缩文件,看看一个熟练的攻击者妥协你的完全修补的pipe理员是多么容易。

    可悲的是这很正常。 您应该考虑在系统中添加fail2ban等function ,以自动检测并禁止攻击者。 如果你还没有这样做,你也应该考虑只使用ssh和公共密钥,并且不允许通过ssh进行root用户login。 如果使用ftp将文件传输到系统,请考虑使用scp / sftp。

    我实现了端口敲打,并且每天都有一些探测。 他们没有联系,所以他们走了。 我login并报告涉及的端口的所有访问。

    我还运行了Shorewall作为防火墙的fail2ban,暂时将持久性攻击者列入黑名单。

    如果您不需要通过SSH访问Internet,请将其禁用。 如果您有几个需要远程访问的已知地址,请限制对这些地址的访问。

    限制对授权密钥的访问也是有帮助的。

    我使用pam_abl临时将暴力破解者黑名单,而且效果很好。 我认为在PAM中使用自己的数据库进行授权,而不是依靠hosts.denyiptables ,感觉更好。

    另一个pam_abl是, pam_abl不依赖扫描日志文件。

    这几天完全正常。
    您可以在防火墙上为SSH端口上的传入新连接设置“突发”
    或者安装多个日志parsing器之一,或者更改SSH端口;)。

    最后一个是最简单的一个。 在重载机器上,这种磨合尝试会对整个系统造成严重的不良影响。


    问候,
    罗伯特

    是的,这是正常的。

    我只是把标准的22端口改成了ssh端口。我的服务器,我的规则:)只需编辑/ etc / ssh / sshd_config,更改端口并重新启动服务。 唯一不好的一面是你必须记得把这个端口添加到你使用的每一个ssh客户端。

    • 禁用rootlogin(在每一个linux系统中都存在root用户,所以僵尸程序可以很容易地猜到用户名)。以普通用户身份login后,可以通过su或sudo切换到root用户。

    • 从22更改默认端口

    • 只允许已知IP的ssh访问

    • 使用ssh访问的用户使用强大的字母数字密码