Pull to refresh

ASA5525-X+MS CA Windows Server 2012R2 — двухфакторная аутентификация

Reading time 6 min
Views 12K
Для прохождения аттестации на соответствие требованиям стандарта PCI DSS потребовалось настроить двухфакторная аутентификация. А так как у нас в качестве фаервола используется решение от Cisco, то решили его и использовать… Казалось бы ничего сложного, — все уже давно изучено и не один раз настроено и легко можно найти необходимые инструкции, например, эти:
Руководство по лаборатории тестирования: развертывание двухуровневой иерархии инфраструктуры открытых ключей служб сертификации Active Directory

CISCO: Configuring Digital Certificates

Cisco ASA with Radius and Certificates for Two-Factor Authentication (using a Microsoft CA)

но, как обычно и бывает с подобными «универсальными» инструкциями — тонкости они не учитывают, а это как раз и занимает бОльшую часть времени, при развертывании. об этих моментах мне как раз и хочется вам рассказать. надеюсь, это вам позволит сэкономить массу времени!

Первым неприятным моментом оказолось то, что Offline Root CA выдал сертификат для Subordinate Issuing CA сроком на 1 год(!) и это несмотря на заранее созданный
CAPolicy.inf:
[Version]
Signature="$Windows NT$"
[PolicyStatementExtension]
Policies=InternalPolicy
[InternalPolicy]
OID= 1.2.3.4.1455.67.89.5
Notice="Legal Policy Statement"
URL=http://www.contoso.com/pki/cps.txt
[Certsrv_Server]
RenewalKeyLength=2048
RenewalValidityPeriod=Years
RenewalValidityPeriodUnits=20
CRLPeriod=weeks
CRLPeriodUnits=26
CRLDeltaPeriod=Days
CRLDeltaPeriodUnits=0
LoadDefaultTemplates=0
AlternateSignatureAlgorithm=1

Поэтому внимательно проверяйте срок действия сертификата и если он выдан на 1 год, — сразу меняйте. Изменить можно так:
Нажмите кнопку Пуск и выберите команду Выполнить.
В поле Открыть введите команду regedit и нажмите кнопку ОК.
Найдите и выделите следующий раздел реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\CertSvc\Configuration\ < Имя_цс >
В правой области дважды щелкните ValidityPeriod.
В поле значение введите введите одно из следующих действий и нажмите кнопку ОК:
Дней
Недели
Месяцев
Лет
.
В правой области дважды щелкните ValidityPeriodUnits.
В поле значение введите числовое значение, которое требуется и нажмите кнопку ОК. Например введите 2.
Остановите и перезапустите службы сертификации. Для этого:
Нажмите кнопку Пуск и выберите команду Выполнить.
В поле Открыть введите команду cmdи нажмите кнопку ОК.
В командной строке введите следующие команды. Нажмите клавишу ВВОД после каждой строки.
certsvc net stop
net start certsvc

Введите exit для выхода из командной строки.


А еще грубой ошибкой было игнорирование предупреждения от Microsoft:

Caution-Внимание
Клиенты сертификатов под управлением Windows XP и Windows Server 2003 не поддерживают альтернативный алгоритм подписи. Чтобы такие клиенты могли подавать заявки на сертификаты, не добавляйте строку AlternateSignatureAlgorithm=1 в файл CAPolicy.inf. Дополнительные сведения см. в разделе Рекомендации по использованию альтернативных форматов подписи.

Поэтому — уберите из CAPolicy.inf строку AlternateSignatureAlgorithm=1, иначе заимеете проблему с установкой сертификатов на ASA: Microsoft CA RSASSA-PSS Algorithm Issue with ASA
Решается изменением параметров в реестре:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\%Your_CA_Name%\CSP]
«ProviderType»=dword:00000000
«Provider»=«Microsoft Software Key Storage Provider»
«HashAlgorithm»=dword:00008004
«CNGPublicKeyAlgorithm»=«RSA»
«CNGHashAlgorithm»=«SHA1»
«AlternateSignatureAlgorithm»=dword:00000001
«MachineKeyset»=dword:00000001

и перевыпуском всех сертификатов.

Ну и наконец, третий момент был связан с настройкой параметров SSL на ASA, а именно TLS V1 и соотв. Cipher (версий и алгоритмов). На момент развертывания инфраструктуры PKI у нас была установлена прошивка asa911-smp-k8, которая не позволяла это нормально настроить. Приняли решение обновиться на версию asa941-smp-k8, но снова не совсем внимательно прочли порядок обновления конфигурации. заимели вот такую странную ошибку:

image

— это при попытке загрузить файл прошивки на железку. А всего лишь необходимо было сначала установить прошивку версии asa912-smp-k8

Надеюсь, кому-то эти знания и опыт пригодятся. Удачи!

P.S. как справедливо заметили в комментариях — совсем забыл про двухфакторная аутентификация, написал про сертификаты, забыл про Active Directory. Попытаюсь исправиться, для начала процесс настройки через ASDM:
image
Идем в Configuration -> Device Management -> Users/AAA -> AAA Servers Group, создаем новую группу (название и протокол). Я на картинках покажу настройки для протокола LDAP, а в конфиге и RADIUS тоже (кому что сподручнее использовать). Далее добавляем в только что созданную группу сервер:
1. указываем DNS имя или IP сервера; тип сервера Microsoft
2. Base DN, — в примере пусть будет DC=domain,DC=ru
3. Атрибут у пользователя, по которому будет производится из объектов AD — sAMAccountName
4. Distinguished Name пользователя, который имеет доступ на просмотр\поиск объектов в AD (взять его можно из консоли «Active Directory — пользователи и компьютеры», включив отображение дополнительных компонентов, в редакторе атрибутов)
5. Путь к OU, по которому будет производиться поиск групп
Обратите внимание на пункт LDAP Attribute Map — важная деталь, которую необходимо настроить!
image
ldap attribute-map AD
map-name memberOf IETF-Radius-Class

Ну и наконец, — когда у нас уже настроены CA, установлены все необходимые сертификаты, проверено подключение к AAA серверам, настроен AnyConnect\WebVPN можно включить двухфакторная аутентификация:
image

Обещанная часть конфига
ASA Version 9.4(1)
!
domain-name domain.ru
!
ldap attribute-map AD
map-name memberOf IETF-Radius-Class
aaa-server domain.RU protocol ldap
aaa-server domain.RU (VLAN100) host 10.0.0.101
ldap-base-dn DC=domain,DC=ru
ldap-group-base-dn OU=GROUPS,OU=domainNOLOGIES,DC=domain,DC=ru
ldap-scope subtree
ldap-naming-attribute sAMAccountName
ldap-login-password *****
ldap-login-dn CN=s-connect_asa-LDAP,OU=system_accounts,OU=BRANCH,DC=domain,DC=ru
server-type microsoft
ldap-attribute-map AD
aaa-server domain_NPS protocol radius
aaa-server domain_NPS (VLAN100) host 10.0.0.101
key *****
no user-identity enable
user-identity domain domain aaa-server domain.RU
user-identity default-domain domain
user-identity action domain-controller-down domain disable-user-identity-rule
aaa authentication enable console domain_NPS LOCAL
aaa authentication http console domain_NPS LOCAL
aaa authentication serial console LOCAL
aaa authentication ssh console domain_NPS LOCAL
aaa authentication telnet console LOCAL
aaa authorization command LOCAL
aaa authorization exec authentication-server auto-enable
!
!
webvpn
enable ISP1
anyconnect image disk0:/AnyConnect/anyconnect-linux-3.1.07021-k9.pkg 1 regex «Linux»
anyconnect image disk0:/AnyConnect/anyconnect-linux-64-4.1.00028-k9.pkg 2 regex «Linux»
anyconnect image disk0:/AnyConnect/anyconnect-macosx-i386-4.1.00028-k9.pkg 3 regex «Intel Mac OS X»
anyconnect image disk0:/AnyConnect/anyconnect-win-4.1.00028-k9.pkg 4 regex «Windows NT»
anyconnect profiles domain_AnyVPN disk0:/domain_anyvpn.xml
anyconnect profiles domain_VPN_Users disk0:/domain_vpn_users.xml
anyconnect enable
tunnel-group-list enable
certificate-group-map DefaultCertificateMap 10 domain_AnyVPN
error-recovery disable
group-policy DfltGrpPolicy attributes
default-domain value domain.ru
group-policy GroupPolicy_domain_AnyVPN internal
group-policy GroupPolicy_domain_AnyVPN attributes
wins-server none
dns-server value 10.0.0.101
vpn-tunnel-protocol ikev2 ssl-client ssl-clientless
default-domain value domain.ru
webvpn
anyconnect mtu 1406
anyconnect ssl keepalive 20
anyconnect profiles value domain_AnyVPN type user
always-on-vpn profile-setting
group-policy GroupPolicy_VPN_USERS internal
group-policy GroupPolicy_VPN_USERS attributes
dns-server value 10.0.0.101
vpn-tunnel-protocol ikev2 ssl-client
default-domain value domain.ru
address-pools value VPN_Users
webvpn
anyconnect profiles value domain_VPNv_Users type user
customization value DfltCustomization
tunnel-group domain_AnyVPN type remote-access
tunnel-group domain_AnyVPN general-attributes
address-pool VPN_Admins
authentication-server-group domain.RU
default-group-policy GroupPolicy_domain_AnyVPN
tunnel-group domain_AnyVPN webvpn-attributes
authentication aaa certificate
radius-reject-message
group-alias domain_ADMINS enable
group-alias domain_AnyVPN disable
tunnel-group domain_USERS type remote-access
tunnel-group domain_USERS general-attributes
address-pool VPN_Users
authentication-server-group domain.RU
default-group-policy GroupPolicy_VPN_USERS
tunnel-group domain_USERS webvpn-attributes
group-alias Users_Access enable
!
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+7
Comments 5
Comments Comments 5

Articles