Необходимостта от осигуряване на отдалечен достъп до корпоративна среда възниква все по-често, независимо дали става дума за вашите потребители или партньори, които се нуждаят от достъп до определен сървър във вашата организация.
За тези цели повечето компании използват 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="otp@domain.local"Посочете потребител, който има права за търсене в 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 сървъра в браузъра, влезте (не забравяйте да промените паролата по подразбиране за администратор!) и щракнете върху бутона „Печат“:

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

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

Въвеждане на потребителско име и еднократна парола от приложението на телефона. Имате ли положителен отговор? Така че продължаваме напред.
Стъпка 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:

2. Добавете нашия multiOTP сървър към групата:

3. правило профил на свързване, задавайки групата сървъри на Active Directory като основен сървър за удостоверяване:

4. В раздела Разширени -> Удостоверяване също така изберете група от сървъри на Active Directory:

5. В раздела Разширени -> Вторични удостоверяване изберете създадената сървърна група, в която е регистриран multiOTP сървърът. Имайте предвид, че потребителското име на сесията е наследено от основната AAA сървърна група:

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

Ето! Когато се свързвате чрез Cisco AnyConnect VPN Client, ще бъде поискана и втора еднократна парола.
Надявам се, че тази статия ще помогне на някого и че ще даде на някого храна за размисъл как можете да използвате това, безплатно OTP сървър, за други задачи. Споделете в коментарите, ако желаете.
Източник: www.habr.com
