Авторизация пользователей на Cisco ASA5510

Классическая авторизация пользователей. Пример конфигурации Cisco ASA5510.

Предисловие

Это третья часть статьи, посвященной применению авторизации для выборочного ограничения доступа пользователей к сетевым ресурсам и сервисам. Здесь рассматривается конфигурация ASA5510 .

Конфигурация

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

[cc lang=»bash»]
!
hostname firewall1
!
! — Список серверов —
names
name 192.168.1.100 FTP_server_1
name 192.168.1.101 FTP_server_2
name 192.168.1.102 TS_server
name 192.168.1.103 DMZ_DB_server
name 10.1.1.10 OUT_DB_server
!
!
interface Management0/0
shutdown
nameif management
security-level 100
management-only
no ip address
!
interface Ethernet0/0
description OUT
speed 100
duplex full
nameif outside
security-level 0
ip address 10.1.1.250 255.255.255.0
no shutdown
!
interface Ethernet0/1
description DMZ
speed 100
duplex full
nameif DMZ
security-level 50
ip address 192.168.1.254 255.255.255.0
no shutdown
!
interface Ethernet0/2
shutdown
no nameif
no security-level
no ip address
!
interface Ethernet0/3
shutdown
no nameif
no security-level
no ip address
!
!
! — Список сетевых групп —
object-group network DMZ_net
network-object 192.168.1.0 255.255.255.0
object-group network FTP_servers
network-object host FTP_server_1
network-object host FTP_server_2
!
!
access-list OUT_IN remark ***OUT->DMZ***
access-list OUT_IN remark ***ftp traffic to FTP servers***
access-list OUT_IN extended permit tcp any object-group FTP_servers eq ftp
access-list OUT_IN extended permit tcp any object-group FTP_servers eq ftp-data
access-list OUT_IN remark ***RDP traffic to DMZ servers***
access-list OUT_IN extended permit tcp any object-group DMZ_net eq 3389
access-list OUT_IN remark ***DB traffic between DB servers***
access-list OUT_IN extended permit tcp host OUT_DB_server host DMZ_DB_server eq 1526
access-list OUT_IN remark ***Virtual Telnet for Authentication*** access-list OUT_IN extended permit tcp any host 10.2.2.2 eq https
access-list OUT_IN extended deny ip any any log
!
!
access-list DMZ_IN remark ***DMZ->OUT***
access-list DMZ_IN remark ***ftp traffic from FTP servers***
access-list DMZ_IN extended permit tcp object-group FTP_servers eq ftp any
access-list DMZ_IN extended permit tcp object-group FTP_servers eq ftp-data any
access-list DMZ_IN remark ***RDP traffic from DMZ servers***
access-list DMZ_IN extended permit tcp object-group DMZ_net eq 3389 any
access-list DMZ_IN remark ***DB traffic between DB servers***
access-list DMZ_IN extended permit tcp host DMZ_DB_server eq 1526 host OUT_DB_server
access-list DMZ_IN remark ***Virtual Telnet for Authentication*** access-list DMZ_IN extended permit tcp host 10.2.2.2 eq https any
access-list DMZ_IN extended deny ip any any log
!
!
logging enable
logging buffered informational
!
!
! — NAT не используем, —
! — адреса транслируются сами в себя —
nat (DMZ) 0 192.168.1.0 255.255.255.0
static (outside,DMZ) 10.1.1.0 10.1.1.0 netmask 255.255.255.0
! — Без этой строки WEB страница аутентификации не откроется —
static (outside,DMZ) 10.2.2.2 10.2.2.2 netmask 255.255.255.255
!
!
access-group OUT_IN in interface outside
access-group DMZ_IN in interface DMZ
route outside 0.0.0.0 0.0.0.0 10.1.1.254 1
timeout xlate 4:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
! — Определяем таймаут аутентификации —
timeout uauth 4:00:00 absolute
!
!
! — Указываем TACACS+ сервер —
aaa-server ACS_1 protocol tacacs+
aaa-server ACS_1 (DMZ) host 192.168.1.4
key test
!
! — Для управления фаерволом потребуется —
! — аутентифицироваться на TACACS+ сервере. —
! — Если TACACS+ сервер не доступен, —
! — можно зайти локальным пользователем. —
aaa authentication serial console ACS_1 LOCAL
aaa authentication enable console ACS_1 LOCAL
aaa authentication ssh console ACS_1 LOCAL
!
!
! — Говорим, что весь входящий с наружи трафик —
! — требует аутентификации. —
aaa authentication include ip outside 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 ACS_1
! — Исключение для трафика серверов БД —
aaa authentication exclude tcp/1526 outside DMZ_DB_server 255.255.255.255 OUT_DB_server 255.255.255.255 ACS_1
!
!
! — Говорим, что весь входящий с наружи трафик —
! — требует авторизации. —
aaa authorization include ip outside 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 ACS_1
! — Исключение для трафика серверов БД —
aaa authorization exclude tcp/1526 outside DMZ_DB_server 255.255.255.255 OUT_DB_server 255.255.255.255 ACS_1
!
!
! — Без этой строки WEB страница аутентификации не откроется —
aaa authentication include https outside 10.2.2.2 255.255.255.255 0.0.0.0 0.0.0.0 ACS_1
aaa proxy-limit 128
!
! — Без этой строки WEB страница аутентификации —
! — будет иметь намного худший вид —
aaa authentication listener https outside port 1443 redirect
! — Указываем виртуальный адрес WEB страницы аутентификации —
virtual telnet 10.2.2.2
telnet timeout 5
ssh 10.1.1.0 255.255.255.0 outside
ssh timeout 5
ssh version 2
console timeout 5
!
no threat-detection basic-threat
no threat-detection statistics access-list
ssl encryption des-sha1 rc4-md5
!
! — Локальный пользователь для управления —
! — фаерволом на случай, когда —
! — TACACS+ сервер не доступен, —
username admin1 password test privilege 15
!
!
[/cc]
Комментарий к конфигурации

aaa-server ACS_1 protocol tacacs+ aaa-server ACS_1 (DMZ) host 192.168.1.4 key test

Этими строками мы говорим фаерволу, что AAA сервером является TACACS+ сервер, указываем его ip адрес и ключ.

aaa authentication include ip outside 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 ACS_1 aaa authorization include ip outside 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 ACS_1

Здесь говорим, что весь трафик, приходящий на интерфейс outside должен пройти аутентификацию и авторизацию.

aaa authentication exclude tcp/1526 outside DMZ_DB_server 255.255.255.255 OUT_DB_server 255.255.255.255 ACS_1 aaa authorization exclude tcp/1526 outside DMZ_DB_server 255.255.255.255 OUT_DB_server 255.255.255.255 ACS_1

Делаем исключение для трафика серверов БД. Этот трафик должен проходить без аутентификации и авторизации.

Virtual Telnet

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

Когда пользователь открывает HTTP, HTTPS, FTP и Telnet сессию, требующую аутентификации или авторизации, у него в браузере или в окне FTP или Telnet сессии появляется приглашение для ввода логина и пароля. Когда пользователь пытается открыть сессию по другим портам, например RDP соединение, предложение для ввода пароля не появляется, сессия закрывается по таймауту, а в логе фаервола появится запись “User must authenticate before using this service”.

Прежде чем открывать RDP сессию, пользователь должен авторизоваться на фаерволе. Но как это сделать? Где вводить логин и пароль? Для этого и нужен Virtual Telnet.

Несмотря на название, это совсем не telnet. Это дополнительная https сессия. Для пользователя процесс аутентификации выглядит следующим образом:

Пользователь запускает браузер и набирает в строке адреса https://10.2.2.2.

После подтверждения доверия сертификату, откроется следующее окно.

Обратите внимание, что изначально открывалась страница с адресом 10.2.2.2. А теперь ASA перенаправила пользователя на реальный ip адрес — 10.1.1.250. Подробнее об этом — чуть ниже.

Для продолжения надо нажать кнопку «Log in now».

В следующем окне надо ввести логин и пароль и нажать кнопку «Continue».

Если на фаерволе и ACS сервере все настроено корректно, и пользователь верно ввел логин с паролем, откроется страница как на следующем рисунке.

Теперь пользователь может открывать любые разрешенные ему соединения, пароль больше вводить не потребуется. Окно браузера можно закрыть. По завершении сеанса работы пользователь может разлогиниться. Для этого нужно снова открыть страницу аутентификации. Там отображается статус пользователя на фаерволе и указано сколько времени прошло после регистрации ( смотрите предыдущий рисунок ). Для закрытия авторизации достаточно нажать logoff.

Явно разлогиниваться не обязательно. Если в течении определенного времени все соединения открытые пользователем простаивают, фаервол сам закроет авторизацию.

Тайм аут определяется командой :

timeout uauth 4:00:00 absolute

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

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

virtual telnet 10.2.2.2

Здесь указан виртуальный ip адрес страницы аутентификации. Именно его пользователи набирают в адресной строке браузера. Точнее они должны набрать https://10.2.2.2. Https страница загружается с фаервола. Для повышения безопасности используется не реальный ip адрес интерфейса фаервола, а виртуальный.

Это адрес надо указать в нескольких местах в конфигурации фаервола. В аксес листах должен быть открыт https трафик на виртуальный адрес страницы аутентификации.

access-list OUT_IN extended permit tcp any host 10.2.2.2 eq https access-list DMZ_IN extended permit tcp host 10.2.2.2 eq https any

Кроме того, для этого адреса надо явно прописать команду :

aaa authentication include https outside 10.2.2.2 255.255.255.255 0.0.0.0 0.0.0.0 ACS_1

Это надо сделать обязательно, даже не смотря на то, что есть команда

aaa authentication include ip outside 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 ACS_1

покрывающая все адресное пространство.

Ну и последняя строка:

aaa authentication listener https outside port 1443 redirect

Она просто улучшает внешний вид WEB станицы аутентификации. Попробуйте убрать ее из конфигурации и посмотрите, что изменилось. В разных версиях ios эта команда выглядит по-разному.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *