diciembre 21, 2025
13 min de lectura

Preguntas para Entrevistas de Ingeniero de Seguridad Junior: Guía Completa

interview
career-advice
job-search
entry-level
Preguntas para Entrevistas de Ingeniero de Seguridad Junior: Guía Completa
MB

Milad Bonakdar

Autor

Domina los fundamentos esenciales de la ciberseguridad con preguntas exhaustivas para entrevistas que cubren la tríada CIA, el Top 10 de OWASP, el cifrado, los firewalls y las mejores prácticas de seguridad para los puestos de ingeniero de seguridad junior.


Introducción

Los ingenieros de seguridad protegen a las organizaciones de las ciberamenazas mediante la implementación de controles de seguridad, la supervisión de sistemas y la respuesta a incidentes. Como ingeniero de seguridad junior, necesitarás conocimientos básicos de los principios de seguridad, las vulnerabilidades comunes y las tecnologías defensivas.

Esta guía cubre las preguntas esenciales de la entrevista para ingenieros de seguridad junior, centrándose en los conceptos básicos de seguridad y las habilidades prácticas.


Fundamentos de seguridad

1. Explica la tríada CIA.

Respuesta: La tríada CIA es la base de la seguridad de la información:

Confidencialidad:

  • Solo los usuarios autorizados pueden acceder a los datos
  • Se logra a través de: cifrado, controles de acceso, autenticación

Integridad:

  • Los datos permanecen precisos y sin modificaciones
  • Se logra a través de: hashing, firmas digitales, sumas de comprobación

Disponibilidad:

  • Los sistemas y los datos son accesibles cuando es necesario
  • Se logra a través de: redundancia, copias de seguridad, protección DDoS
Loading diagram...

Ejemplos de infracciones:

  • Confidencialidad: Fuga de datos que expone información del cliente
  • Integridad: Atacante que modifica registros financieros
  • Disponibilidad: Ataque DDoS que derriba el sitio web

Frecuencia: Muy común Dificultad: Fácil


OWASP Top 10

2. Nombra tres elementos del OWASP Top 10 y explícalos.

Respuesta: OWASP Top 10 enumera los riesgos de seguridad de aplicaciones web más críticos:

1. Inyección (inyección SQL): El atacante inserta código malicioso en las consultas.

# Código vulnerable
username = request.GET['username']
query = f"SELECT * FROM users WHERE username = '{username}'"
# Ataque: username = "admin' OR '1'='1"

# Código seguro (consulta parametrizada)
cursor.execute("SELECT * FROM users WHERE username = %s", (username,))

2. Control de acceso roto: Los usuarios pueden acceder a recursos a los que no deberían.

# Vulnerable: Sin verificación de autorización
@app.route('/admin/users/<user_id>')
def get_user(user_id):
    return User.query.get(user_id)

# Seguro: Verificar autorización
@app.route('/admin/users/<user_id>')
@require_admin
def get_user(user_id):
    if not current_user.is_admin:
        abort(403)
    return User.query.get(user_id)

3. Cross-Site Scripting (XSS): El atacante inyecta scripts maliciosos en páginas web.

<!-- Vulnerable -->
<div>Bienvenido, {{ username }}</div>

<!-- Ataque -->
username = "<script>alert('XSS')</script>"

<!-- Seguro (escapar salida) -->
<div>Bienvenido, {{ username | escape }}</div>

Frecuencia: Muy común Dificultad: Media


3. ¿Cómo se realiza la gestión de vulnerabilidades?

Respuesta: La gestión de vulnerabilidades es un proceso continuo de identificación, evaluación y remediación de las debilidades de seguridad.

Proceso:

Loading diagram...

Escaneo de vulnerabilidades:

# Escaneo de vulnerabilidades Nmap
nmap --script vuln 192.168.1.100

# Escaneo OpenVAS
openvas-start
# Acceder a la interfaz web en https://localhost:9392

# Escaneo Nessus (comercial)
# Configurar a través de la interfaz web

Ejemplo de Nessus:

# Automatizar el escaneo de Nessus
import requests
import time

class NessusScanner:
    def __init__(self, url, access_key, secret_key):
        self.url = url
        self.headers = {
            'X-ApiKeys': f'accessKey={access_key}; secretKey={secret_key}'
        }
    
    def create_scan(self, name, targets):
        data = {
            'uuid': 'template-uuid',  # Escaneo de red básico
            'settings': {
                'name': name,
                'text_targets': targets
            }
        }
        response = requests.post(
            f'{self.url}/scans',
            headers=self.headers,
            json=data,
            verify=False
        )
        return response.json()['scan']['id']
    
    def launch_scan(self, scan_id):
        requests.post(
            f'{self.url}/scans/{scan_id}/launch',
            headers=self.headers,
            verify=False
        )
    
    def get_results(self, scan_id):
        response = requests.get(
            f'{self.url}/scans/{scan_id}',
            headers=self.headers,
            verify=False
        )
        return response.json()

# Uso
scanner = NessusScanner('https://nessus:8834', 'access_key', 'secret_key')
scan_id = scanner.create_scan('Escaneo semanal', '192.168.1.0/24')
scanner.launch_scan(scan_id)

Gestión de parches:

# Gestión de parches de Linux
# Ubuntu/Debian
sudo apt update
sudo apt list --upgradable
sudo apt upgrade -y

# CentOS/RHEL
sudo yum check-update
sudo yum update -y

# Aplicación automatizada de parches
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Matriz de priorización:

Puntuación CVSSExplotabilidadCriticidad del activoPrioridad
Crítico (9-10)Explotación públicaProducciónP1 (Inmediato)
Alto (7-8.9)PoC disponibleProducciónP2 (1 semana)
Medio (4-6.9)Sin explotaciónInternoP3 (1 mes)
Bajo (0-3.9)Sin explotaciónDesarrollo/PruebaP4 (Siguiente ciclo)

Seguimiento de la remediación:

# Seguimiento de vulnerabilidades
class VulnerabilityTracker:
    def __init__(self):
        self.vulnerabilities = []
    
    def add_vulnerability(self, vuln):
        self.vulnerabilities.append({
            'id': vuln['id'],
            'severity': vuln['severity'],
            'asset': vuln['asset'],
            'status': 'open',
            'discovered': datetime.now(),
            'sla_deadline': self.calculate_sla(vuln['severity'])
        })
    
    def calculate_sla(self, severity):
        sla_days = {
            'critical': 7,
            'high': 30,
            'medium': 90,
            'low': 180
        }
        return datetime.now() + timedelta(days=sla_days[severity])
    
    def get_overdue(self):
        return [v for v in self.vulnerabilities 
                if v['status'] == 'open' and 
                datetime.now() > v['sla_deadline']]

Frecuencia: Común Dificultad: Fácil-Media


Conceptos básicos de cifrado

4. ¿Cuál es la diferencia entre el cifrado simétrico y el asimétrico?

Respuesta:

Cifrado simétrico:

  • Misma clave para cifrar y descifrar
  • Rápido
  • Ejemplos: AES, DES, 3DES

Cifrado asimétrico:

  • La clave pública cifra, la clave privada descifra
  • Más lento
  • Ejemplos: RSA, ECC
# Cifrado simétrico (AES)
from cryptography.fernet import Fernet

# Generar clave
key = Fernet.generate_key()
cipher = Fernet(key)

# Cifrar
encrypted = cipher.encrypt(b"Mensaje secreto")

# Descifrar
decrypted = cipher.decrypt(encrypted)

# Cifrado asimétrico (RSA)
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization

# Generar par de claves
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048
)
public_key = private_key.public_key()

# Cifrar con clave pública, descifrar con clave privada

Casos de uso:

  • Simétrico: Cifrar grandes cantidades de datos (archivos, bases de datos)
  • Asimétrico: Intercambio de claves, firmas digitales, SSL/TLS

Frecuencia: Muy común Dificultad: Fácil-Media


5. ¿Cómo funciona SSL/TLS y cómo se gestionan los certificados?

Respuesta: SSL/TLS cifra los datos en tránsito entre el cliente y el servidor.

Handshake TLS:

Loading diagram...

Cómo funciona:

  1. Client Hello: El cliente envía los conjuntos de cifrado admitidos
  2. Server Hello: El servidor elige el cifrado, envía el certificado
  3. Verificación del certificado: El cliente valida la cadena de certificados
  4. Intercambio de claves: Establecer secreto compartido
  5. Comunicación cifrada: Utilizar cifrado simétrico

Componentes del certificado:

# Ver detalles del certificado
openssl x509 -in certificate.crt -text -noout

# El certificado contiene:
# - Sujeto (nombre de dominio)
# - Emisor (CA)
# - Periodo de validez
# - Clave pública
# - Firma

Gestión de certificados:

Generar CSR (Solicitud de firma de certificado):

# Generar clave privada
openssl genrsa -out private.key 2048

# Generar CSR
openssl req -new -key private.key -out request.csr

# Ver CSR
openssl req -text -noout -verify -in request.csr

Certificado autofirmado (Pruebas):

# Generar certificado autofirmado
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

# Combinar para el uso del servidor
cat cert.pem key.pem > server.pem

Instalar certificado:

# Nginx
server {
    listen 443 ssl;
    server_name example.com;
    
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
}

# Apache
<VirtualHost *:443>
    ServerName example.com
    
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/cert.pem
    SSLCertificateKeyFile /etc/apache2/ssl/key.pem
    SSLCertificateChainFile /etc/apache2/ssl/chain.pem
    
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite HIGH:!aNULL:!MD5
</VirtualHost>

Configuraciones erróneas comunes:

1. Protocolos débiles:

# Malo: Permite SSLv3, TLSv1.0
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

# Bueno: Solo TLS moderno
ssl_protocols TLSv1.2 TLSv1.3;

2. Cifrados débiles:

# Probar la configuración SSL
sslscan example.com
nmap --script ssl-enum-ciphers -p 443 example.com

# O utilizar herramientas en línea
# https://www.ssllabs.com/ssltest/

3. Certificados caducados:

# Comprobar la caducidad del certificado
openssl s_client -connect example.com:443 -servername example.com < /dev/null 2>/dev/null | \
    openssl x509 -noout -dates

# Supervisar la caducidad
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | \
    openssl x509 -noout -enddate

Automatización de certificados (Let's Encrypt):

# Instalar certbot
sudo apt install certbot python3-certbot-nginx

# Obtener certificado
sudo certbot --nginx -d example.com -d www.example.com

# Renovación automática (cron)
0 0 * * * certbot renew --quiet

Resolución de problemas:

# Probar la conexión TLS
openssl s_client -connect example.com:443 -servername example.com

# Verificar la cadena de certificados
openssl verify -CAfile ca-bundle.crt certificate.crt

# Comprobar que el certificado coincide con la clave privada
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in key.pem | openssl md5
# Los hashes deben coincidir

Frecuencia: Común Dificultad: Media


Firewalls

6. Explica los firewalls con estado frente a los firewalls sin estado.

Respuesta:

Firewall sin estado:

  • Examina cada paquete de forma independiente
  • Sin seguimiento de la conexión
  • Más rápido pero menos seguro
  • Ejemplo: Filtro de paquetes básico

Firewall con estado:

  • Realiza un seguimiento del estado de la conexión
  • Recuerda los paquetes anteriores
  • Más seguro
  • Ejemplo: Firewalls modernos
# iptables (con estado)
# Permitir conexiones establecidas
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Permitir nuevas conexiones SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

# Descartar todo lo demás
iptables -A INPUT -j DROP

Estados de la conexión:

  • NEW: Primer paquete de conexión
  • ESTABLISHED: Parte de la conexión existente
  • RELATED: Relacionado con la conexión existente
  • INVALID: No coincide con ningún estado

Frecuencia: Común Dificultad: Media


SIEM

7. ¿Qué es un SIEM y por qué es importante?

Respuesta: SIEM (Security Information and Event Management) centraliza la recopilación y el análisis de registros.

Funciones principales:

  1. Recopilación de registros: Recopilar registros de múltiples fuentes
  2. Normalización: Estandarizar los formatos de registro
  3. Correlación: Identificar patrones y relaciones
  4. Alertas: Notificar sobre actividad sospechosa
  5. Informes: Cumplimiento y análisis forense
Loading diagram...

Casos de uso:

  • Detectar ataques de fuerza bruta
  • Identificar la exfiltración de datos
  • Supervisar el acceso privilegiado
  • Informes de cumplimiento (PCI-DSS, HIPAA)

Herramientas SIEM populares:

  • Splunk
  • ELK Stack (Elasticsearch, Logstash, Kibana)
  • IBM QRadar
  • ArcSight

Frecuencia: Común Dificultad: Media


8. ¿Cuál es la diferencia entre IDS e IPS?

Respuesta: IDS (Intrusion Detection System) e IPS (Intrusion Prevention System) supervisan el tráfico de la red en busca de amenazas.

Diferencias clave:

CaracterísticaIDSIPS
AcciónDetecta y alertaDetecta y bloquea
UbicaciónFuera de banda (pasivo)En línea (activo)
ImpactoSin interrupción del tráficoPuede bloquear el tráfico legítimo
RespuestaManualAutomático
Falsos positivosMenos críticoMás crítico

Implementación de IDS:

Loading diagram...

Implementación de IPS:

Loading diagram...

Configuración de Snort (IDS/IPS):

# Instalar Snort
sudo apt install snort

# Configurar la red
sudo vi /etc/snort/snort.conf
# Establecer HOME_NET
ipvar HOME_NET 192.168.1.0/24
ipvar EXTERNAL_NET !$HOME_NET

# Ejecutar en modo IDS
sudo snort -A console -q -c /etc/snort/snort.conf -i eth0

# Ejecutar en modo IPS (en línea)
sudo snort -Q -c /etc/snort/snort.conf -i eth0

Reglas de Snort:

# Sintaxis de la regla
# action protocol src_ip src_port -> dst_ip dst_port (options)

# Detectar inyección SQL
alert tcp any any -> $HOME_NET 80 (msg:"Intento de inyección SQL"; \
    content:"UNION SELECT"; nocase; sid:1000001; rev:1;)

# Detectar escaneo de puertos
alert tcp any any -> $HOME_NET any (msg:"Escaneo de puertos detectado"; \
    flags:S; threshold:type both, track by_src, count 20, seconds 60; \
    sid:1000002; rev:1;)

# Detectar fuerza bruta SSH
alert tcp any any -> $HOME_NET 22 (msg:"Fuerza bruta SSH"; \
    flags:S; threshold:type both, track by_src, count 5, seconds 60; \
    sid:1000003; rev:1;)

# Bloquear IP maliciosa (modo IPS)
drop tcp 203.0.113.50 any -> $HOME_NET any (msg:"IP maliciosa bloqueada"; \
    sid:1000004; rev:1;)

Suricata (alternativa moderna):

# Instalar Suricata
sudo apt install suricata

# Actualizar las reglas
sudo suricata-update

# Ejecutar Suricata
sudo suricata -c /etc/suricata/suricata.yaml -i eth0

# Ver alertas
sudo tail -f /var/log/suricata/fast.log

Análisis de alertas:

# Analizar las alertas de Snort
import re
from collections import Counter

def analyze_snort_alerts(log_file):
    alerts = []
    
    with open(log_file, 'r') as f:
        for line in f:
            # Analizar la alerta
            match = re.search(r'\[\*\*\] \[(\d+):(\d+):(\d+)\] (.+?) \[\*\*\]', line)
            if match:
                alerts.append({
                    'sid': match.group(1),
                    'message': match.group(4),
                    'line': line
                })
    
    # Principales alertas
    alert_counts = Counter([a['message'] for a in alerts])
    print("Top 10 de alertas:")
    for alert, count in alert_counts.most_common(10):
        print(f"{count:5d} - {alert}")
    
    return alerts

# Uso
alerts = analyze_snort_alerts('/var/log/snort/alert')

Firmas de ataque comunes:

# Inyección SQL
content:"' OR 1=1--";
content:"UNION SELECT";

# XSS
content:"<script>";
content:"javascript:";

# Inyección de comandos
content:";cat /etc/passwd";
content:"|whoami";

# Recorrido de directorios
content:"../../../";

# Shellshock
content:"() { :; };";

Mejores prácticas:

  • Actualizar regularmente las firmas
  • Ajustar las reglas para reducir los falsos positivos
  • Supervisar el IPS para el tráfico legítimo bloqueado
  • Integrar con SIEM para la correlación
  • Probar en modo IDS antes de habilitar IPS

Frecuencia: Común Dificultad: Media


Mejores prácticas de seguridad

9. ¿Cómo se protegen las contraseñas?

Respuesta: Seguridad de contraseñas multicapa:

1. Hashing (no cifrado):

import hashlib
import os

def hash_password(password):
    # Generar salt
    salt = os.urandom(32)
    
    # Aplicar hash a la contraseña con salt
    key = hashlib.pbkdf2_hmac(
        'sha256',
        password.encode('utf-8'),
        salt,
        100000  # iteraciones
    )
    
    # Almacenar salt + hash
    return salt + key

def verify_password(stored_password, provided_password):
    salt = stored_password[:32]
    stored_key = stored_password[32:]
    
    key = hashlib.pbkdf2_hmac(
        'sha256',
        provided_password.encode('utf-8'),
        salt,
        100000
    )
    
    return key == stored_key

2. Política de contraseñas:

  • Longitud mínima (12+ caracteres)
  • Requisitos de complejidad
  • Historial de contraseñas
  • Caducidad (controvertido)

3. Seguridad adicional:

  • Autenticación multifactor (MFA)
  • Bloqueo de cuenta después de intentos fallidos
  • Medidor de fuerza de la contraseña
  • Detección de infracciones (API Have I Been Pwned)

Nunca:

  • Almacenar contraseñas en texto plano
  • Utilizar hashing débil (MD5, SHA1)
  • Aplicar hash sin salt

Frecuencia: Muy común Dificultad: Media


Respuesta a incidentes

10. ¿Cuáles son las fases de la respuesta a incidentes?

Respuesta: Ciclo de vida de la respuesta a incidentes del NIST:

1. Preparación:

  • Desarrollar un plan de RI
  • Capacitar al equipo
  • Configurar herramientas y supervisión

2. Detección y análisis:

  • Identificar incidentes
  • Analizar el alcance y el impacto
  • Priorizar la respuesta

3. Contención:

  • A corto plazo: Aislar los sistemas afectados
  • A largo plazo: Aplicar parches, reconstruir sistemas

4. Erradicación:

  • Eliminar malware
  • Cerrar vulnerabilidades
  • Fortalecer las defensas

5. Recuperación:

  • Restaurar sistemas
  • Supervisar la reinfección
  • Volver a las operaciones normales

6. Posterior al incidente:

  • Documentar las lecciones aprendidas
  • Actualizar los procedimientos
  • Mejorar las defensas
Loading diagram...

Frecuencia: Común Dificultad: Media


Conclusión

Prepararse para una entrevista de ingeniero de seguridad junior requiere comprender los fundamentos de seguridad y las habilidades prácticas. Concéntrate en:

  1. Fundamentos: Tríada CIA, principios de seguridad
  2. OWASP: Vulnerabilidades web comunes
  3. Gestión de vulnerabilidades: Escaneo, aplicación de parches, priorización
  4. Criptografía: Cifrado, hashing, certificados
  5. SSL/TLS: Gestión de certificados, configuraciones erróneas comunes
  6. Herramientas defensivas: Firewalls, SIEM, IDS/IPS
  7. Mejores prácticas: Codificación segura, seguridad de contraseñas
  8. Respuesta a incidentes: Detección, contención, recuperación

Mantente actualizado con las noticias de seguridad, practica en laboratorios y obtén certificaciones (Security+, CEH). ¡Buena suerte!

Newsletter subscription

Consejos de carrera semanales que realmente funcionan

Recibe las últimas ideas directamente en tu bandeja de entrada

Decorative doodle

Destácate ante los Reclutadores y Consigue el Trabajo de Tus Sueños

Únete a miles que transformaron sus carreras con currículums impulsados por IA que pasan el ATS e impresionan a los gerentes de contratación.

Comienza a crear ahora

Compartir esta publicación

Haz que tus 6 Segundos Cuenten

Los reclutadores escanean currículums durante un promedio de solo 6 a 7 segundos. Nuestras plantillas probadas están diseñadas para captar la atención al instante y mantenerlos leyendo.