Узнайте о модели разрешений Linux и о том, как она влияет на безопасность вашей системы.
Добро пожаловать в серию статей о безопасности Linux! В этой серии статей я рассмотрю основы безопасности Linux и то, как злоумышленники атакуют машины с Linux.
Прежде чем мы углубимся в безопасность систем Linux, важно понять модель разрешений на машинах Linux. Понимание того, как управлять разрешениями в системах Linux, поможет вам понять атаки, которые используют систему разрешений, как и большинство методов повышения привилегий. Давайте начнем.
Права доступа к файлам в Linux
Linux унаследовал Unix-модель владения файлами и разрешений. Каждый файл и папка в системе имеет набор разрешений, который определяет, кому и что разрешено делать с этим конкретным файлом.
Есть три типа разрешений: чтение, запись и выполнение. Разрешение чтение для файла позволяет пользователю читать содержимое файла. Разрешение записи позволяет пользователю изменять или удалять файл. А разрешение выполнение позволяет пользователю запускать файл как сценарий или исполняемый файл.
Вы можете просмотреть права доступа к файлу или каталогу, используя команду ls -l в каталоге. Вы должны увидеть такую строку.
-rwxrwxrwx drwxrwxrwx
Первый символ указывает, является ли элемент файлом или каталогом. Тире означает, что элемент является файлом, а d означает, что это каталог. Следующие три символа - это разрешения владельца файла. Владелец обычно - это пользователь, который создал файл и имеет наибольший контроль над ним. R обозначает чтение, w обозначает запись, а X обозначает eXecute . А прочерк указывает на отсутствие разрешения. Давайте посмотрим на пример. Здесь владелец может читать, писать и выполнять файл.
-rwxr--r--
А в Linux пользователи сортируются по группам пользователей, и эти группы часто имеют общие права доступа к файлам. Следующие три символа - это разрешения группы владельца. И последние три - это разрешения для всех остальных. Разрешения этого файла указывают на то, что он доступен для чтения всем, но только владелец может записать или выполнить файл.
Вы можете установить права доступа к файлу с помощью команды chmod. В этой команде вы используете символы u, g и o для обозначения пользователя-владельца, группа владельцев и другие. Например, чтобы добавить разрешения на выполнение для группы владельцев файла, вы можете использовать команду:
chmod g+x filepath
А чтобы установить права на выполнение для всех, вы можете использовать команду:
chmod +x filepath
С другой стороны, если вы хотите удалить разрешение, вы можете поменять знак плюса на знак минус. Например, эта команда удалит разрешения на выполнение для всех.
chmod -x filepath
Специальные режимы разрешений
Есть также несколько специальных вещей, которые вы можете делать с разрешениями файла.
Первое, что вы можете сделать, это установить бит setUID или SUID. Если установлен бит SUID, файл всегда будет запускаться от имени пользователя, которому принадлежит файл, а не от имени пользователя, запустившего программу. Например, если исполняемый файл принадлежит пользователю root, то файл всегда будет запускаться от имени пользователя root, независимо от того, кто запустил выполнение. Вы можете определить, есть ли у файла разрешения SUID, если в разрешениях владельца присутствует символ s вместо x или тире.
-rwsrwxrwx
Бит SUID имеет много распространенных вариантов использования. Например, поскольку команда ping должна выполняться с правами root, если вы хотите, чтобы обычные пользователи использовали ping, вам необходимо установить бит SUID для исполняемого файла ping. Бит SUID также можно установить с помощью команды chmod. Эта команда установит бит SUID для файла.
chmod u+s filepath
SetGID или SGID работает аналогично SUID. Когда для файла установлен бит setGID, все пользователи могут выполнять файл с разрешениями группы владельцев. И если для каталога установлен SGID, все файлы, созданные в этом каталоге, становятся доступными для всех пользователей в группе владельцев родительского каталога. Вы можете определить, есть ли у файла или каталога разрешения SGID, если в разрешениях группы владельцев присутствует символ s вместо x или тире.
-rwxrwsrwx
Бит SGID также можно установить с помощью chmod. Эта команда установит бит SGID для файла.
chmod g+s filepath
В разрешениях файла также есть так называемый липкий бит. Если для обычного файла установлен бит закрепления, это ускоряет последующее выполнение программы. Однако липкий бит чаще используется в каталогах. Это будет означать, что файлы или каталоги в этом каталоге могут быть перемещены или удалены только владельцем файла или каталога или суперпользователем. Обычно это используется для временного каталога (/tmp), который предназначен для хранения временных файлов, созданных отдельными пользователями. Вы можете определить, установлен ли для файла или каталога бит закрепления, посмотрев, есть ли в последнем символе строки разрешений символ t вместо x или тире.
-rwxrwxrwt
И вы можете добавить липкий бит к файлу или каталогу с помощью этой команды.
chmod +t filepath
Надеюсь, это поможет вам более четко понять, как управляются разрешения Linux. В следующий раз мы рассмотрим некоторые методы повышения привилегий, которые позволяют злоумышленникам получать доступ к файлам или выполнять их, даже если у них нет разрешения. Увидимся в следующий раз!