我在Amazon EC2上运行一些基于RPM的基于CentOS AMI的实例。 两个月前,我发现我们的SSHD安全性受到了威胁(我为ssh添加了host.allow和host.deny)。 所以我创build了新的实例,并完成了基于IP的ssh,只允许我们的IP通过AWS Firewall(ec2-authorize)并将ssh 22的默认端口chnaged到其他一些端口,但是两天后我发现我无法login到服务器当我试图在22端口的SSH连接,我发现sshd_conf被改变,当我试图编辑sshd_config我发现根文件没有写权限。 所以我尝试了一个chmod,它说拒绝访问“root”用户。 这很奇怪。 我检查了安全的日志和历史,发现没有什么信息。 我有这些服务器上运行的PHP,Ruby On Rails,Java,Wordpress应用程序。
这次我做了一个chkrootkit扫描,什么都没发现。 我重命名了/ etc / ssh文件夹,并通过yum重新安装了openssh。 我曾在CentOS(5.2,5.4)上的3个实例中遇到过这个问题。 这是一个CentOS / Rightscale问题。 伙计们,我应该采取什么安全措施来防止这种情况发生。
我怀疑这可能是一个内部黑客,因为我们只允许我们的IP ssh。
所以我打算使用一个键盘logging器,它可以logging每个用户和terminal的所有按键。 你可以build议我一些Linux的keylogget最适合这个目的吗?
我相信这是ssh攻击,但不知道他们是如何做的。 CentOS 5仍然使用openssh 4.3,所以我编译了openssh 5.5,发现它们已经改变了/ usr / bin / ssh和/ usr / sbin / sshd的属性。 我不得不使用lsattr文件名chattr -ia文件名来删除属性,并成功编译openssh。 现在我正在设置chroot并设置Osiris作为预防措施。
请分享你的想法。 另外我需要一个键盘logging所有的tty键击哪一个你build议?
感谢您的支持。
基本上,你搞砸了。
如果你真的被利用了,他们可以在SSHD二进制文件或者系统上的任何其他文件中添加一个后门…由于源代码可用,所以这很容易实现,如果你没有做到这一点,提前计划。
如果在发生问题之前没有安装Tripwire或类似软件,则基本上必须检查系统上的每个文件,以防止已知的干净安装。
更容易移动你的应用程序到一个干净的服务器。
最好的预防措施是文件完整性扫描程序。 基本上,它检查系统上的每个文件,并对其进行散列。 然后定期重新扫描,并通知您有任何更改。 使清理一阵轻风。
我同意你可能没有通过SSH被利用……我几乎从来没有见过这种情况发生,当它发生时,通常是因为守护进程中没有修补的漏洞。 暴力破解SSH密码通常是一个失败的原因。
编辑:今天下午我一直在读奥西里斯 ,看起来很酷。 它会定期重新扫描并向您发送更改文件的电子邮件。 Tripwire的企业版本提供实时检查,但当然你必须付钱。 还有一个Tripwire的开源版本 ,它已经从更老的开源绊网中拿起了缰绳,而且也非常稳固。
在任何其他事情之前:对任何具有root / sudo访问权限的用户不要重新configuration。 你不想追赶没有发生的攻击。
注意:攻击情况听起来不太可能。 大多数足够聪明的人损害你的机器,并不足以改变SSH端口正在监听的端口。 何必?
一旦你决定你的机器被盗用,考虑你input或存储在服务器公共信息上的任何东西。 更改密码,SSH密钥等
接下来,你需要确定最可能的入口点。 除非你有一些荒谬的密码,否则我很怀疑SSH是最初的妥协。 天文学上更可能的是有人通过你的一个Web应用程序获得访问权限。
将每个应用程序隔离到自己的全新EC2实例。 他们很便宜。 安全妥协可能会破坏您的业务。 这样做可以帮助您隔离单个应用程序的任何漏洞,当发生攻击时,这种漏洞具有指向手指的方便副作用。
检查已知漏洞的版本。 或采取霰弹枪的方法,并升级到最新版本的一切。
如果您的任何应用程序以root身份运行,请立即修复此问题。
如果您的任何应用程序在chroot之外运行,请立即修复此问题。
创build一个没有外部服务器的中央系统日志服务器。 将每个应用程序设置为通过系统日志尽可能详细地logging到此服务器。 当/如果发生攻击,您需要取证来确定它来自哪里以及他们如何进入。
如果您允许通过SSH访问这些服务器,请不要。 更改为ssh密钥。
考虑安装Tripwire,Osiris或其他完整性监视器,以确定什么时候发生了问题。
一个复杂的攻击者会试图掩盖他的踪迹。 如果你没有监视器和保护措施来logging下发生的事情,追逐他就会徒劳无功。 尽可能保持您的系统安全,并确保任何奇怪的活动不会被忽视。
编辑
由于您提到了某些root权限被拒绝的错误,因此请validationroot是唯一分配给UID 0的用户(getent passwd 0)。 如果没有,你绝对妥协。
如果任何binares已经被改变,你可以运行“rpm -aV”。 这将使md5匹配安装在磁盘上的二进制文件的rpm(也检查权限等)。 它不完全tripwire – 并且不会检测如果任何用户上传的内容已经明显改变,但如果在/ usr或/ bin等改变了某些东西,它应该显示出来。
它会标记一堆已经故意改变的/ etc中的一些误报,所以你需要在运行之后查看它的输出。
你确定这不是Rightscales“脚本”(厨师)只是铺垫你的变化?
除非你使用6个字符的小写英文单词密码,否则你的sshd被认为是不合格的。