Pluginit soovitatakse endiselt lõimedes, mis on praegustest versioonidest vanemad, ja eile kompileeritud serveris ebaõnnestub see laadimisel. See ei ole konfiguratsiooniviga, mida saaks teega parandada. Plugin ja skriptikonks lahendavad sama probleemi erinevatel kihtidel ning ühelt teisele liikumine muudab seda, mida tuleb paigaldada, mis töötab serveri õigustega ja mida ebaõnnestunud sisselogimine teile tegelikult ütleb.

Müüt: plugin on toetatud tee

Plugin on jagatud objekt, mis laaditakse OpenVPN-i protsessi, seega peab see vastama liidesele, mille see protsess avab. Versioonid muutuvad, pakendamine muutub ja vanema liidese jaoks kompileeritud teek lihtsalt keeldub laadimast. Miski serveri konfiguratsioonis ei saa seda lõhet ületada, mistõttu nõuanne "paigalda lihtsalt radiusplugin" lõpeb serveriga, mis ei käivitu.

Skriptikonks asub hoopis protsessist väljas. OpenVPN käivitab programmi, annab sellele volitused ja loeb tagasi otsuse. Just see lahutamine laseb tal uuendusi üle elada ja teeb ta ka teie vastutuseks nii, nagu plugin kunagi ei olnud.

Kumbki lähenemine ei ole oma konstruktsioonilt turvalisem. Üks käitab võõrast koodi deemonis; teine käitab teie koodi selle kõrval, volitused käes. Õige küsimus on, millist neist kahest riskist te tegelikult hallata suudate.

Mida plugin kokku sidus

Pluginil oli oma konfiguratsioonifail RADIUS-i hosti, jagatud saladuse, korduskatsete arvu ja ajapiiranguga ning serveri konfiguratsioon viitas sellele ühe reaga. Volituste käsitlemine jäi serveriprotsessi sisse, mis tähendas, et parool ei ületanud kunagi protsessipiiri, mille administraator pidi turvama.

Hind oli sidumine. Iga OpenVPN-i uuendus riskis ühildumatu liidesega ja iga distributsioon, mis paketi uuesti koostas, riskis teegiga, mis enam ei sobi. Kui see juhtub, on rike vali ja kohene ning see on disaini ainus halastus.

Kui selline plugin teie versioonis veel laaditakse, võib see olla väiksem operatiivpind. Kinnitage liides, mille jaoks see ehitati, hoidke see testitud versiooni külge kinnitatud ja käsitlege iga uuendust muudatusena, mis nõuab täielikku sisselogimistesti, mitte rutiinse paketiuuendusena.

Millele skriptikonks tegelikult toetub

Konks seatakse üles auth-user-pass-verify ja tarneviisiga: keskkonnamuutujad või ajutine fail. Keskkonna vormis nõuab OpenVPN script-security 3, dokumenteeritud taset, mis lubab parooli skriptidele paljastada. See tase on teadlik vaikeväärtuse nõrgendamine ja seda tuleks käsitleda loana, millele on lisatud põhjendus.

Kõik, mida skript puudutab, pärib selle usalduse. See peab kuuluma root-ile, mitte olema rühma ega teiste poolt kirjutatav, viidatud absoluutse teega ja vaba igast kohast, kus mitteusaldusväärne väärtus jõuab shelli. Pange iga muutuja jutumärkidesse, lükake tagasi ootamatud märgid ja ärge kunagi ehitage käsku antud kasutajanimest. Skript, mis töötab root-ina igal sisselogimiskatsel, väärib ühte ülevaatust täpselt nende nelja omaduse tõttu.

ls -l /usr/local/sbin/radius-auth.sh
stat -c '%U %a' /usr/local/sbin/radius-auth.sh

Failitarne vorm väldib keskkonna pärimise probleemi ja annab volitused skriptile piiratud õigustega ajutise faili kaudu. Kui teie klient seda toetab, on see tavaliselt parem vaikeväärtus, kuigi lisab vea korral ühe koristatava objekti.

Väljumiskoodid otsustavad, kas ebaõnnestute avatult

Skripti väljumisolek on otsus: null aktsepteerib, mitte-null keeldub. Probleeme tekitav muster on shell-skript, mis aktsepteerib ainult siis, kui RADIUS-i vastus sisaldab kindlat aktsepteerimistokenit, ja tagastab kõige muu jaoks vea, sest see sulandab kolm erinevat sündmust üheks vastuseks. Vale parool, kättesaamatu server ja rikutud vastus muutuvad kõik samaks keeldumiseks.

Eraldage need juhtumid skriptis, isegi kui konks saab tagastada ainult aktsepteerimise või keeldumise. Logige taustatulemus eraldi, häiresignaal aegumiste ja transpordivigade korral ning tehke monitooringus selgeks, kui autentimine ebaõnnestub seetõttu, et teenus ei tööta, mitte seetõttu, et kasutajad trükivad valesti.

Kaks harjumust hoiavad ülejäänu mõistlikuna. Kui RADIUS on autoriteet, peaks see olema ainus koht, kus parooli kontrollitakse, sest varjutabel loob samale küsimusele kaks vastust ja teine on ründepind, mida keegi ei jälgi. Ja pidage meeles, et konks kutsutakse igal korduskatsel uuesti, nii et aeglane skript koos kannatamatu kliendiga muutub paroolide arvamise võimendajaks, kui te ei lisa viivitust või poliitikat RADIUS-i poolel.

Millest te loobute, kui sertifikaat kaob

Paljud sellise kujuga juurutused lülitavad kliendisertifikaadi kontrolli täielikult välja, jättes kasutajanime ja parooli kliendi kogu väiteks. Selle seadega kaob sertifikaadipõhine identiteet. Kanal jääb krüpteerituks, kuid ainus, mis klienti nimetab, on RADIUS-i otsus. Kõik allavoolu, mis varem tugines sertifikaadi subjektile, peab nüüd tuginema kasutajanimele.

Hoidke juhtkanali kaitse paigas, et autentimata partner ei saaks kätlust sondida ega üle ujutada, ja kasutage username-as-common-name, kui kasutajapõhine konfiguratsioon sõltub ühisnimest. Hallatavad lüüsid lahendavad selle sageli teisiti, lõpetades sertifikaadi autentimise lüüsil, mis räägib RADIUS-iga EAP-TLS-i, ja sel juhul ei kehti ükski neist serveridirektiividest. Kopeerige mudel, mida teie enda platvorm dokumenteerib, mitte naaberprodukti oma. Olulised direktiivid erinevad piisavalt, et nende segamine annab konfiguratsiooni, mis parsitakse ja seejärel ei autenti kedagi.

Seotud artiklid