Учебное пособие Ставрополь сф мггу им. М. А. Шолохова 2009
Скачать 5.26 Mb.
|
Примечание. Некоторые версии Unix, в особенности HPUX, поставляются с настройками по умолчанию надежности паролей для 331 обеспечения безопасности. В них указывается набор блокировок для учетных записей на случай слишком большого числа неудачных попыток входа в систему. 22.3 Контроль доступа к файлам В системе Unix доступ к файлам контролируется посредством набора разрешений. Для владельца файла, группы, которой принадлежит файл, и для всех остальных лиц можно присваивать привилегии чтения, записи и выполнения. Файловые разрешения изменяются посредством команды chmod . Как правило, не рекомендуется разрешать пользователям создавать файлы, доступные для чтения или записи для любых лиц. Такие файлы могут считываться или записываться любым пользователем системы. Если злоумышленник получит доступ к идентификатору пользователя, он сможет считать или изменить любые из таких файлов. Так как достаточно трудно убедить всех пользователей в необходимости изменять разрешения доступа к файлу при его создании, разумно создать механизм, используемый по умолчанию, предназначенный для настройки соответствующих разрешений при автоматическом создании файла. Это можно осуществить с помощью параметра unmask . В системах Solaris этот параметр располагается в файле /etc/default/login , в системах Linux - в /etc/profile . Команда выполняется следующим образом: unmask 077 Цифры, указываемые после команды, определяют разрешения, которые не будут присвоены по умолчанию вновь создаваемому файлу. Первая цифра определяет разрешения относительно владельца файла, вторая цифра указывает разрешения для группы, а третья - для всех остальных пользователей. В случае, рассмотренном выше, все новые файлы присваивают разрешения чтения, записи и выполнения владельцу того или иного файла, а группе и всем остальным пользователям не предоставляется никаких разрешений. Разрешения определяются числами следующим образом: 4 - Разрешение на чтение, 2 - Разрешение на запись, 1 - Разрешение на выполнение. Следовательно, если требуется разрешить группе иметь по умолчанию разрешение на чтение, но запретить запись и выполнение, нужно указать команду unmask 037 . Если требуется запретить группе запись, следует указать команду unmask 027 332 22.4 Доступ через корневую учетную запись Как правило, рекомендуется ограничивать прямой доступ с использованием корневой учетной записи. При таком подходе даже администраторам необходимо сначала выполнить вход систему с использованием их аутентификационных данных, и только после этого с помощью команды su получить доступ к корневой учетной записи. Это также обеспечивает создание записей в журнале, отображающих, какие идентификаторы пользователей использовались для получения доступа к корневой учетной записи. В качестве альтернативы вместо команды su в некоторых версиях Linux (например Ubuntu Linux) можно использовать команду sudo . Команда sudo обеспечивает дополнительные возможности по ведению журналов, заключающиеся в фиксировании команд, выполняемых пользователями, работающими в корневой учетной записи. Существует возможность ограничить вход под корневой учетной записью таким образом, чтобы его можно было осуществлять только из консоли Solaris или Linux. В системе Solaris следует изменить файл /etc/default/login и убедиться в том, что следующая строка не закомментирована: # If CONSOLE is set, root can only login on that device. # Comment this line out to allow remote login by root. # CONSOLE=/dev/console Посредством этого система разрешит прямой вход в корневую учетную запись только через консоль. В системе Linux можно реализовать аналогичную конфигурацию, редактируя файл /etc/securetty . Этот файл представляет собой список TTY, которые используются для входа в корневую учетную запись. Содержимым этого файла должно быть /dev/tty1 Если для управления системой используется последовательный канал связи, файл должен содержать /dev/ttyS0 . Сетевые TTY - это, как правило, /dev/ttyp1 и выше. Если требуется контролировать корневой доступ к системе, рекомендуется осуществлять контроль корневого доступа к FTP. Файл /etc/ftpusers и в системах Solaris, и в системах Linux представляет перечень учетных записей, которым не разрешено осуществлять доступ к системе через FTP. Убедитесь, что в данном списке присутствует корневая учетная запись. 22.5 Защита от переполнения буфера Переполнение буфера - одна из наиболее серьезных опасностей, угрожающих системе. Solaris предоставляет способ предотвращения 333 выполнения команд вне стека при проявлении атак на переполнение буфера. Для этого необходимо добавить следующие строки в файл /etc/system : set noexec_user_stack=1 set noexec_user_stack_log=1 Первая строка предотвращает выполнение команд вне стека, а вторая - заносит в журнал данные о произведенных попытках. Внимание! Существует ряд программ, которым требуется выполнять команды вне стека. Если внести описанное изменение, то при работе этих программ возникнут сбои. Убедитесь, что данная команда протестирована, прежде чем применять ее на системах. Существует несколько других проектов, предназначенных для повышения уровня защиты стека Linux. Один из них расположен по адресу http://www.openwall.com/linux/. 22.6 Управление пользователями Как в случае с любой операционной системой, управление сообществом пользователей является очень важным процессом для поддержки общей безопасности системы. В организации должна присутствовать специальная процедура управления пользователями, предусматривающая в деталях все действия, которые необходимо выполнить, чтобы предоставить сотруднику доступ к системе. В процедуре должны быть определены шаги, которые следует предпринимать, когда сотрудник увольняется из компании. Следующие разделы данной лекции содержат некоторые подробные рекомендации по управлению пользователями в системах Unix. Имейте в виду, что существует множество вариаций систем Unix. Средства, используемые для управления пользователями, различны для каждого поставщика и версии операционной системы. 22.6.1 Добавление пользователей в систему В большей части версий Unix имеются утилиты для добавления пользователей в систему. Здесь ключевыми задачами являются следующие: - Добавление имени пользователя в файл паролей. - Присвоение соответствующего идентификатора пользователя. - Присвоение соответствующего группового идентификатора. Примечание. Большая часть систем содержит утилиты по добавлению пользователей для обеспечения автоматического выполнения этой задачи. В Linux для этого предназначена программа adduser . В системе Solaris эта утилита называется useradd 334 22.6.1.1 Добавление имени пользователя в файл паролей Файл /etc/passwd содержит перечень всех имен пользователей, принадлежащих пользователям системы. Каждый пользователь должен иметь уникальное имя, состоящее из восьми или менее символов. Для каждой записи в файле паролей должно быть определено реальное лицо, ответственное за учетную запись. Данную информацию можно добавить в поле GECOS (пятое поле в каждой строке). 22.6.1.2 Присвоение идентификационного номера пользователя Каждому имени пользователя необходимо присвоить соответствующий идентификатор пользователя (UID). UID должен быть уникальным в рамках всей системы. Как правило, идентификатор пользователя должны быть больше 100. Он ни в коем случае не должен быть равен 0, так как это идентификатор корневой учетной записи. Внимание! Система использует UID для идентификации владельцев файлов в системе и, таким образом, не рекомендуется даже повторное использование UID. 22.6.1.3 Присвоение группового идентификатора Каждый пользователь должен иметь главную группу. Присвойте этот номер имени пользователя в файле /etc/passwd . Обычные пользователи не должны быть членами группы « wheel », так как она используется в административных целях. 22.6.2 Определение оболочки для входа в систему В задачу определение соответствующей оболочки пользователя для входа в систему и работы (некоторые пользователи могут вовсе не иметь какой-либо оболочки) входит: - Добавление имени пользователя в теневой файл shadow - Указание соответствующего начального пароля. - Определение соответствующего псевдонима электронной почты. - Создание домашнего каталога пользователя. Интерактивным пользователям необходимо предоставить оболочку для входа в систему. Как правило, это оболочки ksh, csh или bash. Пользователям, которые не будут осуществлять вход в систему, нужно предоставить программу, не являющуюся оболочкой. Например, если имеются пользователи, которые только проверяют электронную почту через POP или IMAP, им можно разрешить изменять свои пароли в интерактивном режиме. В данном случае существует возможность определить оболочку, указав в 335 качестве нее /bin/passwd . При каждом подключении пользователей к системе через telnet им будет предоставляться возможность изменить пароль. По завершении этой операции пользователь будет выходить из системы. 22.6.2.1 Добавление имени пользователя в теневой файл Пароли не должны храниться в файле /etc/passwd , так как этот файл доступен для чтения всем пользователям, и с его помощью злоумышленник может осуществить взлом пароля. Пароли должны храниться в файле /etc/shadow . Следовательно, имя пользователя должно быть добавлено и в файл /etc/shadow 22.6.2.2 Присвоение начального пароля После создания учетной записи следует установить начальный пароль. Большая часть утилит, используемая для добавления пользователей в системы, предлагает сделать это автоматически. В противном случае нужно войти в систему как пользователь и выполнить команду passwd . После этого появится предложение указать пароль для учетной записи. Начальные пароли должны быть сложными для угадывания, и рекомендуется не использовать один и тот же начальный пароль для всех учетных записей. Если используется один и тот же начальный пароль, атакующий может использовать новые учетные записи, прежде чем у легального пользователя появится возможность войти в систему и изменить пароль. 22.6.2.3 Определение электронной почты При создании пользователя он автоматически получает адрес электронной почты < имя_пользователя>@host . Если пользователь хочет иметь другой адрес электронной почты, такой как имя.фамилия@host , то этот адрес можно присвоить посредством псевдонима электронной почты. Чтобы добавить псевдоним, измените файл /etc/aliases . Формат этого файла таков: Alias: username После создания псевдонима необходимо запустить программу newaliases , чтобы создать файл alias.db 22.6.2.4 Создание домашнего каталога для пользователя Каждый пользователь должен иметь свой собственный домашний каталог. Этот каталог определяется в файле /etc/passwd . После создания каталога в соответствующем месте в системе (как правило, это каталог /home или /export ), владельцем каталога назначается пользователь командой chown следующим образом: chown 336 22.6.2 Удаление пользователей из системы Когда сотрудник увольняется из компании или переводится на другую работу, так что его учетная запись становится ненужной, необходимо выполнить соответствующую процедуру по управлению пользователями. В системе Unix все файлы пользователей принадлежат UID пользователя. Следовательно, если пользовательский UID повторно используется для новой учетной записи, эта новая учетная запись будет предусматривать владение всеми файлами старого пользователя. Изначально, если пользователю больше не требуется учетная запись, ее следует заблокировать. Это можно сделать посредством замены пароля пользователя в файле /etc/shadow символами <*LK*> . По прошествии определенного числа дней (как правило, 30 дней), файлы пользователя могут быть удалены. Время, отведенное менеджеру пользователя на копирование или удаление файлов пользователя, требуемых организации, равно 30 дням. 22.6.3 Отключение неиспользуемых учетных записей В Unix создается набор учетных записей, необходимых для различных целей (например, владение некоторыми определенными файлами), которые никогда не используются для входа в систему. Такими учетными записями являются sys , uucp , nuucp и listen . Для каждой учетной записи следует изменить их записи в файле /etc/shadow , чтобы предотвратить успешный вход в систему с их помощью. root:XDbBEEYtgskmk:10960:0:99999:7::: bin:*LK*:10960:0:99999:7::: daemon:*LK*:10960:0:99999:7::: adm:*LK*:10960:0:99999:7::: lp:*LK*:10960:0:99999:7::: sync:*LK*:10960:0:99999:7::: shutdown:*LK*:10960:0:99999:7::: halt:*LK*:10960:0:99999:7::: mail:*LK*:10960:0:99999:7::: news:*LK*:10960:0:99999:7::: uucp:*LK*:10960:0:99999:7::: operator:*LK*:10960:0:99999:7::: games:*LK*:10960:0:99999:7::: gopher:*LK*:10960:0:99999:7::: ftp:*LK*:10960:0:99999:7::: nobody:*LK*:10960:0:99999:7::: Второе поле в каждой строке представляет собой поле пароля. В случае с обычными пользовательскими учетными записями здесь располагается зашифрованный пароль. Для учетных записей, вход посредством которых запрещен, второе поле должно содержать какие-либо данные с символом « * ». Символ « * » не соответствует ни одному реальному паролю и, таким образом, 337 не может быть угадан или взломан. Посредством размещения в поле пароля соответствующих символов, таких как « LK », можно явным образом сообщать о том, что данная учетная запись заблокирована. 22.7 Управление системой Управление системой Unix (относительно вопросов безопасности) заключается в ведении журнала и отслеживании системы на наличие признаков подозрительной активности. Системы Unix предоставляют достаточное количество информации о том, что происходит в системе, а также набор средств, которые могут использоваться для выявления подозрительной активности. 22.7.1 Аудит системы В большинстве случаев ведение системных журналов является стандартной процедурой, выполняемой в большинстве версий Unix, и в них заносится достаточный объем данных, связанных с безопасностью системы. В некоторых ситуациях требуется проведение дополнительного аудита. В Solaris для этого предусмотрен модуль Basic Security Module (BSM). BSM не включен в Solaris по умолчанию. Необходимость в дополнительных возможностях здесь определяется пользователем. Чтобы включить BSM, выполните сценарий /etc/security/bsmconv . При этом запустится фоновая программа аудита, но перезагрузка системы не потребуется. Файл /etc/security/audit_control используется для определения конфигурации аудита. Полная информация по этому файлу находится в инструкции к ОС ( man audit_control ), однако для начала рекомендуется использовать следующую конфигурацию: #identify the location of the audit file directory dir: #identify the file system free space percentage when a warning should occur minfree: 20 #flags for what to audit. This example audits login, administrative #functions and failed file reads, writes, and attribute changes flags: lo,ad,-fm #This set of flags tells the system to also audit login and administrative #events that cannot be attributed to a user naflags: lo,ad Как только файл будет настроен, начнут создаваться записи аудита. Для закрытия текущего файла записи аудита и открытия нового файла используется команда audit -n . Команда praudit <имя файла аудита> предназначена для просмотра содержимого файла аудита. 338 Внимание! BSM увеличивает общую нагрузку на систему и используется, только если уровень защиты системы того требует. 22.7.1.1 Файлы журналов Большая часть систем Unix обеспечивает довольно широкие возможности по ведению журналов в программе syslog Syslog - это фоновая программа, выполняющаяся и фиксирующая данные журнала согласно настройке. Syslog настраивается через файл /etc/syslog.conf . Следует заметить, файлы журналов должны просматриваться только корневым пользователем, и никто не должен иметь возможности их изменять. Большая часть файлов syslog.conf направляет сообщения журналов в /var/log/messages или /var/adm/log/messages . Правильно написанный syslog.conf должен содержать следующую команду конфигурации: auth.info /var/log/auth.log С помощью этой команды Unix собирает информацию о попытках входа, попытках выполнения команды su , перезагрузке системы и других событиях, так или иначе связанных с безопасностью системы. Данная команда также позволяет программам TCP Wrappers заносить информацию в файл auth.log . Обязательно создайте файл /var/log/auth.log для фиксирования этой информации: #touch /var/log/auth.log #chown root /var/log/auth.log #chmod 600 /var/log/auth.log В Solaris при создании файла /var/adm/loginlog можно фиксировать неудачные попытки входа в систему. Создайте файл следующим образом: #touch /var/adm/loginlog #chmod 600 /var/adm/loginlog #chown root /var/adm/loginlog #chgrp sys /var/adm/loginlog Убедитесь, что /var предоставлено достаточное количество свободного пространства для ведения файлов журнала. Если /var расположен в том же разделе, что и /, корневая файловая система переполнится при сильном увеличении файлов журнала. Рекомендуется размещать каталог /var в другой файловой системе. 22.7.1.2 Скрытые файлы Скрытые файлы представляют собой потенциальную проблему для систем Unix. Любой файл, начинающийся с точки (< >), не отображается при выполнении стандартной команды ls . Однако при использовании команды 339 ls -a отобразятся все скрытые файлы. Хакеры научились использовать скрытые файлы для маскировки своих действий. Злоумышленник может просто скрыть свои файлы в скрытом каталоге. В других ситуациях хакеры могут скрывать файлы в каталогах, которые трудно обнаружить администратору. Например, если назвать каталог <...>, то он может остаться незамеченным. Добавление пробела после третьей точки (<...>) делает каталог труднодоступным, если не знать о наличии пробела. Чтобы отобразить все скрытые файлы и каталоги, имеющиеся в системе, выполните следующую команду: #find / -name '.*' -ls Использование -ls вместо -print позволяет вывести более подробный список расположения файла. Следует периодически выполнять эту команду и проверять любые новые скрытые файлы. |