Bloquejar una adreça i bloquejar un compte són dos mecanismes de comptador diferents, i fallen en direccions oposades. Un ban d'adreça atura una font i deixa el compte objectiu abastable des de qualsevol altre lloc. Un bloqueig de compte atura aquesta identitat a tot arreu, inclòs l'ordinador portàtil del propi usuari legítim. Els equips sovint despleguen un mentre descriuen l'altre, i després descobreixen la diferència durant un incident, quan el que està protegit és la cosa equivocada.

Per a una VPN que delega l'autenticació a PAM, el comptador és allò que arriba la pila PAM, no allò que va registrar el listener. Separar aquestes dues coses és el primer pas útil.

Dos comptadors, dues víctimes diferents

Un limitador de velocitat observa una font i pregunta quants intents n'han arribat recentment. Un bloqueig observa una identitat i pregunta quants errors ha acumulat aquest compte. El primer protegeix la disponibilitat del servei; el segon protegeix la credencial. Cap dels dos substitueix l'altre, i un desplegament que només té el primer no ha protegit el compte en absolut.

Per això «bloquegem la IP després de cinc errors» no és una resposta a un informe de farciment de credencials. L'atacant rota les fonts, cada una rep un nombre petit d'intents, i el compte no es compta mai. A la inversa, una política de bloqueig sense cap control de font permet a un atacant mantenir el compte bloquejat indefinidament fallant a propòsit, cosa que és una denegació de servei que no li costa res.

Els dos controls també tenen històries de recuperació diferents. Un ban d'adreça caduca amb un temporitzador en què ningú no ha de pensar. Un bloqueig de compte pot necessitar un administrador, un període d'espera documentat o un restabliment d'autoservei, i cadascun d'aquests és una decisió de política que ha d'existir abans que passi el primer bloqueig.

Troba el magatzem que ja posseeix el recompte

Abans d'afegir res, esbrina si ja existeix un magatzem de fallades. Un compte local de Linux, un servei de directori i un proveïdor d'identitat extern mantenen cadascun el seu propi recompte, i un mòdul PAM afegit davant d'ells en crea un segon en lloc d'estendre el primer.

grep -rnE 'faillock|pam_tally|pam_unix' /etc/pam.d/
ls -l /etc/pam.d/ | head -20

Llegeix el fitxer de servei que la VPN anomena realment i després segueix-ne les línies d'inclusió. En moltes distribucions, el servei de VPN inclou un fitxer comú compartit, cosa que significa que el recompte que estàs a punt d'ajustar també s'aplica a SSH i als inicis de sessió locals. Això pot ser acceptable, i pot ser exactament el contrari del que el canvi pretenia fer.

Si el directori ja aplica un bloqueig, la pregunta útil és com la conversa PAM arriba a aquesta decisió i com la VPN la reporta. Afegir un recompte local a sobre no es converteix en el comptador del directori, i les dues polítiques poden discrepar sobre quan es desbloqueja el compte.

pam_faillock té tres posicions de crida, no una

El mòdul separa tres operacions que una sola línia copiada sol difuminar: comprovar si un compte ja està bloquejat, enregistrar un error d'autenticació i esborrar l'historial d'errors després d'un èxit. El seu manual les documenta com a posicions de crida diferents, i la pila decideix quines d'elles s'executen i en quin ordre.

Aquesta és la part que una migració des d'un mòdul de recompte més antic sol fer malament. Copiar una línia d'un exemple funcional de pam_tally2 en una pila de pam_faillock no és un canvi de nom; la configuració documentada és diferent, i una crida mal col·locada pot produir una pila que enregistra errors sense comprovar-los mai, o que els comprova en un punt al qual el camí d'autenticació no arriba mai.

faillock --user alice
faillock --user alice --reset

La utilitat d'inspecció és la manera més ràpida de veure si el comptador és real: informa dels errors enregistrats d'un compte i els pot esborrar. Si un error controlat no canvia aquesta sortida, la posició de la crida és incorrecta, independentment de com es llegeixi la configuració.

Un nom de servei dedicat no és aïllament

Donar a la VPN el seu propi fitxer de servei PAM fa visible la política prevista, i no confina l'efecte per si mateix. Qualsevol inclusió d'un fitxer compartit arrossega tot el que fa aquest fitxer, inclosos els recomptes que s'apliquen a tot el sistema.

Decideix explícitament si el bloqueig ha de cobrir només l'accés VPN o tots els serveis que autentiquen el mateix compte. Les dues respostes són defensables; el mode de fallada és creure que n'has triat una mentre la pila implementa l'altra. Escriu la resposta al costat del fitxer de servei perquè el proper canvi no la reverteixi en silenci.

Després comptabilitza el cost. Un atacant pot desencadenar un bloqueig, i l'usuari que el pateix és el propietari del compte. El llindar, el període d'espera i el camí de recuperació administrativa formen part de la política, i el camí de recuperació no ha de dependre que la VPN es reconfiguregui durant un incident.

Accepta la seqüència, no un sol rebuig

Prova amb identitats designades sota un pla aprovat, i prova una cadena en lloc d'un sol esdeveniment. Un compte vàlid hauria d'autenticar-se; una contrasenya dolenta deliberada hauria de moure el comptador; el bloqueig configurat hauria de fer efecte després; i la recuperació documentada hauria de tornar l'accés.

faillock --user test-vpn-01
journalctl -u openvpn-server@lab -n 30 --no-pager | grep -i 'auth\|pam'

Comprova el comportament d'èxit amb la mateixa cura que el de fallada. Si un inici de sessió correcte no esborra l'historial, un compte es bloquejarà després d'una acumulació lenta d'errors ordinaris. Si esborra tot de tots els serveis, el comptador és més feble del que afirma la política.

Finalment, atura els clients desatesos abans de declarar la victòria. Una credencial desada que reintenta en segon pla recrearà els errors minuts després d'una recuperació i tornarà a bloquejar el compte, cosa que sembla un camí de recuperació trencat en lloc d'un client mal configurat. La limitació de velocitat per origen pot quedar-se com a control addicional, però no és la política del compte i no s'ha de descriure com a tal.

Articles relacionats