我的一个EC2实例几天前被黑了。
我尝试通过SSH登录到服务器,但我无法连接。我是唯一一个可以访问私钥的人,我把它放在一个安全的地方。
幸运的是,我对所有内容进行了备份,并能够将网络应用程序快速移动到新实例。
我现在关注的是,我不知道我的实例是如何被攻击的。
为什么我无法使用私钥通过SSH登录?我认为存储在服务器上的私钥不能(轻易)删除。
有没有办法可以找出黑客如何获得对该实例的访问权限?也许是一个日志文件,它会指向我正确的方向。
我是否应该将有问题的EBS卷附加到新实例并查看其中的内容或在这种情况下我的选项是什么?
现在,似乎我必须完全访问被黑客入侵的实例。
谢谢!
答案 0 :(得分:1)
@Krishna Kumar R对于黑客可能正在改变ssh密钥是正确的。
后续步骤:
安全问题(现在就这样做!):
停止该实例,但尚未终止
撤消/过期存储在实例上的所有敏感凭据,包括其他网站和服务的密码和密钥。存储在该实例上的所有内容都应被视为已泄露。
验尸
获取实例根卷的EBS快照(假设存储日志的位置)
从快照创建新卷并附加到(非生产)实例
装载并开始读取日志。如果这是一个linux主机并且您在防火墙中打开了端口22,那么我将从/<mount-point>/var/log/auth.log
开始
答案 1 :(得分:0)
他们可能已通过密码登录您的计算机。在ssh config中,检查以下值:PasswordAuthentication。如果设置为yes,则用户可以通过密码远程登录实例。检查/ var / log / secure是否有任何远程登录。它将显示所有登录(密码或密钥)。
如果有人以'root'身份登录,他们可以修改ssh密钥。
答案 2 :(得分:0)
您无法登录计算机的事实不意味着它已被“黑客攻击”#34;。这可能是由于实例上的配置更改,或者实例可能在停止/启动后更改了IP地址。
在StackOverflow上搜索连接到实例的问题的标准解决方案并查看是否可以连接(例如,重新检查IP地址,检查安全组,打开 // open sysPrefs
SQLiteAdapterPrefs sysPrefs = new SQLiteAdapterPrefs(this);
sysPrefs.openToRead();
Cursor cursor = sysPrefs.getFirst();
int index_IMEI = cursor.getColumnIndex(SQLiteAdapterPrefs.KEY_IMEI);
int counterRows = cursor.getCount();
Log.v(TAG, "TENTANDO ABRIR PREFS registros no cursor= "+counterRows+" numColumns="+cursor.getColumnCount());
cursor.moveToFirst();
if ( !(cursor.isAfterLast()) ) {
imeiFromDevice = cursor.getString(index_IMEI);
}
Log.v(TAG, "from sysprefs imeiFromDevice: "+imeiFromDevice);
// set preferences and get emailId
try {
boolean prefsOK = sysPrefs.setPrefs();
调试,检查网络连接和VPC设置,查看ssh -v
等。)
最坏情况,是的,你可以: