Советы по изящному захвату (UNIX) производственного сервера

10

После нескольких месяцев забвения, электронной почты и битв за управление наш текущий системный администратор был уволен и передал мне «учетные данные сервера». Такие учетные данные состоят из пароля root и ничего больше: никаких процедур, никакой документации, никаких советов, ничего.

Мой вопрос таков: если он оставил заминированные ловушки, как мне грациозно захватить серверы с минимальным временем простоя?

Вот подробности:

  • один производственный сервер, расположенный в ферме серверов в подвале; Ubuntu Server 9.x, вероятно, с патчами grsec (слухи, которые я слышал в прошлый раз, когда я спросил администратора)
  • один внутренний сервер, который содержит всю внутреннюю документацию, хранилище файлов, вики и т. д. Опять же, сервер Ubuntu, несколько лет.

Предположим, что оба сервера исправлены и обновлены, поэтому я бы предпочел не пытаться взломать мой путь, если нет веской причины (то есть это можно объяснить высшему руководству).

На рабочем сервере размещены несколько веб-сайтов (стандартный apache-php-mysql), сервер LDAP, пакет / сервер электронной почты ZIMBRA и, насколько я могу судить, несколько работающих рабочих станций vmware. Понятия не имею, что там происходит. Вероятно, один из них - мастер LDAP, но это дикая догадка.

Внутренний сервер имеет внутренний wiki / cms, подчиненный LDAP, который реплицирует учетные данные с рабочего сервера, еще несколько рабочих станций vmware и запущенные резервные копии.

Я мог бы просто пойти к администратору фермы серверов, указать на сервер, сказать им: « sudoПожалуйста, выключите этот сервер», войти в однопользовательский режим и покончить с этим. То же самое для внутреннего сервера. Тем не менее, это будет означать простои, расстройство высшего руководства, старый сисадмин, который стреляет в меня и говорит: «Видите? Вы не можете выполнять мою работу »и другие неприятности, и что самое важное, мне придется потерять несколько недель неоплачиваемого времени.

На другом конце спектра я мог просто войти как root и дюйм через сервер, чтобы попытаться понять, что происходит. Со всеми рисками запуска сюрпризы остались позади.

Я ищу решение посередине: стараться, чтобы все работало как есть, понимая, что и как происходит, и, что самое важное, избегая запуска ловушек-ловушек .

Каковы ваши предложения?

До сих пор я думал о «тренировке» с внутренним сервером, отключении сети, перезагрузке с помощью живого компакт-диска, сбросе корневой файловой системы на USB-накопитель и загрузке ее на отключенную изолированную виртуальную машину, чтобы понять прежний способ сисадмина. мышление (а-ля «знай своего врага»). Могло бы вытащить то же умение с производственным сервером, но полный дамп мог бы кого-то заметить. Возможно, я могу просто войти в систему как пользователь root, проверить crontab, проверить .profile для всех команд, которые были запущены, сбросить lastlog и все, что приходит на ум.

И вот почему я здесь. Любая подсказка, независимо от того, насколько мал, будет принята с благодарностью.

Время также является проблемой: триггеры могут происходить через несколько часов или несколько недель. Похоже на один из тех плохих голливудских фильмов, не так ли?

lorenzog
источник
5
Почему уволили сисадмина? Это похоже на ситуацию без выигрыша. Если вы не уверены, что делать и что именно на серверах, это плохо кончится.
cstamas
@cstamas sysadmin был запущен, потому что для каждого запроса, который мы делали (т.е. добавляли пользователя в список рассылки, или создавали псевдоним электронной почты и т. д.), время, которое требовалось, было случайной величиной между t = 1 днем ​​и t = 2 месяцами ( включительно). И он никогда этого не признавал. Плюс куча других плохих поступков, которые я не буду здесь вдаваться в подробности.
Лоренцог
@lorenzog теперь имеет смысл. Похоже, это не будет легкой задачей. Уже есть отличные ответы. Удачи!
cтамас
1
@serverhorror: нет, они просто наняли его, прежде чем я присоединился к этой компании, и теперь он оказался недостаточно хорош. Так как я знал его раньше, у меня была задача «иметь с ним дело». Осторожнее с вашими предположениями.
Лоренцог
1
@lorenzog: Это не о тебе. Дело в том, что на самом деле это вина менеджеров (кто бы это ни был), что ситуация с недокументированной инфраструктурой может даже случиться - как я сказал: без обид только наблюдение (предоставлено субъективное наблюдение)
Мартин М.

Ответы:

12

Как уже говорили другие, это выглядит как свободная ситуация.

(Начиная с конца)

  • Абсолютно новое развертывание

Конечно, вы не можете просто отключить серверы и позволить установщику творить чудеса.

Общий процесс

  • Получить бюджет для резервного сервера (резервное копирование в хранилище данных)
  • создавать снимки данных и помещать их там, прежде чем делать что-либо
  • Получить это подписано руководством!
  • Соберите список требований (нужна ли вики, кто использует экземпляры VMWare, ...)
    • От управления и
    • От пользователей
  • Получить это подписано руководством!
  • Завершите работу незарегистрированных служб на неделю (по одной службе за раз - iptables может быть вашим другом, если вы хотите просто отключить внешние службы, но есть подозрение, что они все еще могут использоваться из приложения на том же хосте)
    • Нет реакции? -> окончательное резервное копирование, удалить с сервера
    • Реакция? -> Поговорите с пользователями сервиса
    • Соберите новые требования и получите, что подписали руководство!
  • все незарегистрированные сервисы не работают в течение месяца и никакой реакции? -> rm -rf $service(звучит резко, но я имею в виду вывод из эксплуатации)
  • получить бюджет на запасной сервер
  • переносить одну услугу за раз на запасную
  • получить это подписано руководством!
  • завершить работу перенастроенного сервера (отключить питание)
  • узнайте больше людей, которые кричат ​​на вас -> ууу, вы только что нашли остатки
  • собирать новые требования
  • запустить снова и перенести службы
  • повторяйте последние 4 шага, пока в течение месяца не придут люди
  • повторно разверните сервер (и получите это подписанное руководством!)
  • промыть и повторить весь процесс.
    • перераспределенный сервер - ваш новый запасной

Что вы получили?

  • Инвентаризация всех услуг (для вас и руководства)
  • Документация (в конце концов, вам нужно что-то записать для руководства, почему бы не сделать это правильно и сделать что-то для вас и руководства)

Там это сделано, совсем не весело :(

Зачем вам нужно, чтобы руководство подписало его ?

  • Сделайте проблемы видимыми
  • Будь уверен, что тебя не уволят
  • Возможность объяснить риски
    • Хорошо, если они не хотят, чтобы вы это делали, но в конце концов это их решение сделать после того, как они получат достаточно информации, чтобы судить, стоит ли инвестировать.

Да, и представьте им общий план перед началом , с некоторыми оценками того, что произойдет в худшем и лучшем случае.

Это не займет много времени, независимо от перераспределения, если у вас нет документации. Не нужно думать о бэкдорах, ИМХО, если у вас нет документации, скользящий переход - это единственный способ достичь нормального состояния, которое принесет пользу компании.

Мартин М.
источник
Это очень хорошая перспектива. Спасибо. Я, безусловно, последую вашим советам по поводу того, как все обойтись без управления и медленного передислокации серверов. Это будет больно, но это звучит как лучший разумный курс действий.
Лоренцог
По соответствующей документации я предлагаю следующее: serverfault.com/questions/25404/… (также см. Общую тему) работает очень хорошо (по крайней мере для меня)
Мартин М.
4

У вас есть основания полагать, что предыдущий админ оставил после себя что-то плохое, или вы просто смотрите много фильмов?

Я не прошу быть шутливым, я пытаюсь понять, какую угрозу вы думаете, и насколько она вероятна. Если вы думаете, что шансы на самом деле очень велики, что действительно может возникнуть какая-то серьезная проблема, я бы посоветовал рассматривать ее как успешное вторжение в сеть .

В любом случае, ваши начальники не хотят прерывать время простоя, пока вы с этим справляетесь - каково их отношение к запланированному времени простоя, чтобы привести в порядок системы по сравнению с незапланированным временем простоя, если есть сбой в системе (будь то настоящий сбой или мошенник админ) и если их отношение реалистично против вашей оценки вероятности того, что у вас действительно будут проблемы здесь.

Что бы вы ни делали, учтите следующее:

Сделайте снимок системы прямо сейчас . Прежде чем делать что-то еще. Фактически, возьмите два и отложите один в сторону и не трогайте его снова, пока не узнаете, что, если что-то происходит с вашей системой, это ваш отчет о том, как работала система, когда вы ее захватили.

Восстановите «второй» набор образов на некоторых виртуальных машинах и используйте их для проверки того, что происходит. Если вас беспокоит, что что-то сработает после определенной даты, установите на виртуальной машине дату на год вперед.

Роб Моир
источник
У меня есть основания подозревать, что может быть что-то скрывается, так как мы не расстались на лучших условиях. Предыдущий сисадмин был хорошим другом, мы были соседями по комнате во время учебы в колледже, и я «научил его» многим приемам, которые он позже использовал, чтобы стать сисадмином, пока я шел по пути разработки программного обеспечения и управления проектами. Поскольку в это вовлечены личные чувства (он обвинил меня в том, что мне удалось его уволить), я не могу ожидать разумного поведения. Примите это как отношения отца и сына, когда сын хочет доказать свою доброту отцу, в некоторой степени.
Лоренцог
4

Прежде всего, если вы собираетесь потратить на это дополнительное время, я бы посоветовал вам действительно заплатить за это. Похоже, вы приняли неоплачиваемую сверхурочную работу как факт, судя по вашим словам - по-моему, так не должно быть, особенно если вы не в такой ситуации из-за чьей-то вины (будь то руководство, старый сисадмин или, вероятно, комбинация обоих).

Отключите серверы и загрузитесь в однопользовательском режиме (init = / bin / sh или 1 в grub), чтобы проверить команды, которые запускаются при входе root. Время простоя здесь необходимо, дайте руководству понять, что нет другого выбора, кроме некоторого времени простоя, если они хотят быть уверены, что смогут сохранить свои данные.

После этого просмотрите все cronjobs, даже если они выглядят законно. Также выполните полное резервное копирование как можно скорее, даже если это означает время простоя. Вы можете превратить ваши полные резервные копии в работающие виртуальные машины, если хотите.

Тогда, если вы сможете заполучить новые серверы или работающие виртуальные машины, я на самом деле перенесу сервисы в новые, чистые среды один за другим. Вы можете сделать это в несколько этапов, чтобы минимизировать время простоя. Вы получите столь необходимые глубокие знания об услугах, восстановив доверие к базовым системам.

В то же время вы можете проверить руткиты, используя инструменты как chkrootkit . Запустите nessus на серверах, чтобы найти дыры в безопасности, которые может использовать старый администратор.

Редактировать: Я думаю, что я не ответил на «изящно» часть вашего вопроса, как я мог. Первый шаг (переход в однопользовательский режим для проверки ловушек при входе в систему), вероятно, может быть пропущен - старый системный администратор, предоставляющий вам пароль root и настраивающий вход в систему rm -rf /, будет почти таким же, как сам удаляющий все файлы, поэтому вероятно, нет смысла делать это. Что касается резервного копирования: попробуйте использовать rsyncрешение на основе, чтобы вы могли сделать большую часть первоначального резервного копирования онлайн и минимизировать время простоя.

Эдуардо Иванец
источник
0

Я потрачу время на изучение того, какие приложения работают на этих серверах. После того, как вы узнаете, что к чему, в любой момент вы можете установить новый сервер. В случае, если вы чувствуете, что это может быть какой-то бэкдор, будет хорошей идеей просто загрузиться в одиночном режиме или иметь межсетевой экран между серверами и внешней сетью.

silviud
источник
0

Вы становитесь параноиком по поводу безопасности. Там нет необходимости становиться параноиком. (Потому что вы говорите о минах-ловушках). Просмотрите список установленных программ. Посмотрите, какие службы запущены (netstat, ps и т. Д.), Посмотрите задания cron. Отключите предыдущую учетную запись администратора sys без удаления учетной записи (это легко сделать, указав оболочку на nologin). Смотрите через файлы журнала. Я думаю, что благодаря этим шагам и вашим знаниям о потребностях компании, из которых вы можете догадаться об использовании серверов, я думаю, вы сможете поддерживать их без каких-либо серьезных ошибок.

bagavadhar
источник
1
Я согласен, что речь идет не о безопасности (иначе они вообще не должны были нанимать старого администратора). Но речь идет о том, сколько можно добавить. Я полностью не согласен со всем остальным. Просто нет нормального пути без какого-либо инвентаря для управления вещами. Через некоторое время пользователь придет и ударит вас, потому что что-то, чего вы никогда не слышали, перестало работать В конце концов, за каждым видимым для пользователя сервисом стоит некоторая инфраструктура. И нет даже документации об этих услугах ...
Мартин М.