Fundamentos de Linux
Objetivo
Entender Linux con suficiente claridad para administrar sistemas, leer evidencia y comprender muchas herramientas de ciberseguridad.
Linux aparece en servidores, contenedores, cloud, appliances, routers, laboratorios, herramientas ofensivas autorizadas, herramientas defensivas, pipelines, SIEMs y entornos de respuesta a incidentes. No necesitas memorizar todos los comandos. Necesitas entender el sistema: usuarios, permisos, procesos, servicios, red, archivos, logs y configuracion.
El objetivo real es que puedas mirar un sistema Linux y responder:
- quien soy;
- que permisos tengo;
- que procesos corren;
- que servicios escuchan;
- que archivos son sensibles;
- que logs explican lo ocurrido;
- que cambios podrian afectar seguridad.
Modelo Mental
usuario -> permisos -> archivos -> procesos -> servicios -> red -> logs -> evidencia
Linux se entiende mejor como un sistema de texto, procesos y permisos. Casi todo puede inspeccionarse con archivos, comandos y logs.
Por Que Linux Importa en Ciberseguridad
Linux es comun en:
- servidores web;
- bases de datos;
- contenedores;
- Kubernetes;
- herramientas de seguridad;
- firewalls y appliances;
- sistemas cloud;
- pipelines CI/CD;
- laboratorios de practica.
Si entiendes Linux, puedes interpretar mejor:
- hardening;
- permisos;
- procesos sospechosos;
- conexiones activas;
- servicios expuestos;
- logs de autenticacion;
- persistencia basica;
- errores de configuracion.
Estructura del Sistema
Directorios comunes:
| Ruta | Uso |
|---|---|
/ | Raiz del sistema |
/home | Directorios de usuarios |
/etc | Configuracion del sistema |
/var | Datos variables, logs, colas |
/var/log | Logs |
/tmp | Archivos temporales |
/usr | Programas y librerias |
/bin, /sbin | Binarios esenciales |
/opt | Software adicional |
/proc | Informacion del kernel y procesos |
En seguridad, las rutas importan porque ayudan a distinguir normalidad de anomalia. Un binario desconocido en una ruta temporal, un script raro en un directorio de inicio o permisos inseguros en /etc pueden ser senales relevantes.
Usuarios
Linux es multiusuario. Cada proceso corre como algun usuario.
Comandos utiles:
whoami id groups cat /etc/passwd cat /etc/group
Conceptos:
root: usuario con maximo privilegio.- usuario normal: permisos limitados.
- usuario de servicio: cuenta usada por una aplicacion.
- grupo: conjunto de usuarios con permisos compartidos.
En seguridad, el usuario que ejecuta una accion importa tanto como la accion misma.
Ejemplo:
nginx corriendo como www-data = esperado nginx corriendo como root = mayor impacto si se compromete
Sudo
sudo permite ejecutar comandos con privilegios elevados.
Comando util:
sudo -l
Preguntas de seguridad:
- Que usuarios pueden usar sudo?
- Pueden ejecutar cualquier comando?
- Requieren contrasena?
- Hay comandos peligrosos permitidos?
- Hay registros de uso?
Dar sudo completo a demasiados usuarios aumenta el impacto de cualquier cuenta comprometida.
Permisos
Ejemplo:
-rwxr-x---
Interpretacion:
- rwx r-x --- | | | | | | | otros | | grupo | owner tipo de archivo
Permisos:
r: leer.w: escribir.x: ejecutar o atravesar directorio.
Ejemplos:
chmod 600 secreto.txt chmod 755 script.sh chown usuario:grupo archivo.txt
En seguridad, permisos incorrectos pueden permitir:
- leer secretos;
- modificar configuraciones;
- ejecutar scripts;
- reemplazar binarios;
- acceder a logs sensibles;
- alterar evidencia.
Archivos Sensibles
Ejemplos:
/etc/passwd/etc/shadow/etc/sudoers- llaves SSH;
- archivos
.env; - certificados;
- tokens;
- configuraciones de bases de datos;
- logs con datos sensibles.
No todo archivo sensible debe ser secreto absoluto, pero su acceso debe tener una razon.
Procesos
Un proceso es un programa en ejecucion.
Comandos:
ps aux top htop pgrep nombre
Preguntas:
- Que proceso esta corriendo?
- Que usuario lo ejecuta?
- Desde que ruta?
- Cual es su proceso padre?
- Consume recursos de forma anormal?
- Tiene conexiones de red?
En seguridad, los procesos ayudan a detectar actividad inesperada. Un proceso raro no prueba ataque por si solo, pero abre preguntas.
Servicios
Un servicio es un proceso administrado para correr en segundo plano.
Comandos:
systemctl status ssh systemctl list-units --type=service --state=running journalctl -u ssh
Ejemplos:
- SSH.
- Nginx.
- PostgreSQL.
- Docker.
- Cron.
Preguntas:
- El servicio deberia existir?
- Esta habilitado al arranque?
- Escucha en red?
- Corre como usuario limitado?
- Tiene logs?
- Esta actualizado?
Red en Linux
Comandos:
ip addr ip route ss -tuln ss -tunap
Ideas clave:
ip addrmuestra interfaces e IPs.ip routemuestra gateway y rutas.ss -tulnmuestra puertos escuchando.ss -tunappuede asociar conexiones con procesos si tienes permisos.
En seguridad, un puerto escuchando significa superficie de ataque. No todo puerto abierto es malo, pero todo puerto abierto debe tener una razon.
Logs
Los logs explican que paso.
Ubicaciones comunes:
/var/log/auth.log/var/log/syslog/var/log/secure/var/log/nginx//var/log/apache2/journalctl
Comandos:
journalctl -xe journalctl -u ssh sudo tail -n 50 /var/log/auth.log sudo grep -i "failed" /var/log/auth.log
Preguntas:
- Que usuario aparece?
- Desde que IP?
- A que hora?
- Fue exitoso o fallido?
- Hay repeticion?
- Hay cambios cerca del evento?
Cron y Tareas Programadas
Cron ejecuta tareas programadas.
Ubicaciones:
/etc/crontab/etc/cron.d/crontab -l
En seguridad importa porque tareas programadas pueden usarse para automatizacion legitima o persistencia maliciosa.
Preguntas:
- Que tarea corre?
- Con que usuario?
- Que script ejecuta?
- Donde esta ese script?
- Quien puede modificarlo?
Variables de Entorno
Las variables de entorno guardan configuracion para procesos.
Ejemplos:
PATHHOMEUSERDATABASE_URLAPI_KEY
Riesgo:
Si secretos viven en variables de entorno, pueden aparecer en procesos, logs, dumps o configuraciones mal protegidas.
Paquetes y Actualizaciones
Linux instala software por gestores de paquetes.
Ejemplos:
apt list --upgradable dpkg -l rpm -qa
En seguridad, paquetes desactualizados pueden tener vulnerabilidades conocidas. Pero actualizar sin control tambien puede romper servicios. La madurez esta en parchar con pruebas, respaldos y ventanas de cambio.
Hardening Basico
Hardening significa reducir superficie de ataque.
Ejemplos:
- desactivar servicios innecesarios;
- restringir SSH;
- usar usuarios sin privilegios;
- configurar firewall;
- aplicar parches;
- proteger llaves;
- revisar permisos;
- habilitar logs;
- monitorear cambios.
Hardening no es una lista magica. Es adaptar controles al riesgo del sistema.
Ejemplo de Investigacion
Escenario:
Un servidor muestra multiples intentos fallidos de SSH.
Analisis:
- Revisar logs de autenticacion.
- Identificar usuario objetivo.
- Identificar IP origen.
- Ver si hubo login exitoso despues.
- Revisar si el usuario tiene sudo.
- Revisar procesos recientes.
- Revisar conexiones activas.
- Recomendar controles.
Controles posibles:
- deshabilitar login por password;
- usar llaves SSH;
- restringir IPs;
- activar MFA si aplica;
- alertar por fuerza bruta;
- revisar usuarios validos.
Errores Comunes
- Ejecutar todo con
sudosin entender impacto. - Copiar comandos destructivos sin leerlos.
- No revisar permisos despues de crear archivos sensibles.
- No diferenciar proceso, servicio y puerto.
- Borrar logs o evidencia durante una investigacion.
- Pensar que un puerto abierto siempre es ataque.
- Ignorar usuarios de servicio.
- No documentar cambios.
Practica Segura
En un entorno propio puedes observar:
whoami id pwd ls -la ps aux | head ss -tuln ip route journalctl -n 20
No ejecutes comandos destructivos si no entiendes su efecto. En Linux, un comando corto puede hacer cambios amplios.
Criterio de Dominio
Dominas este tema cuando puedes:
- orientarte en el sistema de archivos;
- explicar usuarios, grupos y sudo;
- interpretar permisos;
- ver procesos y servicios;
- identificar puertos escuchando;
- leer logs basicos;
- explicar por que root aumenta impacto;
- describir controles de hardening;
- analizar un login sospechoso con evidencia.
En esta página
- Objetivo
- Modelo Mental
- Por Que Linux Importa en Ciberseguridad
- Estructura del Sistema
- Usuarios
- Sudo
- Permisos
- Archivos Sensibles
- Procesos
- Servicios
- Red en Linux
- Logs
- Cron y Tareas Programadas
- Variables de Entorno
- Paquetes y Actualizaciones
- Hardening Basico
- Ejemplo de Investigacion
- Errores Comunes
- Practica Segura
- Criterio de Dominio