Fundamentos de Linux para seguridad, el subconjunto que de verdad usas.
Los 25 comandos que teclearás cada día, los cinco que teclearás con prisas y los permisos de archivo que deciden quién manda en la máquina.
La mayoría del material de «introducción a Linux» te enseña Linux como sistema Unix. Nosotros vamos a enseñarte Linux como estación de trabajo de seguridad: lo que de verdad haces frente al teclado durante el reconocimiento, el triaje y la post-explotación.
La shell, en un párrafo
La shell es un programa que lee una línea, la ejecuta e imprime la salida. Tres caracteres especiales hacen casi todo el trabajo: | envía la salida a otro programa, > la envía a un archivo y && encadena dos comandos de forma que el segundo solo se ejecuta si el primero tiene éxito. A partir de ahí puedes construir cualquier cosa.
Los 25 comandos
Si sabes usar estos sin pensar, puedes leer el 80 % de los flujos de trabajo de seguridad del mundo real.
| Comando | Qué hace | Para qué se usa |
|---|---|---|
ls -la | Listar archivos con detalle | Reconocimiento, auditoría de permisos |
cd / pwd | Moverse / dónde estoy | Siempre |
cat / less | Leer un archivo | Configuraciones, logs |
grep -r | Buscar texto de forma recursiva | Encontrar secretos, errores |
find | Buscar por nombre / tamaño / fecha | Localizar archivos soltados |
chmod / chown | Cambiar permisos / propietario | Fortificación, movimiento lateral |
ps -ef | Listar procesos | Qué se está ejecutando |
top / htop | Vista de procesos en vivo | Triaje |
netstat -tulpn | Puertos abiertos + proceso | Qué está escuchando |
ss -tulpn | Reemplazo moderno | Lo mismo |
curl -v | HTTP desde la CLI | Pruebas de API |
wget | Descargar archivos | Traer herramientas |
ssh / scp | Shell remota / copia | Movimiento lateral |
tar | Empaquetar / desempaquetar archivos | Exfiltración, despliegue |
systemctl | Control de servicios | Persistencia, auditoría |
journalctl | Leer logs de systemd | Triaje |
tail -f | Seguir un log | Monitorización en vivo |
history | Qué se tecleó | Análisis forense |
sudo | Ejecutar como root | Uso / auditoría de privilegios |
id / whoami | Quién soy, en qué grupos estoy | Reconocimiento sobre ti mismo |
uname -a | Información del kernel | Selección de exploits |
iptables -L | Reglas del firewall | Mapeo de salida |
dig / host | Consulta DNS | Reconocimiento |
scp / rsync | Mover archivos de forma fiable | Copias de seguridad, exfiltración |
tmux / screen | Sesiones persistentes | Trabajos largos |
Permisos en cinco minutos
Cada archivo tiene tres tripletes de permisos: propietario, grupo y todos. Cada triplete tiene tres bits: lectura, escritura y ejecución.
$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1832 May 6 14:01 /etc/shadow
^ propietario=root grupo=shadow
rw- = lectura+escritura para el propietario
r-- = lectura para el grupo shadow
--- = sin acceso para todos los demás
Forma numérica: cada triplete es un dígito de 0 a 7. chmod 750 file significa propietario=rwx, grupo=r-x, mundo=nada. Los números son lectura=4, escritura=2, ejecución=1.
Un archivo con el bit SUID activado se ejecuta como su propietario, no como tú. find / -perm -4000 -type f 2>/dev/null los lista todos. En una máquina comprometida, este es el primer sitio donde miras.
Los cinco comandos «con prisas»
Cuando la alerta acaba de saltar y el ingeniero sénior está en una reunión, estos son los que echas mano.
last -a | head -20— quién ha iniciado sesión hace poco y desde dónde.w— quién está en la máquina ahora mismo y qué está ejecutando.ss -tunap— sockets activos y el proceso detrás de cada uno.ls -lat /tmp /var/tmp /dev/shm | head— archivos recientes en los vertederos habituales.journalctl --since "1 hour ago" -p warning— avisos recientes en el log del sistema.
Tuberías: la jugada que duplica tu vocabulario efectivo
Dos comandos que ya conoces se pueden combinar en un tercero. Algunos ejemplos que merece la pena memorizar:
# Los 10 procesos que más memoria RSS consumen
ps -eo pid,rss,cmd --sort=-rss | head -11
# Encontrar todos los archivos escribibles por cualquiera bajo /etc
find /etc -type f -perm -o=w 2>/dev/null
# Inicios de sesión SSH fallidos recientes, agrupados por IP de origen
journalctl -u ssh | grep "Failed" | awk '{print $NF}' | sort | uniq -c | sort -rn
Memorizarlos no es lo importante. Lo importante es interiorizar la forma: listar → filtrar → agrupar → contar. Una vez que la ves, escribirás las tuyas propias.