Restrinxir os inicios de sesión de OpenVPN a un grupo cunha política PAM
Un servizo PAM dedicado pode admitir só os membros dun grupo de VPN sen tocar as regras de inicio de sesión do sistema. Apunta o complemento auth-pam a el e proba os resultados.
Mantén cada conta capaz de iniciar sesión con normalidade, pero permite que só un grupo use a VPN. PAM pode expresar esa diferenza sen un segundo almacén de contrasinais, e o complemento de OpenVPN pode apuntarse a un servizo que conteña só as comprobacións que pretendes. O truco está en construír ese servizo sen herdar accidentalmente unha pila de ámbito do sistema.
O percorrido que segue parte do nome de servizo do complemento, constrúe unha política e despois proba os tres resultados que importan: un membro, un externo cun contrasinal válido e unha credencial incorrecta.
Por que un servizo PAM á parte
O complemento auth-pam toma un nome de servizo como argumento. Ese nome selecciona un ficheiro baixo /etc/pam.d, e a pila dese ficheiro é o que se executa durante un inicio de sesión VPN. Se lle pasas o mesmo nome que usa un inicio de sesión do sistema, herdas cada decisión desa pila, incluídas as que se engadiron despois por motivos non relacionados.
Crea un servizo dedicado no seu lugar. Parte dunha pila funcional que xa autentique contra o backend previsto, como un ficheiro de contrasinais local, SSSD ou un servizo de directorio, e despois engade a regra de elixibilidade. Copiar dúas liñas nun ficheiro baleiro é o erro habitual: a caducidade do contrasinal, o bloqueo da conta e outras comprobacións poden vivir na pila que non copiaches.
Separar o servizo tamén limita o alcance do dano. Unha regra só para VPN nunha pila compartida pode denegar o acceso SSH ou de consola a todos, o que converte un cambio de acceso nunha caída.
Escribir a regra do grupo
A comprobación de elixibilidade corresponde á fase de conta, despois de verificar a credencial. Unha regra como account required pam_succeed_if.so user ingroup vpnusers permite que o procesamento continúe só cando o usuario autenticado é membro dese grupo.
Esa liña é un fragmento, non un servizo completo. Intégraa onde chegue cada ruta aceptada e revisa os indicadores de control que a rodean. Un control sufficient ou un salto anterior na pila pode rematar o procesamento antes de que se execute a túa regra, o que converte a restrición nunha suxestión.
Non engadas use_uid por costume. Sen el, o módulo avalía o usuario que se autentica; con el, o módulo avalía a conta baixo a que se executa o proceso de OpenVPN, que normalmente é root ou unha conta de servizo e, polo tanto, non é a persoa que inicia sesión.
A pertenza ao grupo vén da resolución de identidades do sistema, non dun nome que recoñezas. Para os usuarios de directorio, confirma que o mesmo backend responde ás consultas de grupo dese usuario, porque un grupo local cun nome familiar é un obxecto distinto do grupo de directorio co mesmo nome.
Trampas de orde e identidade
Coloca a regra do grupo despois da pila de autenticación e de calquera comprobación que deba seguir aplicándose, pero antes ou xunto ás comprobacións de conta que conserves. PAM avalía os módulos na orde do ficheiro, e o valor de control de cada liña decide se un fallo é definitivo.
Vixía as pilas duplicadas. Un patrón habitual é unha inclusión que xa contén unha regra de conta, seguida da túa propia regra de grupo, o que produce dúas decisións onde esperabas unha. Le o ficheiro incluído, non só o que ediches. Unha forma rápida de ver a orde efectiva é ler o ficheiro de arriba abaixo e anotar cada valor de control.
Mantén intactos os demais requisitos de admisión. Un contrasinal correcto non substitúe as comprobacións de certificado, un segundo factor nin a autorización posterior á conexión, e esta política non substitúe a ningunha delas. Só decide se a conta é elixible para que se considere o acceso VPN.
Probar membros, externos e contrasinais incorrectos
Proba tres casos antes de dar a política por terminada. Un membro conéctase correctamente. Unha conta válida fóra do grupo autentica o seu contrasinal pero denégaselle o acceso VPN. Un contrasinal incorrecto para calquera das dúas contas rexéitase na fase de autenticación, non pola regra do grupo.
Mira o erro visible para o cliente e o rexistro do servidor en conxunto, porque ambos os fallos poden parecer similares á persoa que se conecta. A distinción importa para o soporte: un externo co contrasinal correcto necesita un cambio de grupo, mentres que un contrasinal incorrecto necesita un restablecemento da credencial.
Mantén unha segunda sesión aberta mentres editas PAM, e verifica tamén o inicio de sesión SSH normal despois do cambio. O sentido do servizo dedicado é que o inicio de sesión do sistema quede intacto, e a única forma de sabelo é probalo.
Se algo rompe, restaura o ficheiro de servizo anterior desde unha copia. A regra que queres é sinxela de enunciar: a pertenza fai que unha conta sexa elixible para o acceso VPN, e toda outra comprobación obrigatoria segue aplicándose.