Шрифт:
Установка 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. Основное ее применение состоит в создании надежного шифрованного канала между двумя и более хостами в сетях, где существует угроза прослушивания трафика.Stunnel
Как обычно, рекомендуется получить с сайта разработчика последнюю версию программного пакета.
Установка
Для работы Stunnel необходимо установить OpenSSL. Обычно OpenSSL устанавливается при инсталляции операционной системы Linux (по крайней мере, в дистрибутиве Red Hat Linux), поэтому проблем с установкой OpenSSL возникнуть не должно. Пакет Stunnel так же обычно входит в состав дистрибутива в виде RPM-пакета.
Организация шифрованного туннеля
Stunnel может работать в двух режимах – сервера и клиента. В качестве сервера Stunnel открывает указанный порт, дешифрует все поступившие данные и передает их либо в указанную в параметрах запуска программу, либо на указанный порт на указанном хосте. В качестве клиента Stunnel открывает указанный порт, шифрует все поступившие на него данные и передает их в определенную программу или на определенный порт на заданном хосте.
Давайте организуем защищенное telnet-соединение (хотя это и не имеет практической пользы, поскольку есть SSH) между двумя компьютерами А и Б.
На компьютере Б запускаем Stunnel в режиме сервера:
stunnel -d 999 -r 23
Опция d указывает Stunnel работать в режиме отдельного демона, ждущего соединения по порту 999. Все данные, полученные в шифрованном виде на порт 999, в открытом виде передаются на порт 23 на локальной машине. Затем на компьютере А запускаем Stunnel в режиме клиента: