immutable bit: атрибут неизменяемости файла в Linux/BSD

archive view archive save

terminal-logo Бит (bit) неизменяемости (immutable) файла (ака "immutable bit") может быть назначен файлу, который размещён в расширенной файловой системе (Ext3, Ext4, Extended File System), для его защиты от изменений. "immutable bit" может быть добавлен к атрибутам файла с помощью программы chattr и только супер-пользователем.

Какие последствия установки immutable bit?

После того, как файлу будет назначен атрибут immutable, над этим файлом будет запрещено:

  • Модификация;
  • Переименование;
  • Удаление;
  • Невозможность создавать мягкие (ака soft, symlink, символические) и жесткие (hard) ссылки.

Как установить immutable bit в Linux?

Установка атрибута immutable осуществляется следующим образом chattr +i /path/to/filename. Например мы можем защитить от записи файл /etc/shadow:

$ chattr +i /etc/shadow

После этого войдём с учетной записи обычного пользователя (скажем, пользователя test) и попробуем сменить пароль:

$ passwd
Changing password for user test.
Changing password for test
(current) UNIX password: OLDPASSWD
New password: NEWPASSWD
Retype new password: NEWPASSWD
passwd: all authentication tokens updated successfully.

Как видим в итоге мы получили сообщение о якобы успешной смене пароля, однако если мы выйдем и снова попробуем войти с помощью уч. записи нашего пользователя test, то обнаружим, что NEWPASSWD не принимается и для входа нам нужно будет использовать OLDPASSWD. Проверить, защищен ли файл от изменений с помощью атрибута immutable можно с помощью программы lsattr:

$ lsattr /etc/shadow
----i--------e-- /etc/shadow

Нужно знать, что если файл /etc/shadow имеет атрибут immutable, то даже пользователь root не сможет изменять пароль! Удалить атрибут immutable можно всё той же программы chattr:

$ chattr -i /etc/shadow
$ lsattr /etc/shadow
-------------e-- /etc/shadow

Как установить immutable bit в BSD системах?

В операционный системах BSD типа аттрибут immutable устанавливается с помощью chflags:

$ chflags schg /path/to/filename

Удаление immutable bit выполняется следующим образом:

$ chflags noschg /path/to/filename

Какие файлы защитить с помощью immutable bit?

Например, в секции 10.5 Genius/Paranoia Ideas — what you could do (ака "Гениальные/Параноидальные идеи - что я должен сделать"), предлагается установить immutable bit на файлы каталогов /bin, /sbin, /usr/bin, /usr/sbin, /usr/lib, но делается оговорка о том что, перед обновлением системы с помощью apt-get update immutable bit должен быть снят.

Так справедливо будет рекурсивное добавление immutable bit к таким файлам и директориям:

$ chattr -R +i /etc/passwd /etc/shadow /etc/group /etc/apt /bin /sbin /usr/bin /usr/sbin /usr/lib

Это сможет полностью предотвратить или же как минимум сделать максимально сложным ДДОС атаки или внедрение различных вредоносных программ, которые как правило пишут себя в упомянутые выше директории. Разумеется, что перед обновлением или установкой/компиляцией нового ПО нам потребуется снять immutable bit:

$ chattr -R -i /etc/passwd /etc/shadow /etc/group /etc/apt /bin /sbin /usr/bin /usr/sbin /usr/lib

При использовании chattr и lsattr к символьным ссылкам мы можем получить предупреждения:

chattr: Неподдерживаемая операция while reading flags on /bin/lsmod
lsattr: Неподдерживаемая операция While reading flags on /bin/lsmod
lsattr: Неприменимый к данному устройству ioctl While reading flags on /run

Но, о них не стоит беспокоиться, их можно просто игнорировать ибо chattr и lsattr применимы только к файлам.

В общем immutable bit может быть установлен на любые файлы, безопасность которых администратор посчитает критически важным условием, - это также могут быть файлы резервных копий каталога /etc, файлы конфигурации РНР или веб-сервера:

$ chattr -R +i /etc/apache2 /etc/php5 /etc/mysql /etc/phpmyadmin

bill-maher-immutable-bit


Об авторе
АдМинь БагоИскатель
АдМинь БагоИскатель ярый борец за безглючную работу любых механизмов и организмов во всей вселенной и потому пребывает в вечном поиске всяческих багов, а тот кто ищет как известно всегда находит. Когда что-то или кого-то вылечить не в состоянии, то со словами "Я в аду, а вы все черти" уходит в запой выйдя из которого снова берётся лечить неизлечимое.
Ещё статьи автора

Комментарии   

АдМинь БагоИскатель
0 #2 АдМинь БагоИскатель 31.12.2015 20:21
Цитирую dorvik:
Насчет «Но, о них не стоит беспокоиться, их можно просто игнорировать ибо chattr и lsattr применимы только к файлам». А у меня как раз получается, у файлов, в отношении которых сделано это предупреждение, неизменяемость в самом деле не устанавливается. То есть они поддаются редактированию. А там где это предупреждение не появляется, файлы оказываются защищенными от редактирования.

Все правильно, предупреждение выпадает когда делается попытка установить атрибут на устройство или символьную ссылку и на всё иное, что не является физическим файлом.

Цитирую dorvik:
Так что предупреждение появляется по делу. И остается вопрос, как в этом случае добавить бит неизменяемости.

Не вопрос! Нельзя установить атрибут на символьную ссылку "/bin/lsmod" ибо будет выдано "chattr: Неподдерживаемая операция". То что это не файл, а символьная ссылка можно убедится выполнив "ls -la /bin/lsmod" и результатом будет "/bin/lsmod -> kmod" - в этом случае атрибут неизменяемости следует устанавливать на файл "chattr +i /bin/kmod".

Первая буква с троке вывода команды "ls -la /bin/lsmod" расшифровывается как:
Цитата:
d (directory)
c (character device)
l (symlink)
p (named pipe)
s (socket)
b (block device)
D (door, not common on Linux systems, but has been ported)
Цитировать
dorvik
0 #1 dorvik 31.12.2015 17:51
Насчет «Но, о них не стоит беспокоиться, их можно просто игнорировать ибо chattr и lsattr применимы только к файлам». А у меня как раз получается, у файлов, в отношении которых сделано это предупреждение, неизменяемость в самом деле не устанавливается . То есть они поддаются редактированию. А там где это предупреждение не появляется, файлы оказываются защищенными от редактирования. Так что предупреждение появляется по делу. И остается вопрос, как в этом случае добавить бит неизменяемости.
Цитировать

Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Комментарии в блоге
Новое на форуме