05 марта 2013

VPN на основе Cisco ASA с доменной авторизацией и разграничением доступа по группам

Исходные данные

Есть необходимость предоставлять удаленный доступ к ЛВС предприятия 2-м группам пользователей: системным администраторам и бухгалтерии.
Системным администраторам необходим полный доступ, а бухгалтерам - только к серверу 1С.
Сеть предприятия: 172.16.0.0/16
Сервер 1С: 172.16.1.100
Версия ПО Cisco ASA 8.0(3)
Версия ОC сервера: Windows 2003/Windows 2008

Настройка сервера Active Directory (AD):

1. Добавляем пользователя под которым мы будем просматривать группы в AD.

Пользователь: VPN-Manager
Пароль: VpN-M@n@ger!
Полный путь к учетной записи у нас будет: domain.local\Users\VPN

2. Открываем доступ по LDAP на серверах.

Для авторизации в AD используем LDAP т.к. только он дает возможность разграничения доступа по группам AD. NTLM не дает тех возможностей и с ним есть проблемы при переходе с Windows 2003 на 2008 (при стандартных настройках безопасности ASA не может авторизовать пользователя)

3. Создаем группы доступа в AD описанные в условии:

Группа администраторов: GROUP-VPN-ADMIN
Группа бухгалтерии: GROUP-VPN-BUHGALTER
Полный путь к группам: domain.local\Users\VPN\Groups

Настройка ASA для авторизации пользователей на серверах AD присвоения определенных Group-Policy

4. Создаем LDAP Attribute-map для маппинга групп в AD к группам на ASA:

ldap attribute-map VPN-LDAP-AM
  map-name  memberOf IETF-Radius-Class
  map-value memberOf "CN=GROUP-VPN-ADMIN,OU=Groups,OU=VPN,OU=Users,DC=domain,DC=local" GP-VPN-ADMIN
  map-value memberOf "CN=GROUP-VPN-BUHGALTER,OU=Groups,OU=VPN,OU=Users,DC=domain,DC=local" GP-VPN-BUHGALTER

 5. Настраиваем группу серверов AD для авторизации пользователей:

aaa-server AAA-VPN-SRV protocol ldap
aaa-server AAA-VPN-SRV host 172.16.1.10
 ldap-base-dn dc=domain, dc=local
 ldap-scope subtree
 ldap-naming-attribute sAMAccountName
 ldap-login-password VpN-M@n@ger!
 ldap-login-dn CN=VPN-Manager, OU=VPN, OU=Users, DC=domain, DC=local
 server-type microsoft
 ldap-attribute-map VPN-LDAP-AM
aaa-server AAA-VPN-SRV host 172.16.1.20
 ldap-base-dn dc=domain, dc=local
 ldap-scope subtree
 ldap-naming-attribute sAMAccountName
 ldap-login-password VpN-M@n@ger!
 ldap-login-dn CN=VPN-Manager, OU=VPN, OU=Users, DC=domain, DC=local
 server-type microsoft
 ldap-attribute-map VPN-LDAP-AM

После выполнения данных настроек можно проверить корректность работы ASA c серверами AD путем теста:

test aaa-server authentication AAA-VPN-SRV host 172.16.1.10 username VPN-Manager password VpN-M@n@ger!
INFO: Attempting Authentication test to IP address <172.16.1.10> (timeout: 12 seconds)
INFO: Authentication Successful
Мы видим, что наш пользователь проходит авторизацию на сервере и соответственно сможет проверять остальных пользователей на наличие их в преднастроенных группах удаленного доступа.

После настройки доступа для проверки принадлежности пользователей к группам необходимо разграничить доступ для указанных групп и настроить Tunnel-Group для подключения к VPN

6. Настраиваем список доступа для групповой политики по-умолчанию (для Split Tunneling):

access-list ACL-VPN-Split_Tunnel remark ______ ACL Split Tunnel fo VPN
access-list ACL-VPN-Split_Tunnel standard permit 172.16.0.0 255.255.0.0

7. Настраиваем список доступа для групповой политики бухгалтерии (ограничение доступа на конкретный сервер):

access-list ACL-VPN-BUHGALTER remark ______ Buhgaltery for 1C
access-list ACL-VPN-BUHGALTER standard permit host 172.16.1.100

8. Настраиваем групповые политики:

по-умолчанию:
group-policy GP-VPN-DEFAULT internal
group-policy GP-VPN-DEFAULT attributes
 wins-server value 172.16.1.10 172.16.1.20
 dns-server value 172.16.1.10 172.16.1.20
 vpn-simultaneous-logins 0
 vpn-tunnel-protocol IPSec
 split-tunnel-policy tunnelspecified
 split-tunnel-network-list value ACL-VPN-Split_Tunnel
 default-domain value domain.local
 vpn-idle-timeout 15

Для бухгалтерии:
group-policy GP-VPN-BUHGALTER internal
group-policy GP-VPN-BUHGALTER attributes
 vpn-simultaneous-logins 3
 vpn-filter value ACL-VPN-BUHGALTER

Для администраторов:
group-policy GP-VPN-ADMIN internal
group-policy GP-VPN-ADMIN attributes
 vpn-simultaneous-logins 3

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

9. Настраиваем пул адресов для выдачи VPN-клиентам:

ip local pool IP-VPN-POOL 172.16.250.10-172.16.250.110 mask 255.255.255.0

10. Настраиваем Tunnel Group:

tunnel-group TG-VPN type remote-access
tunnel-group TG-VPN general-attributes
 address-pool IP-VPN-POOL
 authentication-server-group AAA-VPN-SRV
 default-group-policy GP-VPN-DEFAULT
tunnel-group TG-VPN ipsec-attributes
 pre-shared-key TeSt-VpN-P@$$W0RD!!!

Заключение.

В данной статье не рассмотрен вопрос настройки шифрования трафика на внешнем интерфейсе, как и собственно настройки внешнего интерфейса. Также опущена настройка VPN-клиента (создание профиля и его импорт/эпскорт).