Добавлен: 22.04.2023
Просмотров: 152
Скачиваний: 2
Права доступа к файлам и каталогам
Используемые ядром ОС файловые системы имеют встроенные средства ограничения прав доступа к файлам и каталогам. Под правами доступа следует понимать одновременно три различных сущности, которые разрешают либо запрещают выполнение конкретного действия, связанного с файлом:
- право на чтение устанавливает или ограничивает возможность чтения содержащихся в файле данных;
- право на запись устанавливает или ограничивает возможность модификации содержащихся в файле данных;
- право на выполнение устанавливает или ограничивает возможность исполнения программы, содержащейся в файле.
Права доступа можно устанавливать на трёх уровнях:
- владелец файла;
- группа-владелец файла;
- остальные пользователи.
Владелец может сам устанавливаться или ограничивать права доступа. При этом стоит иметь в виду, что изменение права доступа связано с правом на запись, так как при этом меняются атрибуты файла. Также владелец не обязательно должен быт членом группы-владельца.
Владельца файла можно изменять, однако, перемещать файл другому пользователю нельзя. Данный подход связан с методами обеспечения безопасности, например, чтобы не допустить случайный запуск вредоносной программы [3, p. 12].
Отдельно стоит отметить, что право на запись в файл не требует права на его просмотр, а для выполнения сценария, содержащегося в файле, право на чтение необходимо, так как в этом случае оболочка исполняемого сценария должна прочитать содержащиеся в файле строки. Однако, для выполнения сценария право на запуск не требуется – оболочке необходимо лишь передать тот командный интерпретатор, который сценарий выполнит, например: sh ./some_scenario.sh [11, p. 27].
Права доступа к каталогам несколько отличаются от прав доступа к файлам. Так, право на чтение каталога определяет возможность прочитать список содержащихся в нём файлов, тогда как возможность чтения файлов определяется правами доступа к ним. Другими словами, пользователь может иметь возможность открыть каталог, но не иметь возможности прочитать ни один файл, который в нём содержится. При отсутствии права на запись пользователь не сможет создать или удалить файл в каталоге[17]. Право выполнения разрешает или ограничивает возможность сделать каталог текущим, а также прочитать атрибуты содержащихся в каталоге файлов [1, pp. 75-78].
Проверить наличие или отсутствие привилегий на файл или каталог можно с помощью команды ls -l. В результате будет выведен список файлов и/или каталогов, в том месте, где команда применяется, например:
drwxr-xr-x root root etc
Первый символ указывает на то, что etc – это каталог, дальше следуют привилегии, установленные для пользователя root, группы-владельца (основной группы этого пользователя) и для всех остальных пользователей.
Изменение привилегий на файлы и каталоги осуществляется с помощью команды chmod. Как уже говорилось выше, пользователь сам может менять разрешения для своих файлов и каталогов.
Отдельным пунктом в этом разделе отмечу тот факт, что удаление файлов и каталогов в файловой системе ОС на базе ядра Linux происходит навсегда. Другими словами, в подобной ОС нет подобия «Корзины», привычной для Windows пользователей. Это может служить причиной того, что кто-то может случайно удалить важный файл без возможности восстановления. Также этим может пользоваться злоумышленник, удаляя, например, важные данные или файлы аудита.
Для обхода этого пути можно порекомендовать запрет на использование программы rm, которая удаляет файлы с диска, и использовать аналог этой программы, который будет их не удалять, а перемещать в заранее отведённое место. Однако, здесь также стоит следить и за тем регулярной очисткой подобного каталога [3, p. 43].
Угрозы, связанные с правами доступа
Как правило, при заведении нового пользователя в систему для него создаётся корневой каталог в директории /home, например, /home/kirill.elistratov. Таких пользователей в одной и той же системе может быть много, и если они все входят в одну и ту же группу, например, users, то могут беспрепятственно исследовать чужие файлы. Это является явным нарушением безопасности, так как ведёт к открытию информации. Чтобы разграничить права доступа разумно ограничивать доступ к домашним директориям, выдавая разрешения на полный доступ внутри этого каталога лишь его владельцу, а всем остальным доступ запрещать. То есть права доступа к директориям пользователей могут выглядеть таким образом:
drwx------ kirill.elistratov users kirill.elistratov
В приведённом примере указано, что для директории kirill.elistratov, находящейся в каталоге /home, для пользователя kirill.elistratov выданы полные права. При этом группа-владелец этой директории – users, но другие пользователи, входящие в эту группу, ни прочитать содержимое каталога, ни выполнить какой-либо сценарий не смогут. То же самое правило касается и всех остальных пользователей.
При этом владельцем каталога /home должен являться суперпользователь – эта мера необходима, чтобы другие пользователи не смогли создавать файлы и каталоги вне своей домашней директории, а также менять свои привилегии для директорий, содержащихся в каталоге /home [11, p. 40].
Управление ресурсами
Не секрет, что каждая запущенная программа в той или иной степени потребляет ресурсы операционной системы: оперативную память, обращение к дискам, процессорные мощности. Среди угроз, которые несут в себе бесконтрольные процессы, можно назвать запуск опасного сценария, чрезмерное потребление процессорного времени, доступ процесса в чужое пространство. Вообще говоря, процесс – это одновременно и исполняемая программа, и ресурсы, которая та потребляет [11, p. 53].
Процессы можно разделить на три группы:
- системные – процессы, запускаемые ядром ОС. Они запускаются при загрузке операционной системы и функционируют в течение всего времени её работы. В силу того, что эти процессы запускаются ядром, они могут обращаться к функциям, недоступным другим процессам;
- сервисные службы – некие процессы для обслуживания системы, например, отправления заданий на печать. Службы могут запускаться автоматически после инициализации ядра, могут быть запущены пользователем или при наступлении какого-либо события;
- пользовательские – процессы, запускаемые пользователями из исполняемых файлов. Отличие от сервисных служб в том, что пользовательский процесс, как правило, завершается при выходе пользователя из системы [11, p. 55].
Процессорные ресурсы, используемые программами, распределяются с помощью планировщика, включённого в состав ядра ОС. При этом пользователь не может повышать приоритет своих процессов для получения больших вычислительных мощностей. Однако, возможны ситуации, когда пользовательский процесс запрашивает слишком большой объём памяти, что ведёт к замедлению работы любых других процессов. Подобное проявление возможно как случайно, так и намеренно – например, злоумышленником, желающим привести компьютер в бездействие. Поэтому администратору системы будет разумно задать ограничение на максимальный размер файла для пользователей, а также на максимальное количество одновременно запускаемых процессов. Делается это с помощью команды ulimit с параметрами:
- -f задаёт максимальный размер файла;
- -u задаёт максимальное количество одновременных процессов для пользователя, запускаемых со всех терминалов;
- -n задаёт ограничение на количество одновременно открываемых одним процессом файлов [11, pp. 56-59].
Помимо прочего, ядром операционной системы как правило запускается большое количество служб, которые могут не требоваться при работе с операционной системой. Скажем, на компьютере планируется использовать подключение с использованием telnet. В таком случае это службу было бы целесообразно отключить, чтобы она даже не занимала требуемый для неё порт, а сервер не ожидал на него подключение. Злоумышленник никогда не сможет получить доступ через службу, которая отключена, а непосвящённый пользователь не сможет через неё нанести случайный вред.
Отслеживание ресурсов
Для наблюдения за ресурсами компьютера используются специальные утилиты. Так, утилита ps без аргументов выводит список процессов, запущенных текущим пользователем. Дополнительные аргументы расширяют функционал этой программы, но они сильно разнообразны, поэтому в текущей работе не приводятся. Для наблюдения за процессами в реальном времени используется программа top, которая отображает процессы в порядке убывания требуемых теми процессорного времени. Для вывода связанных с конкретным процессом файлов, команд и устройств используется программа lsof.
Для отслеживания меняющихся во времени процессов удобно использовать программу watch. В ней, например, можно указать интервал в секундах, через который программа будет производить наблюдения, и выполняемую команду. К примеру, если нужно отслеживать изменения в каталоге /var/upload, то можно использовать следующую команду: watch -d ls -l /var/upload/.
Планировщик заданий
Отдельно стоит отметить такую особенность операционной системы, как запуск заданий по расписанию. Управляет запуском специальная программа – crontab, планировщик заданий. Администратору системы было бы разумно ограничивать возможность добавления заданий в планировщик только тем пользователям, кому это действительно нужно.
Обычно в системе есть специальный файл cron.deny, расположенный в каталоге /etc. По умолчанию он пустой, это значит, что все пользователи могут пользоваться планировщиком. В него заносятся пользователи, которым нужно запретить подобное действие. Однако такой подход не самый оптимальный, так как пользователей может быть чрезмерно много, и ручное перечисление становится затратным.
Ограничение использования программы crontab делается с помощью создания файла cron.allow в каталоге /etc. В этом файле должны быть построчно перечислены все пользователи, которым разрешено добавление заданий в планировщик. Таким простым способом соблюдается основное правило информационной безопасности: должно быть запрещено всё, что явно не разрешено[18].
Отдельно стоит отметить, что наличие пустого файла cron.allow в каталоге /etc запрещает любым пользователям использовать планировщик заданий, даже если существует файл cron.deny и он не пустой [11, p. 76].
Сетевая безопасность
На мой взгляд, подавляющее большинство угроз исходит из внешней сети. В самом деле, мало найдётся тех, кто захочет нанести ущерб своему же компьютеру. Поэтому помимо базовых принципов обеспечения безопасности не менее важными являются превентивные меры по защите со стороны внешней сети.
Когда злоумышленник выбирает целью атаки какой-либо удалённый компьютер, он начинает поиск уязвимостей с самого простого: проверить доступность узла с помощью так называемого эхо-запроса, просканировать сеть на наличие узлов, имеющих выход в Интернет, проверить открытые порты на каждом узле и. т. п. По мнению авторов книги «Секреты хакеров. Безопасность сетей – готовые решения», самым простым способом является фильтрация ICMP-пакетов, с помощью которых прослушивается сеть предприятия. Здесь можно пойти двумя путями:
- полностью отключить возможность обмена пакетами по протоколу ICMP;
- заблокировать все сообщения, которые не нужны в работе, а необходимые для диагностики сообщения оставить, например: ECHO_REPLY, HOST_UNREACHABLE и TIME_EXCEEDED.
Можно разрешить обмен сообщениями по протоколу ICMP только с несколькими IP-адресами, например, принадлежащими Интернет-провайдеру [14].
Например, сайт компании Microsoft не обменивается сообщениями по ICMP-протоколу при выполнении команды ping (см. Рисунок 2).
Стоит добавить, что полностью открытый протокол ICMP предоставляет злоумышленнику возможность реализации так называемой DDoS-атаки[19].
Существуют и более сложные методы сканирования сети. Одним из них является, например, использование утилиты nmap, которая использует в своей работе особенности в реализации стека протоколов TCP/IP. Её реализация строится на попытках установки соединения либо по поиску открытых портов по определённым алгоритмам по протоколам TCP и UPD, а также посредством сканирования открытых портов RPC. Программа способна сканировать как отдельный узел, так и целую сеть. Эту программу можно использовать в целях профилактики, запуская её на сканирование с компьютера, который непосредственно хотим проверить, а также из внутренней сети и из внешней. Подобный механизм даст понимание о том, как увидит вашу сеть потенциальный злоумышленник [13, p. 300].
Рисунок Недоступность сайта компании Microsoft для ICMP-пакетов