我刚刚检查了我的服务器的/var/log/auth.log
,发现我每天收到超过500次失败的密码/闯入尝试通知! 我的网站很小,而且它的url很模糊。 这是正常的吗? 我应该采取什么措施?
在今天的互联网上,这很可悲。 有大量的僵尸networking试图login到他们在整个IPnetworking中find的每个服务器。 通常,他们使用简单的字典攻击知名的帐户(如根或某些应用程序帐户)。
攻击目标不是通过Google或DNS条目find的,但是攻击者只是尝试某个子网中的每个IP地址(例如已知的根服务器托pipe公司)。 所以你的URL(因此DNS条目)是相当模糊的没关系。
这就是为什么它如此重要:
此外,您可以安装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。
查看Denyhosts和fail2ban以阻止重复的SSHlogin尝试,如果需要完整的IDS / IPS,请参阅Snort 。
使用http://denyhosts.sourceforge.net/
是的,你应该使用公钥authentication和禁用密码authentication。
这些尝试是机械化的,所以数字看起来确定(是的,他们是比较高的网站和较低的比较)。 您应该采取通常所需的步骤:即使您未检测到攻击,您也可以将您的站点视为攻击目标, 没有检测到攻击,并不意味着它不存在 。
我只能说只有500个是低的。
在以前的雇主中,其中一位计算机安全研究人员称不断尝试“互联网等值的宇宙噪音 ”。 他形容这是一个正常的,持续不断的恶意stream量,在互联网上search系统,并自动利用脚本试图劫持系统。 僵尸networking和其他恶意系统将像SETI一样永久扫描和重新扫描互联网以寻找易受攻击的系统。
这是常见的,但这并不意味着你不应该打好战斗。 以下是关于如何使服务器更安全的一些步骤。
您可以通过禁用与域名关联的任何IP地址上的SSH访问,在共享或共置环境中大大减less此数量。 未列出的非域IP地址将获得较less的这种types的stream量,因此购买一个未列出的IP并仅使用此IP进行SSH访问。
如果您处于可以在您的服务器环境中将IPsec / VPN应用于专用networking的环境中,这非常理想。 禁用所有的SSH Internet访问,确保你有一个集成的熄灯解决scheme。 设置你的VPN,只允许从你的VPN访问SSH。
如果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是更好的端口爆发实现之一,因为它不是可伪造的,而是实际进行身份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.deny
或iptables
,感觉更好。
另一个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访问的用户使用强大的字母数字密码