Почему я использую разделы только для чтения на своих Linux-серверах (и вам следует делать так же)
Это перевод оригинальной статьи Why I Use Read-Only Partitions on My Linux Servers (And You Should Too).
Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.
Один из самых недооцененных и одновременно самых простых способов повышения безопасности Linux: разделы только для чтения. В мире вымогательского ПО, неправильных настроек и скрытых руткитов перевод частей системы в режим только для чтения — это мощная мера безопасности с минимальными усилиями.
Вот почему я его использую — и как вы можете начать применять его уже сегодня, не нарушая работу своей системы.
🔒 Что такое раздел только для чтения?
Раздел только для чтения — это именно то, что подразумевает его название: часть файловой системы, которую нельзя изменить — никакой записи, удаления или подмены данных.
Вы можете монтировать каталоги, например /boot, /usr или даже / с флагом ro (только для чтения). Цель? Уменьшить поверхность атаки, доступную для записи, и предотвратить вредоносные или случайные изменения.
💡 Зачем вообще делать систему read-only?
✅ 1. Блокирует закрепление(persistence)
Многим вредоносным программам и руткитам необходимо записывать данные на диск. Монтирование только для чтения блокирует эту функцию, мгновенно ломая большинство механизмов закрепления.
✅ 2. Предотвращает случайные изменения
Случалось ли вам когда-нибудь опечататься в команде от имени root и удалить что-то важное? Настройка режима только для чтения делает критически важные каталоги защищенными от несанкционированного доступа.
✅ 3. Обеспечивает целостность системы
Если /usr или /boot заблокированы для записи, даже при частичном доступе злоумышленник не сможет просто так подменить бинарники или модули ядра.
✅ 4. Выживает, несмотря на ошибки инсайдеров
Даже если легитимный пользователь (или скрипт) допустит ошибку — ущерб будет минимальным. Это особенно полезно в многопользовательских или производственных средах.
🧪 Как я это настраиваю (реальные примеры)
Допустим, я хочу сделать /usr доступным только для чтения:
Шаг 1: Создание резервной копии и тестирование
Всегда тестируйте изменения на тестовом сервере или виртуальной машине. Некоторые приложения могут попытаться записать данные в /usr (чего делать не следует).
Шаг 2: Редактирование /etc/fstab
UUID=xxx-xxx-xxx /usr ext4 ro,defaults 0 2
Или, если вы используете overlayfs для большей гибкости:
mount -o ro,remount /usr
Шаг 3: Перезагрузка и проверка
mount | grep ro
Убедитесь, что нужные директории действительно смонтированы в режиме только для чтения.
🧠 Бонус: защита сервисов через systemd
Не обязательно трогать разделы целиком. Для отдельных сервисов используйте следующий код в своем файле .service:
ProtectSystem=strict ReadOnlyPaths=/etc /usr
Это позволяет сделать некоторые части системы доступными только для чтения исключительно для этого сервиса. Простое и эффективное решение.
⚠️ На что следует обратить внимание
- Логи: Убедитесь, что
/var/logили эквивалентный файл остается доступным для записи. - Обновление: Во время установки патчей вам потребуется временно перемонтировать разделы в режим
rw(чтения-записи). - Docker: При использовании контейнеров, примените
readOnlyRootFilesystem: trueв Kubernetes или Docker Compose.
🚀 Заключительные мысли
Безопасность — это не только инструменты, но и настройки по умолчанию, которые работают в вашу пользу. Установив ключевые части вашей системы в режим только для чтения, вы затрудняете жизнь для атакующих, пользователей и даже root’а, когда речь идёт о непреднамеренных ошибках.
Представьте, что это ваш невидимый телохранитель — всегда молча наблюдающий из-за кулис.
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.