domingo, 17 de abril de 2022

PinePhone - Tow-Boot, como usarlo

En el manual anterior explicamos como se instala Tow-Boot. Ahora es el momento de aprender a usar Tow-Boot, para poder arrancar:

 

1- Arrancar desde la eMMC

2- Arrancar desde la SDcard

3- Arrancar jumpdrive


Nota importante:

=======================

- El PinePhone normal, la secuencia de arranque es, primero lee en la microSD, si no encuentra un sistema operativo, pasa al segundo, la eMMC, ese es el orden de arranque por defecto. Pero cambia el orden cuando se esta usando Tow-Boot
- Se recomienda instalar Tow-Boot en el eMMC
- El PinePhone Pro el SoC la secuencia de arranque es primero la SPI, segundo, la eMMC y tercero la microSD, pero puede variar dependiendo de como lo tengas configurado.

- Si la unidad eMMC o la microSD, ya tienen otro gestor de arranque instalado (u-boot o p-boot), es necesario desinstalarlo o borrarlo, en caso contrario Tow-Boot no funcionará, ya que u-boot o p-boot tienen prioridad en el sistema operativo que está instalado.

=======================

 

1- Arrancar desde la eMMC

Este es el proceso mas sencillo.

Simplemente pulsamos el botón de Encendido durante 2 segundos y esperamos que encienda, arrancará el sistema operativo que tengas instalado en la emmc.

 

Lo proceso que realiza es el siguiente:

Al pulsar el botón de encendido durante 2 segundos el led se enciende de color rojo, y vibrará el teléfono durante medio segundo, ya podemos soltar el botón de encendido, pasado 2 segundos el teléfono vibrará otra vez medio segundo y el led pasará a color naranja, y cuando comienza a cargar el sistema operativo, el led cambiará a otro color o se apagará, todo depende del sistema operativo que tenga instalado. Si el sistema operativo es mobian el led pasará a color verde.

 

 
 

 



2- Arrancar desde la SDcard

Este proceso es un poco mas complejo, pero solo eso, un poco.

Primero pulsamos el botón de bajar volumen o volumen -, (como le quieras decir), sin soltarlo, ahora pulsamos el botón de encendido, y tenemos ambos botones pulsados durante 2 segundos.

 


 

El led enciende de color rojo y el teléfono vibrará medio segundo, acto seguido solo soltamos el botón de encendido.

 


 

y pasados 2 segundos el teléfono vibrará medio segundo y el led pasará a color azul, ya podemos soltar el botón de bajar volumen o volumen - (como le quieras decir)

 


 

Y cuando comienza a cargar el sistema operativo, el led cambiará a otro color o se apagará, todo depende del sistema operativo que tenga instalado. Si el sistema operativo es Mobian el led pasará a color verde.

 




3- Arrancar jumpdrive

Este proceso es un poco mas complejo, pero solo eso, un poco.

Primero pulsamos el botón de subir volumen o volumen +, (como le quieras decir), sin soltarlo, ahora pulsamos el botón de encendido, y tenemos ambos botones pulsados durante 2 segundos.

 


 

El led enciende de color rojo y el teléfono vibrará medio segundo, acto seguido solo soltamos el botón de encendido.

 


 

Pasados 2 segundos el teléfono vibrará medio segundo y el led pasará a color azul, ya podemos soltar el botón de subir volumen o volumen + (como le quieras decir).

 


 

A partir de este momento el teléfono esta siendo usado como una unidad de disco duro.

 

Mucho cuidado donde tocamos que podemos estropear el sistema operativo instalado en la emmc.

 

Este modo de arranque se usa para flashear el sistema operativo en la unidad eMMC. Recordad que al instalar el sistema operativo, este no toca, ni borra la partición Boot del gestor de arranque Tow-Boot.


Para apagar el teléfono pulsamos el botón de encendido 5 segundos, cuando se apague el led, el teléfono ya estará apagado.

 












jueves, 14 de abril de 2022

PinePhone - Tow-Boot, gestor de arranque


 

¿Que es Tow-Boot?

Tow-Boot es un gestor de arranque para los sistemas operativos del smartphone PinePhone.

Actualmente se usa un gestor de arranque llamado u-boot, que el propio sistema operativo se encarga de instalar, actualizar y usar. Y que solo te detecta el sistema operativo instalado, en una de las unidades (eMMC o microSD), usando u-boot tenemos que andar poniendo o quitando la microSD, para seleccionar desde que unidad queremos arrancar. Cosa que no es necesario hacer, usando Tow-Boot.


Lo bueno de Tow-Boot, es que es independiente del sistema operativo, se instala en una partición independiente. Además incorpora el programa jumpdrive, es muy útil para el flasheo de la unidad eMMC del PinePhone.

Una vez instalado se puede usar para flashear cualquiera de las dos unidades que tiene el PinePhone (eMMC y microSD), y no es necesario sacar la microSD del teléfono.

Lo malo es que todavía se encuentra en desarrollo (y tiene contiene fallos) y no funciona al 100% de lo que tiene que hacer, es decir en el PinePhone normal, si instalas Tow-Boot en la eMMC, funciona muy bien, menos cuando tienes un sistema operativo en la microSD que usa el gestor de arranque u-boot, entonces es la microSD quien manda y gestiona el arranque.

Para que funcione al 100% Tow-Boot, necesita que los sistemas operativos no usen un gestor de arranque propio, como por ejemplo u-boot o p-boot.

Nota importante:

=======================

- El PinePhone normal, la secuencia de arranque es, primero lee en la microSD, si no encuentra un sistema operativo, pasa al segundo, la eMMC, ese es el orden de arranque por defecto.

- Se recomienda instalar Tow-Boot en el eMMC

- El PinePhone Pro el SoC la secuencia de arranque es primero la SPI, segundo, la eMMC y tercero la microSD, pero puede variar dependiendo de como lo tengas configurado.

=======================


En este manual vamos a centrarnos en el PinePhone normal.

 

Comunicado oficial de Mobian: Instalar Tow-Boot

A partir del 3 de abril de 2022, las imágenes y los instaladores de Mobian ya no contienen el cargador de arranque u-boot específico del dispositivo, por lo que los usuarios deben instalar tow-boot en su dispositivo en caso de que aún no se haya instalado un cargador de arranque. Esto debe hacerse antes de flashear Mobian.

Fuentes oficiales del comunicado:

https://wiki.mobian-project.org/doku.php?id=install-linux

https://wiki.mobian-project.org/doku.php?id=tow-boot



Proceso de instalación de Tow-Boot

El proceso es muy simple y sencillo. Consta de tres partes:

  • Descargar firmware
  • Flashear el firmware a una tarjeta microSD 
  • Instalar el gestor Tow-Boot.


Descargar el firmware

Primero nos bajamos el firmware correspondiente para nuestro pinephone, desde la web oficial, recordar que el pinephone normal esta identificado como: pine64-pinephoneA64 y el SoC es allwinner-a64, entonces tenemos que descargarnos el siguiente firmware: pine64-pinephoneA64-2021.10-004.tar.xz

Nos descargamos el firmware en formato tar.xz, es decir comprimido, lógicamente lo descomprimimos y nos crea una carpeta con el siguiente nombre: pine64-pinephoneA64-2021.10-004. Dentro encontramos los dos firmware que podemos usar:

- mmcboot.installer.img (tamaño 27 MB, para la eMMC)

- shared.disk-image.img (tamaño 5 MB, para la microSD)

 

En este manual usaremos: mmcboot.installer.img



Flashear el firmware a una tarjeta microSD

flashearemos mmcboot.installer.img en una tarjeta microSD que sea igual o mas grande 50 MB, pues ocupa muy poco espacio. En este otro manual explico como se hace

En este blog recomendamos usar el programa balena etcher o gnome disk para el flasheo del sistema operativo.





Instalar el gestor de arranque Tow-Boot

Una vez tenemos el instalador de Tow-Boot en la microSD, la colocamos en el teléfono.

 

 


Y encendemos el teléfono.

Pulsamos el botón de encendido un par de segundos, vibrará ligeramente y el led debe estar de color rojo, después de medio segundo el led cambia a color naranja, y poco después sale la pantalla del instalador de Tow-Boot.




NOTA MUY IMPORTANTE:

=========================
1- No es necesario ni obligatorio borrar la información de la eMMC o la microSD, para flashear, pues no toca la información de la partición rootfs, solo añade y modifica la partición Boot.

2- Si la unidad eMMC o la microSD, ya tienen otro gestor de arranque instalado (u-boot o p-boot), es necesario desinstalarlo o borrarlo, en caso contrario Tow-Boot no funcionará, ya que u-boot o p-boot tienen prioridad en el sistema operativo que está instalado.
=========================


Como estamos instalado Tow-Boot en el PinePhone normal (A64), y hemos flasheado el instalador de eMMC, logicamente, pulsamos en: 

Install Tow-Boot to eMMC Boot


======================
Nota importante:
Para borrar el contenido de la partición de arranque (por si tienes instalado u-boot o p-boot), puedes pulsar en: Erase eMMC Boot content antes de pulsar en Install Tow-Boot to eMMC Boot
======================

 



Nos aparece la siguiente pantalla en la cual pulsamos en Start installation




Observamos como se va instalando (este proceso es rápido)


 
 

 



Una vez finalizada, nos informa que se ha instalado correctamente. La pantalla pasa de color azul a verde.

 



Ahora nos queda apagar el teléfono. Pero para no tocar el botón de encendido. Pulsamos en: Go back the menu (Regresar al menú principal)



Por último pulsamos en Power off y esperamos a que el teléfono se apague.


Retirar la tarjeta microSD

Ahora solo nos queda retirar la tarjeta microSD, en caso contrario, cuando encendamos el teléfono, nos volverá a aparecer el menú de instalación.

Recordar que Tow-Boot, para funcionar necesita de sistemas operativos que no inistalen un gestor de arranque.

Si usaís una microSD que contenga un gestor de arranque (Esto solo pasa en el PinePhone normal (A64)), como puede ser Manjaro plasma mobile, el instalador de Tow-Boot, etc... 

Entonces Tow-Boot no tendrá el control de la microSD, y entonces arrancará desde la microSD. 

 

Problemas conocidos en esta versión de Tow-Boot

Esta es una mini lista de problemas experimentados y conocidos al momento de escribir, este manual:

- Hay veces que mobian no arranca correctamente, queda atascado en la pantalla negra, el led de notificación sigue encendido, lo que indica que el kernel no pudo montar rootfs.
- Hay veces que el sistema operativo no regresa de la suspensión, ya sea que el teléfono esté en la pantalla de bloqueo (sin ingresar datos) o que las aplicaciones no se despierten de la suspensión.

 

Observación: Recordar que estamos usando un sistema operativo que en el momento de escribir este manual esta en versión: Desarrollo. Esto significa que tiene fallos y errores, unos conocidos y otros sin conocer.

 

Próximo manual: Como usar Tow-Boot

El siguiente manual es: como usar Tow-Boot, para seleccionar la unidad de arranque (eMMC o microSD). 









lunes, 4 de abril de 2022

PinePhone - varios usuarios, cambio de usuario

Una de las características de los sistemas operativos GNU/Linux en el smartphone PinePhone, es poder usar el teléfono varios usuarios distintos, cada una con su nombre, su contraseña, y sus datos personales.

Después de muchas pruebas, lo conseguí usando gdm3

 




Dar de alta un nuevo usuario

Damos de alta nuevo usuario desde la consola usando el siguiente comando: (cambia diego por tu nombre)

sudo adduser diego

Durante el proceso de creación nos pide que introduzcamos la contraseña del nuevo usuario.

 

Muy importante: 

Recordar que el nuevo usuario no es administrador, y por tanto no puede instalar ni desinstalar programas, y algunas cosas mas. Aunque si te interesa puedes darle permiso de administrador.


Una vez creado el usuario procedemos a instalar gdm3

 

Instalar gmd3

Actualizamos la lista de paquetes del repositorio usando el siguiente comando:

sudo apt update

ahora procedemos a instalar gdm3, usando el siguiente comando:

sudo apt install gdm3

Una vez instalado,No es necesario reiniciar el teléfono, y no te desesperes que tarda un poco en aparecer la pantalla de gdm3, pero aparece como puedes ver en las imágenes siguiente.

 

Cuando llegue a la pantalla gdm3 verá los dos usuarios, la pantalla táctil funciona normalmente. Seleccionas el nuevo usuario, que para eso lo hemos creado. en la parte inferior debemos seleccionar el entorno de escritorio phosh.

 

Y para que aparezca el teclado arrastras con el dedo de abajo hacia arriba.
y disfruta del nuevo usuario.





 

=========================

Solución a un pequeño Error

He encontrado un pequeño error en el uso de gdm3. Cuando enciende el teléfono, apenas tiene tiempo para ver la pantalla gdm3.

La solución que he encontrado ahora mismo es la siguiente:
Entras con el usuario por defecto, el primero de tu lista. En mi caso es mobian como podéis ver en la primera foto que me ha pasado.

Cuando estés con ese usuario, habres a una consola de comandos y usas el siguiente comando:

sudo systemctl reiniciar gdm3

y se soluciona hasta el próximo reinicio del teléfono.

Puedes salir y cambiar de usuario tantas veces como quieras, gdm3 solo fallará al iniciar el teléfono. pero ya tenemos una solución.

Que lo disfrute quien quiera usarlo. 

==============================

 

Nota muy importante

Los sistemas operativos para el smartphone PinePhone están en proceso de desarrollo (en el momento de escribir este manual). Esto quiere decir que con el tiempo, no pasará mucho, en el que los desarrolladores implementen bien el login, y no sea necesario usar el gdm3. Pero de momento algo es algo.

 

 

 

 

 

 

sábado, 2 de abril de 2022

PinePhone - ssh en mobian y manjaro

SSH (Secure Shell)

¿que es SSH?

SSH es un protocolo de red que permite establecer una comunicación a través de un canal seguro entre un cliente local y un servidor remoto.

SSH se basa en la arquitectura cliente/servidor. El puerto por defecto por el que escucha peticiones de conexión es el TCP 22.

Con SSH por defecto accedemos a la interfaz de línea de comandos (CLI) de la máquina remota (servidor), y podemos ejecutar aplicaciones gráficas remotas, si se está ejecutando un servidor X en el equipo remoto y transferir archivos (subir o descargar) entre el cliente y el servidor, todo ello a través de un canal cifrado.

SFTP (SSH File Transfer Protocol o Protocolo de transferencia segura usando ssh) es un protocolo que permite la transferencia, descargas y manipulación de archivos a través de una conexión cifrada con SSH.

SCP (Secure Copy o Copia Segura) es un protocolo seguro para transferir archivos a través de SSH. SCP sólo implementa la transferencia de archivos, pues la autenticación requerida es realizada a través de SSH.


 OpenSSH 

OpenSSH (Open Secure Shell), es un protocolo de conexión segura (Secure Shell), y consta de un cliente SSH y del servidor SSH, para realizar comunicaciones cifradas de extremo a extremo.


OpenSSH consta de las siguientes herramientas
  • Las operaciones remotas se realizan mediante ssh , scp , y sftp
  • Gestión de llaves con ssh-add, ssh-keysign, ssh-keyscan, y ssh-keygen
  • El lado del servicio consiste en sshd, sftp-server, y ssh-agent

OpenSSH es desarrollado por unos pocos desarrolladores del Proyecto OpenBSD y puesto a disposición bajo una licencia tipo BSD.

El paquete servidor llamado: openssh-server proporciona el demonio sshd que permite a los clientes ssh, scp y sftp establecer conexiones seguras.

El paquete cliente llamado: openssh-client proporciona los clientes de ssh, scp y sftp, los programas: ssh-agent y ssh-add para hacer más cómoda la autenticación de clave pública, y las utilidades: ssh-keysing, ssh-keyscan, ssh-keygen.

OpenSSH incluye servicio y clientes para los protocolos SSH, SFTP y SCP.

     

Instalación del servidor y del cliente en Debian,  Mobian y derivados

OBSERVACIÓN: 

- Abrimos una consola de comandos y nos logeamos como usuario administrador usando el comando: su
-
O como usuario normal anteponiendo el comando: sudo, todo depende de como tengas configurado tu sistema operativo Debian GNU/Linux.




Antes de comenzar la instalación de cualquier paquete, recomendamos actualizar los repositorios, usando el siguiente comando:


$ sudo apt update

A continuación procedemos a la instalación de los paquetes correspondientes al servidor (openssh-server) y al cliente (openssh-client). Aunque realmente en el móvil solo he instalado el servidor (openssh-server)

$ sudo apt install openssh-server openssh-client

En Debian, Mobian y derivados, no es necesario realizar ninguna acción mas. Una vez instalado podemos conectarnos a nuestro servidor Mobian (PinePhone) con el usuario normal (no root) y con la contraseña del usuario normal (no root), por defecto el usuario root esta deshabilitado, y por defecto se usa el puerto TCP 22.

En Mobian, por defecto después de instalar, el servicio sshd esta en ejecución y está habilitado en el arranque.

Muestra del proceso de instalación en Mobian

 

 


 


 

 

Muestra del proceso de instalación en Manjaro Plasma Mobile

 

 



 

Comprobar que el servidor SSH está iniciado

Si la instalación fue exitosa, ahora tenemos el servicio sshd instalado en el servidor.
Para asegurarnos que el servidor esta en funcionamiento, ejecutamos el siguiente comando:

$ systemctl status sshd

 





Arrancar, Reiniciar y para el servidor

- Cuando instalamos el servidor ssh, en algunos sistemas como manjaro plasma mobile, el servidor ssh se encuentra parado, tenemos que arrancarlo para que funcione.

- Algunas veces tendremos que reiniciar el servidor, por ejemplo cuando realicemos cambios en la configuración de sshd.

- Alguna vez necesitaremos parar el servidor, para que nadie se conecte.

Para arrancar el servidor usamos el siguiente comando:

$ sudo systemctl start sshd

Para reiniciar el servidor usamos el siguiente comando:

$ sudo systemctl restart sshd

Para parar el servidor usamos el siguiente comando:

$ sudo systemctl stop sshd 

 

 


Habilitar el servicio sshd en el arranque

Para que funcione el servidor ssh, es necesario habilitar el servicio sshd, en mobian por defecto ya viene habilitado, pero en manjaro plasma mobile, no viene habilitado.
Entonces para habilitar el servicio sshd en el arranque, usamos el siguiente comando:

$ sudo systemctl enable sshd

A partir de este momento, cada vez que enciendas el teléfono con mobian, manjaro, etc.. ya tendremos habilitado el servidor ssh.

 


 

 

Como conectarnos al servidor desde un pc

Abrimos una consola de comados en el cliente, y usamos el siguiente estructura del comando ssh:


$ ssh usuario@conexión_al_servidor puerto_de_conexión
  • ssh = es el protocolo que usamos para realizar la conexión
  • usuario = es el usuario que hemos dado de alta. En la multiimagen de 15 sistemas operativos de prueba. En Mobian el usuario por defecto es: mobian.  Y en manjaro el usuario, es definido por el propio usuario.
  • @ = hacia donde se realiza la petición.
  • conexión_al_servidor = Se usa la IP, o el dominio, o subdominio, etc. del servidor.
  • puerto_de_conexión = por defecto es el 22 si se omite se usa el 22, si lo hemos cambiado se tiene que declarar con el parámetro -p y el numero del puerto de conexión que hemos definido en el fichero sshd_config

Como sabemos cual es la dirección IP que tenemos actualmente en el móvil.

Hay muchos métodos, pero nosotros vamos a usar el comando: nmcli

el nos va a mostrar de forma muy clara, cual es nuestra IP.


 

nmcli en Mobian

 


nmcli en Manjaro plasma mobile

 



Recordemos que el parámetro -p numero se usa para indicar el puerto de conexión, en caso contrario, si no se especifica el parámetro -p numero significa que esta haciendo uso del puerto por defecto: 22 


ejemplo usando el puerto por defecto:

$ ssh mobian@192.168.1.19

ejemplo un puerto personalizado:

$ ssh mobian@192.168.1.19 -p 123456

 

 =================================================

Conexión desde pc a Mobian






 =================================================


Conexión desde pc a Manjaro plasma mobile

 




 

Vamos a conectarnos a SSH usando el explorador de archivos

Podemos conectarnos de forma gráfica, usando un gestor de archivos, como en este blog usamos KDE Plasma, vamos a realizar este manual usando, el gestor de archivos Dolphin, aunque se puede utilizar cualquier gestor de archivos que soporte el protocolo SFTP.

Si estas usando windows 10, la consola de microsoft ya soporta de forma nativa el protocolo del cliente OpenSSH, y para conectarte de forma gráfica puedes usar el programa: Filezilla. En versiones anteriores a windows 10 no tiene soporte para usar OpenSSH, y tienes que usar un programa, como por ejemplo PuTTy, para poder conectarte al servidor SSH.



Conectarnos desde el explorador de archivos Dolphin

Abrimos Dolphin y en el lateral izquierdo pulsamos en Red


 
Ahora hacemos clic en Añadir carpeta de red
 


 
En el asistente que nos sale, hacemos clic en Shell segura (ssh)



 
Rellenamos los siguientes apartados:
  • Nombre: Nombre del dispositivo al que nos vamos a conectar, (puedes poner lo que quieras)
  • Usuario: el nombre de usuario que este dado de alta en el sistema, en este caso es: mobian
  • Servidor: indicamos la dirección IP, o el dominio, etc.
  • Puerto: por defecto es el 22, lo cambiamos al puerto que definamos en la configuración de sshd_config
  • Protocolo: usamos sftp
  • Carpeta: para el pinephone (actualmente en desarrollo) os aconsejo usar la raiz: / para poder reparar cualquier fallo o error. Cuando sea estable os aconsejo usar vuestro home: /home/mobian
  • Codificación: Dejamos por defecto- Unicode (UTF-8), para no tener problemas con el mapa caracteres del teclado en el servidor.

Por ultimo pulsamos en Guardar y conectar




Si todo es correcto nos pedirá la contraseña del usuario

 

 



Si la conexión ha sido exitosa, estaremos viendo las carpetas y ficheros de nuestro teléfono PinePhone.

 



Configuración del servidor

El servidor y el cliente ssh, tiene los siguiente archivos de configuración:


- /etc/ssh/sshd_config: Archivo de configuración del servidor SSH. 
- /etc/ssh/ssh_config: Archivo de configuración de los clientes SSH. 
- ~/.ssh/config: Archivo personal de cada usuario. Contiene la configuración utilizada por los clientes SSH. Permite al usuario local utilizar una configuración distinta a la definida en el archivo /etc/ssh/ssh_config. 
- ~/.ssh/known_hosts: Archivo personal de cada usuario. Contiene las firmas digitales de los servidores SSH a los que se conectan los clientes. Cuando éstas firmas cambian, se pueden actualizar ejecutando el comando ssh-keygen -R, pasando el nombre del anfitrión o la IP del anfitrión como argumento. Este comando elimina la entrada correspondiente en el archivo ~/.ssh/known_hosts y, permite añadir de nuevo al anfitrión con una nueva firma digital.

El comando para actualizar las nuevas firmas del servidor ssh:

$ ssh-keygen -R nombre_o_ip_del_servidor_SSH
 
- ~/.ssh/authorized_keys: Archivo personal para cada usuario. Contiene los certificados de los clientes SSH, para permitir autenticación hacia servidores SSH sin requerir contraseña.


     

Configuración de algunos parámetros del servidor (sshd_config)

Para ello, editaremos el fichero de configuración /etc/ssh/sshd_config.

MUY IMPORTANTE: 

1- Antes de realizar cualquier cambio se recomienda hacer una copia de seguridad del archivo /etc/ssh/sshd_config, usando el siguiente comando:

 

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.copia

 

 2- Las líneas que comienzan por el simbolo # siginifica que no se usan, es como si no estuvieran en el archivo. Para hacer uso de dicha línea le borramos el simbolo #

3- Editaremos el archivo /etc/ssh/sshd_config con el editor de texto plano llamado: nano, presente en casi todas las distribuciones Linux:

$ sudo nano /etc/ssh/sshd_config

Editaremos y modificamos el fichero de configuración por defecto, según nuestras necesidades.

 

A continuación mostraremos algunos parámetros para saber configurar el servidor ssh, para mas información os aconsejo leer el manual oficial:

1- Port 

El servicio SSH escucha por el puerto 22. El parámetro por defecto es:

#Port 22

Es lo primero que tenemos que hacer, cambiar el puerto de conexión por defecto del TCP 22 a otro preferiblemente entre el 1024 y 65535. Ya que los atacantes buscán servidores que estén escuchando por el puerto 22. Cambiar de puerto disminuye considerablemente la posibilidad de una intrusión. En nuestro ejemplo, configuraremos el servidor para que escuche por el puerto 65432:

Port 65432

2- ListenAddress

El servicio SSH por defecto acepta peticiones a través de todas las direcciones IP correspondientes a todas las interfaces de red del sistema. El parámetro por defecto es:


#ListenAddress 0.0.0.0
#ListenAddress ::


En nuestro ejemplo, configuramos el servidor para que acepte peticiones de la red con IP 192.168.1.0, a la cual sólo se puede acceder desde la red local:

ListenAddress 192.168.1.19

3- HostKey

El parámetro HostKey indica la ubicación de las llaves públicas para el servidor sshd, para el protocolo SSHv2 de SSH. 

 

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
 

4- Logging

El registro de eventos del servicio es importante así como la ruta donde guardarlos, un atacante experimentado intentará limpiar los logs para evitar ser atrapado.
En este parámetro se especifica el registro de eventos:

- SyslogFacility especifica el tipo de registros que genera, en este caso es AUTH, es decir, de las autenticaciones que se hacen contra el servidor. El parámetro AUTH es el predeterminado.


- LogLevel el parámetro por defecto es INFO.


#SyslogFacility AUTH
#LogLevel INFO
 

5- LoginGraceTime

En este parámetro establece el tiempo, en segundos, durante el cual la pantalla de login estará disponible para que el usuario introduzca su nombre de usuario y contraseña, si no lo hace durante ese período de tiempo el login se cerrará, evitando así dejar por tiempo indeterminado pantallas de login sin que nadie las use, o que alguien este intentando mediante un script adivinar un usuario y su contraseña. Si el valor es 0, no hay límite de tiempo para que un usuario se autentique, lo cual no es recomendable ya que de esta forma un atacante podría utilizar ataques de fuerza bruta o usando métodos de diccionario para adivinar la contraseña, por lo tanto no es recomendable dejar esta directriz a 0.

#LoginGraceTime 2m

6- PermitRootLogin

Este parámetro es el mas importante, y aconsejo dejarlo tal cual para asegurar nuestro servidor SSH. En los sistemas operativos Linux se crea por defecto el usuario root, lo que implica que ya conocemos la existencia de al menos un usuario, con privilegios de administrador. Muchos ataques de fuerza bruta se concentran en atacar al usuario root con la esperanza de que el usuario root este habilitado y tenga una contraseña débil.
Sabiendo una parte de la ecuación (root) solo será cuestión de tiempo para que alguien con paciencia vulnere el sistema. Por tanto este parámetro es recomendable dejarlo por defecto (sin acceso root).
Al denegar el acceso al usuario root, cada vez que necesitemos realizar tareas administrativas, accederemos como un usuario normal y una vez dentro, utilizando alguno de los comandos su o sudo podremos realizar dichas tareas administrativas. Por lo tanto, denegando el acceso al usuario root, el atacante tendrá que averiguar tanto el nombre de un usuario del sistema como su contraseña, algo que dificulta mucho mas una posible intrusión al sistema

#PermitRootLogin prohibit-password
 

7- StrictModes

En este parámetro se establece que sshd revisara los modos y permisos de los archivos de los usuarios y el directorio $home de el usuario antes de aceptar la sesión. Esto es normalmente deseable porque a veces algunos usuarios dejan sus directorios, accidentalmente, con permiso de escritura para cualquiera. El valor predeterminado es yes, por lo tanto, lo dejaremos con su valor predeterminado.

#StrictModes yes
 

8- MaxAuthTries

Este parámetro establece el número máximo de intentos de conexión permitidos, es decir, la cantidad de veces que podemos equivocarnos al ingresar el usuario y/o contraseña. Una vez que los intentos alcanzan la mitad de este valor, las conexiones fallidas siguientes serán registradas. Después del máximo número de intentos se cerrará la conexión. Es posible volver a intentarlo, pero el límite de intentos por vez evita ataques basados en la persistencia de la conexión.

#MaxAuthTries 6
 

9- PubkeyAuthentication

Este parámetro se usa para autenticación por medio de la llave pública. Por defecto esta desactivado.

#PubkeyAuthentication yes
 

10- AuthorizedKeysFile

Este parámetro se usa junto con la autenticación por llave pública, y especifica donde se guardaran las llaves en el servidor. El valor por defecto es ~/.ssh/authorized_keys 


#AuthorizedKeysFile     .ssh/authorized_keys .ssh/authorized_keys2
 
 

11- IgnoreUserKnownHosts

Este parámetro especifica si se ignorara o no el uso de el archivo ~/.ssh/known_hosts en el cual se agregan las llaves de los servidores SSH a los cuales nos conectamos y confiamos. Por lo tanto debe de estar indicado en: no para no ignorar este archivo.

#IgnoreUserKnownHosts no
 
 

12- IgnoreRhosts

Este parámetro deniega el uso de relaciones de confianza establecidas en los ficheros ~/.rhosts y ~/.shosts de los usuarios:

#IgnoreRhosts yes
 

13- PasswordAuthentication

El parámetro PasswordAuthentication habilita o deshabilita la autenticación por contraseñas. Por defecto está permitida la autenticación con contraseña. Si establecemos el valor: no, sólo se permitirá el acceso a través de firmas digitales. Es muy importante no cambiar el valor de este parámetro, sin antes haber instalado nuestra firma digital.

#PasswordAuthentication yes

14- PermitEmptyPasswords

El parámetro PermitEmptyPasswords especifica si se permite el uso de contraseñas vacías, es decir, autenticarse sin contraseña (no recomendable por motivos de seguridad). Este parámetro se usa conjuntamente con PasswordAuthenticacion yes.

#PermitEmptyPasswords no
 

15- UsePAM

Este parámetro, es para conectarnos como un usuario normal no como root.

#UsePAM yes
 
 

16- AllowTcpForwarding

Este parámetro permite hacer redireccionamiento de protocolos basados en TCP. Permite crear túneles a conexiones de protocolos no seguros, enviando la información en texto plano por un túnel cifrado. Muy usada en conexiones POP3 o IMAP.

#AllowTcpForwarding yes
 
 

17- Aplicaciones gráficas

El parámetro X11Forwarding establece si se permitirá la ejecución remota de aplicaciones gráficas que utilicen el servidor X11. Es necesario que el valor esté establecido a yes para poder ejecutar aplicaciones gráficas.

#X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
 
 

18- PrintMotd

El parámetro PrintMod establece si se presentará o no el mensaje de bienvenida, de indicación, etc.. (MOTD). El motd es un archivo que contiene un mensaje que se muestra a todos los usuarios que se conectan a la máquina por línea de comandos (CLI). Normalmente se usa para informar a los usuarios sobre el estado del servidor o simplemente para dar la bienvenida a la máquina. La ruta al archivo es /etc/motd.

Se trata de un archivo de texto plano el cual podemos personalizar. Hay que tener en cuenta que si el motd ya está habilitado para los usuarios del sistema, si lo habilitamos en /etc/ssh/sshd_config, al iniciar sesión en el servidor SSH, este aparecerá duplicado. El motd se muestra justo al aceptar nuestra conexión en el servidor.

En este otro manual explico como personalizar el motd

PrintMotd no
 

19- PrintLastLog

Este parámetro especifica si se mostrara un mensaje mostrando la dirección IP de donde se conecto el usuario la ultima vez. Muy útil para saber si alguien más se está conectando con un usuario en especifico.

#PrintLastLog yes

20- TCPKeepAlive

Este parámetro se usa para enviar al servidor sshd mensajes de que no hay inactividad.

#TCPKeepAlive yes
 
 

21- ClientAliveInterval

Este parámetro indica el intervalo de tiempo en segundos en el cual después de que no se ha recibido ninguna petición/dato/comando desde el cliente, entonces sshd enviara un mensaje a través del canal cifrado, esperando una respuesta de el cliente, en caso de no responder se cierra la conexión con el cliente. El valor predeterminado es 0, el cual significa que no se envía tal mensaje. 

 

#ClientAliveInterval 0
 
 

22- ClientAliveCountMax

Este parámetro indica las veces que el servidor sshd enviará mensajes cuando el cliente está inactivo. Si el cliente no envía ninguna respuesta, entonces el servidor terminara la conexión y por lo tanto la sesión. Si tenemos conexiones intermitentes es recomendable subir el numero a este valor. Hay que tener en cuenta que esta opción es diferente a la opción TCPKeepAlive, estos mensajes son enviados a través de el canal cifrado.
 
#ClientAliveCountMax 3
 

23- UseDNS

Cuando un cliente SSH realiza una conexión hacia un servidor SSH, el servidor intentará resolver la dirección IP del cliente. Si el servidor DNS predeterminado del sistema carece de una zona de resolución inversa que resuelva un nombre para la dirección IP del cliente, la conexión se demorará algunos segundos más de lo normal. Podemos deshabilitar esta directriz para agilizar las conexiones SSH en redes donde, se carece de servidores DNS que tengan zonas de reenvío para resolver los nombres o zonas de resolución inversa para resolver las direcciones IP de los segmentos de red local. En nuestro ejemplo lo dejaremos desactivado.

#UseDNS no
 

24- PidFile

Este parámetro establece el nombre y ruta del archivo donde se guarda el identificador de proceso (pid) de sshd.

#PidFile /run/sshd.pid
 
 

25- MaxStartups

Este parámetro establece el máximo número de conexiones simultaneas de login que permitirá el servidor SSH por cada IP que intente conectarse. Hay ataques muy efectivos que dividen el ataque en una gran cantidad de conexiones de login. Es decir, el atacante divide en una gran cantidad de logins los intentos por ingresar, aumentando sus posibilidades de adivinar antes al usuario y su contraseña.

#MaxStartups 5

También podemos utilizar la siguiente sintáxis:

#MaxStartups 10:30:100

Donde:
10: Número de conexiones no autenticadas antes de comenzar a caer.
30: Porcentaje de probabilidad de caer una vez que llegamos a 10.
100: Número máximo de conexiones en las que comenzamos a caer.
 
 

26- Banner

Este paŕametro presenta un banner de acceso que nos permitirá mostrar un mensaje antes de la autenticación. Por ejemplo: Enseñar un cartel de advertencia exponiendo temas legales de un acceso no autorizado.
El banner de acceso no es más que el contenido de un fichero de texto plano ubicado en algun lugar del servidor (por ejemplo: /etc/ssh/ssh_pre-login) que podremos personalizar a nuestro gusto. El banner de acceso se presenta antes de autenticarnos en el servidor.

#Banner none
 
Banner /etc/ssh/ssh_pre-login