El servei arrenca, un client s’associa i mai no apareix cap ruta al costat del servidor. O el dimoni es nega a arrencar i anomena una ordre que no ha pogut executar. Tots dos desenllaços segueixen les mateixes tres línies, que normalment es copien juntes d’una guia d’enduriment: passar a un compte sense privilegis, deixar el grup i canviar l’arrel del sistema de fitxers. Només una de les tres amaga fitxers, i només una d’elles treu el privilegi de canviar la taula d’encaminament. Separar-les és com aprenem quina línia vols de debò.

Què treu la gàbia que el dimoni encara necessita

El canvi d’arrel passa després de l’arrencada, així que el dimoni conserva tot el que ja ha obert i perd tot el que obriria més tard. Qualsevol auxiliar que la connexió executi a partir d’aquest punt ha d’existir dins la nova arrel, amb les biblioteques compartides que carrega. Una gàbia feta amb un fitxer de configuració i un certificat no té cap de les dues coses.

Passar a un compte sense privilegis és una restricció separada. Un procés que ha renunciat a root potser no pot alterar rutes ni aixecar una interfície fins i tot quan el binari és just allà, per tant les dues fallades s’han de diagnosticar per separat.

Tres condicions decideixen quina correcció necessites

La primera condició és com la teva compilació instal·la les rutes. Les versions recents de OpenVPN configuren la interfície i la taula d’encaminament dins del procés, mentre que els paquets més antics i les configuracions pròpies depenen d’eines externes o de scripts up i down. Si el registre anomena una ordre, hi ha una eina externa pel mig i la gàbia l’amaga. Si el registre mostra en canvi un error de permisos, el problema és el compte.

La segona és el manteniment. Una gàbia amb binaris copiats s’ha de refrescar cada cop que s’actualitza el paquet que els proporciona, o la primera actualització deixa un túnel trencat al darrere. La tercera és si un control concret exigeix realment un chroot; si el requisit va en realitat sobre la separació de privilegis, el canvi de compte pot bastar tot sol.

Signal in the logOther side of the boundaryRepair direction
Command not found after startupBinary and its libraries absent inside the new rootPopulate the jail, or drop the chroot line
Operation not permittedAccount lost the privilege to edit routesKeep the account privileged, or pre-create routes elsewhere
No such deviceJail lacks the tun device nodeCreate the node inside, or open it before the root change

Què ha de contenir una gàbia que funcioni

Una gàbia que executa ordres necessita el binari, cada biblioteca amb què enllaça i qualsevol node de dispositiu que el dimoni obri tard. Copia les peces i prova-les sense la VPN a la imatge:

ldd /usr/sbin/ip
chroot /etc/openvpn/jail /sbin/ip route show
chroot /etc/openvpn/jail /sbin/ip link set tun0 up

La primera ordre llista les dependències, i és la que la gent s’estalvia. Un binari copiat que no troba una biblioteca falla amb un missatge diferent del d’un binari absent, i tots dos semblen una fallada d’OpenVPN quan es llegeixen des del costat del client. Executar l’ordre a mà dins la gàbia reprodueix la fallada sense reiniciar el servei.

Copia també la configuració, els certificats i qualsevol CRL dins la gàbia, perquè un fitxer que el dimoni espera rellegir després de l’arrencada no es trobarà un cop canviat l’arrel. Anota què has copiat, ja que la propera actualització del paquet de xarxa substitueix els originals i deixa la gàbia a la còpia antiga.

Encongir l’enduriment en lloc d’això

Si la gàbia només existeix perquè ho deia una guia, treure aquella única línia i mantenir les restriccions de compte és un desenllaç defensable. El dimoni conserva la seva vista del sistema de fitxers i perd el problema, i la baixada de privilegis segueix traient root del procés de llarga durada.

Anota què queda, i per què. Una configuració que va perdre un control en silenci sense una nota és com deriva l’enduriment, i la propera auditoria preguntarà per què va desaparèixer la línia.

Bisecciona les tres línies abans de triar

Copia la configuració, desactiva les tres directives i confirma que un client es connecta i que apareixen les rutes esperades. Reactiva després només les línies de compte, i finalment el chroot tot sol. El pas on es trenca el túnel assenyala la frontera, i estalvies reconstruir una gàbia que mai no era la causa.

Quan torni a encaminar, executa una sessió de client amb més verbositat i llegeix la línia que anomena l’ordre o el permís que ha fallat. Aquesta línia val més que el temps d’espera que el client acaba reportant.

Articles relacionats