Смекни!
smekni.com

Исследование уровня безопасности операционной системы Linux (стр. 2 из 15)

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

Вывод.

В этой главе был осуществлен обзор основных терминов компьютерной безопасности, рассмотрены такие понятия, как угроза безопасности, уязвимость системы, атака на систему, описаны основные виды атак.

2. Локальная и сетевая безопасность Linux

Linux является сетевой ОС, поэтому провести четкую границу между локальной и сетевой безопасностью очень сложно. Но, поскольку компьютер, на котором установлена ОС Linux, может выступать как в качестве пользовательского компьютера, так и в качестве сервера, подключение его к сети не гарантируется. При отсутствии сети неуместно говорить о сетевой безопасности, потому что сетевой угрозы в принципе не существует. Следовательно, разделение общей безопасности системы на две составляющие вполне целесообразно.

Учитывая все это, можно сделать вывод, что локальная безопасность является обязательной практически в любом случае, кроме тех, когда к компьютеру имеет доступ только один человек – его владелец. Сетевая же безопасность является актуальной только в том случае, когда компьютер с установленной на нем Linux имеет выход в сеть. Сетевая безопасность является дополняющим звеном локальной безопасности, которые вместе определяют общую безопасность системы в целом. В принципе, локальную безопасность можно считать последним барьером в общей безопасности системы.

Локальная безопасность – это правила, меры и усилия, направленные на защиту системы изнутри, от локальных пользователей.

ОС Linux является полноценной многопользовательской системой с простой и распределенной архитектурой. Архитектура ОС Linux приведена на рисунке 2.1.


Рис. 2.1. Структура операционной системы Linux

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

Зачем же необходимо обезопасить систему от локальных пользователей?

Для ответа на этот вопрос сначала рассмотрим, что представляется возможным пользователю, который имеет доступ в систему.

- После входа в систему пользователю выделяется определенная часть машинных ресурсов (дискового пространства, оперативной памяти, процессорного времени и так далее). Хорошо, если ОС изначально настроена на правильное разделение ресурсов. А если нет? Достаточно одному пользователю запустить пару-тройку «тяжелых» программ, как время ожидания для других программ даже на мощной машине может выйти за грань допустимого.

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

- «Гуляя» по дереву каталогов на жестком диске, пользователь может попасть в ту часть, в которой ему быть не положено (например, в каталог, где хранятся файлы других пользователей). Личные файлы каждого пользователя должны быть доступны ему и только ему, если, конечно, он сам не решит иначе.

Перечисленные примеры – это лишь малая часть. Иногда, даже сам этого не осознавая, неопытный пользователь может представлять потенциальную угрозу, если ему предоставить неограниченные права. К тому же сама порядочность пользователя – это роскошь, которую в современном мире может себе позволить не каждый.

Теперь рассмотрим, какие же средства предоставляет система Linux для обеспечения локальной безопасности.

2.1. Пользователи и пароли

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

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

Все имена пользователей Linux и соответствующие им идентификаторы хранятся в специальном файле passwd. Этот файл располагается в каталоге etc, который, в свою очередь, находится в корневом каталоге системы /. Файл имеет обычную текстовую форму.

Пример файла пользовательских имен passwd.

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

Каждая запись в этом файле разделена двоеточиями на 7 частей:

1. Имя пользователя. Это поле содержит имя пользователя. Для операционной системы не важно, какое имя имеет пользователь, система ориентируется на идентификатор, а имя играет, пожалуй, только информационное значение для человека, работающего в системе.

2. Поле пароля. Это поле в ранних версиях Linux содержало зашифрованный пароль, а теперь, когда была введена технология теневых паролей, в этом поле просто ставится x. Практического применения это поле не имеет.

3. Идентификатор пользователя (UID). В системе Linux каждый пользователь имеет уникальный идентификационный номер, который однозначно определяет его в системе. Этот номер используется в различных целях, например, при установке прав доступа на файлы. Права доступа будут рассмотрены в следующем разделе.

4. Идентификатор группы, к которой принадлежит этот пользователь (GID). Концепция групп будет рассмотрена в следующих разделах.

5. Поле комментария. В этом поле может храниться любая дополнительная информация о пользователе, например, его полное имя.

6. Полный путь к домашнему каталогу пользователя. В ОС Linux для каждого пользователя создается его домашний каталог, в котором он может хранить свои документы. Обычно эти каталоги располагаются в директории /home корневого каталога и по умолчанию имеют имена владельцев.

7. Путь к командной оболочке. Последнее поле содержит полный путь к рабочей оболочке пользователя (по умолчанию такой оболочкой является bash). Эта оболочка запускается, когда пользователь проходит процедуру аутентификации. В целях безопасности для системных пользователей в этом поле очень часто ставится /sbin/nologin. В приведенном примере пользователь bin имеет как раз такое значение в поле командного интерпретатора. Сама по себе программа nologin не является оболочкой, единственное ее назначение – не допустить вход в систему. Поэтому при попытке входа под именем пользователя, у которого в качестве рабочей оболочки установлена /sbin/nologin, ничего не происходит. Обычно такой подход используется при создании пользователей, которые являются системными, то есть от имени которых выполняются какие-то действия внутри системы. А поскольку таким пользователям не нужна рабочая оболочка, хорошим решением, с точки зрения безопасности, будет установка поля оболочки в /sbin/nologin. Еще одним распространенным решением в таких ситуациях является установка этого поля в значение /bin/false. Как известно, в Linux, да и в большинстве других операционных систем, успешное завершение программы определяется типом возвращаемого значения. Если возвращается нулевое значение, выполнение программы прошло успешно, если ненулевое – в процессе выполнения программы возникли ошибки. На основе возвращаемого значения система аутентификации делает вывод о том, пройдена ли аутентификация успешно или она «провалилась». false – программа, которая независимо от внешних факторов всегда возвращает значение, отличное от нуля, что в данном случае означает возникновение ошибок при запуске оболочки, и управление снова возвращается системе аутентификации.

При входе в систему программа, предоставляющая доступ, производит чтение информации о пользователях как раз из файла passwd. Право на запись в этот файл имеет только привилегированный пользователь root, читать же его могут все пользователи системы (права доступа описываются в разделе «Особенности файловой системы Linux»).

Этот файл никогда не редактируется вручную, хотя, в принципе, это вполне допустимо. Обычно для редактирования файла пользователей используют специальные программы: useradd, usermod и userdel.

Программа добавления useradd позволяет добавить нового пользователя в систему. Для управления процессом создания пользователя эта программа может принимать различные параметры в командной строке. Например, параметр –s задает используемый пользователем shell, а параметр –g – группу, к которой принадлежит создаваемый пользователь. Помимо добавления записи о пользователе в файл /etc/passwd, программа useradd создает домашний каталог пользователя, который по умолчанию должен размещаться в директории /home. Путь к пользовательскому каталогу может быть определен с помощью параметра –d, за которым следует полный путь от корневого каталога до каталога пользователя.

Программа usermod позволяет изменять такие параметры, как рабочая оболочка пользователя, домашний каталог, группа, идентификатор пользователя и так далее.