====== 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?