Uso de ejemplo de llaves autorizadas de SSH

Uso de ejemplo de llaves autorizadas de SSH

Ssh (shell seguro) es un protocolo utilizado para sistemas de acceso de remota y de forma segura (encriptada). El servidor SSH se ejecuta en la máquina remota y el cliente SSH en su máquina de trabajo. La comunicación entre el cliente y el servidor es típica a través de la línea de comando. Ahora, hay varias formas de autenticar la conexión: autenticación de contraseña, autenticación pública/privada basada en claves (usando el archivo autorizado_key) y la autenticación basada en host (Usando el archivo conoce_host).

  1. En el método de autenticación basado en contraseña, se requiere una contraseña para iniciar sesión. Las contraseñas pueden ser largas y tediosas para recordar; Sin embargo, peor aún, pueden ser forzados con bruto (pirateados)! Los scripts simples de Python pueden la fuerza bruta incluso la peor de las contraseñas, y como tal, representan un riesgo de seguridad.
  2. En la autenticación basada en la clave pública/privada, no se requiere contraseña para iniciar sesión (un inicio de sesión sin contraseña). De hecho, la autenticación basada en clave es más segura que la autenticación de contraseña porque no hay necesidad de escribir una contraseña. En tales circunstancias, el servidor simplemente verifica que tiene una clave privada! Esta clave privada es un archivo y, por lo tanto, se puede copiar (riesgo de seguridad); Sin embargo, es mucho más fuerte y más largo que una contraseña de 8 caracteres. Además, el archivo autorizado_keys se utiliza para autenticar a los usuarios por el servidor.
  3. En el método de autenticación basado en host conocido, el archivo de host conocido contiene los hosts que pueden conectarse. Los usuarios utiliza el archivo conoce_hosts para autenticar servidores.

En este tutorial, observaremos cómo configurar la autenticación basada en la clave pública/privada y echar un vistazo al archivo autorizado_keys y sus usos.

Configuración de la autenticación basada en la llave

Al configurar sistemas complicados como estos, debemos asegurarnos de que los archivos de configuración estén configurados adecuadamente! Si no lo son, todo el proceso no funcionará! Ahora, hay dos sistemas aquí: el cliente y el servidor. El /etc/ssh/sshd_config En el servidor en el servidor haz descomente y configúrelos de la siguiente manera:

Permitrootlogin si
Contraseña Autenticación Sí
ChallengerAponseAuthentication no

A continuación, necesitamos llaves públicas y privadas de género. Para generar las teclas, ejecute (en la máquina del cliente):

ssh-keygen

Cuando ejecute ssh-keygen, se le pedirá algunas preguntas. La primera pregunta será la ubicación donde desea guardar las llaves. Si deja esto en blanco, lo guardará en la carpeta predeterminada. En mi caso, ese es el/Home/Client/.ssh/id_rsa, donde id_rsa es la clave privada real y la .SSH es la carpeta. A continuación, se le pedirá que ingrese una frase. No tiene que ingresar una frase de pases, pero esto agrega otra capa de seguridad. La frase de pases se usa para cifrar la clave privada.

Esto creará una clave pública y una clave privada.

~/.SSH/ID_RSA (clave privada)
~/.ssh/id_rsa.Pub (clave pública)

El DOT SSH significa que es una carpeta oculta de forma predeterminada. Además, la clave pública se usa para el cifrado, mientras que la clave privada se usa para el descifrado. Y aunque la clave pública se puede ampliar en todas partes y en cualquier lugar, la clave privada debe mantenerse a salvo! Su clave privada debe permanecer dentro de su red en todo momento! Si pierde su clave privada, también puede asumir que su sistema se ha visto comprometido. Es peor que perder su contraseña porque es un inicio de sesión sin contraseña).

A continuación, necesitamos copiar la clave pública al servidor, y para eso, usamos el siguiente código (que se ejecuta en la máquina del cliente):

SSH-Copy-ID

Por ejemplo, en mi caso, escribiría:

Ej: servidor [email protected]

SSH-Copy-ID es tal que nombre del servidor es el nombre del servidor, y la IP es su dirección IP. En este caso, "servidor"Es el nombre de mi servidor, y 10.0.2.15 es su dirección IP. Cuando el código anterior se ingresa en la máquina del cliente, el cliente solicitará la contraseña del servidor, lo ingrese. Copiará la clave pública al servidor en ~/.ssh/autorized_keys y posteriormente Mostrar "número de claves agregadas:" En su máquina de cliente.

La máquina del cliente también le pedirá que intente un inicio de sesión usando:

ssh
(Ej: servidor [email protected])

La segunda clave pública se copia en el servidor, se creará un archivo llamado Authorized_Keys con la clave pública dentro de ella. Como puede ver en las siguientes imágenes, aquí hay una carpeta oculta llamada /.SSH ganó mi servidor; Cuando se abre el archivo autorizado_keys, puede ver la clave pública que generamos dentro de él.

Aunque este proceso parece ser bastante simple, puede y probablemente se encontrará con una serie de errores al configurar el proceso de autenticación basado en la clave. Uno, en particular, es el siguiente:

Error "El agente admitió la falla de firmar utilizando la clave. Permiso denegado. (Llave pública"

Es posible que reciba este error después de copiar la clave pública al archivo autorizado_keys. Use el siguiente código en la máquina del cliente para solucionarla:

ssh-add

Una vez que todo se ha configurado, ahora debe deshabilitar la autenticación de contraseña en la máquina de su servidor. Esto se hace al entrar en el /etc/ssh/sshd_config archivo en su servidor y configurar el Contraseña a no:

Contraseña Autenticación no

Una vez que establece la autenticación de contraseña en no, si intenta iniciar sesión a través de SSH, debe iniciarse automáticamente. (Tenga en cuenta que no establecí una frase de pases.)

Archivo autorizado_keys

Independientemente del tipo de clave que use (Ej: RSA, ECDSA, etc.), para usar la autenticación basada en la clave, la clave pública generada debe copiarse en el servidor archivo autorizado_keys. Por lo general, si este archivo no existe, el servidor intentará la autenticación de contraseña. Recuerde también que cada clave pública se almacena en una sola línea en el archivo autorizado_keys. También recuerda dar el /.carpeta ssh, las claves privadas/públicas, y la archivo autorizado_keys Los permisos apropiados: usted y usted solo deberían poder meterse con él. Tenga en cuenta que puede copiar la clave pública manualmente en el /.carpeta ssh también, y si se realiza manualmente, los permisos apropiados son una parte importante del proceso.

En el caso de que agregue una segunda clave pública manualmente al archivo autorizado_keys, Termine la línea con un "Newlin"O un regreso. Si no lo hace, pensará que las dos claves distintas son una sola clave, y ninguno funcionará.

El /.directorio ssh debe tener el siguiente permiso:

Chmod 700 ~/.ssh

El archivo autorizado_keys debe tener el siguiente permiso:

Chmod 600 ~/.ssh/autorized_keys

El Llave pública debe tener el siguiente permiso:

Chmod 644 ~/.ssh/id_rsa.pub

La clave privada debe tener el siguiente permiso:

Chmod 600 ~/.ssh/id_rsa

También puede otorgar acceso a otros usuarios a su servidor. Para esto, simplemente obtienes su clave pública y la coloca en el archivo autorizado_keys (en una nueva línea). Este último les otorgará acceso a su servidor.

Por lo general, cuando se configura la autenticación basada en clave, el usuario puede acceder a la máquina remota con comandos completamente funcionales. Sin embargo, puede restringir el acceso a un solo comando que desee utilizando el archivo autorizado_keys. Se llama "comando forzado".

Este es el formato del archivo autorizado_keys Si quieres forzar un comando:


Ex:
Comando = "fecha" ssh-rsa aasasa [...]

En mi ejemplo, coloqué el comando "fecha" frente a la clave pública en el archivo autorizado_keys (ver en la imagen a continuación). El resultado de este comando agregado al archivo autorizado_keys es que solo obtengo la fecha en mi máquina de cliente. El comando que especificó, y solo ese comando se ejecutará o se permite.


La desventaja del comando forzado en el archivo autorizado_keys es que normalmente solo puede poner un comando por clave pública autorizada. Para evitar esto, necesitarás un script bash. Si está tratando con un script bash, utilizará la siguiente notación:

comando =

Supongamos que escribo un guión llamado ssh_script.mierda (Esto es solo un script de ejemplo):

#!/bin/bash
Ps3 = 'Elige tu opción:'
opciones = ("Obtenga la fecha" "hacer un directorio" "hacer un archivo" "salir")
seleccione OPT en "$ opciones [@]"; hacer
caso $ opt en
"Obtenga la fecha")
CurrentDate = 'date +"%y-%m-%d%t"'
Echo $ CurrentDate
;;
"Haz un directorio")
echo "¿Cuál es el nombre del directorio??"
Leer namedir
mkdir $ namedir
;;
"Hacer un archivo")
echo "Ingrese el texto que desea colocar en el archivo"
Lea el texto
echo "nombre del archivo por favor"
leer el nombre de archivo
echo $ text >> $ nombre de archivo
romper
;;
"salida")
echo "Adiós! Te veo de nuevo pronto!"
salida
;;
*) echo "opción inválida $ respuesta" ;;
ESAC
hecho

El siguiente paso es hacer que este archivo sea ejecutable escribiendo lo siguiente:

chmod +x ssh_script.mierda

Tenga en cuenta que si no hace que este archivo sea ejecutable, el proceso lanzará un error! Aquí, colocaría el archivo en el que acaba de crear ~/.ssh as ~/.ssh/ssh_script.mierda, y escriba lo siguiente en el archivo autorizado_key:

Ex:
Comando = ”/home/servidor/.ssh/ssh_script.SH "SSH-RSA AASASA [...]

El resultado es el siguiente:

Cuando el ssh_script.archivo sh (ejecutable) se coloca en el ~/.carpeta ssh (~/.ssh/ssh_script.mierda, y que el archivo autorizado_keys se modifica, debe ver los resultados del script bash en la máquina del cliente (como en la imagen de arriba). Y eso es! Código fácil, ventoso, hermoso!

Autenticación basada en llaves es una forma fácil, rápida y segura de iniciar sesión en su máquina remota utilizando ssh. En particular, el archivo autorizado_keys es de gran utilidad para autenticar al usuario y especificar qué comandos están permitidos por el usuario.

Codificación feliz!