Продолжая утреннюю тему, разберу ещё один спорный момент насчёт использования sudo на серверах. В своих статьях и заметках я sudo никогда не пишу, да и не использую. И нередко получаю на этот счёт замечания, что автор советует плохое, использует небезопасные практики и сидит на сервере под root. Якобы это не безопасно.
А я на самом деле сижу на сервере под root и не вижу в этом ничего зазорного. Сервер - не рабочая машина. Я туда не захожу просто так. Обычно я захожу на сервер для выполнения административных действий, для которых требуются права root. Без этих прав мне там и делать особо нечего.
Человек, который безапелляционно заявляет, что работать без sudo небезопасно, скорее всего до конца не понимает, что это за инструмент и для чего он нужен. Просто где-то прочитал об этом и бездумно повторяет.
Допустим, я единственный пользователь сервера, настроил его и администрирую единолично. Других людей там нет. Я не использую sudo. И какие это должно вызывать проблемы безопасности?
Другое дело, когда появляются разные пользователи. И здесь уже нужно sudo для аудита выполняемых действий и разграничения прав. Тем более, если работает большой отдел с единой системой хранения учётных записей и разграничения прав доступа. Хотя и это уже не панацея. Есть и другие модели многопользовательского доступа к серверам без использования sudo для логирования и разграничения прав.
Далее у нас появляются какие-то скрипты или другие инструменты, которые заходят удалённо на наш сервер для выполнения каких-то конкретных действий. Тут опять нужно sudo для того, чтобы их ограничить только теми действиями, которые им разрешены. Сюда же относятся и локальные службы с ограниченными правами, которые через sudo выполняют какие-то конкретно разрешённые действия с повышением прав. Например, это очень актуально для Zabbix Agent, который может что-то автоматически выполнять на сервере.
С помощью sudo удобно настраивать шаблоны систем для каких-то узких задач. Например, есть веб сервер, на который нужен почти полный доступ разработчиков, чтобы они могли смотреть логи Nginx, Php-fpm, перезапускать сервисы, менять их конфигурации и т.д. Но при этом за самой системой, её обновлением, закрытием уязвимостей следит другая служба, которая сама всё обновляет, перезагружает и следит за стабильной работой системы в целом. Через sudo разработчикам даётся доступ к нужным им службам, а всё остальное им недоступно, чтобы ненароком чего не сломали, не нарушили общие правила безопасности. В данном случае можно сказать, что дать полный доступ разработчикам к серверу без sudo небезопасно.
☝️К чему я всё это пишу? Специалист он на то и специалист, что разбирается в теме и в каждом конкретном случае думает, как ему сделать удобнее и безопаснее, а не просто повторяет заученные или случайно увиденные примеры. Подходы к настройке и управлению инфраструктурой на 3 сервера и на 100 будут разные. В одном случае от sudo никакого толка не будет, а в другом без него никуда, хотя и это не точно. По умолчанию никакой безопасности sudo не добавляет. Её и в системе то нет в базовой установке. Надо отдельно устанавливать там, где это действительно нужно.
Например, можно запретить подключение по SSH для root, настроить аутентификацию по ключам, и каждый раз при входе на сервер делать что-то типа sudo su и вводить пароль или перед каждой командой писать sudo. А можно разрешить подключение сразу под root, настроить аутентификацию по ключу и закрыть ключ паролем. Его тоже придётся один раз ввести, но попадаешь на сервер сразу под root. Какая схема безопаснее? А какая удобнее?
Кстати, для тех, кто ещё не знает, напомню, что sudo появилась и в Windows. Я уже пользуюсь, удобно.
———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX
#security
Post #5247
9.72K