暴力破解时自动执行 IPTables 规则

暴力破解时自动执行 IPTables 规则

我对网络管理还很陌生,所以请理解我还没有那么多经验。

我有一个带有 plesk 面板的 Ubuntu 根服务器。

昨天,我和朋友注意到我们的 TS3 语音质量变得非常糟糕。我向服务器发送了一些 ping,发现数据包丢失非常严重。之后,我在 Google 上搜索了一下,发现有一个auth.log。我下载了它并浏览了一下,然后我发现了这个:

May 13 10:01:27 rs204941 sshd[9351]: input_userauth_request: invalid user student [preauth]
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): check pass; user unknown
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=112.220.198.102 
May 13 10:01:29 rs204941 sshd[9351]: Failed password for invalid user student from 112.220.198.102 port 39806 ssh2
May 13 10:01:29 rs204941 sshd[9351]: Received disconnect from 112.220.198.102: 11: Bye Bye [preauth]
May 13 10:01:31 rs204941 sshd[9353]: Invalid user student from 112.220.198.102

似乎有人尝试通过 SSH 登录多次。我滚动了一下,发现这个人尝试使用许多不同的用户名:student, tech, psi, news,...

文件中显示了数百个这样的登录信息。

我查看了我所在数据中心的网站上的流量统计信息。每小时只有 17MB。我有一个 100Mbit 主干网,因此数据传输本身似乎不是问题。

目前我无法以任何方式访问服务器。

我的问题是:我如何才能再次获得访问权限,如何才能抑制这次攻击并防止后续攻击?

答案1

如何获得访问权限?

目前尚不清楚您无法访问帐户的原因。

如果您的机器受到攻击或高负载,您应该与您的提供商商讨限制访问(IP 限制)或使服务器离线(断开与 Internet 的连接)。

您可能还需要带外访问,您的提供商也许能够提供帮助。

如果有人入侵了您的服务器,您可能需要从备份中恢复或使用恢复映像。

如何防止对服务器的攻击,尤其是 SSH

防止暴力登录的最佳方法是什么?

首先不要让他们进入你的机器!有很多方法可以在暴力破解尝试进入你的主机之前甚至在 SSH 级别阻止它们。

话虽如此,使用类似 fail2ban 的工具保护您的操作系统是一个好主意。http://en.wikipedia.org/wiki/Fail2ban

Fail2ban 与 DenyHosts 类似...但与专注于 SSH 的 DenyHosts 不同,fail2ban 可以配置为监视将登录尝试写入日志文件的任何服务,并且 fail2ban 可以使用 Netfilter/iptables 和 TCP Wrappers /etc/hosts.deny,而不是仅使用 /etc/hosts.deny 来阻止 IP 地址/主机。

您应该考虑一些重要的安全技术来帮助防止暴力登录:

SSH:

  • 不允许 root 登录
  • 不允许使用 ssh 密码(使用私钥认证)
  • 不要监听每一个接口
  • 为 SSH 创建一个网络接口(例如 eth1),它与您处理请求的接口(例如 eth0)不同
  • 不要使用常见的用户名
  • 使用允许列表,仅允许需要 SSH 访问的用户
  • 如果您需要互联网访问...请将访问限制在一组有限的 IP 上。一个静态 IP 是理想的,但将其锁定为 xx0.0/16 比 0.0.0.0/0 更好
  • 如果可能的话,找到一种无需互联网访问即可连接的方法,这样您就可以拒绝 SSH 的所有互联网流量(例如,使用 AWS,您可以获得绕过互联网的直接连接,这称为直接连接)
  • 使用 fail2ban 等软件来捕获任何暴力攻击
  • 确保操作系统始终保持最新,特别是安全和 ssh 软件包

应用:

  • 确保您的应用程序始终保持最新,特别是安全包
  • 锁定应用程序的“管理”页面。上面的许多建议也适用于应用程序的管理区域。
  • 密码保护您的管理区域,像用于 Web 控制台的 htpasswd 这样的程序将会投射任何潜在的应用程序漏洞,并创建额外的进入障碍
  • 锁定文件权限。“上传文件夹”因是各种恶意内容的入口点而臭名昭著。
  • 考虑将您的应用程序置于私有网络后面,并且仅公开您的前端负载均衡器和跳转箱(这是 AWS 中使用 VPC 的典型设置)

答案2

我该如何抑制这次攻击并防止后续攻击

通常我会将默认的 ssh 端口从 22 更改为其他端口,例如 1122。这可以防止许多来自机器人的自动攻击,但简单的端口扫描就可以检测到它。无论如何:

vi /etc/ssh/sshd_config

并编辑端口 22端口 1122,但这还不够。

暴力破解时自动执行 IPTables 规则

我用log2iptables https://github.com/theMiddleBlue/log2iptables而是使用 Fail2ban,因为它是一个简单的 Bash 脚本,可以使用正则表达式解析任何日志文件并执行 iptables。例如,当出现 5 个匹配项时,log2iptables 会删除特定的 ip 地址。这很酷,因为它使用 Telegram API,并且可以在发现问题时向我的手机发送消息 :)

希望这会有所帮助!

答案3

我刚刚把它们放在一起,每 15 分钟作为 cronjob 运行一次:

for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
  count1=`grep $z /etc/hosts.deny | wc -l`
  count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
  if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
    current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
    sudo cp /etc/hosts.deny.bak /etc/hosts.deny
    sudo chmod 666 /etc/hosts.deny
    if [ $current ] ; then
      echo "sshd : $current , $z" >> /etc/hosts.deny
    else
      echo "sshd : $z" >> /etc/hosts.deny
    fi
    sudo chmod 644 /etc/hosts.deny
  fi
done

答案4

这是我对 SSH 攻击的替代解决方案。这个想法是,如果不使用,请关闭 SSH 守护进程。没有开放端口,就不会受到攻击。你可以试试。它是开源的 https://github.com/indy99/nnet_port_guard

相关内容