GNU/Linux >> Tutoriales Linux >  >> Linux

Protección de un sistema Linux heredado

Dicen que comprar una casa o un auto usado es solo comprar los problemas de otra persona. ¿Qué reparaciones de cinta adhesiva se esconden dentro de las paredes o debajo del capó? Sin conocer el historial de mantenimiento, debe investigar para evitar lo inesperado.

Ya sea que haya un servidor no autorizado, administradores que abandonan la empresa o adquisiciones y fusiones, en algún momento de su viaje como administrador de sistemas, heredará un servidor que no construyó pero del que de repente es responsable. Este artículo se centrará en algunas áreas para comenzar a proteger y familiarizarse con el nuevo sistema. Adoptar un enfoque de clasificación es solo un punto de partida:la seguridad es parte del ciclo de vida continuo de la administración de un sistema.

Tenga en cuenta que este sistema aloja una aplicación o un servicio que debe permanecer disponible. Utilice cualquier proceso de gestión de cambios requerido que tenga su empresa. Además, familiarícese con las políticas de seguridad de su empresa y dónde puede consultarlas para obtener la configuración adecuada.

Copias de seguridad

Tenga siempre un buen plan de copias de seguridad... ¡y copias de seguridad recuperables!

Inicie la revisión verificando que se realicen copias de seguridad del sistema con regularidad y que las copias de seguridad sean recuperables. No espere hasta que necesite la restauración para descubrir que está mal. Las comprobaciones de copia de seguridad deben incluir la confirmación de que todos los sistemas de archivos remotos también estén respaldados en alguna parte.

Algunas aplicaciones y bases de datos requieren un proceso o agente especial para obtener buenas copias de seguridad, por lo que este es un buen momento para revisar que esas copias de seguridad adicionales se estén realizando correctamente. La realización de pruebas de recuperación periódicas que incluyen probar la aplicación para la funcionalidad posterior a la recuperación identifica las brechas y los problemas con las copias de seguridad.

También es posible que desee realizar una copia de seguridad única rápida antes de continuar. Es posible que no sea necesaria una restauración completa del sistema, pero si los ajustes salen terriblemente mal, esta copia de seguridad proporciona un estado de funcionamiento al que recurrir. Utilice el control de cambios y documente su trabajo como otro método para ayudar a una posible recuperación.

Cuentas

Sus próximos pasos incluyen una revisión de quién tiene acceso al sistema y cómo se autentica. Cualquier privilegio elevado, como a través de sudo , también hay que comprobarlo. Conozca las políticas de seguridad de la empresa, como la caducidad de la contraseña y las reglas de complejidad para verificar que se están aplicando. Este artículo de la base de conocimiento explica los detalles sobre cómo configurar políticas de contraseñas.

Nota: Asegúrese de comprobar si el sistema utiliza fuentes de identidad como IDM, AD o LDAP. Por el contrario, incluso si el sistema utiliza una cuenta externa, las cuentas locales deben revisarse.

Veamos ejemplos específicos de problemas que debe considerar y cómo manejarlos.

La cuenta del administrador anterior

Dado que este sistema fue heredado, considere si el administrador anterior todavía necesita una cuenta. De lo contrario, evite eliminar su cuenta. Bloquearlo, en su lugar. Al hacerlo, se conserva la información de la cuenta y se ayuda a evitar la reutilización inadvertida del UID. El usermod El comando se puede usar para bloquear la cuenta:

$ sudo user mod -L <username>

Cuentas de acceso privilegiado

Revise sudoers para incluir ambos sudoers archivo (/etc/sudoers ) y el directorio de inclusión (/etc/sudoers.d ). Verifique si hay tareas en particular que incluyan ALL . Esta tarea normalmente incluye el grupo wheel . Para eliminar usuarios de grupos, utilice groupmems comando como este:

$ sudo groupmems -g wheel -d <username>

También puede enumerar cualquier comando permitido por sudo para cualquier usuario como este:

$ sudo -l -U <username>

Otras cuentas

Si hay cuentas que comparten varios usuarios, considere forzar un cambio de contraseña como parte de este traspaso. Un mejor enfoque para las cuentas compartidas sería aprovechar los grupos y las ACL para los permisos de archivos.

Las cuentas de servicio no deben tener acceso de inicio de sesión como práctica recomendada. Estas cuentas normalmente están bloqueadas o no tienen contraseña, y tienen un shell como /usr/sbin/nologin . Si una cuenta de servicio necesita un shell interactivo, considere otorgarle al administrador sudo su <accountname> en lugar de inicio de sesión directo.

Otros comandos que pueden ayudar al revisar cuentas son chage y last . El chage El comando proporciona opciones para ver y ajustar la configuración de caducidad de la cuenta. El last El comando muestra información sobre inicios de sesión recientes.

Para ver la información de caducidad de una cuenta:

$ sudo chage -l <username>

Para ver los últimos cinco inicios de sesión de una cuenta:

$ last <username>  -5

Puertos y servicios

Revisar los servicios y puertos en ejecución lo ayuda a identificar aquellos que son innecesarios y se pueden deshabilitar. Detener estos servicios adicionales también los elimina como vectores de ataque.

Una forma rápida de mostrar lo que está escuchando es con ss dominio. Este ejemplo usa opciones para mostrar sockets que escuchan TCP y UDP, y también incluye detalles del proceso:

$ sudo ss -tulnp 

Ejecutar este comando en un servidor web de muestra da lo que ve aquí:

Este resultado muestra que hay httpd procesos escuchando los puertos 80 , 443 , 8080 y 8443 . Otros procesos de escucha incluyen mariadb (mysqld ) en el puerto 3306 , xvnc en el puerto 5901 y vsftpd en el puerto21 . Estos últimos tres procesos pueden generar algunas preocupaciones.

Todo lo que no sea necesario para que la aplicación o el sistema funcione debe deshabilitarse. Si necesita rastrear un PID hasta el systemd servicio, ejecute systemctl status :

$ systemctl status <PID>

Configuraciones de investigación para los servicios restantes. Algunas aplicaciones pueden admitir ACL para agregar otra capa de protección. En sistemas multitarjeta, verifique si solo se necesita un servicio en un segmento de red. La Local Address:Port La columna muestra si el servicio está escuchando en una IP específica o en todas las redes (* , 0.0.0.0 , o :: ).

Veamos cosas adicionales que puede hacer para proteger sus puertos y servicios.

Puertos

Escaneo de puertos con una herramienta como nmap muestra qué puertos son accesibles desde otro sistema. Esta herramienta también se puede utilizar para validar que los cortafuegos funcionan como se espera. Tienes varias opciones con nmap , pero para un escaneo rápido y simple, solo necesita proporcionar el nombre de host o la dirección IP:

$ nmap <host-to-scan>

Servicios

Acceda a sus servicios para ver qué se está ejecutando y qué es necesario, ya que no todos los servicios tienen un oyente de red activo. Puede obtener una lista de servicios en ejecución utilizando --state opción con systemctl , así:

$ systemctl --state=running -t s

Detener y deshabilitar servicios es sencillo con systemctl :

$ sudo systemctl stop <service name>
$ sudo systemctl disable <service name>

Además, compruebe si hay algún servicio que haya fallado y necesite mantenimiento:

$ systemctl --state=failed

O, si un servicio no es necesario en absoluto, desactívelo con systemctl disable .

SELinux

SELinux debe estar habilitado y configurado para aplicar. Este estado se puede verificar usando sestatus :

$ sestatus -v

Si es necesario, puede cambiar SELinux para que se cumpla con el comando:

$ sudo setenforce Enforcing

Mantenga el cambio persistente yendo a /etc/selinux/config buscando SELINUX=disable o SELINUX=permissive , luego cambie la línea a:

SELINUX=enforcing

La solución de problemas de SELinux va más allá de esta guía, pero una buena referencia inicial es este artículo de la base de conocimiento.

Parcheo

Mantener y asegurar un sistema incluye actualizaciones. Para el servidor heredado, comience por verificar que el sistema esté suscrito y configurado para recibir actualizaciones. En Red Hat Enterprise Linux (RHEL), use este comando para mostrar información sobre el servicio de administración de suscripciones:

$ sudo subscription-manager config --list 

El baseurl listado en el [rhsm ] proporciona información sobre a qué está suscrito este sistema. Si cdn.redhat.com aparece en la lista, el sistema está suscrito directamente a Red Hat Content Delivery Network.

Este ejemplo muestra un sistema suscrito directamente a Red Hat. Si el baseurl es un servidor satélite, verifique los repositorios sincronizados allí para asegurarse de que el contenido sincronizado esté actualizado.

Confirme qué repositorios están habilitados para el sistema con este comando:

$ yum repolist --all

Esta salida muestra los repositorios configurados y su estado. Si un repositorio está deshabilitado, no se buscarán parches cuando se actualice el sistema.

Nota: A partir de RHEL 8, CentOS 8 y Fedora 22, yum fue reemplazado por dnf . El yum las opciones son casi las mismas que las de dnf y yum en sí mismo es solo un enlace simbólico a dnf .

Ejecutando yum check-update enumerará los paquetes y las versiones que están disponibles para la actualización. Las mejores prácticas aplican todos los parches disponibles, pero puede haber algunos casos en los que solo se deseen arreglos relacionados con la seguridad. Es posible hacer esto usando --security opción.

Esta opción se puede combinar con el check-update para devolver una lista de parches que brindan alivio a una vulnerabilidad de seguridad, pero omitirán cualquier otra cosa. También se puede incluir con la update comando.

$ yum check-update 

Agrega el --security opción para limitar esta salida a actualizaciones relacionadas con la seguridad.

Para los sistemas Red Hat Enterprise Linux, puede revisar la criticidad de cada actualización desde Red Hat Satellite o el portal del cliente. Cada errata de seguridad tiene una calificación (crítica, importante, moderada o baja) basada en el riesgo potencial. La calificación lo ayuda a determinar con qué anticipación debe programar cualquier actualización del sistema.

Cuando esté listo para parchear, ejecute la yum update comando:

$ sudo yum update

Revisa el resultado y presiona Y cuando se le solicite.

Nota: Las actualizaciones del kernel requieren un reinicio, y este artículo enumera qué otros paquetes requieren un reinicio para los sistemas RHEL. Las yum-utils el paquete también incluye un needs-restarting utilidad que comprueba si es necesario reiniciar.

Siguientes pasos

Los escaneos de vulnerabilidades y las verificaciones de cumplimiento deben programarse y realizarse según lo permita el tiempo. Dos herramientas para explorar este tema son OpenVAS y OpenSCAP. Estas herramientas brindan un análisis más profundo del sistema, informando sobre cualquier vulnerabilidad existente y brechas en el cumplimiento. Si no ha usado estas herramientas antes, es posible que le tome algún tiempo configurarlas y familiarizarse con ellas, pero deberían convertirse en sus herramientas de referencia para proteger todos los sistemas que administra.

Cerrándolo

Ser asignado para administrar un sistema que alguien más construyó ciertamente puede ser intimidante. A lo largo de esta revisión de su sistema heredado, debería estar más familiarizado con él y habrá mejorado su seguridad. Continúe con revisiones de seguridad periódicas para todos sus sistemas como parte del ciclo de vida del sistema.

Asegúrese de consultar los artículos futuros a medida que profundizamos en el análisis de vulnerabilidades y los procesos STIG.

[¿Quiere probar Red Hat Enterprise Linux? Descárguelo ahora gratis.]


Linux
  1. Ejemplos de comandos resize2fs en Linux

  2. historial de tiempo de actividad de linux

  3. Deshabilitar vsyscalls en Linux

  4. ¿Alternativa a `memory.size()` de R en Linux?

  5. Sistema de colas de Linux

Comando Fsck en Linux

¿Linux es un sistema operativo o un kernel?

La introducción de un administrador de sistemas de Linux a cgroups

Documentación del tiempo de actividad del sistema en Linux

Optimizador y monitoreo del sistema Stacer Linux

Cómo enumerar servicios en Linux