Комментарии 51
Жуть какая, там-же открытые ключи, их хоть на заборе писать можно. Понятно, что удалить наверно надо, вдруг злоумышленник свои подкинул, но менять-то зачем? Как можно по имеющемуся открытому ключу что-то скомпрометировать, кроме самого себя (подложив эти ключи себе на сервер, например)?
Ну и если взлом прошел с участия рута, тут уже может быть всё бесполезно, sshd заменен на не родной с бэкдором, загружен модуль ядра с руткитом и т.д. и т.п. Обычно после этого просто делают полную переустановку, т.к. аудит всей системы дело не самое простое.
атата, все правильно! нельзя бездумно копипастить команды из интернета. А так перенаберешь руками, может хоть задумаешься =)
Однако перепечатать с картинки юные падаваны могут куда хуже, чем контрол копи контрол паст, ведь они всё равно будут так делать (бездумно копировать команды).
Сохраняем, для сравнения: чтобы особенно ленивые пользователи не могли использовать старый, возможно скомпрометированный доступ
Ах ты ж хитрая этасамая!
А если серьезно, то у меня вопрос: какой метод организации ключей считается правильным™?
На данный момент у меня на дев машинке есть один ssh ключ, который я использую везде: на других дев-серверах, на гитхабе, на домашнем НАСе и т.д. И если вдруг системный администратор одной из машин, где у меня этот ключ провернет ваш фокус, то я вынужден буду сгенерировать новый ключ и пободавлять его везде в authorized_keys, что неиллюзорно добавит мне головняка.
Как надо делать? По ключу на каждую машину и хранить охапку ключей, которые прописаны в ~/.ssh/config для каждого сервера?
~ $ ssh-keygen -t rsa
~ $ cat .ssh/id_rsa.pub | ssh artyom@prod.mycompany.com "cat >> .ssh/authorized_keys"
~ $ cat .ssh/id_rsa.pub | ssh artyom@test.mycompany.com "cat >> .ssh/authorized_keys"
~ $ cat .ssh/id_rsa.pub | ssh artyom@docs.mycompany.com "cat >> .ssh/authorized_keys"
Во-первых, интернет от себя защищать обязательно надо.
Не только из гуманистических побуждений: ещё, скажем, чтобы ЦОД/провайдер не заметил от вас подозрительный трафик и не заблокировал от греха подальше, чтобы сети его самого уже в свою очередь не заблокировал какой-нибудь спамхаус. Ведь именно это, судя по всему, и произошло.
Канал ftp-data только кажется закрытым. В ядре есть ftp-helper, пакеты пройдут со state=RELATED. Но я на месте автора снёс бы ftp к чертям, пусть sftp пользуют (который через ssh, с теми же самыми ключами).
То же самое, серверу, как правило, нет потребности подключаться к 80 и 443, кроме отдельных адресов (обновления, внешние API).
Если сервер сломали, но рута не получили (как это бывает в подавляющем большинстве случаев), такой файерволл практически сведёт проблемы на нет.
А ещё, коллеги, tripwire и аналоги в помощь. Если сервер важный — на /etc /bin /sbin /usr/bin /usr/sbin /usr/lib и другие важные места — inotify-листенер, чтобы любые изменения там заведомо отсылались на внешний лог-сервер до того, как программы (возможно, уже с закладками) будут перезапущены.
Смысл тут не в том, чтобы «не переустанавливать», а чтобы узнать о проблеме оперативно, и заодно иметь достаточно информации, чтобы определить, какая была лазейка.
Отобрал сервер обратно с третьей попытки.
Стоит поискать все файлы которые не принадлежат пакетам, сравнить версии исполняемых файлов с тем, что лежит в репозитории.
А вообще у вас же виртуалка, можно было снять копию для развлечений, заблочить исходящие порты (чтобы OVH не гневался), навесить скриптов слежения (по смыслу как в статье + может что-то типа snort) и ждать гостя :)
А в это время все остальные с чистой системой пусть работают.
Простой потеря денег. Админ за месяц до того уволился, вроде добровольно.
Было не очевидно, подхватит ли он лицензию на этот самый билинг после переустановки.
Попросили спасти, удалось. Но было интересно.
Изучение логов показало что был подобран пароль SSH, установлен какой-то известный зловред, машинка использовалась для рассылки спама. При гигабитном канале и шестнадцати ядрах рассылка шла весьма эффективно. :-)
Можно проверить весь установленный софт.
Посмотрите аналог на убунте.
Вы просто остановили скан, но не гарантия, что закрыли все дыры на сервере. Может команда ls кроме вывода файлов у вас сейчас еще меняет рутовый пароль и шлет его взломщику.
А вообще, если по хорошему — после взлома сервер надо ставить с нуля.
1. Загрузиться с live-cd потом выполнить
rpm --root /mnt/hacked_system_root_directory -Va
2. Если видно что файлы(binary/lib) изменены, то переустановить пакет:
rpm --root /mnt/hacked_system_root_directory -qf /пусть_до_измененного_файла_вместе_с_именем_файла
rpm --root /mnt/hacked_system_root_directory -ivh --force имя-пакета.rpm
понятное дело что пакет должен быть той же версии что и установленный ну или более свежей, тут главное чтоб зависимости не ломали ничего.
Если много что надо так менять имеет смысл использовать yumdownloader + yum --installroot=/mnt/hacked_system_root_directory localinstall package1 package2…
Опыт работы со взломанным сервером