Búsqueda de sitios web

Una introducción a la seguridad de su Linux VPS


Estado: Obsoleto

Este artículo está en desuso y ya no se mantiene. Todavía puede ser útil como referencia, pero puede que no esté actualizado con las mejores prácticas más recientes.

Ver en su lugar

Consulte nuestra guía más reciente, Medidas de seguridad recomendadas para proteger sus servidores.

Introducción

Tomar el control de su propio servidor Linux es una oportunidad para probar cosas nuevas y aprovechar el poder y la flexibilidad de una gran plataforma. Sin embargo, los administradores de servidores Linux deben tener la misma precaución que es apropiada con cualquier máquina conectada a la red para mantenerla segura y protegida.

Hay muchos temas de seguridad diferentes que se incluyen en la categoría general de seguridad de Linux y muchas opiniones sobre cómo es un nivel de seguridad adecuado para un servidor Linux.

Lo principal que se debe sacar de esto es que tendrá que decidir por sí mismo qué protecciones de seguridad serán necesarias. Antes de hacer esto, debe ser consciente de los riesgos y las ventajas y desventajas, y decidir el equilibrio entre usabilidad y seguridad que tenga sentido para usted.

Este artículo está destinado a ayudarlo a orientarse con algunas de las medidas de seguridad más comunes que se deben tomar en un entorno de servidor Linux. Esta no es una lista exhaustiva y no cubre las configuraciones recomendadas, pero proporcionará enlaces a recursos más completos y discutirá por qué cada componente es una parte importante de muchos sistemas.

Bloqueo de acceso con cortafuegos

Uno de los pasos más fáciles de recomendar a todos los usuarios es habilitar y configurar un firewall. Los cortafuegos actúan como una barrera entre el tráfico general de Internet y su máquina. Observan el tráfico que entra y sale de su servidor y deciden si debe permitir que se entregue la información.

Lo hacen comparando el tráfico en cuestión con un conjunto de reglas configuradas por el usuario. Por lo general, un servidor solo utilizará algunos puertos de red específicos para servicios legítimos. El resto de los puertos no se utilizan y deben protegerse de forma segura detrás de un firewall, que denegará todo el tráfico destinado a estas ubicaciones.

Esto le permite descartar datos que no espera e incluso condicionar el uso de sus servicios reales en algunos casos. Las reglas de firewall sensatas proporcionan una buena base para la seguridad de la red.

Hay bastantes soluciones de cortafuegos disponibles. Discutiremos brevemente algunas de las opciones más populares a continuación.

UFW

UFW significa cortafuegos sin complicaciones. Su objetivo es proporcionar una buena protección sin la complicada sintaxis de otras soluciones.

UFW, así como la mayoría de los firewalls de Linux, es en realidad una interfaz para controlar el firewall netfilter incluido con el kernel de Linux. Suele ser un cortafuegos sencillo de usar para personas que no están familiarizadas con las soluciones de cortafuegos de Linux y, en general, es una buena opción.

Puede aprender cómo habilitar y configurar el firewall UFW y obtener más información haciendo clic en este enlace.

IPTables

Quizás la solución de firewall de Linux más conocida sea iptables. IPTables es otro componente utilizado para administrar el cortafuegos netfilter incluido en el kernel de Linux. Ha existido durante mucho tiempo y se ha sometido a intensas auditorías de seguridad para garantizar su seguridad. Hay una versión de iptables llamada ip6tables para crear restricciones de IPv6.

Es probable que se encuentre con configuraciones de iptables durante el tiempo que administre máquinas Linux. La sintaxis puede ser complicada de comprender al principio, pero es una herramienta increíblemente poderosa que se puede configurar con conjuntos de reglas muy flexibles.

Puede obtener más información sobre cómo usar iptables en distribuciones basadas en CentOS/Fedora/RHEL aquí.

Mesas IP6

Como se mencionó anteriormente, iptables se usa para manipular las tablas que contienen reglas de IPv4. Si tiene habilitado IPv6 en su servidor, también deberá prestar atención al equivalente de IPv6: ip6tables.

El cortafuegos netfilter que se incluye en el kernel de Linux mantiene el tráfico IPv4 e IPv6 completamente separado. Estos se almacenan en diferentes tablas. Las reglas que dictan el destino final de un paquete están determinadas por la versión del protocolo que se utiliza.

Lo que esto significa para la administración del servidor es que se debe mantener un conjunto de reglas separado cuando se habilita la versión 6. El comando ip6tables comparte la misma sintaxis que el comando iptables, por lo que implementar el mismo conjunto de restricciones en la tabla de la versión 6 suele ser sencillo. Sin embargo, debe asegurarse de que coincida con el tráfico dirigido a sus direcciones IPv6 para que esto funcione correctamente.

NFTables

Aunque iptables ha sido durante mucho tiempo el estándar para los cortafuegos en un entorno Linux, recientemente se ha agregado al kernel de Linux un nuevo cortafuegos llamado nftables. Este es un proyecto del mismo equipo que hace iptables y está destinado a reemplazar eventualmente a iptables.

El cortafuegos nftables intenta implementar una sintaxis más legible que la que encontró su predecesor iptables e implementa la compatibilidad con IPv4 e IPv6 en la misma herramienta. Si bien la mayoría de las versiones de Linux en este momento no incluyen un kernel lo suficientemente nuevo como para implementar nftables, pronto será muy común y debería tratar de familiarizarse con su uso.

Uso de SSH para iniciar sesión de forma remota y segura

Cuando administre un servidor donde no tenga acceso local, deberá iniciar sesión de forma remota. La forma estándar y segura de lograr esto en un sistema Linux es a través de un protocolo conocido como SSH, que significa shell seguro.

SSH proporciona cifrado de extremo a extremo, la capacidad de canalizar tráfico no seguro a través de una conexión segura, reenvío X (interfaz gráfica de usuario a través de una conexión de red) y mucho más. Básicamente, si no tiene acceso a una conexión local o administración fuera de banda, SSH debería ser su forma principal de interactuar con su máquina.

Si bien el protocolo en sí es muy seguro y se ha sometido a una extensa investigación y revisión del código, sus opciones de configuración pueden ayudar o dificultar la seguridad del servicio. Discutiremos algunas opciones a continuación.

Contraseña frente a inicios de sesión con clave SSH

SSH tiene un modelo de autenticación flexible que le permite iniciar sesión utilizando varios métodos diferentes. Las dos opciones más populares son la contraseña y la autenticación de clave SSH.

Si bien la autenticación con contraseña es probablemente el modelo más natural para la mayoría de los usuarios, también es la menos segura de estas dos opciones. Los inicios de sesión con contraseña permiten que un intruso potencial adivine contraseñas continuamente hasta que encuentre una combinación exitosa. Esto se conoce como fuerza bruta y los posibles atacantes pueden automatizarlo fácilmente con herramientas modernas.

Las claves SSH, por otro lado, funcionan generando un par de claves seguras. Una clave pública se crea como un tipo de prueba para identificar a un usuario. Se puede compartir públicamente sin problemas y no se puede usar para otra cosa que no sea identificar a un usuario y permitir que el usuario inicie sesión con la clave privada correspondiente. La clave privada debe mantenerse en secreto y se utiliza para pasar la prueba de su clave pública asociada.

Básicamente, puede agregar su clave SSH pública en un servidor y le permitirá iniciar sesión utilizando la clave privada correspondiente. Estas claves son tan complejas que la fuerza bruta no es práctica. Además, opcionalmente puede agregar frases de contraseña largas a su clave que agrega aún más seguridad.

Para obtener más información sobre cómo configurar claves SSH en su servidor.

Implementar fail2ban para prohibir direcciones IP maliciosas

Un paso que ayudará con la seguridad general de su configuración SSH es implementar una solución como fail2ban. Fail2ban es un servicio que monitorea los archivos de registro para determinar si es probable que un sistema remoto no sea un usuario legítimo y luego prohibir temporalmente el tráfico futuro desde la dirección IP asociada.

La configuración de una política sana de fail2ban puede permitirle marcar las computadoras que continuamente intentan iniciar sesión sin éxito y agregar reglas de firewall para eliminar el tráfico de ellas durante un período de tiempo determinado. Esta es una manera fácil de obstaculizar los métodos de fuerza bruta que se usan a menudo porque tendrán que tomarse un descanso durante bastante tiempo cuando estén prohibidos. Esto suele ser suficiente para desalentar más intentos de fuerza bruta.

Puedes aprender CentOS aquí.

Implementar un sistema de detección de intrusos para detectar entradas no autorizadas

Una consideración importante a tener en cuenta es desarrollar una estrategia para detectar el uso no autorizado. Es posible que tenga medidas preventivas, pero también necesita saber si han fallado o no.

Un sistema de detección de intrusos, también conocido como IDS, cataloga la configuración y los detalles del archivo cuando se encuentra en buen estado. Luego ejecuta comparaciones con estos estados registrados para averiguar si se han cambiado los archivos o se han modificado las configuraciones.

Existen bastantes sistemas de detección de intrusos. Vamos a repasar algunos a continuación.

cable trampa

Una de las implementaciones de IDS más conocidas es tripwire. Tripwire compila una base de datos de archivos del sistema y protege sus archivos de configuración y binarios con un conjunto de claves. Después de elegir los detalles de configuración y definir las excepciones, las ejecuciones posteriores notifican cualquier alteración en los archivos que supervisa.

El modelo de política es muy flexible, lo que le permite adaptar sus propiedades a su entorno. Luego puede configurar ejecuciones de tripwire a través de un trabajo cron e incluso implementar notificaciones por correo electrónico en caso de actividad inusual.

Obtenga más información sobre cómo implementar tripwire aquí.

Ayudante

Otra opción para un IDS es Aide. De manera similar a Tripwire, Aide opera construyendo una base de datos y comparando el estado actual del sistema con los valores buenos conocidos que ha almacenado. Cuando surge una discrepancia, puede notificar al administrador del problema.

Tanto Aide como Tripwire ofrecen soluciones similares para el mismo problema. Consulte la documentación y pruebe ambas soluciones para descubrir cuál le gusta más.

Para obtener una guía sobre cómo usar Aide como IDS, consulte aquí.

Psad

La herramienta psad se ocupa de una parte diferente del sistema que las herramientas enumeradas anteriormente. En lugar de monitorear los archivos del sistema, psad vigila los registros del firewall para tratar de detectar actividad maliciosa.

Si un usuario está tratando de detectar vulnerabilidades con un escaneo de puertos, por ejemplo, psad puede detectar esta actividad y alterar dinámicamente las reglas del firewall para bloquear al usuario infractor. Esta herramienta puede registrar diferentes niveles de amenaza y basar su respuesta en la gravedad del problema. Opcionalmente, también puede enviar un correo electrónico al administrador.

Para aprender a usar psad como un IDS de red, siga este enlace.

Hermano

Otra opción para un IDS basado en red es Bro. Bro es en realidad un marco de monitoreo de red que se puede usar como un IDS de red o para otros fines, como recopilar estadísticas de uso, investigar problemas o detectar patrones.

El sistema Bro se divide en dos capas. La primera capa monitorea la actividad y genera lo que considera eventos. La segunda capa ejecuta los eventos generados a través de un marco de políticas que dicta qué se debe hacer, en todo caso, con el tráfico. Puede generar alertas, ejecutar comandos del sistema, simplemente registrar la ocurrencia o tomar otras rutas.

Para saber cómo usar Bro como IDS, haga clic aquí.

RKHunter

Aunque técnicamente no es un sistema de detección de intrusos, rkhunter funciona con muchos de los mismos principios que los sistemas de detección de intrusos basados en host para detectar rootkits y malware conocido.

Si bien los virus son raros en el mundo de Linux, existen malware y rootkits que pueden comprometer su caja o permitir el acceso continuo a un explotador exitoso. RKHunter descarga una lista de vulnerabilidades conocidas y luego compara su sistema con la base de datos. También le avisa si detecta configuraciones no seguras en algunas aplicaciones comunes.

Puede consultar este artículo para aprender a usar RKHunter en Ubuntu.

Consejos generales de seguridad

Si bien las herramientas y configuraciones anteriores pueden ayudarlo a proteger partes de su sistema, la buena seguridad no se obtiene simplemente implementando una herramienta y olvidándose de ella. La buena seguridad se manifiesta en cierta forma de pensar y se logra a través de la diligencia, el escrutinio y la participación en la seguridad como proceso.

Existen algunas reglas generales que pueden ayudarlo a encaminarse en la dirección correcta con respecto al uso seguro de su sistema.

Preste atención a las actualizaciones y actualice regularmente

Las vulnerabilidades de software se encuentran todo el tiempo en casi todos los tipos de software que pueda tener en su sistema. Los mantenedores de distribución generalmente hacen un buen trabajo al mantenerse al día con los últimos parches de seguridad y enviar esas actualizaciones a sus repositorios.

Sin embargo, tener actualizaciones de seguridad disponibles en el repositorio no le sirve de nada a su servidor si no ha descargado e instalado las actualizaciones. Aunque muchos servidores se benefician al depender de versiones estables y bien probadas del software del sistema, los parches de seguridad no deben posponerse y deben considerarse actualizaciones críticas.

La mayoría de las distribuciones proporcionan listas de correo de seguridad y repositorios de seguridad separados para descargar e instalar parches de seguridad únicamente.

Tenga cuidado al descargar software fuera de los canales oficiales

La mayoría de los usuarios seguirán con el software disponible en los repositorios oficiales para su distribución, y la mayoría de las distribuciones ofrecen paquetes firmados. Los usuarios generalmente pueden confiar en los mantenedores de distribución y centrar su preocupación en la seguridad del software adquirido fuera de los canales oficiales.

Puede optar por confiar en los paquetes de su distribución o en el software que está disponible en el sitio web oficial de un proyecto, pero tenga en cuenta que, a menos que esté auditando cada pieza de software usted mismo, existe un riesgo. La mayoría de los usuarios sienten que este es un nivel de riesgo aceptable.

Por otro lado, el software adquirido de repositorios aleatorios y PPA mantenidos por personas u organizaciones que no reconoce puede ser un gran riesgo de seguridad. No hay reglas establecidas, y la mayoría de las fuentes de software no oficiales probablemente serán completamente seguras, pero tenga en cuenta que se está arriesgando cada vez que confía en otra parte.

Asegúrate de poder explicarte por qué confías en la fuente. Si no puede hacer esto, considere sopesar su riesgo de seguridad como una preocupación mayor que la comodidad que obtendrá.

Conoce tus Servicios y Limitalos

Aunque es probable que el objetivo principal de ejecutar un servidor sea proporcionar servicios a los que pueda acceder, limite los servicios que se ejecutan en su máquina a aquellos que usa y necesita. Considere cada servicio habilitado como un posible vector de amenazas e intente eliminar tantos vectores de amenazas como pueda sin afectar su funcionalidad principal.

Esto significa que si está ejecutando un servidor sin monitor (sin monitor conectado) y no ejecuta ningún programa gráfico (no web), debe deshabilitar y probablemente desinstalar su servidor de pantalla X. Se pueden tomar medidas similares en otras áreas. ¿Sin impresora? Deshabilite el servicio \lp. ¿No comparte la red de Windows? Deshabilite el servicio \samba.

Puede descubrir qué servicios está ejecutando en su computadora a través de una variedad de medios. Este artículo cubre cómo detectar servicios habilitados en la sección \crear una lista de requisitos.

No use FTP; Utilice SFTP en su lugar

Esto puede ser difícil de aceptar para muchas personas, pero FTP es un protocolo inherentemente inseguro. Toda la autenticación se envía en texto sin formato, lo que significa que cualquier persona que controle la conexión entre su servidor y su máquina local puede ver sus datos de inicio de sesión.

Solo hay muy pocos casos en los que probablemente sea correcto implementar FTP. Si está ejecutando un espejo de descarga anónimo, público y de solo lectura, FTP es una opción decente. Otro caso en el que FTP es una buena opción es cuando simplemente está transfiriendo archivos entre dos computadoras que están detrás de un firewall habilitado para NAT y confía en que su red es segura.

En casi todos los demás casos, debe utilizar una alternativa más segura. La suite SSH viene completa con un protocolo alternativo llamado SFTP que opera en la superficie de manera similar, pero se basa en la misma seguridad del protocolo SSH.

Esto le permite transferir información hacia y desde su servidor de la misma manera que usaría tradicionalmente FTP, pero sin el riesgo. La mayoría de los clientes FTP modernos también pueden comunicarse con servidores SFTP.

Para aprender a usar SFTP para transferir archivos de forma segura, consulte esta guía.

Implementar políticas de seguridad de usuarios sensibles

Hay una serie de pasos que puede seguir para proteger mejor su sistema al administrar usuarios.

Una sugerencia es deshabilitar los inicios de sesión de root. Dado que el usuario raíz está presente en cualquier sistema similar a POSIX y es una cuenta todopoderosa, es un objetivo atractivo para muchos atacantes. Deshabilitar los inicios de sesión raíz suele ser una buena idea después de haber configurado el acceso sudo, o si se siente cómodo usando el comando su. Muchas personas no están de acuerdo con esta sugerencia, pero examine si es adecuada para usted.

Es posible deshabilitar los inicios de sesión raíz remotos dentro del demonio SSH o deshabilitar los inicios de sesión locales, puede hacer restricciones en el archivo /etc/securetty. También puede configurar el shell del usuario raíz en un no shell para deshabilitar el acceso del shell raíz y configurar reglas PAM para restringir también los inicios de sesión raíz. RedHat tiene un excelente artículo sobre cómo deshabilitar los inicios de sesión de root.

Otra buena política para implementar con las cuentas de usuario es crear cuentas únicas para cada usuario y servicio, y otorgarles solo los permisos mínimos para realizar su trabajo. Bloquee todo a lo que no necesiten acceder y quíteles todos los privilegios, excepto paralizarlos.

Esta es una política importante porque si un usuario o servicio se ve comprometido, no genera un efecto dominó que le permite al atacante obtener acceso a más partes del sistema. Este sistema de compartimentación lo ayuda a aislar problemas, al igual que un sistema de mamparos y puertas estancas puede ayudar a evitar que un barco se hunda cuando hay una brecha en el casco.

De manera similar a las políticas de servicios que discutimos anteriormente, también debe tener cuidado de deshabilitar cualquier cuenta de usuario que ya no sea necesaria. Esto puede suceder cuando desinstala software o si un usuario ya no debería tener acceso al sistema.

Preste atención a la configuración de permisos

Los permisos de archivo son una gran fuente de frustración para muchos usuarios. Encontrar un equilibrio para los permisos que le permitan hacer lo que necesita hacer sin exponerse a daños puede ser difícil y exige una cuidadosa atención y reflexión en cada escenario.

La configuración de una política de umask sana (la propiedad que define los permisos predeterminados para nuevos archivos y directorios) puede contribuir en gran medida a crear buenos valores predeterminados. Puede obtener información sobre cómo funcionan los permisos y cómo ajustar su valor de umask aquí.

En general, debe pensar dos veces antes de configurar algo para que se pueda escribir en todo el mundo, especialmente si es accesible de alguna manera a Internet. Esto puede tener consecuencias extremas. Además, no debe establecer el bit SGID o SUID en los permisos a menos que sepa absolutamente lo que está haciendo. Además, verifique que sus archivos tengan un propietario y un grupo.

La configuración de los permisos de su archivo variará mucho según su uso específico, pero siempre debe intentar ver si hay una manera de arreglárselas con menos permisos. Esta es una de las cosas más fáciles de equivocarse y un área donde hay muchos malos consejos flotando en Internet.

Compruebe regularmente si hay malware en sus servidores

Si bien Linux es generalmente menos atacado por malware que Windows, de ninguna manera es inmune al software malicioso. Junto con la implementación de un IDS para detectar intentos de intrusión, el análisis de malware puede ayudar a identificar rastros de actividad que indican que se ha instalado software ilegítimo en su máquina.

Hay una serie de escáneres de malware disponibles para sistemas Linux que se pueden usar para validar regularmente la integridad de sus servidores. Linux Malware Detect, también conocido como maldet o LMD, es una opción popular que se puede instalar y configurar fácilmente para buscar firmas de malware conocidas. Se puede ejecutar manualmente para realizar escaneos únicos y también se puede demonizar para ejecutar escaneos programados regularmente. Los informes de estos análisis se pueden enviar por correo electrónico a los administradores del servidor.

Cómo proteger el software específico que está utilizando

Si bien esta guía no es lo suficientemente extensa como para analizar los detalles de cómo proteger cada tipo de servicio o aplicación, hay muchos tutoriales y pautas disponibles en línea. Debe leer las recomendaciones de seguridad de cada proyecto que pretenda implementar en su sistema.

Además, el software de servidor popular, como los servidores web o los sistemas de administración de bases de datos, tienen sitios web y bases de datos completos dedicados a la seguridad. En general, debe leer y asegurar cada servicio antes de ponerlo en línea.

Puede consultar nuestra sección de seguridad para obtener consejos más específicos para el software que está utilizando.

Conclusión

Ahora debería tener una comprensión decente de las prácticas generales de seguridad que puede implementar en su servidor Linux. Si bien nos hemos esforzado por mencionar muchas áreas de gran importancia, al final del día, tendrá que tomar muchas decisiones por su cuenta. Cuando administra un servidor, debe asumir la responsabilidad de la seguridad de su servidor.

Esto no es algo que pueda configurar de una sola vez al principio, es un proceso y un ejercicio continuo para auditar su sistema, implementar soluciones, evaluar registros y alertas, reevaluar sus necesidades, etc. Debe estar atento para proteger su sistema y estar siempre evaluando y monitoreando los resultados de sus soluciones.

Por Justin Ellingwood

Artículos relacionados: