Cuando decidí empezar a aprender ciberseguridad desde cero, una de las primeras recomendaciones que aparecía constantemente era aprender Linux.
Como desarrollador, ya estoy acostumbrado a trabajar con terminales, código y sistemas, pero eso no significa que conozca Linux con la profundidad que necesito para moverme con soltura en un entorno de ciberseguridad.
Así que antes de empezar con herramientas como Wireshark, Nmap o Kali Linux, he decidido reforzar primero los fundamentos. En este artículo recopilo los comandos que estoy aprendiendo y, sobre todo, intento entender para qué sirve realmente cada uno.
Este artículo forma parte de mi camino de aprendizaje de ciberseguridad desde cero.

Por qué Linux es importante en ciberseguridad
Linux está presente en una enorme cantidad de servidores, servicios en la nube, dispositivos de red y sistemas utilizados profesionalmente. Además, muchas herramientas relacionadas con administración de sistemas, análisis de redes y seguridad funcionan especialmente bien en entornos Linux.
Pero mi objetivo no es aprender comandos de memoria.
Quiero entender qué está ocurriendo cuando ejecuto un comando: qué usuario soy, en qué directorio estoy, qué permisos tiene un archivo, qué procesos se están ejecutando o qué servicio está escuchando en un determinado puerto.
Ese conocimiento me parece mucho más importante que saltar directamente a herramientas avanzadas.
Moverme por el sistema
Lo primero es aprender a orientarse dentro del sistema de archivos.
pwd
pwd
Muestra el directorio actual.
Parece trivial, pero cuando llevas un rato navegando por diferentes carpetas es fácil perder la referencia de dónde estás trabajando.
ls
ls
Muestra el contenido del directorio actual.
Algunas variantes útiles:
ls -l
ls -a
ls -la
-l muestra información adicional como permisos, propietario y tamaño. -a incluye también archivos ocultos.
Precisamente ls -la empieza a resultar interesante para seguridad, porque permite ver rápidamente permisos y archivos que normalmente permanecen ocultos.
cd
cd /ruta/directorio
Permite cambiar de directorio.
También estoy utilizando mucho:
cd ..
cd ~
.. sube un nivel y ~ (ALT + 126) vuelve al directorio personal del usuario.
Trabajar con archivos y directorios
mkdir
mkdir laboratorio
Crea un nuevo directorio.
touch
touch notas.txt
Permite crear rápidamente un archivo vacío.
cp
cp archivo.txt copia.txt
Copia archivos.
Para copiar directorios completos:
cp -r directorio copia-directorio
mv
mv archivo.txt documentos/
Sirve tanto para mover archivos como para renombrarlos.
mv archivo.txt archivo-antiguo.txt
rm
rm archivo.txt
Elimina archivos.
Para directorios:
rm -r directorio
Este es uno de esos comandos con los que estoy intentando adquirir una buena costumbre desde el principio: comprobar dos veces lo que voy a eliminar antes de pulsar Enter.
En Linux no siempre existe una papelera que nos salve de una equivocación desde la terminal.
Leer archivos desde la terminal
cat
cat archivo.txt
Muestra directamente el contenido de un archivo.
Para archivos pequeños es muy cómodo, aunque para documentos largos resulta mejor utilizar otras herramientas.
less
less archivo.txt
Permite recorrer archivos grandes sin mostrar todo el contenido de golpe.
También permite buscar dentro del archivo utilizando /texto.
head y tail
head archivo.log
tail archivo.log
head muestra las primeras líneas y tail las últimas.
Una variante que me parece especialmente útil es:
tail -f archivo.log
Con ella se pueden observar nuevas líneas a medida que se escriben en un archivo de log.
Entender y analizar logs será importante más adelante cuando empiece a investigar actividad de sistemas y servicios.
Buscar información
grep
grep "error" archivo.log
grep busca texto dentro de archivos.
Por ejemplo:
grep -i "failed" auth.log
La opción -i ignora mayúsculas y minúsculas.
Este comando parece especialmente importante en seguridad porque muchos análisis terminan consistiendo en buscar patrones concretos dentro de una cantidad enorme de información.
find
find /home -name "*.txt"
Permite localizar archivos utilizando diferentes criterios.
También podemos buscar, por ejemplo, archivos con un nombre determinado:
find / -name "config.php" 2>/dev/null
La parte 2>/dev/null evita que la pantalla se llene de determinados mensajes de error relacionados con permisos.
Usuarios e identidad
whoami
whoami
Muestra con qué usuario estamos trabajando.
Puede parecer evidente, pero en un sistema Linux los permisos dependen directamente del usuario que ejecuta una acción.
id
id
Muestra información adicional sobre el usuario, su identificador y los grupos a los que pertenece.
sudo
sudo comando
Permite ejecutar determinadas acciones con privilegios elevados.
Una de las cosas que quiero interiorizar es no utilizar sudo automáticamente cada vez que algo no funciona.
Si un comando necesita permisos especiales, primero quiero entender por qué.
Entender los permisos
Los permisos son uno de los conceptos de Linux que más me interesa comprender bien.
Al ejecutar:
ls -l
podemos encontrarnos con algo parecido a:
-rwxr-xr--
Esas letras indican qué puede hacer el propietario del archivo, los usuarios del grupo y el resto de usuarios.
- r: lectura
- w: escritura
- x: ejecución
chmod
Permite modificar esos permisos.
chmod +x script.sh
En este ejemplo hacemos que el archivo pueda ejecutarse.
También existe la representación numérica:
chmod 755 script.sh
No quiero limitarme a memorizar números como 755 o 644. Me parece más útil entender primero qué permisos está representando cada valor.

Procesos
ps
ps aux
Muestra los procesos que se están ejecutando en el sistema.
Cuando empiece a estudiar seguridad con más profundidad, saber identificar qué procesos deberían estar ejecutándose y cuáles resultan extraños será una habilidad importante.
top
top
Muestra en tiempo real información sobre procesos, consumo de CPU y memoria.
También existe htop, que ofrece una interfaz más cómoda si está instalado.
kill
kill PID
Permite enviar una señal a un proceso determinado utilizando su identificador.
Combinar comandos con pipes
Una de las cosas que más me está gustando de Linux es poder conectar pequeños comandos entre sí.
Por ejemplo:
ps aux | grep firefox
El símbolo |, denominado pipe, envía la salida de un comando al siguiente.
En este ejemplo obtenemos todos los procesos y después filtramos aquellos que contienen la palabra Firefox.
Otro ejemplo:
cat archivo.log | grep "error"
Aunque en este caso podemos utilizar directamente:
grep "error" archivo.log
Lo importante para mí no es únicamente aprender cada comando individualmente, sino entender cómo combinarlos para obtener la información que necesito.

No necesito Kali Linux para aprender Linux
Una conclusión que estoy sacando al empezar este camino es que no necesito instalar inmediatamente Kali Linux para aprender estos conceptos.
Ubuntu, Debian u otra distribución convencional permiten aprender perfectamente navegación, permisos, procesos, usuarios, redes y administración básica.
Kali tendrá sentido cuando empiece a trabajar específicamente con herramientas de análisis y pruebas de seguridad.
Antes quiero sentirme cómodo utilizando Linux como sistema.
Mi pequeño ejercicio práctico
Para evitar limitarme a leer comandos, estoy intentando practicar creando pequeños escenarios.
Por ejemplo:
mkdir laboratorio-linux
cd laboratorio-linux
mkdir logs scripts documentos
touch logs/system.log
touch documentos/notas.txt
touch scripts/test.sh
chmod +x scripts/test.sh
ls -la
find . -name "*.txt"
No tiene nada espectacular, pero obliga a utilizar varios conceptos juntos.
Después puedo añadir contenido a los archivos, cambiar permisos, buscar cadenas con grep o consultar qué usuario está ejecutando cada operación.
Los comandos que quiero dominar primero
Por ahora mi lista básica queda así:
pwdlscdmkdirtouchcpmvrmcatlessheadtailgrepfindwhoamiidsudochmodpstopkill
No pretendo aprenderlos todos de memoria en un día. Prefiero utilizarlos repetidamente hasta que empiecen a salir de forma natural.
El siguiente paso: entender redes
Linux es solamente una parte de los fundamentos que quiero construir.
El siguiente tema que quiero reforzar es redes: direcciones IP, máscaras, gateways, DNS, puertos, TCP, UDP y qué ocurre realmente cuando dos máquinas se comunican.
Después combinaré ambos conocimientos construyendo un pequeño laboratorio doméstico donde pueda practicar con máquinas virtuales sin afectar a otros sistemas.
Ese será uno de los próximos pasos de esta serie.
Si quieres ver desde dónde comenzó todo este aprendizaje, puedes leer también Mi comienzo aprendiendo ciberseguridad desde cero y seguir la evolución completa desde la sección de Ciberseguridad de Zwart Apps.

