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
* `sudo !!`: Ejecuta el último comando fallido añadiendo `sudo` al principio.
* **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:
-
Port 2222 (Cambiar puerto por defecto).
-
PermitRootLogin no (Prohibir acceso directo a root).
- Aplicar: sudo systemctl restart ssh
5. Firewall (UFW)
Configuración de “Denegación por defecto”.
-
Política base:
-
sudo ufw default deny incoming (Bloquear entrada).
-
sudo ufw default allow outgoing (Permitir salida).
-
-
Reglas específicas:
- sudo ufw allow 2222/tcp (Permitir nuestro SSH custom).
-
Activar: sudo ufw enable
-
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)
-
wget: Ideal para descargas. wget -O nombre_nuevo.zip https://url.com/archivo
-
curl: Ideal para interacción web/API.
-
Ver cabeceras: curl -I google.com
-
Descargar: curl -O https://url.com/archivo
-
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’