1

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

Система CentOS. По сути, помимо основных пользовательских операций они должны иметь возможность:

  • установить новые библиотеки через yum
  • патч существующих библиотек
  • изменить конфигурацию apache

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

Как мне поступить?

1 ответ1

2

Вы не должны предоставлять им доступ к sudo, если вам нужно иметь ответственность и вы не можете легко привлечь их к ответственности. Может быть, если вы заблокируете его специально для "перезагрузки sudo service apache2" и позволите им выполнить эту команду с этими аргументами.

Для редактирования конфигурации используйте разрешения acl / filesystem, чтобы дать им доступ для записи в конкретные файлы конфигурации, которые они должны изменить. Предоставление им доступа sudo к редактору означает, что они могут редактировать / изменять любой файл в системе, включая сам sudo , или изменять конфигурацию sudo , чтобы он ничего не регистрировал.

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

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

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


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

Ему понадобится способ сообщить apache для перезагрузки конфигурации, так что вы можете посмотреть ssh-ключ, который не может быть сброшен в оболочку, но вызывает service apache2 restart когда кто-то входит в нее. Альтернативой может быть использование программы setuid, которая не принимает никаких входных данных и перезапускает apache. Или он может просто пинговать вас по электронной почте или через мгновенное сообщение, когда ему это нужно перезагрузить.

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

sudo уже должен регистрировать каждую команду в syslog (по крайней мере, по умолчанию в Ubuntu, если я правильно помню, она может отличаться в вашей настройке), поэтому вам, вероятно, следует убедиться, что она выполняется независимо, и для дополнительной ответственности настройте syslog на войти на удаленный сервер системного журнала, который может быть защищен.


Если вы обычно доверяете подрядчику, то, вероятно, вам не о чем беспокоиться. Но если вы должны быть в состоянии привлечь его к ответственности, тогда необходимо взглянуть на это с точки зрения «что худшего он мог сделать с привилегией X?"точка зрения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .