Cómo proteger los inicios de sesión SSH usando contraseñas de un solo uso en Linux
Paso 1: Instalar y configurar OTPW en Linux
En Debian, Ubuntu o Linux Mint:
Utilice apt-get para instalar el paquete OTPW.
$ sudo apt-get install libpam-otpw otpw-bin
Utilice una herramienta de edición de texto para abrir el archivo de configuración SSH PAM (/etc/pam.d/sshd) y comente out La siguiente línea de código (deshabilita la verificación de contraseña).
#@include common-auth
Luego agregue las siguientes dos líneas de código (para habilitar la autenticación de contraseña de un solo uso):
autenticación requerida pam_otpw.so
sesión opcional pam_otpw.so
En Fedora o CentOS/RHEL:
En sistemas basados en Red Hat, OTPW no está disponible como paquete precompilado, por lo que pase Instale OTPW compilando desde la fuente.
Primero, instala los componentes básicos:
$ sudo yum git gcc pam-devel
$ git clone https://www.cl.cam.ac uk/~mgk25/git/otpw
$ cd otpw
Utilice una herramienta de edición de texto para abrir el Makefile y editar la línea que comienza con "PAMLIB=", como se muestra a continuación.
En sistemas de 64 bits:
PAMLIB=/usr/lib64/security
En sistemas de 32 bits:
PAMLIB= /usr/lib/security
Compila e instala. Tenga en cuenta: el instalador reiniciará automáticamente el servidor SSH. Por lo tanto, si utiliza SSH para conectarse, prepárese para desconectarse.
$ make
$ sudo make install
Ahora necesita actualizar la política de SELinux porque /usr/sbin/sshd intentará escribir en la casa del usuario directorio, y la política predeterminada de SELinux no lo permite. Los siguientes comandos se utilizarán para actualizar la política. Si no está utilizando SELinux, omita este paso.
$ sudo grep sshd /var/log/audit/audit.log | audit2allow -M mypol
$ sudo semodule -i mypol.pp
Siguiente paso Utilice un editor de texto para abrir el archivo de configuración SSH PAM (/etc/pam.d/sshd) y comente la siguiente línea de código (deshabilite la verificación de contraseña).
#auth substack password-auth
Luego agregue las siguientes dos líneas de código (para habilitar la verificación de contraseña de un solo uso):
auth requerida pam_otpw.so
sesión opcional pam_otpw.so
Paso 2: Configurar el servidor SSH para aceptar contraseñas de un solo uso
El siguiente paso es configurar el servidor SSH para aceptar contraseñas de un solo uso.
Utilice una herramienta de edición de texto para abrir /etc/ssh/sshd_config y establezca los siguientes tres parámetros. Asegúrese de no agregar estas líneas más de una vez o provocará que el servidor SSH falle.
UsePrivilegeSeparation sí
ChallengeResponseAuthentication sí
UsePAM sí
También debe desactivar la autenticación de contraseña predeterminada. Dependiendo de la situación, puede desactivar la autenticación de contraseña pública para poder reanudar la autenticación basada en claves sin una contraseña de un solo uso.
PubkeyAuthentication sí
PasswordAuthentication no
Ahora, reinicie el servidor SSH.
En Debian, Ubuntu o Linux Mint:
$ sudo service ssh restart
En Fedora o CentOS/RHEL 7:
$ sudo systemctl restart sshd
Paso 3: Genere una contraseña de un solo uso usando OTPW
Como se mencionó anteriormente, debe crear una contraseña de un solo uso con anticipación y almacenarla en el control remoto. Servidor SSH en el host. Para hacer esto, ejecute la herramienta otpw-gen como el usuario con el que inició sesión.
$ cd ~
$ otpw-gen > temporal_password.txt
Le pedirá que establezca un prefijo de contraseña. Cuando inicie sesión más tarde, deberá ingresar su contraseña de prefijo y su contraseña de un solo uso. Las contraseñas de prefijo son en realidad otra capa de protección. Incluso si la tabla de contraseñas cae en las manos equivocadas, las contraseñas con prefijo pueden evitar ataques de fuerza bruta.
Una vez establecida la contraseña de prefijo, el comando genera 280 contraseñas de un solo uso y las almacena en un archivo de texto de salida (como temporal_password.txt). Cada contraseña (la longitud predeterminada es de 8 caracteres) está precedida por un número de índice de tres dígitos. Puedes imprimir el documento en papel y llevarlo contigo.
También verás que se ha creado el archivo ~/.otpw, que almacena los hash de contraseña para estas contraseñas. Los primeros tres dígitos de cada línea representan el número de índice de la contraseña que se utilizará para los inicios de sesión SSH.
$ más ~/.otpw
OTPW1
280 3 12 8
191ai+:ENwmMqwn
218tYRZc %PIY27a
241ve8ns%NsHFmf
055W4/ YCauQJkr:
102ZnJ4VWLFrk5N
2273Xww55hteJ8Y
1509d4b5=A64jBT
168FWBXY%ztm9j%
000rWUSdBYr%8UE
037NvyryzcI+YRX
122rEwA3GXvOk=z
Probando uno- Contraseña
Ahora, también podemos iniciar sesión en el servidor SSH como de costumbre:
$ ssh user@remote_host
Si OTPW se configuró correctamente
Contraseña 191:
Ahora abra la tabla de contraseñas y busque el número de índice "191" en la tabla de contraseñas.
023 kBvp tq/G 079 jKEw /HRM 135 oW/c /UeB 191 fOO+ PeiD 247 vAnZ EgUt
Según la tabla de contraseñas anterior, la contraseña de un solo uso numerada "191 " es "fOO+PeiD". Debe anteponer la contraseña. Por ejemplo, si su contraseña de prefijo es "000", la contraseña real de un solo uso que debe ingresar es "000fOO+PeiD".
Una vez que inicies sesión correctamente, la contraseña que utilizaste caducará automáticamente.
Si observa ~/.otpw, verá que la primera línea se cambió a "---------------", lo que significa que la contraseña "191" ya no es válida. .
OTPW1
280 3 12 8
-----------------------
218tYRZc% PIY27a
241ve8ns%NsHFmf
055W4/YCauQJkr:
102ZnJ4VWLFrk5N
2273Xww55hteJ8Y
1509d4b5=A64jBT p>
168FWBXY%ztm9j%
000rWUSdBYr%8UE
037NvyryzcI+YRX
122rEwA3GXvOk=z