有人正试图强制SSH访问我的服务器

巧合的是,我看着我的服务器的SSH日志(/var/log/auth.log),我注意到有人不断尝试获得访问权限:

Sep 7 13:03:45 virt01 sshd[14674]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.42 user=root Sep 7 13:03:48 virt01 sshd[14674]: Failed password for root from 116.31.116.42 port 13423 ssh2 Sep 7 13:03:52 virt01 sshd[14674]: message repeated 2 times: [ Failed password for root from 116.31.116.42 port 13423 ssh2] Sep 7 13:03:52 virt01 sshd[14674]: Received disconnect from 116.31.116.42: 11: [preauth] 

这种情况每分钟都会发生几次,而且已经持续了很长时间,而我却不知道这一点。

问题我应该关心这个问题,如果是的话:我该怎么办?

    不幸的是,这是绝对正常的,每个SSH服务器的经验。 欢迎来到互联网。

    只要你正确地保护你的服务器(例如保持更新,只允许基于密钥的login,禁用root SSH访问),这应该不是问题,但是你可以用fail2ban类的方法进一步限制它, IP白名单,改变端口和类似的东西在可能和适当的地方。

    1. 使用防火墙阻止IP(iptables或任何您的服务提供)。 是的,他们可能会改变知识产权,但让他们做的工作
    2. 如果您有外部防火墙(例如AWS控制台允许您通过网页设置访问规则),请考虑将端口22限制为您的IP。 在这种情况下,无需摆弄fail2ban
    3. 如注释中所述,切换到基于密钥的身份validation并closures密码身份validation
    4. 禁用rootlogin 。 将其添加到/etc/ssh/sshd_config

       PermitRootLogin no 

      只要让他们把所有想要的东西都凿出来。 那么他们永远不会这样。

    除了像Sven指出的那样保证服务器的安全以外,最好的事情之一(尤其是如果你是ssh的话,pipe理员)只需要将sshd端口从默认端口22改为远端端口即可。

    它不仅简单(特别是当你把新的端口放到你的~/.ssh/config所以你不必每次都input),它会停止99%的自动扫描,所以你甚至不会看到它们,但是即使发现一些0天的ssh漏洞给你更多的时间,或者你的密钥被泄露了,也会有所帮助。

    这很正常的行为。 我每天得到数千人,而且我认为即使这个数字与大公司所面临的情况相比也是微不足道的。

    但是你需要担心吗?

    • 你安装了fail2ban吗?
    • 你禁用root sshlogin?
    • 你有没有阻止来自SSHlogin的用户www-data?
    • (可选)您是否禁用了基于密码的login而使用公钥login?
    • (可选)您是否将SSH端口从22更改为其他内容?
    • (可选)您是否添加了用于login的TOTP pam模块 ?

    如果是,那么你不必担心。 这些攻击通常是对普通unix用户名的基于字典的攻击。 例如,我经常看到那些“用户”尝试login:

    • www数据
    • testing
    • pipe理

    真的build议安装fail2ban ,因为它会限制任何用户根据他们的iplogin,只能过滤掉大部分的恶意stream量。 相反别人说,我不是一个基于IP的阻止的支持者。 这似乎是一个非常粗糙的解决scheme,一个非常好的问题。 而且,这些攻击者通常控制多个IPS,所以即使你阻塞了几个(甚至几个IP块),也不能保证你全部阻止。 然而,Fail2ban对于这些场景非常灵活。