Консультант по удаленному администрированию Linux - лучшая практика [закрыто]

19

Мы привлекаем консультанта в Индии в качестве нашего администратора Linux. Мы его не очень хорошо знаем, и для его работы ему необходим доступ Root ко всем нашим серверам (включая аудит безопасности).

Какова наилучшая практика предоставления удаленного консультанта для такой работы, чтобы мы были защищены от любых злокачественных действий?

Заранее спасибо.

Андерсон Тесс
источник
66
Если вы не доверяете кому-то, не предоставляйте им доступ к вашим серверам. Период. Наймите кого-нибудь, кому вы можете доверять.
EEAA
6
Не можете не задаться вопросом, является ли это действие обязательным для высшего руководства, и вы ищете боеприпасы / хорошие аргументы против этого?
Мэтт
5
LOL ... Это хорошая идея?
17
5
Если вы предоставляете кому-то root-доступ к своим серверам, у вас нет абсолютно никакой возможности системно защитить себя от злонамеренных действий на машинах, к которым у пользователя есть root-доступ.
Крейг
3
Надеюсь, у вас хорошие резервные копии в автономном режиме
CaffeineAddiction

Ответы:

55

Не . Кроме того, вы подвержены такой же опасности неумелости, как и злого укуса, от того, что я видел в типичных способах, которыми компании справляются с этим.

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

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

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

Теперь, когда я справился с «неумелой» частью этого,

Администрация довольно широкая фраза. И кто-то с доступом с правами root может сделать что угодно . Теперь лично я думаю, что создание учетной записи для администратора и предоставление ему возможности подняться с помощью sudo - лучшая идея (с которой ваша система управления конфигурациями должна справиться, если у вас много серверов). Тем не менее, даже это зависит от определенного количества доверия. Есть так много историй о явном повреждении, которое может нанести недовольный системный администратор. Изменить все ваши пароли? Конечно, вы можете войти в конце концов, но это не тривиально, и это, вероятно, будет стоить больше, чем вы экономите.

Итак, рассмотрим местный. Если нет, подумайте о ком-то, кого вы сами проверили и наняли напрямую .

Подмастерье
источник
35
Мне достаточно трудно дать привилегированный доступ к парню в одной двери от меня, не говоря уже о том, чтобы кто-то находился в 12 часовых поясах. Мое уму непостижимо, что кто-нибудь мог даже рассмотреть это как выбор.
EEAA
7
Если вы ходите по магазинам, вы даже не будете знать, кто на самом деле владеет этими корневыми учетными данными, у вас нет гарантии, что человек, работающий в ваших системах сегодня, будет тем же человеком, который будет работать над ними завтра, у вас нет гарантии, что эти парни не будут отправлять друг другу ваши пароли корневого уровня в открытом виде (я видел это слишком много раз) и так далее.
Крейг
2
Никто не должен входить в современный дистрибутив Linux с правами root. У учетной записи root даже не должно быть пароля. Вместо этого должны быть пользователи, которые имеют suполномочия подняться до уровня root. Когда кто-то говорит, что ему нужен «root-доступ», это то, о чем он должен просить. Если этот человек говорит, что ему нужен «пароль root», он все равно не компетентен выполнять эту работу.
Монти Хардер
@MontyHarder Вы имеете в виду (определенные) пользователи должны иметь sudoполномочия подняться до root? Если нет, не могли бы вы рассказать о своих лучших методах использования suдля повышения уровня своих прав, не имея и не распространяя пароль root?
MadHatter поддерживает Монику
2
@MontyHarder, который имеет большой смысл, это просто не то, что вы сказали в первый раз; sudoи suдве совершенно разные вещи. Спасибо за разъяснение.
MadHatter поддерживает Монику
33

Как уже упоминалось, не делай этого.

Единственный способ защитить себя - сделать что-то вроде этого:

  1. Настаивайте на том, чтобы консультант использовал выбранную вами систему управления конфигурацией.
  2. Консультант напишет манифесты управления конфигурацией для необходимых вам действий.
  3. Консультант проверит манифесты на тестовой системе.
  4. Когда все будет готово, консультант передаст конфигурацию в хранилище кода.
  5. Все изменения рассматриваются одним из ваших сотрудников или другим консультантом, который не имеет абсолютно никакого отношения к первому и не имеет возможности связаться с ними.
  6. Как только изменения будут подписаны, они будут применены к серверу вами или сотрудником. Первоначальный консультант не должен иметь доступа ни к одной из ваших систем.

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

Однако, как я рекомендовал, вам гораздо лучше нанять известного, доверенного человека.

EEAA
источник
Почему нет? Я работаю удаленно, управляю около +300 выделенных серверов, в течение одного часа я могу уничтожить все, если захочу. Но, конечно, я бы этого не сделал, даже если бы меня уволили. Я отвечаю за создание резервных копий, обладаю самыми высокими привилегиями (не только я, пара из нас), и мы можем стать злонамеренными в любое время. Причина, по которой мы этого не делаем - это мораль и этика. Мы любим компанию и сотрудников и нашу работу в целом. Главное здесь - доверять кому-то и найти морального человека для этой работы.
беглец
@fugitive Вы говорите о другой ситуации. Я предполагаю, что вам доверяет компания, к которой вы обращаетесь, иначе они бы не предоставили вам разрешения, которые у вас есть. В случае с OP, очевидно, что они не доверяют этому консультанту, поэтому я рекомендовал не давать этому человеку разрешения на любые системы, которые имеют значение.
EEAA
Ну, доверие должно быть заслужено. :)
беглец
10

Какова наилучшая практика предоставления удаленного консультанта для такой работы, чтобы мы были защищены от любых злокачественных действий?

С юридической точки зрения: должная осмотрительность заранее и строгие штрафы за нарушение договора.

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

Затем примените кнут : платите справедливую стоимость, предлагайте привлекательную работу, замечательных коллег, хорошие условия труда, льготы и т. Д. ( Если вы платите арахис, вы получаете обезьян ).

И клюшка : нарушите условия вашего трудового договора / контракта на обслуживание, и мы заразим вас нашими адвокатами и оставим вас банкротами!

К сожалению, оба перечисленных варианта становятся все более сложными при пересечении границ и часовых поясов.

Как только вы решите нанять кого-нибудь:

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

Этот вопрос подробно описывает то, что я обычно прошу своих клиентов сделать для меня удаленный доступ, что также может стать отправной точкой для вас.

HBruijn
источник
3
«если вы платите арахис, вы получаете обезьян» или слонов. Хотя если подумать, я не уверен, лучше это или хуже, чем у обезьян.
CVn
Просто добавьте, что часть вашего ответа может быть более сложной, если другая сторона находится в другой стране. Вы должны проконсультироваться с опытным / опытным юристом, чтобы узнать, какие у вас есть возможности, если что-то пойдет не так.
user121391
Кроме того, правоприменение после инцидента, вероятно, отстой больше, чем работа с партией, которой вы можете доверять. Точно так же есть люди, которым вы полностью можете доверять, к которым вы не можете автоматически склоняться, и люди, к которым вы инстинктивно тяготеете, к которым вы, вероятно, вообще не должны доверять.
Крэйг,
7

На ум приходит один системный метод защиты, о котором я не упоминал.

Размещайте экземпляры Linux в качестве виртуальных машин на гипервизоре виртуализации (VMware, Xenserver, Hyper-V и т. Д.).

НЕ ДАЙТЕ удаленному администратору административный доступ к гипервизору. Удаленный администратор получит только root-доступ к самим виртуальным машинам.

Внедрить систему резервного копирования на основе гипервизора (Unitrends, Veeam, vSphere Data Protection и т. Д.)

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

НЕ ДАЙТЕ удаленному администратору доступ для записи в резервные хранилища.

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

Это не будет доказательством против атаки по боковому каналу гипервизора, которая потенциально может быть смонтирована изнутри виртуальной машины, к которой злоумышленник имеет root-доступ.

Если ваши резервные копии не заходят достаточно далеко во времени, это не защитит вас.

Вы должны полностью доверять тому, кто контролирует ваш гипервизор и инфраструктуру резервного копирования.

Если вы делаете это в облаке (AWS, Azure и т. Д.), Детали реализации будут отличаться, но общая концепция будет такой же.

По сути, разделите обязанности между сторонами, которые не являются деловыми партнерами, в дополнение к найму людей, которым вы доверяете.

Craig
источник
1
К тому времени, как вы все это сделали, вы уже являетесь системным администратором и нанимаете удаленного лакея или PFY.
Кригги
3
Не совсем. Вы управляете только гипервизором и резервными копиями. Что, по общему признанию, не является ничем. Но это не обязательно тот же набор навыков или административное бремя. Скорее всего, если вы делаете виртуализацию (мы), что у вас есть другой человек или люди, отвечающие за то, что происходит на отдельных виртуальных машинах в любом случае.
Крейг
1
Хотя общая идея хороша, она помогает только против некомпетентности / ошибок (удалила производственную базу данных и т. Д.), А не против злого умысла (если вы не проверяете каждое изменение каждый день и не сравниваете содержимое изменений, по сути ежедневный полный аудит). Кроме того, ущерб может быть не связан с техническими вещами, например, данные клиента или коммерческие секреты, которые были вывезены, не могут быть сдержаны таким образом, поскольку они являются только реактивными.
user121391
@ user121391: Я не могу не согласиться, особенно с вопросом об удалении данных. Как только данные взяты, они полностью вне вашего контроля.
Крейг
-1

Дайте ему свою учетную запись. Затем выясните, к чему ему конкретно нужен доступ, и предоставьте только этот доступ, но больше ничего. Например, если ему нужно перенастроить веб-сервер Apache, используйте ACL, чтобы предоставить ему доступ на запись к файлам конфигурации Apache, и настройте его так, sudoчтобы он перезапускал службу Apache, но не выполнял никаких других команд от имени root. Как всегда, сохраняйте резервные копии всего, что вы предоставляете ему (в данном случае, ваши файлы конфигурации Apache).

Майкл Джонсон
источник
3
Наличие разрешения на настройку и перезапуск Apache, работающего от имени пользователя root, по сути дает привилегии root. Достаточно легко иметь произвольный двоичный файл, выполняемый процессом apache, например, направлять журналы к этому. Лучше настроить Apache, чтобы он мог работать без полномочий root и по-прежнему связываться с привилегированными портами. Вот что я делал в этой ситуации в прошлом.
MvG