Nálam Mikrotik+Freeradius szépen muzsikál. Bár nem írtad pontosan, hogy a ppp auth-al mi a baj, de remélem az megvan, hogy sem az SSTP, sem az l2tp(over ipsec) nem tud ilyet, ezért két lehetőséged van: vagy a jelszóba kell tenni a (t)otp-t (pl. a végére, elejére, ahova tetszik), vagy várakoztatni kell a Mikrotiket radius oldalról, ha valamilyen user interakció a második faktor (pl. push alapú token app). Illetve az előbbi esetben csak PAP jöhet szóba, mert a freeradiusnak plaintext kell megkapnia a jelszót, hogy tudja benne azonosítani az egyes darabokat (statikus rész és otp). Nem lehet hogy ezzel van a baj, mert pl. mschap-al jönnének az userek?
Nálunk push alapú MFA van amúgy. A Freeradius ellenőrzi először a jelszót, majd meghív egy scriptet ami kiküldi a push-t (egy cloud szolgáltató mobilapp-os megoldását használjuk erre, fizetős). Amíg az user nem approve-ol az authentikátor appban telefonon, órán, stb..-n, addig a Mikrotik nem kap választ, az ő szempontjából olyan, mintha egy lassan válaszoló radius szerverrel lenne dolga. Ha jól rémlik, 30 sec a maximum radius timeout ami beállítható (6.48-on), de ezen belül elég random, hogy mikor fogja elhajtani az usert auth server timeout hibával (valahol 12-30 sec között van mindig). Meg van mondva, hogy készítsék oda a telefont, vagy próbálják újra ha nem voltak elég gyorsak. Alapvetően élhető, zéró panasz van rá, lassan 2 éve működik.
A használt mfa szolgáltatót inkább nem nevezném meg, egyedi okok miatt döntöttünk mellette, ha viszont ajánlanom kellene valamit ami ugyanezt tudja (sőt..), akkor az a DUO (Cisco) lenne. Ráadásul adnak radius szervert is (kicsit félrevezető módon "duo authproxy" a neve), ami tud openldap/AD backendet illetve a duo mfa push api-t is támogatja helyből nyilván, és faék egyszerű az egész, kb. 5 perc beüzemelni. Ja, és maga a DUO 10 userig ingyenes. De ha nem bízol meg benne, akkor persze használhatod akár a FreeRadiust itt is, a DUO api jól dokumentált, és ha jól rémlik bőven találni hozzá FreeRadius-os példákat.
(T)OTP ugyanez, csak ott ugye annyiból más a helyzet, hogy neked kell radius oldalon felbontani a kapott jelszót statikus + otp részre, és külön-külön ellenőrizni az egyes darabokat. Első körben ezzel mentem, működött is, de már nem emlékszem hogy saját scripttel oldottam e meg, vagy van e erre valami kész FreeRadius modul.