GNU/Linux >> Tutoriales Linux >  >> Linux

3 formas rápidas de reducir su superficie de ataque en Linux

Los sistemas Linux son cosas complicadas. Desde el primer momento, cada distribución incluye una serie de servicios destinados a ayudarlo a poner las cosas en marcha. Algunas distribuciones habilitan menos servicios de manera predeterminada y otras habilitan más. La diferencia está en la comodidad. Algunas distribuciones intentan ponerlo en funcionamiento rápidamente, por lo que tienen un gran conjunto de servicios predeterminados habilitados para facilitarle la instalación, el inicio de sesión y la configuración. Otros toman el enfoque opuesto y no instalan casi nada por defecto.

Este artículo es el comienzo de una serie corta, donde hablaremos un poco sobre el endurecimiento, un poco sobre la segmentación y, finalmente, cómo escanear nuestras redes para ver si lo hicimos bien. Así que espera y déjame mostrarte algunas capas de defensa.

Instalar menos software

Cuando instalo un nuevo sistema, trato de instalar lo menos posible. Comienzo con el conjunto de paquetes base y realmente no instalo nada más. Es simple agregar servicios después de la instalación, entonces, ¿por qué complicar el proceso? Además, si hace esto mucho, probablemente querrá instalar desde un sistema Kickstart (o plantilla). Por lo tanto, le gustaría configurarlo de la manera más simple y genérica posible.

Para este artículo, instalé un sistema base Red Hat Enterprise Linux (RHEL) 7.6 para realizar algunas pruebas reales. Hice lo mínimo durante la instalación, seleccionando base conjunto de paquetes y configuración de mis contraseñas, nombres de usuario y red. También habilité el Protocolo de tiempo de red (NTP).

Identificar puertos abiertos

Después de la instalación, podemos ver la lista de puertos abiertos. Los puertos son la forma en que los servicios que se ejecutan en su servidor permiten que otros sistemas se conecten a ellos. Un servidor web, por ejemplo, vinculará los puertos 80 y 443 al servicio del servidor web. En este artículo, identificaremos qué servicios tienen puertos abiertos en su instalación base y luego veremos cómo enumerar los servicios y deshabilitar los que no queremos.

En un sistema Red Hat Enterprise Linux 7.6, usamos el ss comando para ver esta información. En sistemas que aún se envían con netstat , utilizará el netstat comando.

Ejecutando ss en nuestro sistema de prueba muestra algunos puertos abiertos:

[root@rhel76test ~]# ss -tulnp --no-header | awk '{print($1, $5, $7)}'
udp  *:68            users:(("dhclient",pid=3316,fd=6))
udp  127.0.0.1:323   users:(("chronyd",pid=2974,fd=1))
udp  ::1:323         users:(("chronyd",pid=2974,fd=2))
tcp  *:22            users:(("sshd",pid=3523,fd=3))
tcp  127.0.0.1:25    users:(("master",pid=3771,fd=13))
tcp  :::22           users:(("sshd",pid=3523,fd=4))
tcp  ::1:25          users:(("master",pid=3771,fd=14))

Parece que la base RHEL 7.6 no está mal. Observe en la segunda columna, algunos de los puertos abiertos muestran una IP y luego un puerto, y otros tienen un * y luego un puerto. Las entradas que parecen 127.0.0.1:25 significa que solo están escuchando en localhost. Este resultado significa que no son accesibles de forma remota. Los servicios que se parecen a *:22 significa que están escuchando en cualquier interfaz. Asimismo, para las direcciones IPv6, tenemos ::1:323 , y :::22 . El ::1 las entradas son localhost, el ::: están abiertos de par en par.

Lo que todo esto significa es que este sistema tiene solo dos puertos IPv4 y un puerto IPv6 abiertos al mundo. El dhclient El servicio es probablemente un buen ejemplo de algo que podríamos deshabilitar (lo que cerraría su puerto), pero solo si su servidor no está usando DHCP para obtener su dirección IP. En el caso de mi servidor de prueba, lo es.

Deshabilitar servicios

Listar servicios y detenerlos/deshabilitarlos es relativamente fácil en Red Hat Enterprise Linux 7. Usaremos systemd para enumerar todas las unidades activas y luego decirle que se detenga y deshabilite las que no queremos que se ejecuten.

Para enumerar todos los servicios en ejecución, puede usar systemctl list-units --type=service --state=running . En mi sistema de prueba, el resultado muestra 19 servicios muy modestos, y la mayoría de ellos parecen necesarios. Sin embargo, elegiremos uno para demostrarlo:

[root@rhel76test ~]# systemctl list-units --type=service --state=running
UNIT                      LOAD   ACTIVE SUB DESCRIPTION
auditd.service            loaded active running Security Auditing Service
chronyd.service           loaded active running NTP client/server
crond.service             loaded active running Command Scheduler
dbus.service              loaded active running D-Bus System Message Bus
firewalld.service         loaded active running firewalld - dynamic firewall daemon
[email protected]        loaded active running Getty on tty1
lvm2-lvmetad.service      loaded active running LVM2 metadata daemon
NetworkManager.service    loaded active running Network Manager
polkit.service            loaded active running Authorization Manager
postfix.service           loaded active running Postfix Mail Transport Agent
qemu-guest-agent.service  loaded active running QEMU Guest Agent
rhnsd.service             loaded active running LSB: Starts the Spacewalk Daemon
rhsmcertd.service         loaded active running Enable periodic update of entitlement certificates.
rsyslog.service           loaded active running System Logging Service
sshd.service              loaded active running OpenSSH server daemon
systemd-journald.service  loaded active running Journal Service
systemd-logind.service    loaded active running Login Service
systemd-udevd.service     loaded active running udev Kernel Device Manager
tuned.service             loaded active running Dynamic System Tuning Daemon

Digamos que no queremos que Postfix se cargue en el arranque. Simplemente usaríamos systemctl stop postfix y luego systemctl disable postfix , así:

[root@rhel76test ~]# systemctl stop postfix
[root@rhel76test ~]# systemctl disable postfix
Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service.
[root@rhel76test ~]# systemctl list-units --type=service --state=running | grep postfix

Ahora, probablemente no quieras deshabilitar Postfix, pero entiendes el punto.

Resumiendo

Ahí lo tienes. Aprendí algo hoy:listo para usar, Red Hat Enterprise Linux 7.6 es bastante limpio y ordenado. Espero que haya aprendido a buscar y deshabilitar servicios para reducir su superficie de ataque.

Sintonice la próxima entrega de esta serie, donde hablaré sobre la segmentación de la red y el firewall

¡Gracias por leer!


Linux
  1. Cómo proteger sus servicios de correo electrónico de Linux con SSL/TLS

  2. Embárcate en una aventura en tu terminal Linux

  3. 6 formas de aumentar su perfil y potencial de ingresos de administrador de sistemas de Linux

  4. Comprobar los servicios en ejecución en Linux

  5. 4 formas de identificar quién ha iniciado sesión en su sistema Linux

10 formas de personalizar su escritorio Linux con la herramienta de ajustes de GNOME

Maneras simples de reiniciar su Ubuntu Linux

Ponga un temporizador en sus comandos en ejecución con el comando de tiempo de espera en Linux

30 herramientas y servicios interesantes para monitorear sus servidores Linux

Conceptos básicos de Linux:3 formas de encontrar su dirección IP local en Debian 11

Todas las formas posibles de reducir el sobrecalentamiento de la computadora portátil en Linux