Небезпечно мати відповідального користувача з паролем sudo?


10

Я новачок у Ansible. Більшість посібників з надання послуг VPS, які я бачив до цього часу:

  1. відключити root від входу
  2. створити нового користувача, який може входити лише в систему ssh(не пароль)
  3. додати нового користувача до wheelгрупи з дозволом sudo без пароля

Я розумію (1) і (2), але не (3).

Безперечно без паролів sudo- це як увійти як root? Я розумію вигоду (зручність), але хіба це не дуже небезпечно?

Я розумію, що адміністратори керують своїми мережами різними способами, і тому це можна сказати "суб'єктивно", але це ДУЖЕ звичайна практика, це навіть показано в різних офіційних довідкових документах, а також в посібниках, опублікованих хостинг-компаніями. Це суперечить здоровому глузду. Яка логіка за цим?


1
Ansible призначений для автоматизації адміністративних завдань, тому, як правило, потрібен доступ до верхнього (кореневого) рівня, отже, "sudoless". Якщо вам потрібен лише для запуску підмножини команд, доступних у вашій системі, ви можете заблокувати її лише до тих команд з більш детальною конфігурацією sudo. Судо без паролів не обов'язково означає доступ до всього, що може зробити root (хоча це стає важко застосувати, коли ви зрозумієте, що користувач може потенційно змінити вашу конфігурацію sudo через sudo, щоб забезпечити собі більший контроль ...).
Девід Спіллетт

@DavidSpillett Мені було цікаво з цього приводу - тобто визначити, які команди sudo потрібно дозволити у файлі sudoers ... але я десь прочитав, що ansible робить все, інтерпретуючи складні команди python, і цей підхід швидко заплутається.
lonix

Відповіді:


18

Якщо в обліковому записі служби можна зробити бездокументальне sudo, вам доведеться захистити доступ до цього облікового запису.

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


Тож я "свого роду" відчуваю себе збуреним цією конвенцією - і все-таки це конвенція про відповідальність, поза потребою / прагматизм.
lonix

Отже, ви говорите, що я по суті "переміщую" основну безпеку з VPS до моєї локальної системи, яка містить ключ ssh від відповідального облікового запису? У цьому випадку слабкою стороною є не сама VPS, скоріше, це я! І мені потрібно бути пильним у захисті цього ключа ssh, в обмін на зручність, яку дає мені відповідальна автоматизація.
lonix

6
ключ ssh, парольна фраза, захищена ssh-агентом, є досить хорошим обліковим записом.
Джон

@lonix Усі захищені системи потребують облікових даних. Захищені системи є максимум настільки ж безпечними, як і заходи, які ви вживаєте щодо забезпечення цих даних, оскільки наявність 100-відсоткового доступу до них. Так, так, ви не можете розраховувати захистити свій VPS, якщо ви не захистили належним чином свій ключ SSH (або root-пароль, або будь-який інший). Той факт, що ви налаштовуєте без паролів sudo нічого не означає з цієї точки зору, включення sudo з паролем не змінює той факт, що важливо захистити ключ SSH.
Джакомо Альзетта

@GiacomoAlzetta Я знаю, що те, що я мав на увазі вище, - це те, що відповідальність перекладається з віддаленого на локальну машину. Оскільки ескалація судо робиться без пароля, слабка точка стає локальною.
lonix

4

Новий користувач, створений в (2), може входити в систему лише за допомогою ключа SSH, без пароля. Ключ SSH надає непрямий кореневий доступ. Таким чином, це еквівалент просто дозволу входу в систему за допомогою ключа.

Оскільки в обліковому записі немає пароля, sudoзапитувати пароль неможливо . Також Ansible повинен вміти виконувати команди. Наявність додаткового пароля для того ж місця, що і ключ, не підвищить безпеку.


2

Проблема полягає в тому, що ansible призначений для адміністраторів та автоматизації, тому якщо вам потрібно ввести пароль для запуску сценарію, це насправді не найкращий спосіб. Крім того, не безпечно зберігати пароль для sudo у файлі чи базі даних, і ansible отримуватиме його кожен раз, коли він запускає програму playbook. Таким чином, поєднання бездокументарного судо та автентифікації з ssh Keys - найкращий спосіб забезпечити безпеку та відсутність правильних проблем, запустивши програму playbook. Також ви адміністратор і знаєте, що програмуєте у програмі. Тож ігрова книга не може знищити ваші сервери.


Playbooks можуть знищувати ваші системи, але якщо ви використовуєте окремі тестові середовища лише ключі, це не знищить виробничих хостів.
Джон

Саме це, сподіваємось, є необхідною умовою при роботі над продуктивними системами.
NicoKlaus

1
У Ansible є "ansible-treult" та плагіни / модулі / бібліотеки, які дозволяють зберігати секрети у багатьох сторонніх таємних системах зберігання даних, таких як bitwarden, hashicorp treult, Keepass тощо.
Zoredache
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.