|
||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Построение инфраструктуры открытых ключей на основе opensslИнфраструктура открытого ключа (PKI) является системой цифровых сертификатов, центров сертификации (ЦС), которая производит проверку и подтверждение подлинности каждой из сторон, участвующих в электронной операции, с помощью криптографии открытых ключей. Сертификат открытого ключа, обычно называемый просто сертификатом – это документ с цифровой подписью, связывающий значение открытого ключа с удостоверением пользователя, устройства или службы, которым принадлежит соответствующий закрытый ключ. Центр Сертификации (Certification Authority, CA) является пакетом программного обеспечения, принимающим и обрабатывающим запросы на выдачу сертификатов, издающим сертификаты и управляющим выданными сертификатами. Корневой сертификат – сертификат принадлежащий Центру Сертификации, с помощью которого проверяется достоверность других выданных центром сертификатов. Список отозванных сертификатов – список скомпрометированных или недействительных по какой либо другой причине сертификатов. Отличительное имя (Distinguished Name, DN) – данные о владельце сертификата. Включают CN (Common Name), OU (Organization Unit), O (Organization), L (Locality), ST (State or province), C (Country name). Электронная цифровая подпись (ЭЦП) – реквизит электронного документа, предназначенный для удостоверения источника данных и защиты данного электронного документа от подделки. Схема электронной подписи обычно включает в себя: · алгоритм генерации ключей пользователя; · функцию вычисления подписи; · функцию проверки подписи. Функция вычисления подписи на основе документа и секретного ключа пользователя вычисляет собственно подпись. Функция проверки подписи проверяет, соответствует ли данная подпись данному документу и открытому ключу пользователя. Открытый ключ пользователя доступен всем, так что любой может проверить подпись под данным документом. Для того, чтобы подписать документ нужно зашифровать с помощью закрытого ключа значение хеш-функции от содержимого документа. Чтобы проверить подпись, нужно расшифровать с помощью открытого ключа значение подписи и убедиться, что оно равно хешу подписанного документа. Таким образом цифровая подпись, это зашифрованный хеш документа. Ключ – это набор параметров (чисел). Он может храниться в файле. В теории клиенты должны сами генерировать свои закрытые и открытые ключи, создавать запрос на подпись открытого ключа и отправлять его в центр. На практике большинство клиентов не умеют генерировать ключи, поэтому в нашем случае Центр осуществляет данную работу. Центр может отзывать сертификат, выданный клиенту, помещая его в черный список, который регулярно передается пользователям центра. С помощью корневого сертификата, который публично доступен, пользователи могут проверять сертификаты друг друга. Итого у центра сертификации имеется: · закрытый ключ; · корневой сертификат (хранящий в себе открытый ключ); · список отозванных (скомпрометированных) сертификатов. У клиентов: · закрытый ключ; · сертификат, подписанный корневым; · корневой сертификат для проверки того, что сертификаты других пользователей выданы его доверенным центром; · список отозванных (скомпрометированных) сертификатов. Создание корневого сертификата включает: · Генерацию закрытого ключа. · Генерацию открытого ключа и его подпись с помощью закрытого. Создание обычного сертификата включает: · Генерацию закрытого ключа. · Создание запроса на подпись сертификата. · Подпись запроса в центре сертификации о получение сертификата. Общепринятый формат информации, содержащейся в сертификате, называется Х509. Сертификаты и ключи могут храниться в разных типах файлов. (Например, PEM и PKCS12. PEM используется на серверах, PKCS12 – в браузерах). OpenSSL – набор криптографических программ и библиотек – предоставляет средства для управления сертификатами и закрытыми ключами. Синтаксис вызова его функций: openssl <имя_команы> <параметры>. Основные команды: · rsa – работа с ключами; · x509 – работа с файлами сертификатов в формате PEM; · pkcs12 – работа с файлами сертификатов в формате PKCS12; · crl – работа со списком отозванных сертификатов. Предварительная подготовка Данный этап включает оценку числа клиентов, спецификацию требуемых типов сертификатов, требования к их стойкости и времени жизни. На выходе желательно получить предварительные версии Certificate Policy и Certificate Practice. Возможно, это будет один совмещенный документ. В Certificate Policy описываются общая архитектура центра сертификации, ответственные лица, процедуры первоначальной генерации корневого сертификата, резервного копирования, обстоятельства отзыва ключей, механизм передачи сертификатов клиентам (внутренним и внешним). В Certificate Statement описываются типы сертификатов, необходимые атрибуты и расширения, уточнения процедур передачи отзыва, перевыдачи, сроки жизни. Желательно систематизировать именование полей сертификатов, к примеру, в качестве OU можно использовать общепринятое название отдела. Для инсталляции центра сертификации можно использовать адаптированные свободно распространяемые наборы скриптов. SSH SSH (Secure Shell) – это клиент-серверная система, позволяющая создавать зашифрованные туннели между двумя и более компьютерами. Существуют две основные разновидности защищенного интерпретатора команд. В основе одной из них лежит протокол SSH версии 1, в основе другой – протокол SSH версии 2. Первая версия протокола в настоящее время применяется редко. Она считается устаревшей из-за обнаруженных ошибок, хотя по-прежнему поддерживается современными системами в целях обеспечения обратной совместимости. SSH версии 1 Аутентификация компьютеров с использованием алгоритма RSA Вызывая ssh, клиентскую утилиту, пользователь запрашивает соединение с удаленным компьютером (сервером). На сервере должен выполняться демон SSH (sshd). После получения запроса сервер отвечает на него, высылая клиенту открытый ключ компьютера (H) и открытый ключ сервера (S). Под выражением "ключи компьютера" понимается пара "секретный-открытый ключ RSA", генерируемая демоном sshd на этапе инсталляции. По умолчанию эти ключи имеют длину 1024 бита. Открытый ключ H сохраняется в файле /etc/ssh/ssh_host_key.pub (эту настройку можно изменить). Личный секретный ключ компьютера хранится в файле /etc/ssh/ssh_host_key и не должен быть зашифрованным (в то же время, личные ключи пользователя обычно шифруются). Следовательно, важно должным образом защитить этот файл. Ключи компьютера разрешается модифицировать спуерпользователю с помощью утилиты ssh-keygen. Выражение "ключи сервера" означает пару "секретный-открытый ключ RSA", генерируемую демоном sshd один раз во время запуска и каждый час (стандартная установка) после первого использования. По умолчанию эти ключи имеют длину 768 бит. Ни один из двух ключей не хранится на диске. Получив ключи H и S, клиент пытается проверить ключ H, просматривая файлы /etc/ssh/ssh_known_hosts и $HOME/.ssh/known_hosts. По умолчанию, если ключ H не найден или был изменен, утилита ssh выдает предупреждение и спрашивает пользователя, не хочет ли он добавить ключ в файл $HOME/.ssh/known_hosts. Автоматическое добавление ключей в файл удобно, однако открывает дополнительные возможности для злоумышленников. Чтобы запретить этот режим, следует задать переменную StrictHostKeyChecking равной yes в пользовательском файле файл $HOME/.ssh/config или в общесистемном файле /etc/ssh/ssh_config. Но тогда придется самостоятельно заниматься распространением ключей. После успешной проверки ключа H клиент генерирует 256-битное случайное число N и шифрует его обоими ключами (сначала H, потом S). Зашифрованное число затем высылается серверу. Оно используется как клиентом, так и сервером для получения секретного ключа, применяемого при симметричном шифровании. Секретный ключ часто называют ключом сеанса. Все последующие данные, передаваемые в рамках соединения, шифруются согласованным ранее симметричным ключом и ключом сеанса. На этом процедура аутентификации компьютеров с использованием алгоритма RSA считается завершенной. Далее демон sshd приступает к аутентификации пользователя. Если по какой-то причине этот процесс завершится неудачей, доступ будет запрещен. Аутентификационный диалог между клиентом и сервером продолжается в соответствии с установками конфигурационного файла /etc/ssh/sshd_config и параметрами компиляции.
Таблица 15.1. Типы ключей, применяемых в RSA
SSH версии 2 Концептуально протокол SSH2 аналогичен протоколу версии 1. У каждого компьютера есть свои ключи, используемые для аутентификации. Но в отличие от версии 1, ключи сервера не создаются. Вместо этого ключи согласовываются по алгоритму Диффи-Хеллмана, после чего генерируется ключ сеанса. Данные, передаваемые в ходе сеанса, шифруются этим ключом с применением согласованного алгоритма. Кроме того, если в SSH1 целостность сообщений проверяется по незащищенной контрольной сумме, то в SSH2 используется хеш-код SHA-1 или MD5. Методы аутентификации таковы: по открытому ключу пользователя (PubKeyAuthentication), по открытому ключу компьютера с использованием файлов надежных узлов (HostBaseedAuthentication) и при помощи пароля (через модуль PAM [PAMAuthenticationViaKbdInt] или по схеме "оклик-ответ"). Контрольные вопросы 1. Какие типы сетевых экранов выделяют? 2. На основании каких параметров осуществляется фильтрация трафика? 3. Что нужно учесть при определении порядка следования правил в цепочках? 4. Для чего предназначены прокси-серверы? 5. Какие алгоритмы замещения объектов в КЭШе поддерживает сервер squid? 6. Каково назначение центра сертификации? 7. В чем заключаются различия SSH версий 1 и 2? 8. Как производится аутентификация пользователей в SSH? 9. Каковы уязвимости SSH версии 2? 10. Можно ли использовать модули PAM при работе с SSH и если да, то с какой целью?
Лекция 16. БЕЗОПАСНОСТЬ УРОВНЯ ПРИЛОЖЕНИЙ
Особенности защиты прикладных сервисов в Unix-системах можно рассмотреть на примере сервера Apache. Для настройки серверов Apache можно использовать специально разработанную для этого графическую оболочку (интерфейс пользователя). Но основные настройки хранятся в нескольких конфигурационных файлах (/usr/local/etc/httpd/conf).
Таблица 16.1. Основные конфигурационные файлы для Apache сервера
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |