Флаги файлов - безопасность FreeBSD Печать
28.03.12 12:16

Флаги файлов - безопасность FreeBSD

 

Операционная система FreeBSD позволяет получить дополнительный уровень безопасности для файлов веб сайта с помощью установки пользовательских флагов на папки и отдельные файлы. Флаги обеспечивают дополнительный уровень защиты и контроля над файлами и позволяют защитить файлы даже от самого владельца сайта. Вебмастер не сможет случайно удалить или заменить какой-либо документ с сервера, который он сопровождает. После установки определенных флагов на файлы, эти файлы невозможно будет удалить или изменить.

"Плохие парни", которые будут пытаться удалить все файлы Вашего сайта или изменить главную страницу сайта (атака при использовании уязвимостей PHP скриптов Вашего сайта), будут глубоко разочарованы и оставят Ваш ресурс в покое.

Даже если Ваши PHP сценарии будут содержать уязвимости, используя которые можно запускать произвольные команды на сервере (например, удаление дерева каталогов сайта), то и в этом случае Вы можете спать спокойно, если Вы установили для своих веб документов флаг uunlink и uchange, и ни один файл с Вашего web-сервера не будет изменен или удален.

Для удаления файла "нехорошему пользователю" надо подключиться к Вашему серверу по SSH и выполнить команду chflags nouchange, и только после этого можно пытаться атаковать сервер через скрипты и пробовать удалять файлы сайта. Для начала юзверю надо знать имя пользователя и пароль, уметь работать с утилитой PuTTY (или другим SSH клиентом), понимать синтаксис команды chflags. Понятно, что оптимизм Вашего "Доброжелателя" в таком случае значительно сократиться, с :-) на такой ;-(

Системные флаги. Системные флаги - это флаги, которые могут быть установлены или сняты с файлов только пользователем root (команды: schange, sunlink, nosunlink, sappend).
Пользовательские флаги. В остальных случаях эти флаги может установить владелец файла (команды: uchange, uunlink, uappend).

Пример командного файла, устанавливающего флаги на некоторые файлы и папки:

 

chflags -R uchange     ~/www/site1/public_html/soft/
chflags -R nouchange ~/www/site1/public_html/soft/
chflags uunlink ~/www/site1/public_html/soft/index.html
chflags nouunlink ~/www/site1/public_html/soft/test.html
chflags uappend ~/www/site1/public_html/download/
chflags -R nouappend ~/www/site1/public_html/download/


Команда chflags может применяться к нескольким файлам и "рекурсивно" обходить поддиректории (ключ -R).

schg - системный флаг "неизменяемости", который может устанавливать только root. Файлы с таким флагом schg нельзя изменять вообще: редактировать, перемещать, заменять. Сама файловая система будет пресекает попытки как-то затронуть этог файл. Этот флаг нельзя изменить, когда система работает на уровне безопасности 1 и выше.

sappnd - системный флаг "только добавление", который может устанавливать только суперпользователь root. В файл с этим флагом можно добавлять записи, но удалять или редактировать этот файл нельзя (это удобно для логов).

sunlnk - системный флаг "запрет на удаление", устанавливаемый только root-ом. Файл можно редактировать, но нельзя удалить. Этот флаг не настолько безопасен, как два предыдущие: если файл можно редактировать, то в нем можно удалить все строки (очистить).

uchange - пользовательский флаг "неизменяемости", который может устанавливать root или владелец файла. Флаг "неизменяемости" защищает пользователя от изменения файла. Root может преодолеть действие этого флага (и снять тоже может).

uappend - пользовательский флаг "только добавление", который может устанавливать только владелец файла или root. В файл с флагом uappend можно добавлять записи, но этот файл нельзя удалять и редактировать. Владелец файла и root могут удалить этот флаг в любое время.

Команда, которая ставит и убирает флаги - chflags ("change flags"), ее формат:

chflags <флаги> <имя файла>

Аргумент <флаги> - это название флага или нескольких флагов через запятую. Допустимы и сокращенные названия.

sappend - sappnd - системный флаг
uappend - uappnd - пользовательский флаг
sunlink - sunlnk - системный флаг
uunlink - uunlnk - пользовательский флаг
arcived - arch
nodump не сокращается



Чтобы убрать флаг, необходимо указать его название с префиксом no - noschg, nosappnd, nosunlnk. Исключение флаг nodump, чтобы его убрать: dump.

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

Если установить пользовательский флаг uappend на папку, то в эту папку Вы сможете добавлять файлы, но эти файлы невозможно будет удалить.

Если установить пользовательский флаг uunlink на файл, то удалить файл станет невозможно, но Вы сможете изменять сожержимое файла. Этот флаг uunlink защищает только от удаления.

Если установить пользовательский флаг "неизменяемости" uсhange на файл, то невозможно будет удалить или изменить этот файл. Этот флаг uсhange защищает от удаления и изменения.

schg - системный флаг "неизменяемости", который может устанавливать только root. Файлы с установленным флагом schg нельзя изменять вообще: редактировать, перемещать, заменять. Флаг schg ( schange) защищает от удаления и изменения даже для пользователя ROOT.

Бывает полезно одновременно применять флаги uchange и uunlink к одному файлу. Перед редактированием файла флаг неизменяемости снимаем командой nouchange, при этом можно изменять файл, но его нельзя удалить, так как включен флаг неудаляемости uunlink, значит и при редактировании сайта наши файла тоже защищены. После изменения файла снова включаем неизменяемость командой uchange. И опять получаем файл с двумя флагами: неизменяемость и неудаляемость.

Просмотр флагов Для просмотра установленных флагов на файлы и папки используется команда ls -lo *

Linux. команда chattr. В ОС Linux есть аналогичная команда chattr, для установки атрибутов. Один из моих сайтов был расположен на сервере с Linux и мне (как владельцу сайта) нельзя было устанавливать атрибуты на файлы и папки. Таким правом располагал только суперпользователь сервера - ROOT. Следовательно, этот сайт являлся менее защищенным, по сравнению с другими моими веб-проектами, размещенными на сервере с операционной системой FreeBSD.

 

источник: http://king-dom.ru

ссылка на материал: http://thin.kiev.ua/index.php?option=com_content&view=article&id=551:flags&catid=28:current-users&Itemid=44

{jcomments on}

Последнее обновление 06.04.12 11:55