En el mundo de la administración de sistemas, la seguridad es una prioridad. Proteger un sistema Linux implica una estrategia integral que abarca desde la seguridad de los archivos hasta la monitorización de la red. En este artículo, exploraremos los tres pilares fundamentales para blindar tu sistema Linux: seguridad de archivos, seguridad de red y auditoría y análisis.
Seguridad de Archivos: Protege tus Datos Locales
La seguridad de archivos se centra en proteger el acceso local, el contenido sensible y la integridad del sistema de archivos. Aquí te mostramos algunas técnicas clave:
Permisos y Propietarios
Los permisos y propietarios son la base del control de acceso en Linux. Utiliza los comandos chmod
y chown
para gestionar quién puede leer, escribir y ejecutar archivos.
# chmod 640 informe.txt
# chown luisgulo:luisgulo informe.txt
# ls -l
El ejemplo anterior restringe el acceso a informe.txt
, permitiendo solo la lectura al grupo y asignando un propietario específico.
Control Avanzado con ACL (Access Control Lists)
Las ACLs permiten un control más granular sobre los permisos, permitiendo asignar permisos específicos a usuarios o grupos individuales.
# setfacl -m u:ana:rw informe.txt
# getfacl informe.txt
Con setfacl
, se le da a la usuaria ‘ana’ permisos de lectura y escritura sobre el archivo ‘informe.txt’.
Cifrado de Archivos y Carpetas
El cifrado es esencial para proteger la confidencialidad de los datos. Puedes cifrar archivos individuales con GPG o carpetas enteras con encfs.
$ gpg -c secreto.txt
$ encfs ~/privada ~/privada_montada
Para una seguridad aún mayor, considera el cifrado de volúmenes completos con LUKS.
# cryptsetup luksFormat /dev/sdb1
# cryptsetup open /dev/sdb1 seguro
# mkfs.ext4 /dev/mapper/seguro
# mount /dev/mapper/seguro /mnt/seguro
Integridad y Revisión de Permisos Peligrosos
Revisa regularmente los permisos de los archivos para identificar posibles riesgos. Busca archivos mundialmente escribibles o con el bit setuid activado.
# find / -type f -perm -o+w
# find / -type f -perm -4000
Seguridad de Red: Controla el Acceso Remoto
La seguridad de la red es crucial para controlar el acceso remoto y proteger los servicios expuestos. Aquí tienes algunas estrategias:
Configuración Segura de SSH
SSH es un punto de entrada común para los atacantes. Refuerza la seguridad de SSH modificando el archivo /etc/ssh/sshd_config
.
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
AllowUsers luisgulo soporte
Deshabilita el inicio de sesión como root, desactiva la autenticación por contraseña y limita el número de intentos fallidos. No olvides reiniciar el servicio SSH para aplicar los cambios: # systemctl restart sshd
Filtrado de IPs y Puertos con iptables
Iptables es una herramienta poderosa para filtrar el tráfico de red. Utilízala para permitir solo el acceso desde IPs específicas y restringir el acceso a puertos no autorizados.
# iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
Recuerda guardar y restaurar las reglas de iptables para que persistan después de un reinicio.
# iptables-save > /etc/iptables/rules.v4
# iptables-restore < /etc/iptables/rules.v4
Restricción de Servicios Expuestos
Identifica los puertos abiertos y los servicios que los utilizan. Desactiva los servicios innecesarios para reducir la superficie de ataque.
$ ss -tuln
$ netstat -tulnp
$ nmap -sS localhost
Utiliza systemctl
para deshabilitar y enmascarar servicios.
# systemctl disable cups
# systemctl mask telnet
Auditoría y Análisis: Detecta Actividades Sospechosas
La auditoría y el análisis son esenciales para detectar actividades sospechosas y generar informes de seguridad. Utiliza las siguientes herramientas:
Revisión de Logs Clave
Examina regularmente los logs del sistema para identificar posibles problemas de seguridad.
$ tail -n 100 /var/log/auth.log
$ journalctl -u sshd
$ last
$ lastlog
Uso de fail2ban para Bloquear IPs
Fail2ban monitoriza los logs en busca de intentos de acceso fallidos y bloquea las IPs sospechosas.
# apt install fail2ban
# systemctl enable fail2ban
# systemctl start fail2ban
# fail2ban-client status sshd
Auditoría con auditd, auditctl, ausearch
Auditd es un sistema de auditoría que registra eventos críticos del sistema. Utiliza auditctl
para definir reglas de auditoría y ausearch
para buscar eventos específicos.
# apt install auditd
# systemctl enable auditd
# systemctl start auditd
# auditctl -w /etc/passwd -p wa -k passwd_watch
# ausearch -k passwd_watch
# aureport --file
Automatiza la generación de informes de auditoría con cron.
$ crontab -e
0 1 * * * /usr/local/bin/reporte_audit.sh
Herramientas Complementarias
Utiliza herramientas como chkrootkit, rkhunter y lynis para buscar rootkits y vulnerabilidades en el sistema.
# apt install chkrootkit rkhunter lynis
# chkrootkit
# rkhunter --check
# lynis audit system
Monitorización Histórica con atop o PCP
atop registra la actividad del sistema a nivel de procesos, mientras que PCP (Performance Co-Pilot) proporciona métricas detalladas sobre el rendimiento del sistema.
Seguridad Avanzada con SELinux
SELinux (Security-Enhanced Linux) es un módulo de seguridad del kernel de Linux que proporciona un control de acceso obligatorio (MAC). A diferencia de los permisos tradicionales (DAC), SELinux define políticas sobre qué procesos pueden acceder a qué recursos, proporcionando una capa adicional de seguridad.
Verificación y Modo de Operación
$ getenforce
$ sestatus
SELinux puede operar en tres modos: Enforcing
(bloquea acciones que violan la política), Permissive
(registra violaciones pero no las bloquea) y Disabled
(inactivo).
# setenforce 0 # Permissive
# setenforce 1 # Enforcing
Contextos de Seguridad
Cada archivo, proceso y puerto tiene un contexto de seguridad SELinux, que define su identidad de seguridad.
$ ls -Z /var/www/html
# chcon -t httpd_sys_content_t index.html
# semanage fcontext -a -t httpd_sys_content_t '/web(/.*)?'
# restorecon -Rv /web
Análisis de Errores y Solución de Conflictos
Cuando SELinux bloquea una acción, se genera un mensaje AVC (Access Vector Cache). Utiliza audit2why
y audit2allow
para diagnosticar y resolver estos problemas.
$ journalctl -xe | grep AVC
$ ausearch -m AVC
# audit2why < /var/log/audit/audit.log
# audit2allow -a -M apache_excepcion
# semodule -i apache_excepcion.pp
Control de Puertos y Servicios
SELinux también controla qué procesos pueden usar qué puertos. Utiliza semanage port
para gestionar estas asignaciones.
$ semanage port -l | grep http
# semanage port -a -t http_port_t -p tcp 8080
Recomendaciones Generales para SELinux
- Evita desactivar SELinux.
- Aplica etiquetados correctos a carpetas web, logs y configuraciones.
- Utiliza
audit2why
yaudit2allow
para diagnosticar y corregir errores. - Documenta tus módulos personalizados y mantén copias de seguridad.
- En contenedores Docker, utiliza las opciones
:Z
o:z
al montar volúmenes.
Recomendaciones Generales
- Desactiva servicios no utilizados.
- Mantén el sistema y los paquetes actualizados.
- Usa contraseñas fuertes y autenticación por clave pública.
- Realiza backups periódicos y cifrados.
- Asegura puertos abiertos y verifica con escaneos regulares.
- Revisa logs automáticamente y configura alertas por anomalías.
Conclusión
La seguridad de un sistema Linux es un proceso continuo. Implementa estas estrategias y mantente actualizado sobre las últimas amenazas y vulnerabilidades para proteger tu sistema de manera efectiva.
Fuente: Solo con Linux
Leave a Comment