====== Topic 110: Security ====== Perteneciente a [[informatica:certificaciones:lpic:lpic-1|LPIC-1]] Se explican los buenos usos en seguridad, la integridad del sistema, los virus, los rootkits, los límites, las actualizaciones, la seguridad de la red y de los servicios, el firewall, GPG y los derechos **sudo**. * [[informatica:certificaciones:lpic:lpic-1:110_security:110.1_perform_security_administration_tasks|110.1 Perform security administration tasks]] (3) * [[informatica:certificaciones:lpic:lpic-1:110_security:110.2_setup_host_security|110.2 Setup host security]] (3) * [[informatica:certificaciones:lpic:lpic-1:110_security:110.3_securing_data_with_encryption|110.3 Securing data with encryption]] (4) ===== Ejercicios ===== **NOTA: Este ejercicio se puede completar usando cualquier máquina virtual existente** **Adjuntar capturas de pantalla para ver los resultados** **PARTE I: Configure la seguridad del host - Evite los inicios de sesión** **1. Cree un nuevo usuario en su sistema (usando valores predeterminados) llamado 'testuser'.** Para la realización de los ejercicios, se usarán máquinas virtuales con Debian 11. Creamos el usuario ''testuser'' de la siguiente manera: useradd testuser Los valores predeterminados podemos consultarlos en el fichero ''/etc/default/useradd'' Podríamos haberlo creado con la herramienta ''adduser'': useradd testuser **2. Mostrar el shell de inicio de sesión predeterminado para la cuenta 'testuser' en el archivo apropiado.** Podemos revisar el contenido del fichero ''/etc/passwd'' y filtrar por dicho usuario para ver qué shell se le ha establecido: cat /etc/passwd | grep -i testuser Podemos confirmar que se trata de ''/bin/sh'' **3. Establezca una contraseña para ese usuario y asegúrese de que la cuenta pueda iniciar sesión en el sistema.** De la forma que creamos el usuario ''testuser'', no se le ha asignado una contraseña, por lo que no podrá iniciar sesión en el sistema. Para establecer una contraseña, siendo root, ejecutamos: passwd testuser Le ponemos una contraseña y la confirmamos. Si volviésemos al fichero ''/etc/shadow'' veríamos que ahora sí tiene una contraseña. cat /etc/shadow | grep -i testuser Ya podemos entrar en el sistema: Podemos apreciar un aviso en la captura anterior porque al crear el usuario no le hemos indicado un directorio personal, así que entra en ''/''. **4.Cambie el shell de inicio de sesión predeterminado para que el usuario testuser ya no puedan iniciar sesión.** En el caso de Debian 11, podemos elegir como shell ''/usr/sbin/nologin'' lo cual hará que el usuario no pueda iniciar sesión en el sistema: usermod -s /usr/sbin/nologin testuser **5. Verifique que el usuario ahora no pueda iniciar sesión en el sistema.** No puedo registrar una captura porque en el momento en que inicio sesión con este usuario, el sistema me echa y vuelve al inicio de sesión. **PARTE II - Seguridad en la conexión y el cifrado de datos** **NOTA: Este ejercicio puede completarse con cualquier máquina virtual disponible, sin embargo, se recomienda que tenga dos instancias separadas para probar en este y en el laboratorio relacionado en esta sección.** **1. Instale el servicio ssh en ambas máquinas** Las dos máquinas tienen instalado Debian 11, y están configuradas con las siguientes IPs: * maquina1: 192.168.0.19/24 * maquina2: 192.168.0.4/24 El servidor SSH se instala con: apt install ssh Verificamos que esté en funcionamiento: systemctl status sshd.service **2. Cree en cada máquina virtual dos usuarios nuevos que se utilizarán para iniciar sesión en el sistema local a través de SSH. Por simplicidad, configure sus contraseñas iguales al nombre de usuario.** Esta vez, por comodidad y para ver una alternativa, usaremos el comando ''adduser'': adduser fulanito adduser menganito **3. Inicie sesión ssh como cada usuario en cada máquina (es decir, ''ssh -l usuario localhost'') para que se creen los archivos de hosts conocidos apropiados.** En cada una de las dos máquinas ejecutamos: ssh -l fulanito localhost ssh -l meganito localhost **4. Utilizando uno de los usuarios creados, genere un par de claves públicas / privadas de RSA y DSA y añádalas en su archivo de salida. Utilizando el segundo usuario, genere AMBAS claves públicas / privadas RSA y DSA; sin embargo, durante la generación, que los archivos se llamen "RSAPair" y "DSAPair".** Con fulanito, para crear el par de claves RSA: ssh-keygen -t rsa Otro par de claves, pero usando DSA: ssh-keygen -t dsa Con menganito haremos lo mismo, pero especificaremos el nombre de las claves por **RSAPair**: ssh-keygen -t rsa Y **DSAPair**: ssh-keygen -t dsa **5. Usando uno de los usuarios creados anteriormente, copie la clave pública generada en la maquina1 a la otra 2 usando el comando apropiado.** fulanito@maquina1: $ ssh-copy-id -i $HOME/.ssh/id_rsa.pub fulanito@maquina2 **6. Usando el segundo usuario creado anteriormente, copie la clave pública generada en la maquina 2 a la 1 usando el comando apropiado (recordando que generó un archivo de clave que no usa el nombre predeterminado).** menganito@maquina2: $ ssh-copy-id -i $HOME/.ssh/RSAPair.pub fulanito@maquina2 **7. Ubique las claves en el sitio adecuado de cada máquina respectiva, y pruebe a conectarse sin necesidad de introducir la contraseña** Las claves públicas se instalaron en el fichero ''authorized_keys'' de cada usuario ubicado en ''$HOME/.ssh''. Por ejemplo, este es el contenido de ''/home/menganito/.ssh/authorized_keys'': IMAAAAAAAAAGEN Desde la máquina 1 accedemos a la máquina 2 con el usuario fulanito: IMAAAAAAAAAAAGEN No nos ha pedido contraseña. Ahora probamos con el usuario menganito de la máquina 2. Como le dimos un nombre a las claves diferente al habitual, se lo tenemos que indicar a la hora de establecer la conexión: ssh -i ~/.ssh/RSAPair menganito@192.168.0.19 Hemos accedido sin introducir la contraseña. ===== Tests ===== **Which command would you use to become root so that you would NOT inherit the settings from root's user scripts on login?** * ''su'' (**Solución**) * ''sudo su -'' * None of the Above * ''su -'' ¿Dónde viene explicado esto? **Which Gnu Privacy Guard command would you use to generate a new public and private key to use for encrypting and exchanging files with a third party?** * ''gnupg %%--%%key'' * ''gpg %%--%%gen-key'' (**Solución**) * ''gpg %%--%%key'' * ''gnupg %%--%%gen-key'' **Which of the following files is the default SSH configuration file?** * ''/etc/ssh.conf'' * ''/etc/sshd/sshd_config'' (**Solución**) * ''/etc/sshd.conf'' * ''/etc/sshd/ssh_config'' **Which of the following key types is generated by default with the command 'ssh-keygen'?** * None of the Above * SHA256 * DSA * RSA (**Solución**) **Which of the following services can be configured to manage other services in an 'on demand' capacity?** * ''service'' * None of the Above * ''systemctl'' * ''xinetd'' (**Solución**) ¿Dónde viene explicado esto?