Markdown

# Bitácora de Aprendizaje: Hardening y Administración de Ubuntu Server 22.04

**Perfil:** SysAdmin & Ciberseguridad

**Entorno:** Ubuntu Server 22.04 LTS (CLI)

---

1. Configuración Inicial y Supervivencia

Comandos de Emergencia

* `sudo !!`: Ejecuta el último comando fallido añadiendo `sudo` al principio.

Actualización del Sistema

* **Comando:** `sudo apt update && sudo apt upgrade -y`

* **Explicación:** Actualiza lista de repositorios y paquetes instalados.

Alias de Productividad (`~/.bashrc`)

Para no repetir comandos largos, añadimos alias al archivo de configuración de bash.

```bash

nano ~/.bashrc

# Añadir al final:

alias c=‘clear’

alias update=‘sudo apt update && sudo apt upgrade -y’

# Aplicar cambios:

source ~/.bashrc

2. Herramientas de Red y Diagnóstico

Instalación de Paquete Básico

Bash

comando:: sudo apt install net-tools htop tree nmap tmux -y

Comandos de Reconocimiento

  • ip a: Ver direcciones IP (sustituye a ifconfig).

  • ip r: Ver tabla de rutas y puerta de enlace (Gateway).

  • htop: Visor de procesos interactivo (CPU/RAM).

    • F6: Ordenar procesos.

    • F9: Matar procesos.

  • netstat -tulpn: Ver puertos abiertos y servicios escuchando.

    • TCP, UDP, Listening, Program, Numeric.
  • tree -d -L 2: Ver estructura de directorios (solo carpetas, 2 niveles).

Multiplexor de Terminales (tmux)

Permite dividir la pantalla en paneles.

  • Arreglo de alias en tmux: Crear ~/.tmux.conf y añadir set -g default-command /bin/bash.

  • Comandos:

    • Ctrl+b + %: Dividir vertical.

    • Ctrl+b + Flechas: Moverse entre paneles.

3. Simulación de Servicios (Living off the Land)

Netcat vs Python

  • Netcat (nc): nc -l -p 8080 (Escucha simple).

  • Python Web Server: python3 -m http.server 8000 (Levanta un servidor web en el puerto actual).

  • Detección: Ambos se detectan con netstat -tulpn.

4. Hardening de SSH (Seguridad)

Instalación y Estado

  • Instalar: sudo apt install openssh-server -y

  • Habilitar/Arrancar: sudo systemctl enable —now ssh

  • Ver estado: sudo systemctl status ssh

Configuración Segura (/etc/ssh/sshd_config)

Modificaciones clave para evitar ataques de fuerza bruta básicos:

  1. Port 2222 (Cambiar puerto por defecto).

  2. PermitRootLogin no (Prohibir acceso directo a root).

  • Aplicar: sudo systemctl restart ssh

5. Firewall (UFW)

Configuración de “Denegación por defecto”.

  1. Política base:

    • sudo ufw default deny incoming (Bloquear entrada).

    • sudo ufw default allow outgoing (Permitir salida).

  2. Reglas específicas:

    • sudo ufw allow 2222/tcp (Permitir nuestro SSH custom).
  3. Activar: sudo ufw enable

  4. Verificar: sudo ufw status numbered

6. Gestión de Usuarios y Permisos

  • Crear usuario: sudo adduser analista

  • Cambiar de usuario: su - analista

  • Verificar grupos: groups analista

  • Añadir a sudoers: sudo usermod -aG sudo analista

  • Auditoría de fallos: grep “NOT in sudoers” /var/log/auth.log

7. Transferencia de Archivos

SCP (Secure Copy)

Se ejecuta desde la máquina cliente (Host). Nota: Usa -P mayúscula para el puerto.

  • Subir: scp -P 2222 archivo.txt usuario@ip:/ruta/destino/

  • Bajar: scp -P 2222 usuario@ip:/ruta/archivo.txt .

  • Carpetas: Añadir flag -r.

Wget y Curl (Desde el servidor)

8. Gestión de Hora y Logs

Sincronización NTP

  • Ver estado: timedatectl

  • Cambiar zona: sudo timedatectl set-timezone Europe/Madrid

  • Activar NTP: sudo timedatectl set-ntp on

Análisis de Logs

  • Ruta principal: /var/log/

  • Archivos clave: auth.log (Seguridad), syslog (Sistema).

  • Monitorización en vivo: tail -f /var/log/auth.log

  • Búsqueda histórica: grep “Failed” /var/log/auth.log

  • Systemd Journal: journalctl -u ssh (Logs específicos del servicio comando:: SSH).

9. Automatización (Cron)

  • Editar tareas: crontab -e (Usuario) o sudo crontab -e (Root).

  • Sintaxis: m h dom mon dow comando

  • Ejemplo (Log cada minuto): * * * * * date >> /home/usuario/latido.txt

  • Redirección de errores: comando >> log.txt 2>&1

10. Gestión de Archivos y Procesos Avanzada

Compresión (Tar)

  • Comprimir: tar -czvf backup.tar.gz carpeta/ (Create, Zip, Verbose, File).

  • Descomprimir: tar -xzvf backup.tar.gz (Extract…).

Espacio en Disco

  • df -h: Espacio libre en discos montados.

  • du -sh .: Espacio ocupado por carpeta actual.

  • rm -rf carpeta: Borrado recursivo y forzado (¡Cuidado!).

Búsqueda (Find)

  • Por nombre: find / -name “archivo”

  • Por tiempo (10 min): find / -mmin -10

  • Ciberseguridad (SUID): find / -perm -4000 2>/dev/null (Busca binarios con permisos de root peligrosos).

Procesos (PS)

  • Foto de procesos: ps aux

  • Árbol de procesos: pstree -p

  • Segundo plano: Ctrl+Z (Pausar), bg (Fondo), fg (Traer al frente).

  • Matar: kill [PID] o pkill -f [nombre].

11. Redirecciones y Scripting

Redirecciones

  • >: Guardar en archivo (sobrescribe).

  • >>: Añadir al final del archivo.

  • 2>: Guardar solo errores.

  • | (Pipe): Pasar salida de un comando a otro (ps aux | grep ssh).

Scripting Bash (.sh)

Estructura básica de un script ejecutable:

Bash

#!/bin/bash

# Variables

USUARIO=$(whoami)

echo “Hola $USUARIO”

# Condicionales

if [ $(id -u) -eq 0 ]; then

echo “Eres Root”

else

echo “No eres Root”

fi

  • Permisos: chmod +x script.sh

  • Ejecutar: ./script.sh

12. Persistencia del Historial (Configuración Final)

Configuración para guardar todos los comandos en tiempo real en un fichero, evitando pérdida de datos por cierre de sesión.

En ~/.bashrc:

Bash

export PROMPT_COMMAND=‘history -a; history 1 >> ~/comandos.txt’