Как настроить Apache 2.2 на работу с клиентскими сертификатами? | — IT-блог для начинающих

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих Сертификаты

Описание секции sslinsecurerenegotiation в apache 2.2

Теперь, давайте я расскажу, для чего нам нужна секция SSLInsecureRenegotiation, и стоит ли вообще Вам ее использовать.

Данная секция нужна для включения поддержки старых протоколов SSL и TLS, так как все новые Web сервера и браузеры работают на более новых версиях. Потому что была обнаружена уязвимость, которая позволяла хакеру, вклинится в данное соединение.

Казалось бы, да новые версии, но тогда все должны перейти на них, так оно и есть, но что используете Вы, когда пробуете авторизацию по клиентскому сертификату. Скорей всего Ваша проблема выглядит следующим образом. Вы сгенерировали сертификаты, настроили apache, установили в браузер сертификат (допустим в FireFox или Opera)

, и у Вас все якобы заработало, но когда речь доходит до Internet Explorer у Вас, почему-то не работает. Вы установили сертификат в хранилище «Личное», ну в общем как положено, а все равно не работает. А причина в том, что Вы скорей всего используете старую версию операционной системы, имеется в виду без обновления безопасности, так как Internet Explorer использует локальное хранилище сертификатов ОС, а другие браузеры используют собственное хранилище.

А если у Вас и в этих браузерах не работало, то посмотрите, какую версию Вы используете. Точно не знаю, но по-моему, все версии FireFox до 3.5 работают на старых протоколах. Это относится и к Internet Explorer, версии до 8 не будут работать с клиентскими сертификатами, если Вы используете последние версии Apache и SSL.

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

Поэтому в данном случае можно прописать данный параметр, выставив его в ON и одновременно написать своим пользователям, какие требования к ОС и приложениям будут введены с какого-то времени, для того чтобы они обновились, или если у Вас корпоративный ресурс, то попросить админов сделать это.

Wifiotp: наше решение

Идея проста, использовать SSID качестве канала для передачи OTP.


Система состоит из двух компонентов:

— WifiOTP токен: точка доступа Wi-Fi которая меняет название сети (SSID) каждые 30 секунд. Формат SSID, например, сеть с именем WOTP_5533_OTP-Encrypted, где OTP-Encrypted это текущий одноразовый пароль, зашифрованный ключом, который известен только клиенту и токену. OTP генерируется на основе HMAC ключа, в соответствии с

, который используется только для генерации OTP и клиенту никак не передается.

— WifiOTP клиент: приложение, запущенное на клиентском компьютере. Клиент периодически сканирует список доступных сетей, находит нужную сеть по префиксу. Далее, OTP расшифровывается и доступен для использования. В примере Windows клиента, расшифрованный OTP можно ввести в любое текущее поле нажав Ctrl Alt X.

На видео показан процесс работы WifiOTP клиента на Windows 8.

Как видно на видео, для демо мы используем обычный gmail акаунт, то есть WifiOTP может заменить стандартный Google Authenticator (и любой другой TOTP token) без изменений серверной части.

Уточню еще то, что клиент может быть подключен к сети как угодно, в том числе и по Wi-Fi; как такового подключения к беспроводной сети, генерирующейся WifiOTP токеном, нет – WiFi адаптер может сканировать транслируемые сети, не отключаясь от текущей.

Проект пока никоим образом не готов для коммерческого использования, но уже готовы PoC реализации для различных платформ:— WifiOTP токен для Windows

— WifiOTP клиент для Windows

— WifiOTP клиент для Android в формате отдельного приложения

WifiOTP будет представлен на конференции ITU Kaleidoscope 2021 9 декабря. Полный текст статьи доступен в архиве Женевского университета.

Исходный код для Windows выложен на Github.

Авторизация с помощью curl в php — блог о веб-разработке

php-authНемало полезных возможностей дает расширение cURL, которые можно использовать для реализации различных сетевых инструментов и не только. Сегодня cURL используют все по разному, для добрых и не очень дел. Всё дело в его удобстве, и возможности использования его в различных ситуациях, где нужно каким-либо образом отправлять и получать данные удаленно, без ручного участия пользователя. Рассмотрим простой пример, как можно сделать авторизацию на сайте.

Изначально, перед тем как что-то программировать нам нужно кое-что уточнить.
1. Узнать ссылку к скрипту авторизации, который будет отвечать на запросы.
2. Узнать имена полей, отправляемые скрипту, традиционно это поля логина и пароля.
3. Ваш рабочий логин, и пароль.

Затем приступаем к примеру:

// URL скрипта авторизации
$login_url = 'http://exampe.com/login.php';
 
// параметры для отправки запроса - логин и пароль
$post_data = 'login=ваш_логин&password=ваш_пароль';
 
// создание объекта curl
$ch = curl_init();
 
// используем User Agent браузера
$agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
 
// задаем URL
curl_setopt($ch, CURLOPT_URL, $login_url );
 
// указываем что это POST запрос
curl_setopt($ch, CURLOPT_POST, 1 );
 
// задаем параметры запроса
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
 
// указываем, чтобы нам вернулось содержимое после запроса
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 
// в случае необходимости, следовать по перенаправлени¤м
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 
/*
	Задаем параметры сохранени¤ cookie
	как правило Cookie необходимы для дальнейшей работы с авторизацией
*/
 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
 
// выполняем запрос для авторизации
$postResult = curl_exec($ch);

После выполнения функции curl_exec будет выполнен запрос с параметрами авторизации, содержимое страницы ответа будет находиться в переменной $postResult.
Опция CURLOPT_COOKIEFILE указывает файл, в котором будут храниться данные cookies полученные после успешного выполнения запроса авторизации. Так же следует убедиться в наличии прав PHP для создания и записи файла.

Все последующие запросы после успешной авторизации могут выполняться с помощью этих функций:

curl_setopt($ch, CURLOPT_URL, $url);
curl_exec($ch);

Кстати, для отладки удобно использовать консоль браузера, в Firefox и Chrome для открытия служит клавиша F12. Открыв вкладку «сеть» можно просмотреть параметры, отправляемые на заданный URL и ответ сервера.

Безопасность и шифрование

Безопасность и шифрование в OpenVPN обеспечивается библиотекой OpenSSL и протоколом транспортного уровня Transport Layer Security (TLS). Вместо OpenSSL в новых версиях OpenVPN можно использовать библиотеку PolarSSL. Протокол TLS представляет собой усовершенствование протокола защищенной передачи данных уровня защищенных сокетов Secure Socket Layers (SSL).

В OpenSSL может использоваться симметричная и ассиметричная криптография.

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

Во втором случае у каждого участника обмена данными есть два ключа — публичный (открытый) и приватный (секретный).

Публичный ключ используется для зашифрования данных, а приватный — для расшифрования. В основе шифрования лежит довольно сложная математика. Выбранный в SSL/TLS алгоритм зашифрования публичным ключом обеспечивает возможность расшифрования только с помощью приватного ключа.

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

Для безопасной передачи данных необходимо идентифицировать стороны, принимающие участие в обмене данными. В противном случае можно стать жертвой так называемой «атаки посредника» (Man in the Middle, MITM). В ходе такой атаки злоумышленник подключается к каналу передачи данных и прослушивает его. Он также может вмешиваться, удалять или изменять данные.

Чтобы обеспечить аутентификацию (проверку подлинности пользователя) протокол TLS использует инфраструктуру публичных ключей (Public Key Infrastructure, PKI) и асимметричную криптографию.

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

Про сертификаты:  Регистрационное удостоверение на медицинское изделие ФСЗ 2009/05113

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

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

Готовим оборудование для установки openvpn

Если вы впервые настраиваете сеть VPN, лучше всего экспериментировать на виртуальных машинах VDS. Это могут быть VDS, созданные локально на вашем компьютере или на сервере в вашей сети, либо арендованные у провайдера. Перед арендой VDS поинтересуйтесь, поддерживается ли драйвер TUN/TAP. Некоторые провайдеры требуют дополнительной оплаты для подключения TUN/TAP.

На рис. 1. мы показали схему стенда, на котором будем устанавливать компоненты и узлы OpenVPN (имена и адреса IP хостов могут быть другими).

Рис. 1. Стенд для изучения OpenVPN.

Здесь изображены три узла (хоста), для каждого из которых потребуется отдельный VDS:

Хосты клиента и сервера VPN соединены обычным, небезопасным каналом. В случае макета это может быть локальная сеть, в реальной жизни — канал сети Интернет. ПО OpenVPN создает в этой сети канал, обозначенный на рис. 1 красным цветом, внутри которого устанавливается безопасный шифрованный канал (обозначен зеленым цветом).

В макете хост удостоверяющего центра CA можно подключить к вашей локальной сети. Для реальной работы хост CA нужно отсоединить от сети, а обмен сертификатами и ключами осуществлять с помощью, например, USB флэш-диска.

Если к безопасности предъявляются повышенные требования, хост CA необходимо поместить в охраняемое помещение — расположенная на этой машине информация позволяет создавать ключи доступа к вашей сети VPN.

Мы проводили установку серверов OpenVPN в среде ОС Debian Linux и FreeBSD, клиентов OpenVPN в ОС Debian Linux, FreeBSD и Microsoft Windows.

Основная часть статьи посвящена установке компонентов OpenVPN для Debian Linux. Далее мы рассмотрим особенности установки для FreeBSD и Microsoft Windows.

По возможности на узлах сети OpenVPN используйте новые версии ОС. Перед тем как приступить к работе с OpenVPN, обновите пакеты Linux:

# apt-get update
# apt-get upgrade

Установите на всех узлах пакет пакет zip, если он не был установлен ранее:

# aptitude install zip

Этот пакет будет нужен для распаковки архива утилиты Easy-RSA, с помощью которой мы будем создавать ключи и сертификаты.

На всех узлах настройте обновление и синхронизацию времени.

# apt-get install ntpdate
# apt-get install -y ntp
# /etc/init.d/ntp stop
# ntpdate pool.ntp.org
# /etc/init.d/ntp start

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

Дальнейшие работы мы начнем с подготовки хоста удостоверяющего центра CA. Затем установим хосты сервера и клиента OpenVPN.

Компоненты сети openvpn

Прежде чем мы перейдем от теории к практике, перечислим основные компоненты сети OpenVPN и объекты, с которыми нам придется иметь дело.

Удостоверяющий центр CA

Выдает сертификаты по запросу узлов сети VPN, подписанные сертификатом удостоверяющего центра. Предоставляет узлам сети VPN свой собственный сертификат для проверки удостоверяющей стороны. Управляет списком отзыва сертификатов CRL.

Сервер OpenVPN

ПО сервера OpenVPN создает туннель внутри незащищенной сети, например, Интернета. Этот туннель обеспечивает безопасный зашифрованный трафик между узлами — участниками обмена данными в сети OpenVPN.

Клиент OpenVPN

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

Сертификаты (публичные ключи) X.509

Сертификаты X.509 представляют собой публичные ключи, заверенные удостоверяющим центром CA. Они используются для зашифровывания данных. Факт заверения сертификата удостоверяющим центром CA позволяет идентифицировать сторону, передающую зашифрованные данные.

Файл запроса на сертификат создается на узлах сети, затем он переносится на узел удостоверяющего центра и там подписывается. Созданный в результате подписанный сертификат переносится обратно на запросивший его узел сети OpenVPN.

Приватные ключи

Приватные ключи секретные. Они должны создаваться и храниться на каждом узле сети OpenVPN, предназначены для расшифрования данных и никогда не должны передаваться по сети.

Приватные ключи создаются на узлах сети OpenVPN одновременно с файлом запроса на получение сертификата.

Список отзыва сертификатов CRL

Содержит список сертификатов, утративших доверие. Он создается и редактируется на узле удостоверяющего центра CA. Чтобы отключить узел от сети, достаточно занести его сертификат в список CRL.

После создания и каждого изменения список CRL переносится на серверы OpenVPN.

Файл Диффи-Хелмана

Используется, чтобы в случае похищения ключей исключить расшифрование трафика, записанного еще до этого похищения. Создается на сервере OpenVPN.

Статический ключ HMAC

Служит для проверки подлинности передаваемой информации. Обеспечивает защиту от DoS-атак и флуда. Создается на сервере OpenVPN.

Корпоративный wifi на ubnt с порталом и доменной аутентификацией

Всем привет. Хочу поделиться вариантом реализации корпоративного wifi на нескольких SSID с разными политиками доступа для каждой беспроводной сети и доменной аутентификацией.

Схема тестового стенда выглядит так:

Подробности под катом.

Итак, задача выглядит следующим образом. Точка должна вещать 3 беспроводных сети

Первая задача

— создаем на контроллере нужные беспроводные сети. Контроллер позволяет разлить настройки на все точки в сети.

В Profiles добавляем наш Radius-сервер, указав общий Secret. Точка должна быть добавлена как Radius Client на сервере. Если точек много, можно настроить nat, чтобы все точки виделись на сервере с одним IP.

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Добавляем нужные SSID на контроллере.

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих
Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Особенность решения заключается в том, что Radius-сервер должен применять разные политики аутентификации для этих SSID. Разделение по политикам можно сделать на основании поля Called-Station-ID, который передается в запросе аутентификации и представляет собой MAC точки и SSID.

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

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

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

В условиях указываем регулярное выражение для Caller Station ID, позволяющее проверять SSID со всех точек в сети .*:PL_Private, а также проверку членства в группе.

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

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

Третья политика разрешает доступ к сети PL_Public для всех пользователей домена.

Вторая задача — гостевой портал для одноразовых паролей. Эта задача решается средствами самого контроллера UniFi.

Для сети PL_Guest определяем, что она является открытой и гостевой.

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Во вкладке Guest Portal включаем Hotspot-аутентификацию, при желании кастомизируем стартовую страницу портала.

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

В настройках Hotspot включаем аутентификацию по ваучерам.

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Нажав на ссылку Go to hotspot manager, генерируем ваучеры.

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

При попытке подключения к гостевой сети с телефона, видим приглашение ввести код ваучера:

После подключения видим в менеджере хотспота статистику.

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Из VLAN, в котором находится гостевая сеть, должен быть доступ к UniFi контроллеру, так как портал крутится на нем.

Благодарю за внимание 🙂

Настраиваем nginx и php 5.6 fpm


Так как php обновилось до 7 версии и во всех репозитариях ubuntu уже лежит php7, то добавляем новый и ставим:

add-apt-repository ppa:ondrej/php
apt-get install php5.6-cli php5.6-common php5.6-mysql php5.6-gd php5.6-fpm php5.6-cgi php-pear 

останавливаем установленный сервис и редактируем файлы настройки

service php5.6-fpm stop

nano /etc/php/5.6/fpm/php.ini
	cgi.fix_pathinfo = 0
	post_max_size = 200M
	upload_max_filesize = 200M

nano /etc/php/5.6/fpm/pool.d/www.conf
	security.limit_extensions = .php .php3 .php4 .php5
	listen = /run/php/php5.6-fpm.sock
	listen.owner = www-data
	listen.group = www-data
	listen.mode = 0660

service php5.6-fpm start

Можно убедится в том, что права доступа к сокету установлены верно:

ls -la /run/php/php5.6-fpm.sock
#srw-rw---- 1 www-data www-data 0 May  2 16:36 /run/php/php5.6-fpm.sock


Проверяем:

php -v

PHP 5.6.23-2 deb.sury.org~xenial 1 (cli)
Copyright (c) 1997-2021 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2021 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2021, by Zend Technologies

Переходим к Nginx

apt-get install nginx nginx-extras

Основные настройки Nginx хранятся в файле /etc/nginx/nginx.conf.

Про сертификаты:  Информация для российских и иностранных граждан в связи с коронавирусной инфекцией - Министерство иностранных дел Российской Федерации

Настройки базового сайта хранятся в файле /etc/nginx/sites-available/default.

Базовый конфигурационный файл сайта принято помещать в папку /etc/nginx/sites-available/ и затем включить его путём добавления символической ссылки на этот файл в папке /etc/nginx/sites-enabled/.

Настройка ssl vpn на cisco router

Приветствую, коллеги, хотелось бы описать шаги настройки SSL VPN для Cisco, с описанием некоторых интересных нюансов, встречаемых на практике.

Для реализации схемы, показанной ниже, будем использовать следующее реальное физическое оборудование, также прошу заметить что названия интерфейсов условны и в реализации не применяются (реализовать ssl vpn в unl-eve не удалось, так как ни iol ни vios команды для конфигурирования webvpn не поддерживают):

Cisco 881 (C880DATA-UNIVERSALK9-M 15.2(4)M4)
Windows 7 x64 AnyConnect 4.4

Схема подключения:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Для начала, что такое SSL VPN (или WEBVPN) от Cisco. Это своего рода наследник easy vpn или ipsec vpn, который позволяет по протоколу ssl (443 порт) удаленно подключиться к вашей корпоративной или домашней сети. Кроме простоты настройки и относительно «легкого» конфига, самым большим доводом за использование ssl является то, что он использует практически повсеместно «открытый» 443 порт для подключения, т.е. если бы вы, например, использовали ipsec, то необходимо было бы на межсетевом экране или же на граничном роутере открывать isakmp (500) порты, наверняка разрешить nat-t (4500), и еще вдобавок разрешить трафик esp, тогда как в случае с ssl подключение проходит по 443 порту, который в большинстве своем разрешен для хостов. Кроме этого не надо на стороне клиента производить каких либо настроек, удаленному пользователю достаточно знать всего лишь внешний ip или dns имя роутера, а также логин и пароль для входа (при использовании easyvpn помимо вышеперечисленного нужен pre-share ключ, а также наименование client configuration group).

Настройка:

1. Для начала необходимо активировать лицензию на роутере, в нашем случае используется cisco 881 c ios 15.2(4), для ознакомительной активации на 60 дней вводим след. команду в privilege режиме:

license modify priority SSL_VPN high

После чего соглашаемся с лицензионным соглашением.

2. Далее копируем дистрибутив any connect на роутер любым удобным способом(копирование лучше производить в заранее созданную директорию webvpn, так как если просто скопировать в корень flash, то при установке создастся копия файла установки в той же директории, соответственно займет больше места на flash) и устанавливаем его:

mkdir flash:/webvpn
copy tftp: flash:/webvpn/
crypto vpn anyconnect flash:/webvpn/anyconnect-win-4.4.00243-k9.pkg

3.

Включаем aaa (необходим, чтобы указать authentication list на нашем Web шлюзе (webvpn gateway)), заводим локальных пользователей (логин и пароль, которые здесь указываем необходимы для подключения к порталу из интернета, по типу

внешнийадресроутера

) и активируем https сервер:

aaa new-model
aaa authentication login SSL_USERS local
username admin secret ***************
ip http secure-server

4.

Генерируем RSA ключи, создаем trustpoint и затем генерируем самоподписанный сертификат:

crypto key generate rsa label SSLKEY modulus 1024
crypto pki trustpoint SALAM_TRUSTPOINT
 enrollment selfsigned
 serial-number
 subject-name CN=firewallcx-certificate
 revocation-check crl
 rsakeypair SSLKEY
crypto pki enroll SALAM_TRUSTPOINT

5.

Настраиваем пул адресов, который будет выдаваться клиентам и создаем WebVPN Gateway, для команды ip interface вместо интерфейса можно указать непосредственно ip адрес командой ip address **** port 443:

ip local pool WEBVPN_POOL 10.0.0.11 10.0.0.15
webvpn gateway WEBVPN_GW
 ip interface Dialer1 port 443
 ssl trustpoint SALAM_TRUSTPOINT
 inservice

6.

Далее создаем и привязываем к нашему gateway так называемый webvpn context, в котором указаваем ранее созданный auth list, максимальное кол-во подключаемых пользователей, а также приветствие отображаемое при входе на портал через браузер(команда inservice в этом и предыдущем шаге активирует webvpn gateway и context):

webvpn context WEBVPN_CON
 title "Assalyamu alyaikum"
 login-message "Salyam"
 aaa authentication list SSL_USERS
 gateway WEBVPN_GW
 max-users 5
inservice

7.

Там же в конфигурации webvpn context создаем policy group, в которой задаем наш пул адресов, указываем какой трафик от клиентов будет заворачиваться в туннель (в нашем случае, когда destination у клиентов будут сети 192.168.1.0 /24 или 172.16.1.0/24 в таблице маршрутизации на клиентах появятся соответствующие записи только для этих двух сетей, указывающие на то, что этот трафик будет уходить в шифрованный туннель), команда functions svc-enabled указывает, что удаленный пользователь может подключаться с помощью самостоятельно установленного клиента anyconnect, т.е. не надо заходить через браузер:

policy group WEBVPN_POLICY
   functions svc-enabled
   svc address-pool "WEBVPN_POOL" netmask 255.255.255.0
   svc split include 192.168.1.0 255.255.255.0
   svc split include 172.16.1.0 255.255.255.0
default-group-policy WEBVPN_POLICY

8.

Если у нас на внешнем интерфейсе висит ACL, то необходимо дописать правило:

permit tcp any host «внешний адрес роутера» eq 443

В итоге запускаем на нашем клиенте браузер, вводим внешний адрес нашего роутера

212.212.0.1

и видим приглашение:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Осталось ввести логин пароль и установить соединение, на этом бы все, но есть один нюанс.
Если обратиться к нашей схеме, то сеть 192.168.1.0/24, та самая к которой мы подключаемся, находится за NATом, настройка NAT для роутера R1 следующая:

ip nat inside source list NAT_POOL interface Dialer1 overload

где NAT_POOL:

ip access-list extended NAT_POOL
 permit ip 192.168.1.0 0.0.0.255 any

что произойдет если мы будем пинговать сеть 192.168.1.0 с подключившегося по vpn клиента(клиент получил адрес 10.0.0.12)? Пакеты от него зашифрованными будут уходить на R1, тот в свою очередь создает ответ с destination 10.0.0.12 и смотрит в таблицу маршрутизации:

R1#sh ip route 10.0.0.12
Routing entry for 10.0.0.12/32
  Known via "static", distance 0, metric 0
  Routing Descriptor Blocks:
  * directly connected, via Virtual-Access3
      Route metric is 0, traffic share count is 1
R1#sh interfaces virtual-access 3
Virtual-Access3 is up, line protocol is up
  Hardware is Virtual Access interface
  Description: ***Internally created by SSLVPN context WEBVPN_CON***
  Interface is unnumbered. Using address of Dialer1 (212.212.0.1)
  MTU 1406 bytes, BW 100000 Kbit/sec, DLY 100000 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation SSL
  SSL vaccess

Т.е. пакеты уходят с интерфейса dialer 1, а согласно вот этой замечательной таблице порядка операций над трафиком

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

после routing у нас идет NAT, а наше правило nat говорит нам, что наш source заменится на публичный адрес и в таком виде уйдет на клиента, который понятия не имеет о нашем внешнем адресе, следовательно пинг не пройдет и ничего работать не будет, исправляем добавлением следующей команды в acl NAT_POOL:

ip access-list extended NAT_POOL
 1 deny ip 192.168.1.0 0.0.0.255 10.0.0.0 0.0.0.255

И, альхьамдулиЛлях1, все работает!

Настройка сети и форвардинг пакетов

Смотрим, какие у нас присутствуют сетевые карты и какие назначены им логические имена:

cat /proc/net/dev 

В моем случае, это eth0 и eth1:


Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo: 632643353 3624368    0    0    0     0          0         0 632643353 3624368    0    0    0     0       0          0
  eth1: 8789521059 30492824    0    0    0     0          0         0 65843784529 28992970    0    0    0     0       0          0
  eth0: 65798728800 56063700    0    0    0     0          0         0 8382628950 29920038    0    0    0     0       0          0

Редактируем файл настройки сетевых интерфейсов:

nano /etc/network/interfaces
auto eth0
iface eth0 inet static
        # в сторону интернет шлюза
        address 10.66.66.6
        netmask 255.255.255.240
        network 10.66.66.0
        broadcast 10.66.66.15
        gateway 10.66.66.1
        dns-nameservers 10.66.66.1
auto eth1
iface eth1 inet static
        # в сторону wifi пользователей
        address 10.0.87.254
        netmask 255.255.248.0
        network 10.0.80.0
        broadcast 10.0.87.255


Убедимся в том, что в системе действительно присутствуют IPv6 интерфейсы:

ip a | grep inet

Также можно увидеть, что некоторые приложения вывешивают TCP прослушиватели на интерфейсах IPv6. Посмотреть все прослушиваемые в системе порты можно командой:

sudo ss -lnptu | sort

Чтобы выключить поддержку IPv6 на всех сетевых интерфейсах сразу, открываем на редактирование файл sysctl.conf

sudo nano -Y sh /etc/sysctl.conf

В конец файла добавляем строки для включения форвардинга и отключения IPv6:

net.ipv4.ip_forward=1
net.ipv6.conf.all.disable_ipv6 = 1


Для проверки того, что наша опция сможет быть прочитана sysctl во время загрузки выполним:

sudo sysctl -p
/etc/init.d/networking restart

Стандартная реализация

Итак, сессия в PHP по умолчанию хранится в файле. Её id сохраняется в cookie (если куки отключены — задействуется механизм передачи через адресную строку, если это не отключено в конфигурации). Время жизни такой сессионной куки по умолчанию — до момента закрытия браузера (и обычно его никто не меняет).

Про сертификаты:  Купить DS1202, Герметик огнезащитный DKC балон под пистолет 300 мл ДКС по цене 601.15 р. в наличии

Поэтому более продвинутые программисты реализуют галочку «запомнить меня», либо реализуют её функционал по умолчанию, без возможности отключить. Что они делают? Просто сохраняют в собственной куке айди пользователя. Но поскольку просто айди хранить как-то уж слишком стрёмно (любой может поставить любое число и получить доступ к произвольному аккаунту), то часто вместе с айди за компанию сохраняют и пароль. В открытом виде.

Если кто-то не понимает, чем это плохо — представьте себе, что у нас пользователь пользуется очень старым, либо очень плохо реализованным браузером. Мы ведь не можем гарантировать, что браузер надёжно шифрует куки? Да и вирусы всякие могут быть у пользователя на компьютере, и в случае особо серьёзной малвари может не спасти и шифровка — зловред может попытаться считать значения прямо из памяти, когда они расшифрованы.

Человек, случайно оказавшийся у вашего компьютера в ваше отсутствие — сможет просто скопировать себе все интересующие куки, и в новых браузерах этот процесс стал ещё проще. Дыры в безопасности браузера могут потенциально привести к тому, что ваша кука станет доступна стороннему сайту (да, сейчас это крайней маловероятно, но чем чёрт не шутит).

Ну и самое главное — если у нас SSL используется только при авторизации (а на остальных страницах его решили отключить ради выигрыша в скорости, либо чтобы лучше работало промежуточное кэширование)… То наш пароль всё время передаётся открытым текстом.

Установка клиента windows ikev2

Откройте “Network and Sharing Center” на компьютере под управлением Windows и выберите параметр “Set up a new connection or network”.

Команда в RUN для открытия сети и центра общего доступа “control.exe /name Microsoft.NetworkandSharingCenter”

Выберите для нового подключения “Connect to a workplace” и нажмите « Next» .

Введите информацию «Internet address», установите флажок “Don’t connect now; just set it up so I can connect later” и нажмите« Далее » .

Введите учетные данные учетной записи пользователя и нажмите « Create », чтобы добавить новое VPN-подключение.

Отредактируйте VPN-правило, которое было создан [ Соединение IKEv2 ], щелкнув правой кнопкой мыши на его иконке и перейдя к свойствам. Перейдите на вкладку « Security » и установите следующее:

  • Type of VPN (Тип VPN): IKEv2
  • Data encryption (Шифрование данных): Require encryption (disconnect if server declines)
  • Authentication (Аутентификация): Use Extensible Authentication Protocol (EAP)
  • Установите раскрывающийся ниже список в значение: Microsoft: Secured password (EAP-MSCHAP v2) (encryption enabled)

Перейдите на вкладку « Networking » и отключите параметр « Internet Protocol Version 6 (TCP/IPv6)» .

Нажмите OK, чтобы сохранить настройки.

Дважды щелкните на созданное правило подключения к VPN или щелкните правой кнопкой мыши и выберите «Connect », чтобы открыть VPN подключение. Нажмите кнопку Connect , чтобы начать подключение.

Как только соединение установлено, VPN-клиент получит IP-адрес от шлюза в пределах диапазона, назначенного адресным объектом « IKEv2_POOL ».

Центр сертификации ad smart card = авторизация пользователя в домене

Добрый день!

Сегодня я расскажу как настроить авторизацию пользователя в домене при помощи смарт-карты.

Итак, начнём!

Первое, что нам необходимо — это наличие считывателя для смарт-карт и карты, а также желание помочь пользователям забыть о пароле.

Для тестирования использовались продукты компании ESMART группы компаний ISBC (my-sertif.ru):

Считыватель ACR 38U:

image

Считыватель ACR 39U:

image

Смарт-карта ESMART Token SC 64k:

image

Второе — это наличие домена.

Первоначально спроектируем инфраструктуру PKI. При планировании необходимо определить количество и иерархию Центров Сертификации.

Мы использовали двухуровневую иерархию PKI с двумя центрами ЦС. Схема выглядит так:

image

Установим ESMART PKI Client на подчиненный ЦС. Свежую версию клиента можно скачать с официального сайта.
Добавляем роль сервера Web Server IIS и оставим все значение по умолчанию (для начала).

Добавим все контролеры домена в группу безопасности Certificate Service DCOM Access. Это необходимо для того чтобы была возможность запрашивать сертификат пользователя.

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Теперь перейдем непосредственно к установке и настройке ЦС.

Добавляем роль сервера:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Сервер ЦС должен быть в домене, иначе у вас не будет активно пункт Enterprise (Предприятие):

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

На следующем шаге установки выбираем нужны пункт смотря какой ЦС устанавливаем:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Создаем закрытый ключ:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Выбираем необходимые настройки. Мы использовали алгоритм SHA-512 и длину ключа 2048:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Задаем имя отображаемое в сертификате:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Выбираем срок действия сертификата ЦС. Для корневого ЦС мы оставили срок 10 лет, для подчиненного 5 лет, для сертификатов пользователей 1 год:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Указываем, где будем хранить логи:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Далее в мастере оставим все по умолчанию:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих
Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих
Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Итак, после установки у нас доступна служба регистрации по адресу http(s)://IP адрес или DNS имя сервера ЦС/certsrv. Настроем https протокол на IIS. Для корректной работы службы выдаче сертификатов необходимо создать сертификат домена и указать его роли IIS для протокола https.

Открываем Сертификаты серера:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Нажимаем Создать сертификат домена:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Заполняем форму:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Выписанный сертификат появиться в списке сертификатов сервера. Его необходимо привязать к протоколу https. При привязке мы оставили доступ только через https:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих
Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Чтобы не было проблем с ActiveX, необходимо добавить ресурс в доверенные узлы. Добавляли его через GPO.

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Итак, пол дела сделано. Теперь необходимо настроить АРМ пользователей. Делать это будем через GPO.

Первое что необходимо сделать это задать параметр запуска службы «Политика удаления смарт-карты»:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Через GPO настроим интерактивный вход для пользователей. Включаем параметр «Интерактивный вход в систему: Требовать смарт-карту» и «Интерактивный вход в систему: Поведение при извлечении смарт-карты».

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Далее настроим шаблоны для выдачи сертификатов.

В оснастке Центр сертификации нажимает правой кнопкой на разделе «Шаблоны сертификатов» и создаем выдаваемые три шаблона.

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

По необходимости можно отредактировать шаблоны под нужды или требования компании. После изменения не забываем опубликовать шаблоны в домене.

Для того чтобы запрашивать сертификаты необходимо запросить сертификат Агента запроса сертификата. Для этого делаем запрос от имени Администратора домена или пользователя с делегированными правами.

Открываем оснастку сертификатов для локального пользователя, раздел Personal (Личные). В контекстном меню выберите All tasks – Request new certificate (Все задачи – Запросить новый сертификат). Нажмите Next. На следующем экране отметьте Enrollment Agent (Агент запроса сертификата) и нажмите Enroll (Запросить). После чего у администратора появиться новый сертификат:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

А теперь сделаем запрос пользовательского сертификата на смарт-карту.

В консоли Сертификаты (certmgr.msc) щелкаем правой кнопкой мыши на раздел Личное -> Дополнительные операции -> Зарегистрировать от имени… и запрашиваем новый сертификат. Выбираем в соответствии с какой политикой будет происходить запрос.

Укажем сертификат агента регистрации:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

В списке запросов указываем «Вход со смарт-картой»:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

В настройках необходимо указать криптографического провайдера:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Выбираем пользователя для которого будет выписан сертификат:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

Для выдачи сертификата вставляем смарт-карту и вводим PIN от карты:

Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающих

После всех операций можно проверять карту на рабочей станции пользователя.

Аналогичный алгоритм можно использовать для настройки авторизации пользователя по etoken PRO (Java).

Спасибо что читали данную статью. Если есть вопросы задавайте, буду рад ответить!

Настройка двухфакторной авторизации в gatedefender

Выполните действия ниже для включения двухфакторной авторизации в решении GateDefender:

• Добавьте сервер авторизации одноразовых паролей.• Определите новый мэппинг к данному серверу.

Добавление нового сервера авторизации одноразовых паролей

Перейдите в раздел VPN -> Авторизация -> Настройки и нажмите ссылку Добавить новый сервер авторизации.

У опции Тип выберите Одноразовый пароль. Затем выберите Local (local) в полях Провайдер информации о пользователе и Провайдер пароля. Укажите название нового сервера авторизации в поле Имя и нажмите кнопку Добавить.

В этом примере мы использовали локального провайдера паролей для проверки имени пользователя и пароля, введенного пользователем. Тем не менее, двухфакторная авторизация поддерживает и другие типы провайдеров паролей.

Определение нового мэппинга к серверу авторизации

После создания сервера авторизации Вам необходимо настроить новый мэппинг для одного из типов VPN, поддерживаемых GateDefender.
Чтобы добавить новый мэппинг к серверу авторизации, нажмите на иконку Как настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающихКак настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающихКак настроить Apache 2.2 на работу с клиентскими сертификатами? |  - IT-блог для начинающихДобавить все и Удалить все, соответственно.

Оцените статью
Мой сертификат
Добавить комментарий