Защита от "самого себя": Как обезопасить критичные конфиги в Linux
Проблема: Один rm -rf по ошибке. Одна неудачная правка nginx.conf в 3 часа ночи. И prod лежит. "Админ" надеется на бэкапы (восстановление). "Архитектор" предотвращает саму возможность ошибки.
Вот 3 уровня эшелонированной обороны для ваших самых важных файлов (конфигов, скриптов, сертификатов).
Уровень 1: "Бетонный бункер" (chattr)
Это — ваш immutable (неизменяемый) флаг. Самая сильная защита, даже от root.
⏺ Как включить: sudo chattr +i /etc/nginx/nginx.conf
Теперь этот файл нельзя удалить, изменить, переименовать или даже создать на него ссылку. Совсем.
⏺ Как выключить (для плановых правок): sudo chattr -i /etc/nginx/nginx.conf
#АрхитекторскийЛайфхак: Сделали правки -> немедленно включили защиту обратно! Это лучшая защита от случайного rm или sed -i.
Уровень 2: "Гибкий контроль" (ACL)
Стандартных rwx (владелец/группа/остальные) часто не хватает. ACL (Access Control Lists) дают гранулярный доступ.
Задача: Дать юзеру deploy право только читать конфиг, но не менять.
⏺ Назначаем права: sudo setfacl -m u:deploy:r /etc/nginx/nginx.conf
⏺ Проверяем права: getfacl /etc/nginx/nginx.conf
Это намного чище, чем добавлять deploy в группу root (чего делать нельзя никогда).
Уровень 3: "Умный Sudo" (sudoers)
Никогда не давайте сервисным юзерам и коллегам ALL=(ALL) ALL. Это "ключи от королевства". Давайте только то, что нужно.
Задача: Дать deploy право только перезапускать Nginx, но не редактировать или удалять его файлы.
⏺ Редактируем visudo: deploy ALL=(root) NOPASSWD: /bin/systemctl restart nginx
Теперь deploy может выполнить sudo systemctl restart nginx, но sudo rm /etc/nginx/nginx.conf ему "откажет в доступе".
Итог: sudoers защищает от эскалации привилегий. ACL защищает от случайных правок другими пользователями. chattr защищает от root-ошибок (включая вас самих в 3 часа ночи).
#linux #security #sysadmin #chattr #acl #sudo #bestpractice
Проблема: Один rm -rf по ошибке. Одна неудачная правка nginx.conf в 3 часа ночи. И prod лежит. "Админ" надеется на бэкапы (восстановление). "Архитектор" предотвращает саму возможность ошибки.
Вот 3 уровня эшелонированной обороны для ваших самых важных файлов (конфигов, скриптов, сертификатов).
Уровень 1: "Бетонный бункер" (chattr)
Это — ваш immutable (неизменяемый) флаг. Самая сильная защита, даже от root.
⏺ Как включить: sudo chattr +i /etc/nginx/nginx.conf
Теперь этот файл нельзя удалить, изменить, переименовать или даже создать на него ссылку. Совсем.
⏺ Как выключить (для плановых правок): sudo chattr -i /etc/nginx/nginx.conf
#АрхитекторскийЛайфхак: Сделали правки -> немедленно включили защиту обратно! Это лучшая защита от случайного rm или sed -i.
Уровень 2: "Гибкий контроль" (ACL)
Стандартных rwx (владелец/группа/остальные) часто не хватает. ACL (Access Control Lists) дают гранулярный доступ.
Задача: Дать юзеру deploy право только читать конфиг, но не менять.
⏺ Назначаем права: sudo setfacl -m u:deploy:r /etc/nginx/nginx.conf
⏺ Проверяем права: getfacl /etc/nginx/nginx.conf
Это намного чище, чем добавлять deploy в группу root (чего делать нельзя никогда).
Уровень 3: "Умный Sudo" (sudoers)
Никогда не давайте сервисным юзерам и коллегам ALL=(ALL) ALL. Это "ключи от королевства". Давайте только то, что нужно.
Задача: Дать deploy право только перезапускать Nginx, но не редактировать или удалять его файлы.
⏺ Редактируем visudo: deploy ALL=(root) NOPASSWD: /bin/systemctl restart nginx
Теперь deploy может выполнить sudo systemctl restart nginx, но sudo rm /etc/nginx/nginx.conf ему "откажет в доступе".
Итог: sudoers защищает от эскалации привилегий. ACL защищает от случайных правок другими пользователями. chattr защищает от root-ошибок (включая вас самих в 3 часа ночи).
#linux #security #sysadmin #chattr #acl #sudo #bestpractice
🔥4