Отидете на 2FA (двуфакторно удостоверяване за ASA SSL VPN)

Необходимостта от осигуряване на отдалечен достъп до корпоративна среда възниква все по-често, независимо дали става дума за вашите потребители или партньори, които се нуждаят от достъп до определен сървър във вашата организация.

За тези цели повечето компании използват VPN технология, която се е доказала като сигурен начин за предоставяне на достъп до локалните ресурси на организацията.

Моята компания не е изключение и ние, както много други, използваме тази технология. И както много други, ние използваме Cisco ASA 55xx като шлюз за отдалечен достъп.

С увеличаването на броя на отдалечените потребители е необходимо да се улесни процедурата за издаване на пълномощия. Но в същото време това трябва да се направи, без да се нарушава безопасността.

За себе си намерихме решение в използването на двуфакторно удостоверяване за свързване чрез Cisco SSL VPN, използвайки еднократни пароли. И тази публикация ще ви каже как да организирате такова решение с минимално време и нулеви разходи за необходимия софтуер (при условие, че вече имате Cisco ASA във вашата инфраструктура).

Пазарът е пълен с кутийни решения за генериране на еднократни пароли, като същевременно предлага много опции за получаването им, независимо дали става въпрос за изпращане на парола чрез SMS или използване на токени, както хардуерни, така и софтуерни (например на мобилен телефон). Но жаждата за спестявания и желанието да спестя пари за моя работодател, в настоящата криза, ме накараха да намеря безплатен начин за внедряване на услуга за генериране на еднократни пароли. Което, въпреки че е безплатно, не отстъпва много на комерсиалните решения (тук трябва да се отбележи, че този продукт има и комерсиална версия, но се съгласихме, че разходите, изразени в пари, ще бъдат нулеви).

Така че, ние се нуждаем от:

- Linux образ с вграден набор от инструменти - multiOTP, FreeRADIUS и nginx, за достъп до сървъра през уеб (http://download.multiotp.net/ - използвах готов образ за VMware)
— Active Directory сървър
- Всъщност Cisco ASA (аз, за ​​удобство, използвам ASDM)
- Всеки софтуерен токен, който поддържа TOTP механизма (аз например използвам Google Authenticator, но същото FreeOTP ще свърши работа)

Няма да навлизам в подробности около разгръщането на образа. В резултат на това ще получите Debian Linux с вече инсталирани multiOTP и FreeRADIUS, конфигурирани да работят заедно и уеб интерфейс за администриране на OTP.

Стъпка 1. Инициираме системата и я конфигурираме за нашата мрежа
По подразбиране системата идва с идентификационни данни за root root. Мисля, че всички се досетиха, че би било хубаво да промените паролата на root потребителя след първото влизане. Трябва също така да промените мрежовите настройки (по подразбиране е '192.168.1.44' с шлюз '192.168.1.1'). След това можете да рестартирате системата.

Създайте потребител в Active Directory OTP, с парола MySuperPassword.

Стъпка 2. Настройте връзката и импортирайте потребители на Active Directory
За да направим това, имаме нужда от достъп до конзолата и директно до файла multiotp.php, с помощта на който ще конфигурираме настройките за свързване с Active Directory.

Отидете в директорията /usr/local/bin/multiotp/ и изпълнете следните команди една по една:

./multiotp.php -config default-request-prefix-pin=0

Определя дали е необходим допълнителен (постоянен) пин при въвеждане на еднократен пин (0 или 1)

./multiotp.php -config default-request-ldap-pwd=0

Определя дали се изисква парола за домейн при въвеждане на еднократен ПИН (0 или 1)

./multiotp.php -config ldap-server-type=1

Указва се типът на LDAP сървъра (0 = нормален LDAP сървър, в нашия случай 1 = Active Directory)

./multiotp.php -config ldap-cn-identifier="sAMAccountName"

Указва формата, в който да се представи потребителското име (тази стойност ще изведе само потребителското име, без домейна)

./multiotp.php -config ldap-group-cn-identifier="sAMAccountName"

Същото, само за групата

./multiotp.php -config ldap-group-attribute="memberOf"

Указва метода за определяне дали даден потребител принадлежи към група

./multiotp.php -config ldap-ssl=1

Дали да се използва защитена връзка към LDAP сървъра (да, разбира се!)

./multiotp.php -config ldap-port=636

Порт за свързване към LDAP сървъра

./multiotp.php -config ldap-domain-controllers=adSRV.domain.local

Адрес на вашия сървър на Active Directory

./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"

Посочете откъде да започнете да търсите потребители в домейна

./multiotp.php -config ldap-bind-dn="[email protected]"

Посочете потребител, който има права за търсене в Active Directory

./multiotp.php -config ldap-server-password="MySuperPassword"

Посочете потребителската парола за свързване с Active Directory

./multiotp.php -config ldap-network-timeout=10

Задаване на изчакване за свързване с Active Directory

./multiotp.php -config ldap-time-limit=30

Задайте времеви лимит за операцията за импортиране на потребители

./multiotp.php -config ldap-activated=1

Активирайте конфигурацията на връзката с Active Directory

./multiotp.php -debug -display-log -ldap-users-sync

Ние импортираме потребители от Active Directory

Стъпка 3. Генерирайте QR код за токена
Тук всичко е изключително просто. Отворете уеб интерфейса на OTP сървъра в браузъра, влезте (не забравяйте да промените паролата по подразбиране за администратор!) и щракнете върху бутона „Печат“:

Отидете на 2FA (двуфакторно удостоверяване за ASA SSL VPN)
Резултатът от това действие ще бъде страница, която съдържа два QR кода. Смело игнорираме първия от тях (въпреки атрактивния надпис Google Authenticator / Authenticator / 2 Steps Authenticator) и отново смело сканираме втория код в софтуерен токен на телефона:

Отидете на 2FA (двуфакторно удостоверяване за ASA SSL VPN)
(да, умишлено обърках QR кода, за да го направя нечетлив).

След извършване на тези действия във вашето приложение, на всеки тридесет секунди ще се генерира шестцифрена парола.

За вярност можете да проверите в същия интерфейс:

Отидете на 2FA (двуфакторно удостоверяване за ASA SSL VPN)
Въвеждане на потребителско име и еднократна парола от приложението на телефона. Имате ли положителен отговор? Така че продължаваме напред.

Стъпка 4. Конфигурирайте и тествайте FreeRADIUS
Както споменах по-горе, multiOTP вече е конфигуриран да работи с FreeRADIUS, остава да изпълним тестове и да добавим информация за нашия VPN шлюз към конфигурационния файл на FreeRADIUS.

Връщаме се в конзолата на сървъра, в директорията /usr/local/bin/multiotp/, въведете:

./multiotp.php -config debug=1
./multiotp.php -config display-log=1

Включително по този начин по-подробно регистриране.

В конфигурационния файл на клиента FreeRADIUS (/etc/freeradius/clinets.conf) коментирайте всички редове, свързани с Localhost и добавете два записа:

client localhost {
        ipaddr = 127.0.0.1
        secret          = testing321
        require_message_authenticator = no
}

- за теста

client 192.168.1.254/32 {
        shortname =     CiscoASA
        secret =        ConnectToRADIUSSecret
}

- за нашия VPN шлюз.

Рестартирайте FreeRADIUS и опитайте да влезете:

radtest username 100110 localhost 1812 testing321

където потребителско име = потребителско име, 100110 = парола, дадена ни от приложението на телефона, Localhost = адрес на RADIUS сървър, 1812 — RADIUS сървърен порт, testing321 — парола на клиента на RADIUS сървъра (която сме посочили в конфигурацията).

Резултатът от тази команда ще бъде нещо като следното:

Sending Access-Request of id 44 to 127.0.0.1 port 1812
        User-Name = "username"
        User-Password = "100110"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=44, length=20

Сега трябва да се уверим, че потребителят е успешно удостоверен. За да направим това, ще разгледаме дневника на самия multiotp:

tail /var/log/multiotp/multiotp.log

И ако последният запис е:

2016-09-01 08:58:17     notice  username  User    OK: User username successfully logged in from 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token accepted from 127.0.0.1

Тогава всичко мина добре и можем да играем

Стъпка 5 Конфигурирайте Cisco ASA
Нека се съгласим, че вече имаме конфигурирана група и правила за достъп чрез SLL VPN, конфигурирани във връзка с Active Directory, и трябва да добавим двуфакторно удостоверяване за този профил.

1. Добавете нова AAA сървърна група:

Отидете на 2FA (двуфакторно удостоверяване за ASA SSL VPN)
2. Добавете нашия multiOTP сървър към групата:

Отидете на 2FA (двуфакторно удостоверяване за ASA SSL VPN)
3. правило профил на свързване, задавайки групата сървъри на Active Directory като основен сървър за удостоверяване:

Отидете на 2FA (двуфакторно удостоверяване за ASA SSL VPN)
4. В раздела Разширени -> Удостоверяване също така изберете група от сървъри на Active Directory:

Отидете на 2FA (двуфакторно удостоверяване за ASA SSL VPN)
5. В раздела Разширени -> Вторични удостоверяване изберете създадената сървърна група, в която е регистриран multiOTP сървърът. Имайте предвид, че потребителското име на сесията е наследено от основната AAA сървърна група:

Отидете на 2FA (двуфакторно удостоверяване за ASA SSL VPN)
Приложете настройките и

Стъпка 6 е последната
Проверяваме дали двуфакторното удостоверяване за SLL VPN работи за нас:

Отидете на 2FA (двуфакторно удостоверяване за ASA SSL VPN)
Ето! Когато се свързвате чрез Cisco AnyConnect VPN Client, ще бъде поискана и втора еднократна парола.

Надявам се, че тази статия ще помогне на някого и че ще даде на някого храна за размисъл как можете да използвате това, безплатно OTP сървър, за други задачи. Споделете в коментарите, ако желаете.

Източник: www.habr.com

Добавяне на нов коментар