Защита Систем Хранения Данных играет далеко не последнюю роль в обеспечении безопасности всей ИТ инфраструктуры. Протокол iSCSI, используя в качестве среды передачи данных стандартные каналы связи, помимо очевидных преимуществ несет в себе и определенные риски, связанные с возможностью несанкционированного доступа и получения конфиденциальной информации злоумышленниками.
На сегодняшний день существует достаточное количество решений, позволяющих решить данную проблему. Так, например, при организации СХД на платформе Windows Server, системным администраторам изначально доступен ряд инструментов по защите СХД без дополнительных затрат.
CHAP аутентификация
Практически все СХД, предоставляющие доступ по iSCSI, позволяют ограничить доступ к дисковым ресурсам на основе клиентского имени (IQN - iSCSI Qualified Name). Однако, такой метод проверки подлинности никак нельзя назвать безопасным, ибо IQN может быть легко подделан без ведома сервера.
Стандарт, описывающий iSCSI (RFC 3720), предусматривает использование в качестве метода аутентификации протокол CHAP (Challenge Handshake Authentication Protocol). Данный протокол позволяет выполнять как одностороннюю аутентификацию (клиента или сервера), так и взаимную (Mutual Authentication) на основе секретного слова (secret) – строки символов, известных только клиенту и серверу.
Для настройки CHAP аутентификации на сервере (Microsoft Software iSCSI Target) и клиенте (Microsoft iSCSI Initiator) выполните следующие действия.
В консоли Microsoft Software iSCSI Target откойте свойства нужного таргета и перейдите на вкладку Authentication. Установите флаг Enable CHAP. В после User name введите имя, которое будет предоставлять клиент при аутентификации (например, IQN клиента), а полях Secret и Confirm Secret – секретное слово для аутентификации клиента. Если вам требуется настроить обратную аутентификацию, установите флаг Enable reverse CHAP authentication, в поле User name под данным флагом введите полный IQN таргета, а в полях Reverse Secret и Confirm secret – секретное слово для аутентификации сервера. Сохраните изменения, нажав OK.Теперь настройте клиента, открыв свойства iSCSI Initiator. Если вы решили настроить обратную аутентификацию, то на вкладке General нажмите кнопку Secret и введите секретное слово для аутентификации сервера. Перейдите на вкладку Discovery и с помощью кнопки Add Portal добавьте новый iSCSI сервер, а затем перейдите на вкладку Targets. Выберите таргет, к которому требуется подключиться и нажмите Log On… В окне Log On to Target нажмите кнопку Advanced...В окне Advanced Settings на вкладке General установите флаг CHAP logon information и введите имя пользователя (User name) и секретное слово (Target secret), указанные ранее при настройке таргета.Если вы используете обратную аутентификацию, установите флаг Perform mutual authentication. Нажмите OK для подключения таргета. Теперь, при попытке подключиться, используя неправильные учетные данные, вы получите сообщение об ошибке:
Шифрование с помощью IPSec
IPSec протокол, позволяющий выполнять подписывание и шифрование пакетов для их надежной передачи между узлами. В ОС семейства Windows управление IPSec осуществляется с помощью политик (Policy). На компьютере может быть несколько политик IPSec, однако активной/назначенной (assigned) – той, чьи настройки применяются в данный момент – только одна. Политика включает в себя одно или несколько правил, каждое из которых, в свою очередь, состоит из списка IP фильтров (IP Filter List) – на основе которого определяется, подпадает тот или иной IP пакет под действие данного правила или нет, а также действия (Filter Action) задающего поведение по отношению к данному трафику. IP фильтры достаточно гибки в настройке и позволяют определять направление, IP адрес источник и получателя трафика, используемые протоколы и порты.
Давайте рассмотрим процесс создания политики IPSec с нуля. Для упрощения описания, настройку я буду производить через консоль при помощи netsh.
Для начала создайте новоую политику, используя команду:
netsh ipsec static add policy "iSCSI Security Policy"
Теперь создайте новый список IP фильтров:
netsh ipsec static add filterlist name="iSCSI Target Filter List"
Добавьте новый IP фильтр в список:
netsh ipsec static add filter filterlist="iSCSI Target Filter List" srcaddr="10.0.0.2" dstaddr=ME protocol=TCP mirrored=yes srcport=0 dstport=3260
В srcaddr= и dstaddr= вы можете указывать как конкретные IP адреса, так и параметры ANY – для указания любого адреса или MY – для указания текущего компьютера. В srcport= и dstport= вы можете указать конктерный номер порта или 0 – для указания произвольного порта. Если к серверу обращаются несколько клиентов, вы можете добавить еще один фильтр в список, изменим адрес источника трафика на требуемый.
Добавьте новое действие для фильтра:
netsh ipsec static add filteraction name="Encrypt Traffic" inpass=yes action=negotiate qmsec="ESP[DES,SHA1]"
Для шифрования и подписывания IP пакетов я использую ESP (протоколы DES и SHA1 соответственно). При желании, для подписывания пакетов вы также можете использовать AH и более стойкий алгоритм шифрования 3DES (с длиной ключа 168 бит). Параметр inpass= указывает на то, что сервер может изначально принимать незашифрованные пакеты, но отвечать обязан только с использованием шифрования.
Наконец, создадим новое правило, используя ранее добавленную политику, фильтр и действие:
netsh ipsec static add rule name="iSCSI Protection" policy="iSCSI Security Policy" filterlist="iSCSI Target Filter List" filteraction="Encrypt Traffic" psk="12345"В качестве метода аутентификации я использую предварительный ключ (Preshared Key). Преимущество его использования заключается в простоте настройки. Недостатки – данный ключ хранится в открытом виде и может быть легко скомпроментирован. В качестве альтернативных вариантов аутентификации вы можете использовать Kerberos аутентификацию (если клиент и сервер находятся в доменах с настроенными доверительными отношениями) или сертификаты доверенного центра сертификации.
Аналогичным образом создадим и настроим политику на клиенте:
netsh ipsec static add policy "iSCSI Client Security Policy"
netsh ipsec static add filterlist name="iSCSI Target Filter List"
netsh ipsec static add filter filterlist="iSCSI Target Filter List" srcaddr=ME dstaddr=10.0.0.1 protocol=TCP mirrored=yes srcport=0 dstport=3260
netsh ipsec static add filteraction name="Encrypt Traffic" inpass=yes action=negotiate qmsec="ESP[DES,SHA1]"
netsh ipsec static add rule name="iSCSI Client Protection" policy="iSCSI Client Security Policy" filterlist="iSCSI Target Filter List" filteraction="Encrypt Traffic" psk="12345"Обратите внимание, что Preshared Key должен совпадать на клиенте и сервере.
Теперь осталось назначить созданные политики. На сервере:
netsh ipsec static set policy "iSCSI Security Policy" assign=yes
И на клиенте:
netsh ipsec static set policy "iSCSI Client Security Policy" assign=yes
После включения политик можете попробовать подключиться к серверу и проверить работу IPSec. Сделать это можно с помощью консоли MMC и оснастки IP Security Monitor.
Заключение
Использование встроенных механизмов аутентификации и шифрования позволяют обеспечить безопасный доступ к вашим данным по протоколу iSCSI. Однако, помните, что платой за испльзование IPSec может стать повышенная нагрузка на процессоры серверов и клиентов, и, как следствие, снижение быстродействия вашей СХД.
На сегодняшний день существует достаточное количество решений, позволяющих решить данную проблему. Так, например, при организации СХД на платформе Windows Server, системным администраторам изначально доступен ряд инструментов по защите СХД без дополнительных затрат.
CHAP аутентификация
Практически все СХД, предоставляющие доступ по iSCSI, позволяют ограничить доступ к дисковым ресурсам на основе клиентского имени (IQN - iSCSI Qualified Name). Однако, такой метод проверки подлинности никак нельзя назвать безопасным, ибо IQN может быть легко подделан без ведома сервера.
Стандарт, описывающий iSCSI (RFC 3720), предусматривает использование в качестве метода аутентификации протокол CHAP (Challenge Handshake Authentication Protocol). Данный протокол позволяет выполнять как одностороннюю аутентификацию (клиента или сервера), так и взаимную (Mutual Authentication) на основе секретного слова (secret) – строки символов, известных только клиенту и серверу.
Для настройки CHAP аутентификации на сервере (Microsoft Software iSCSI Target) и клиенте (Microsoft iSCSI Initiator) выполните следующие действия.
В консоли Microsoft Software iSCSI Target откойте свойства нужного таргета и перейдите на вкладку Authentication. Установите флаг Enable CHAP. В после User name введите имя, которое будет предоставлять клиент при аутентификации (например, IQN клиента), а полях Secret и Confirm Secret – секретное слово для аутентификации клиента. Если вам требуется настроить обратную аутентификацию, установите флаг Enable reverse CHAP authentication, в поле User name под данным флагом введите полный IQN таргета, а в полях Reverse Secret и Confirm secret – секретное слово для аутентификации сервера. Сохраните изменения, нажав OK.Теперь настройте клиента, открыв свойства iSCSI Initiator. Если вы решили настроить обратную аутентификацию, то на вкладке General нажмите кнопку Secret и введите секретное слово для аутентификации сервера. Перейдите на вкладку Discovery и с помощью кнопки Add Portal добавьте новый iSCSI сервер, а затем перейдите на вкладку Targets. Выберите таргет, к которому требуется подключиться и нажмите Log On… В окне Log On to Target нажмите кнопку Advanced...В окне Advanced Settings на вкладке General установите флаг CHAP logon information и введите имя пользователя (User name) и секретное слово (Target secret), указанные ранее при настройке таргета.Если вы используете обратную аутентификацию, установите флаг Perform mutual authentication. Нажмите OK для подключения таргета. Теперь, при попытке подключиться, используя неправильные учетные данные, вы получите сообщение об ошибке:
Шифрование с помощью IPSec
IPSec протокол, позволяющий выполнять подписывание и шифрование пакетов для их надежной передачи между узлами. В ОС семейства Windows управление IPSec осуществляется с помощью политик (Policy). На компьютере может быть несколько политик IPSec, однако активной/назначенной (assigned) – той, чьи настройки применяются в данный момент – только одна. Политика включает в себя одно или несколько правил, каждое из которых, в свою очередь, состоит из списка IP фильтров (IP Filter List) – на основе которого определяется, подпадает тот или иной IP пакет под действие данного правила или нет, а также действия (Filter Action) задающего поведение по отношению к данному трафику. IP фильтры достаточно гибки в настройке и позволяют определять направление, IP адрес источник и получателя трафика, используемые протоколы и порты.
Давайте рассмотрим процесс создания политики IPSec с нуля. Для упрощения описания, настройку я буду производить через консоль при помощи netsh.
Для начала создайте новоую политику, используя команду:
netsh ipsec static add policy "iSCSI Security Policy"
Теперь создайте новый список IP фильтров:
netsh ipsec static add filterlist name="iSCSI Target Filter List"
Добавьте новый IP фильтр в список:
netsh ipsec static add filter filterlist="iSCSI Target Filter List" srcaddr="10.0.0.2" dstaddr=ME protocol=TCP mirrored=yes srcport=0 dstport=3260
В srcaddr= и dstaddr= вы можете указывать как конкретные IP адреса, так и параметры ANY – для указания любого адреса или MY – для указания текущего компьютера. В srcport= и dstport= вы можете указать конктерный номер порта или 0 – для указания произвольного порта. Если к серверу обращаются несколько клиентов, вы можете добавить еще один фильтр в список, изменим адрес источника трафика на требуемый.
Добавьте новое действие для фильтра:
netsh ipsec static add filteraction name="Encrypt Traffic" inpass=yes action=negotiate qmsec="ESP[DES,SHA1]"
Для шифрования и подписывания IP пакетов я использую ESP (протоколы DES и SHA1 соответственно). При желании, для подписывания пакетов вы также можете использовать AH и более стойкий алгоритм шифрования 3DES (с длиной ключа 168 бит). Параметр inpass= указывает на то, что сервер может изначально принимать незашифрованные пакеты, но отвечать обязан только с использованием шифрования.
Наконец, создадим новое правило, используя ранее добавленную политику, фильтр и действие:
netsh ipsec static add rule name="iSCSI Protection" policy="iSCSI Security Policy" filterlist="iSCSI Target Filter List" filteraction="Encrypt Traffic" psk="12345"В качестве метода аутентификации я использую предварительный ключ (Preshared Key). Преимущество его использования заключается в простоте настройки. Недостатки – данный ключ хранится в открытом виде и может быть легко скомпроментирован. В качестве альтернативных вариантов аутентификации вы можете использовать Kerberos аутентификацию (если клиент и сервер находятся в доменах с настроенными доверительными отношениями) или сертификаты доверенного центра сертификации.
Аналогичным образом создадим и настроим политику на клиенте:
netsh ipsec static add policy "iSCSI Client Security Policy"
netsh ipsec static add filterlist name="iSCSI Target Filter List"
netsh ipsec static add filter filterlist="iSCSI Target Filter List" srcaddr=ME dstaddr=10.0.0.1 protocol=TCP mirrored=yes srcport=0 dstport=3260
netsh ipsec static add filteraction name="Encrypt Traffic" inpass=yes action=negotiate qmsec="ESP[DES,SHA1]"
netsh ipsec static add rule name="iSCSI Client Protection" policy="iSCSI Client Security Policy" filterlist="iSCSI Target Filter List" filteraction="Encrypt Traffic" psk="12345"Обратите внимание, что Preshared Key должен совпадать на клиенте и сервере.
Теперь осталось назначить созданные политики. На сервере:
netsh ipsec static set policy "iSCSI Security Policy" assign=yes
И на клиенте:
netsh ipsec static set policy "iSCSI Client Security Policy" assign=yes
После включения политик можете попробовать подключиться к серверу и проверить работу IPSec. Сделать это можно с помощью консоли MMC и оснастки IP Security Monitor.
Заключение
Использование встроенных механизмов аутентификации и шифрования позволяют обеспечить безопасный доступ к вашим данным по протоколу iSCSI. Однако, помните, что платой за испльзование IPSec может стать повышенная нагрузка на процессоры серверов и клиентов, и, как следствие, снижение быстродействия вашей СХД.