我的 EC2 实例最近被黑了。这并不重要,因为我刚刚启动我的网站并且我的服务器上还没有敏感信息,但我确实计划将来会有。我将终止受感染的服务器并设置另一台服务器以保护我的网站。
我的问题是我想确保这种情况永远不会再发生,我可以说服自己我的新服务器是安全的唯一方法是知道第一台服务器是如何被破坏的,并确保新服务器不会被相同的服务器破坏方法。但是,我无法识别/理解第一台服务器是如何被黑客入侵的。
使用的堆栈是 Rails 4.2.4 + Postgresql 9.3 + Puma + Nginx 1.4.6。我正在运行的服务器是 AWS EC2 t2.micro 实例上的 Ubuntu 14.04.2 LTS。我的 AWS 访问密钥尚未在任何地方发布,并且我是唯一应该拥有对我的服务器进行 SSH 访问的人。
现在我不是黑客,甚至不是一个好的系统管理员(虽然我正在学习)所以我必须对服务器是如何被渗透的保持开放的态度,但是因为我访问我的服务器的唯一方法是通过 SSH,我假设这也是黑客入侵的方式。我错误地将 SSH 端口 22 的入站安全组规则保留为 0.0.0.0/0 的来源,这也让我认为这很可能是黑客进入的方式。
我使用类似于命令的私钥通过 ssh 访问我的服务器
ssh -vi "/home/me/.ssh/my_private_key.pem" ubuntu@my_aws_instance.com
我收到一封来自 ec2-abuse@amazon.com 的电子邮件,通知我我的服务器一直在进行 DDOS 攻击。虽然我无法通过查看我的日志来验证这一点,但我确实发现了一些隐藏的 php 脚本,/var/tmp
它们看起来好像是为了发送网络钓鱼电子邮件而设计的,这让我确信服务器确实被黑客入侵了。
hydra
当我试图攻击自己的服务器时,没有为 ssh 设置密码。这对我来说意味着攻击者一定猜到了我的 RSA 私钥……除非我知道这实际上是不可能的。
我不知道服务器可能受到损害的任何其他可能方式。有没有人有任何想法?我的任何假设或步骤是否错误?
入站安全组规则(被黑客入侵时):
HTTP TCP 80 0.0.0.0/0
PostgreSQL TCP 5432 0.0.0.0/0
SSH TCP 22 0.0.0.0/0
Custom TCP Rule TCP 9200 91.216.55.150/32
在此先感谢您的帮助。我确定我遗漏了很多有用的信息,所以如果您还有什么想知道的,请尽管询问。
编辑:
该网站确实包含一些相当标准的 Rails 数据输入功能。主要通过 html 表单,我还允许使用名为carrierwave的 gem 上传图像。