Spraudnis joprojām tiek ieteikts pavedienos, kas vecāki par pašreizējām būvēm, un vakar kompilētā serverī tas neizdodas ielādes laikā. Tā nav konfigurācijas kļūda, ko varētu labot ar ceļu. Spraudnis un skripta āķis risina vienu un to pašu problēmu dažādos slāņos, un pāreja no viena uz otru maina to, kas jāinstalē, kas darbojas ar servera tiesībām un ko patiesībā pasaka neveiksmīga pieteikšanās.

Mīts: spraudnis ir atbalstītais ceļš

Spraudnis ir koplietojams objekts, kas tiek ielādēts OpenVPN procesā, tāpēc tam jāatbilst saskarnei, ko šis process piedāvā. Būves mainās, iepakojums mainās, un bibliotēka, kas kompilēta vecākai saskarnei, vienkārši atsakās ielādēties. Nekas servera konfigurācijā nevar pārvarēt šo plaisu, tāpēc padoms "vienkārši instalējiet radiusplugin" beidzas ar serveri, kas neieslēdzas.

Skripta āķis turpretī atrodas ārpus procesa. OpenVPN izpilda programmu, nodod tai akreditācijas datus un nolasa spriedumu. Tieši šī atdalīšana ļauj tam pārdzīvot atjauninājumus, un tā arī padara to par jūsu atbildību tā, kā spraudnis nekad nav bijis.

Neviena pieeja nav drošāka pēc savas uzbūves. Viena izpilda svešu kodu dēmona iekšienē; otra izpilda jūsu kodu tam blakus, turot akreditācijas datus rokā. Pareizais jautājums ir, kuru no šiem diviem riskiem jūs patiešām varat pārvaldīt.

Ko spraudnis sasēja

Spraudnim bija sava konfigurācijas datne ar RADIUS resursdatoru, kopīgo noslēpumu, atkārtojumu skaitu un taimautu, un servera konfigurācija uz to atsaucās ar vienu rindu. Akreditācijas datu apstrāde palika servera procesā, kas nozīmēja, ka parole nekad nešķērsoja procesa robežu, kas administratoram bija jāaizsargā.

Cena bija saistība. Katrs OpenVPN atjauninājums riskēja ar nesaderīgu saskarni, un katra distribūcija, kas pārbūvēja pakotni, riskēja radīt bibliotēku, kas vairs neatbilst. Kad tas notiek, kļūme ir skaļa un tūlītēja, un tā ir vienīgā dizaina žēlastība.

Ja šāds spraudnis joprojām ielādējas jūsu būvē, tas var būt mazākā operatīvā virsma. Apstipriniet saskarni, kurai tas būvēts, turiet to piesaistītu pārbaudītajai būvei un uzskatiet katru atjauninājumu par izmaiņām, kas prasa pilnu pieteikšanās testu, nevis par parastu pakotnes atjauninājumu.

Uz ko skripta āķis patiešām paļaujas

Āķis tiek konfigurēts ar auth-user-pass-verify un piegādes mehānismu: vides mainīgajiem vai pagaidu datni. Vides formā OpenVPN pieprasa script-security 3, dokumentēto līmeni, kas ļauj atklāt paroli skriptiem. Šis līmenis ir apzināta noklusējuma vājināšana, un pret to jāizturas kā pret atļauju ar pievienotu pamatojumu.

Viss, kam skripts pieskaras, manto šo uzticību. Tam jāpieder root, jābūt neierakstāmam grupai vai citiem, jānorāda ar absolūtu ceļu un jābūt brīvam no vietas, kur neuzticama vērtība sasniedz čaulu. Ielieciet katru mainīgo pēdiņās, noraidiet negaidītas rakstzīmes un nekad neveidojiet komandu no dotā lietotājvārda. Skripts, kas darbojas kā root katrā pieteikšanās mēģinājumā, ir pelnījis vienu pārskatu tieši šo četru īpašību dēļ.

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

Datnes piegādes forma izvairās no vides mantojuma problēmas un nodod akreditācijas datus skriptam caur pagaidu datni ar ierobežotām tiesībām. Ja jūsu klients to atbalsta, tā parasti ir labāka noklusējuma vērtība, lai gan pievieno vēl vienu objektu, kas jāsakopj kļūmes gadījumā.

Izejas kodi nosaka, vai jūs neizdosities atvērti

Skripta izejas statuss ir spriedums: nulle pieņem, nav nulle noraida. Problēmas radošais modelis ir čaulas skripts, kas pieņem tikai tad, kad RADIUS atbildē ir noteikts pieņemšanas marķieris, un visam pārējam atgriež kļūdu, jo tas sapludina trīs dažādus notikumus vienā atbildē. Nepareiza parole, nesasniedzams serveris un bojāta atbilde visas kļūst par vienu un to pašu noraidījumu.

Atdaliet šos gadījumus skriptā, pat ja āķis var atgriezt tikai pieņemšanu vai noraidījumu. Reģistrējiet aizmugures rezultātu atsevišķi, brīdiniet par taimautiem un transporta kļūdām, un monitoringā padariet skaidru, kad autentifikācija neizdodas tāpēc, ka pakalpojums nedarbojas, nevis tāpēc, ka lietotāji kļūdās rakstīšanā.

Divi ieradumi uztur pārējo saprātīgu. Ja RADIUS ir autoritāte, tam jābūt vienīgajai vietai, kur pārbauda paroli, jo ēnu tabula rada divas atbildes uz vienu un to pašu jautājumu, un otrā ir uzbrukuma virsma, ko neviens neuzrauga. Un atcerieties, ka āķis tiek izsaukts atkārtoti katrā mēģinājumā, tāpēc lēns skripts ar nepacietīgu klientu kļūst par paroļu minēšanas pastiprinātāju, ja vien RADIUS pusē nepievienojat aizturi vai politiku.

No kā jūs atsakāties, kad sertifikāts pazūd

Daudzi šādas formas izvietojumi pilnībā izslēdz klienta sertifikāta pārbaudi, atstājot lietotājvārdu un paroli kā visu klienta prasību. Ar šo iestatījumu pazūd sertifikātā balstīta identitāte. Kanāls paliek šifrēts, bet vienīgais, kas nosauc klientu, ir RADIUS spriedums. Viss lejupējais, kas agrāk balstījās uz sertifikāta subjektu, tagad jābalsta uz lietotājvārdu.

Saglabājiet vadības kanāla aizsardzību, lai neautentificēts partneris nevarētu pētīt vai pārpludināt rokasspiedienu, un izmantojiet username-as-common-name, kad konfigurācija katram lietotājam ir atkarīga no kopīgā vārda. Pārvaldītie vārteji to bieži risina citādi, pabeidzot sertifikāta autentifikāciju pie vārteja, kas runā EAP-TLS ar RADIUS, un tādā gadījumā neviena no šīm servera direktīvām nav spēkā. Kopējiet modeli, ko dokumentē jūsu pašu platforma, nevis kaimiņu produkta. Svarīgās direktīvas pietiekami atšķiras, ka to sajaukšana dod konfigurāciju, kas tiek parsēta un pēc tam nevienu neautentificē.

Saistītie raksti