Debes renunciar ao chroot ou copiar iproute2 dentro da gaiola?
Unha gaiola incompleta falla despois do arranque, non no boot. Escolle entre relaxar o endurecemento e copiar os binarios xunto coas bibliotecas na nova raíz.
O servizo arrinca, un cliente asóciase e nunca aparece unha ruta no lado do servidor. Ou o daemon négase a arrincar e nomea un comando que non puido executar. Ambos os desenlaces seguen as mesmas tres liñas, que adoitan copiarse xuntas dunha guía de endurecemento: pasar a unha conta sen privilexios, deixar o grupo e cambiar a raíz do sistema de ficheiros. Só unha das tres agocha ficheiros, e só unha delas retira o privilexio de cambiar a táboa de rutas. Separaas é como aprendes que liña queres en realidade.
Que retira a gaiola que o daemon aínda necesita
O cambio de raíz ocorre despois do arranque, así que o daemon conserva todo o que xa abriu e perde todo o que abriría despois. Calquera axudante que a conexión execute a partir dese punto ten que existir dentro da nova raíz, xunto coas bibliotecas compartidas que carga. Unha gaiola construída cun ficheiro de configuración e un certificado non ten ningunha das dúas cousas.
Pasar a unha conta sen privilexios é unha restrición aparte. Un proceso que renunciou a root pode ser incapaz de alterar rutas ou de levantar unha interface mesmo cando o binario está xusto alí, así que os dous fallos deben diagnosticarse por separado.
Tres condicións deciden que corrección necesitas
A primeira condición é como instala rutas a túa compilación. As versións recentes de OpenVPN configuran a interface e a táboa de rutas no proceso, mentres que os paquetes antigos e as configuracións propias dependen de ferramentas externas ou de scripts up e down. Se o rexistro nomea un comando, hai unha ferramenta externa de por medio e a gaiola agócha. Se o rexistro mostra en cambio un erro de permisos, o problema é a conta.
A segunda é o mantemento. Unha gaiola con binarios copiados hai que refrescala cada vez que se actualiza o paquete que os fornece, ou a primeira actualización deixa un túnel roto detrás. A terceira é se un control concreto esixe de verdade un chroot; se o requisito vai en realidade sobre a separación de privilexios, o cambio de conta pode abondar por si só.
| Signal in the log | Other side of the boundary | Repair direction |
|---|---|---|
| Command not found after startup | Binary and its libraries absent inside the new root | Populate the jail, or drop the chroot line |
| Operation not permitted | Account lost the privilege to edit routes | Keep the account privileged, or pre-create routes elsewhere |
| No such device | Jail lacks the tun device node | Create the node inside, or open it before the root change |
Que debe conter unha gaiola que funcione
Unha gaiola que executa comandos necesita o binario, cada biblioteca coa que liga e calquera nodo de dispositivo que o daemon abra tarde. Copia as pezas e probas sen a VPN na imaxe:
ldd /usr/sbin/ip
chroot /etc/openvpn/jail /sbin/ip route show
chroot /etc/openvpn/jail /sbin/ip link set tun0 up
O primeiro comando enumera as dependencias, e é o que a xente salta. Un binario copiado que non atopa unha biblioteca falla cunha mensaxe distinta á dun binario ausente, e ambos parecen un fallo de OpenVPN cando se len desde o lado do cliente. Executar o comando á man dentro da gaiola reproduce o fallo sen reiniciar o servizo.
Copia tamén a configuración, os certificados e calquera CRL dentro da gaiola, porque un ficheiro que o daemon espera reler despois do arranque non se atopará unha vez cambiada a raíz. Anota o que copiaches, xa que a seguinte actualización do paquete de rede substitúe os orixinais e deixa a gaiola na copia antiga.
Encoler o endurecemento no seu lugar
Se a gaiola existe só porque o dicía unha guía, quitar esa única liña e conservar as restricións de conta é un desenlace defendible. O daemon conserva a súa vista do sistema de ficheiros e perde o problema, e a baixada de privilexios segue quitando root do proceso de longa vida.
Apunta o que queda, e por que. Unha configuración que perdeu un control en silencio sen unha nota é como deriva o endurecemento, e a próxima auditoría preguntará por que desapareceu a liña.
Biseca as tres liñas antes de elixir
Copia a configuración, desactiva as tres directivas e confirma que un cliente se conecta e que aparecen as rutas esperadas. Reactiva despois só as liñas de conta, logo o chroot só. O paso onde o túnel rompe identifica a fronteira, e evitas reconstruír unha gaiola que nunca foi a causa.
Cando volva encamiñar, executa unha sesión de cliente con maior verbosidade e le a liña que nomea o comando ou o permiso que fallou. Esa liña vale máis que o tempo de espera que o cliente acaba informando.