Как безопасно дать доступ на сервер подрядчику?

Как безопасно дать доступ на сервер подрядчику?

09.08.2019 11:01:24 Просмотров 34 Источник

Имеется VDS под битрикс/CentOS-7. Необходимо дать к нему доступ стороннему подрядчику. Задачи подрядчика: установка и настройка необходимого для битрикса стека, почты, гита/фтп, заливка сайта и бд, настройка прав доступа к файлам.

Каким образом можно максимально исключить вредоносные действия подрядчика и/или иметь достоверную информацию о его действиях без ограничения его в необходимых функциях(sudo)?

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

У вопроса есть решение - Посмотреть?

https://ru.stackoverflow.com/questions/1011964/%d0%9a%d0%b0%d0%ba-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be-%d0%b4%d0%b0%d1%82%d1%8c-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-%d0%bf%d0%be%d0%b4%d1%80%d1%8f%d0%b4%d1%87%d0%b8%d0%ba%d1%83#comment1717410_1011964
Если выполняемые действия подразумевают выдачу root-доступа (sudo), то видимо только бекапом и проверять. Причём не только /etc, а вообще всех файлов, если паранойя так зашкаливает
https://ru.stackoverflow.com/questions/1011964/%d0%9a%d0%b0%d0%ba-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be-%d0%b4%d0%b0%d1%82%d1%8c-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-%d0%bf%d0%be%d0%b4%d1%80%d1%8f%d0%b4%d1%87%d0%b8%d0%ba%d1%83#comment1717436_1011964
Docker/lxc контейнеры не думали использовать?
https://ru.stackoverflow.com/questions/1011964/%d0%9a%d0%b0%d0%ba-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be-%d0%b4%d0%b0%d1%82%d1%8c-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-%d0%bf%d0%be%d0%b4%d1%80%d1%8f%d0%b4%d1%87%d0%b8%d0%ba%d1%83#comment1717467_1011964
@Hellseher Хостеры VDS, обычно, препятствуют использованию контейнеров внутри VDS. Более того, если такой вариант подходит (а это еще не факт), то проще арендовать еще одну VDS, как я и написал в ответе.
https://ru.stackoverflow.com/questions/1011964/%d0%9a%d0%b0%d0%ba-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be-%d0%b4%d0%b0%d1%82%d1%8c-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-%d0%bf%d0%be%d0%b4%d1%80%d1%8f%d0%b4%d1%87%d0%b8%d0%ba%d1%83#comment1718216_1011964
@AntonAbrosimov, можно потребовать dockerfile (а не готовый образ) со всеми использующимися (если таковые есть) при его сборке скриптами. т.е., из внешнего мира при сборке могут скачиваться только пакеты из оф. репозиториев базового дистрибутива (того же, что стоит у автора вопроса). тестировать работоспособность собираемого образа можно и на локальном компьютере. а после оценки на отсутствие вредоносности команды из dockerfile можно выполнить уже на целевой системе.
https://ru.stackoverflow.com/questions/1011964/%d0%9a%d0%b0%d0%ba-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be-%d0%b4%d0%b0%d1%82%d1%8c-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-%d0%bf%d0%be%d0%b4%d1%80%d1%8f%d0%b4%d1%87%d0%b8%d0%ba%d1%83#comment1718221_1011964
@aleksandrbarakin Если развернуть все в отдельном окружении - технически возможно и допустимо, то это первое о чем следует думать. Ansible ИМХО удобнее Docker, в плане написания сценариев установки.
https://ru.stackoverflow.com/questions/1011964/%d0%9a%d0%b0%d0%ba-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be-%d0%b4%d0%b0%d1%82%d1%8c-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-%d0%bf%d0%be%d0%b4%d1%80%d1%8f%d0%b4%d1%87%d0%b8%d0%ba%d1%83#comment1718234_1011964
@AntonAbrosimov, просто Hellseher упомянул именно docker (и lxc, как его основу), вы возразили именно по поводу docker-а, я ответил вам именно по поводу docker-а. а вообще, конечно, изложенный мною подход может быть реализован любым устраивающим обе стороны способом контейнеризации/виртуализации (docker, lxc, vbox, vmware и т.п.), и уж тем более запросто может быть дополнен «сверху» любой подходящей системой управления конфигурациями (ansible, saltstack, puppet, chef и т.п.).

Ответы - Как безопасно дать доступ на сервер подрядчику? / Как безопасно дать доступ на сервер подрядчику?

Anton Abrosimov

09.08.2019 11:26:02

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

Ваша проблема, учитывая что вы задаете подобный вопрос, состоит в том, что у вас нет четкого перечня всех действий, которые необходимо выполнить подрядчику. Более того, с учетом VDS, вы легко можете "отрезать себе руки", при неаккуратных действиях.

Вторая ваша проблема в том, что вы не сможете провести аудит того, что вам установили. Соответственно, злонамеренный код можно убрать в легитимное ПО, которое должно быть установлено. Соответственно, вам надо ограничить и все устанавливаемое окружение. И систему доставки обновлений. Опять SELinux, или chroot, или docker (но это не про VM).


Что делал бы я, при условии, что не знаю, как работает SELinux и не хочу разбираться с правами, необходимыми подрядчику?

Воспользовался бы md5sum и получил контрольные суммы всех файлов на сервере. А по завершении работ - сверил.

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

С целью изоляции устанавливаемого ПО, согласовал бы с подрядчиком изоляцию их ПО с помощью SELinux. Естественно, я или доверенное лицо, должны за этим проследить. Как минимум, засунул бы их в chroot, но это не всегда возможно и не всегда помогает (ПО может потребовать монтирования того, что позволяет покинуть окружение).

Для предотвращения утечки данных, вылил бы все базы и временно заменил их тестовыми (фейковыми).

Ну и рассмотрел бы возможность развернуть их "зоопарк" на отдельной VDS, в первую очередь.


P.S. В реальной жизни, я бы отправил их вместе со своими админами роль для Ansible писать. А там, пока docker'ов мучают, уже было бы понятно, какие будут потенциальные проблемы, как их решать, а заодно и откуда у подрядчика "руки растут".

Закрыть X