Глава 27 Администрирование сети
Глава 27 Администрирование сети
Администратор сети просто не в состоянии надежно контролировать всю сеть в архитектуре клиент/сервер, что чревато несанкционированным доступом. Непродуманные действия еще больше усиливают эту опасность.
Синди Куллен
Пожалуй, одна из самых сложных и трудоемких задач системного администратора – администрирование сети. Эта задача настолько комплексная, что можно практически все, о чем писалось ранее, отнести к подготовке администрирования сети. Слишком много параметров, программ, настроек могут прямо или косвенно отражаться на функционировании сети и сетевых сервисов. Мы уже приводили чье-то крылатое высказывание: «Компьютер – это сеть».
В этой главе все, так или иначе, будет касаться администрирования и управления сетью, хотя некоторые вещи с первого взгляда никоим образом не относятся к сети или ее настройке.
В той части главы, где будет говориться об инструментах, предназначенных для обнаружения уязвимости системы, мы опишем несколько программных пакетов, которые с одинаковым успехом можно применить как для взлома системы, так и для ее защиты.
Расширенное управление доступом к файлам
К сожалению, стандартные средства организации прав доступа к файлам в UNIX-подобных операционных системах зачастую не удовлетворяют требованиям некоторых системных администраторов. Проблема заключается в том, что определение прав доступа к файлам сводится к установке девяти битов, с помощью которых можно задать права доступа для владельца файла, группы, к которой принадлежит владелец файла, а также для всех остальных. Часто необходимо настроить доступ к файлу достаточно сложным образом – допустим, три человека из трех разных групп имеют право делать с файлом все что угодно, десять человек из других групп могут открывать файл на чтение, а еще десять – только выполнять. Для всех других пользователей доступ к этому файлу необходимо запретить. Устроить нечто подобное стандартными средствами Linux весьма нетривиальная задача. В такой ситуации для решения данной проблемы можно воспользоваться Linux ACLs (Access Control Lists, списки контроля доступа) – версией POSIX ACLs для Linux. Linux ACLs – это набор патчей для ядра операционной системы и программ для работы с файловой системой и несколько утилит, дающих возможность устанавливать права доступа к файлам не только для пользователя-владельца и группы-владельца файла, но и для любого пользователя или группы.
Linux ACLs использует расширенные атрибуты (Extended Attributes) для хранения данных о правах доступа к файлам пользователей и групп. Расширенные атрибуты – это пара имя/значение, привязанная к определенному файлу.
Список расширенного контроля доступа существует для каждого inode и состоит из шести компонентов. Первые три являются копией стандартных прав доступа к файлу. Они содержатся в единственном экземпляре в ACL и есть у каждого файла в системе:
• ACL_USER_OBJ – режим доступа к файлу пользователя-владельца;
• ACL_GROUP_OBJ – режим доступа к файлу группы-владельца;
• ACL_OTHER – режим доступа к файлу остальных пользователей.
Следующие два компонента устанавливаются для каждого файла в отдельности и могут присутствовать в ACL в нескольких экземплярах:
• ACL_USER – содержит UID и режим доступа к файлу пользователя, которому установлены права, отличные от основных. На каждого пользователя со своими правами на данный файл хранится отдельная запись. Не может существовать более одной записи на одного и того же пользователя;
• ACL_GROUP – то же самое, что и ACLUSER, но для группы пользователей;
• ACL_MASK – маска действующих прав доступа для расширенного режима.
При установке дополнительных прав доступа присваивается значение и элементу ACLMASK.
Каталоги также могут иметь список контроля доступа по умолчанию. В отличие от основного ACL, он действует на создаваемые внутри данного каталога файлы и каталоги. При создании файла внутри такого каталога, файл получает ACL, равный ACL по умолчанию этого каталога.
Установка Linux ACLs
Для использования Linux ACLs необходимо получить на сайте разработчиков собственно пакет Linux ACLs и патчи для ядра операционной системы Linux и некоторых утилит. Само собой, после наложения патчей придется перекомпилировать ядро операционной системы и утилиты.
При подготовке к компиляции ядра операционной системы Linux необходимо выполнить следующие действия:
1. В меню Code Maturity Level Options отметить пункт Prompt for development and/or incomplete code/drivers .
2. В меню Filesystems отметить пункт Extended filesystem attributes (EXPRIMENTAL).
3. Затем отметить два подпункта: Extended user attributes и Access Control Lists .
4. В пункте Second extended fs support отметить подпункт Extended attributes for ext2 (DANGEROUS).
После этого можно компилировать ядро операционной системы.
После компиляции и установки ядра операционной системы следует переходить к установке утилит управления расширенным доступом к файлам и накладыванию патчей на стандартные утилиты.
Для установки утилит необходимо скомпилировать пакет ACL, который также берется на сайте разработчиков. Процесс компиляции и установки подробно описан в документации, входящей в комплект пакета. На том же сайте берем патчи к стандартным утилитам операционной системы и применяем их по рецепту, приведенному в документации. После этого можно произвести перезагрузку операционной системы.
Установка и изменение прав доступа
Управление списками контроля доступа производится при помощи двух утилит – getfacl и setfacl.
С помощью getfacl можно просмотреть текущие параметры доступа любого файла. Например, при вызове getfacl для домашнего каталога пользователя vasya мы получим следующее:
getfacl /home/vasya
file: home/vasya
owner: vasya
group: users
user::rwx
group::–
other:–Как можно видеть, каталог /home/vasya принадлежит пользователю vasya, группе users и значение прав доступа к каталогу – 0700. Каталог имеет только основные параметры доступа, поскольку изначально дополнительные права не устанавливаются. Дополнительные права доступа к файлу устанавливаются и изменяются при помощи утилиты setfacl. Для этого используется следующий формат вызова:
setfacl – опции ACL_структура, ACL_структура,…,ACL_структура имя_файла имя_файла …
ACL-структура представляет собой одну из следующих конструкций:
• [d: ] [и: ] [пользователь] [: [+|^] режимы_доступа] – определяет режим доступа к файлу или каталогу пользователя. Если пользователь не указан, определяет режим доступа пользователя-владельца;
• [d: ] g: [группа] [: [+|^] режимы_доступа] – то же, что и предыдущая конструкция, но для группы;
• [d: ] m [: [+|^] режимы_доступа] – определяет действующие права доступа;
• [d: ] о [: [+|^] режимы_доступа] – определяет режим доступа для остальных пользователей.
Для установки и изменения ACL используются следующие опции:
• -s – заменяет полностью ACL файла на указанный в командной строке;
• -m – изменяет режимы доступа к файлу (каталогу);
• -х – убирает правила доступа из ACL.
К примеру, вот что мы получим, применив setfacl к каталогу vasya:setfacl -s u::rwx,g::–,o:–,u:usl:rwx,g:usrs2:rx,u:us2:-/home/vasya getfacl /home/dh
file: home/vasya
owner: vasya
group: users
user::rwx
user: usl:rwx
user: us2:–
group::–
group: usrs2:r-x
mask: rwx
other:–
Дополнительные возможности
Кроме основных опций запуска, обе команды имеют большое количество дополнительных. Мы не будем останавливаться на этих возможностях, поскольку пакет динамично изменяется, и вполне возможно, что он уже обладает существенно большими возможностями по сравнению с теми, которые присутствовали на момент написания книги. Мы не будем этого делать и потому, что пакет управления правами доступа вряд ли понадобится обычному пользователю или администратору небольшой локальной сети, а администратор большой фирмы должен быть в состоянии самостоятельно разобраться в возможностях любого программного пакета.
Шифрование трафика
Традиции – вещь очень неоднозначная. Иногда они помогают жить и успешно развиваться, иногда они просто странные или бесполезные, а иногда – весьма вредны. То же самое можно сказать и о сетевых протоколах – традициях компьютерного мира.
Большая часть существующих сетевых протоколов разрабатывалась по компьютерным меркам в чуть ли не доисторическую эпоху рыцарских традиций, когда о сетевых взломах и сетевом шпионаже можно было прочитать только в научной фантастике. Как результат – подавляющее большинство данных в сети Интернет передаются в открытом виде. И как обратная сторона медали – существует большое количество утилит для прослушивания сетевого трафика. Многие из них умеют сами анализировать перехватываемые данные. С помощью таких утилит можно получить пароли пользователей для различных сетевых служб, тексты электронных писем, файлы, сообщения, переданные по ICQ, и т. д., и т. п. Защитить себя от такого прослушивания можно с помощью шифрования трафика.
Наиболее распространенным протоколом шифрования является протокол SSL, разработанный Netscape Communications. Чаше всего он используется для шифровки протокола HTTP (HTTPS), но также может применяться для создания защищенных соединений с SMTP, POP3, IMAP и другими высокоуровневыми сетевыми протоколами.
Программа, осуществляющая поддержку протокола SSL почти для любых серверных и клиентских приложений под Linux и Windows, называется Stunnel. Основное ее применение состоит в создании надежного шифрованного канала между двумя и более хостами в сетях, где существует угроза прослушивания трафика.Данный текст является ознакомительным фрагментом.