Compartí algunos primeros pasos importantes para ayudar a administrar su servidor Linux personal en un artículo anterior. Mencioné brevemente el monitoreo de las conexiones de red para los puertos de escucha, y quiero ampliar esto usando netstat
comando para sistemas Linux.
El monitoreo de servicios y el escaneo de puertos son prácticas estándar de la industria. Hay un software muy bueno como Prometheus para ayudar a automatizar el proceso y SELinux para ayudar a contextualizar y proteger el acceso al sistema. Sin embargo, creo que comprender cómo su servidor se conecta a otras redes y dispositivos es clave para establecer una línea de base de lo que es normal para su servidor, lo que lo ayuda a reconocer anomalías que pueden sugerir un error o una intrusión. Como principiante, descubrí que netstat
El comando proporciona información importante sobre mi servidor, tanto para la supervisión como para la resolución de problemas de la red.
Netstat y herramientas de monitoreo de red similares, agrupadas en el paquete net-tools, muestran información sobre las conexiones de red activas. Debido a que los servicios que se ejecutan en puertos abiertos a menudo son vulnerables a la explotación, practicar un monitoreo regular de la red puede ayudarlo a detectar actividades sospechosas de manera temprana.
Instalar netstat
Netstat suele estar preinstalado en las distribuciones de Linux. Si netstat no está instalado en su servidor, instálelo con su administrador de paquetes. En un sistema basado en Debian:
$ sudo apt-get install net-tools
Para sistemas basados en Fedora:
$ dnf install net-tools
Usar netstat
Por sí solo, el netstat
El comando muestra todas las conexiones establecidas. Puedes usar el netstat
opciones anteriores para especificar aún más el resultado previsto. Por ejemplo, para mostrar todas las conexiones de escucha y no escucha, use el --all
(-a
para abreviar) opción. Esto devuelve muchos resultados, por lo que en este ejemplo canalizo la salida a head
para mostrar solo las primeras 15 líneas de salida:
$ netstat --all | head -n 15
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:27036 *:* LISTEN
tcp 0 0 localhost:27060 *:* LISTEN
tcp 0 0 *:16001 *:* LISTEN
tcp 0 0 localhost:6463 *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:57343 *:* LISTEN
tcp 0 0 *:ipp *:* LISTEN
tcp 0 0 *:4713 *:* LISTEN
tcp 0 0 10.0.1.222:48388 syd15s17-in-f5.1e:https ESTABLISHED
tcp 0 0 10.0.1.222:48194 ec2-35-86-38-2.us:https ESTABLISHED
tcp 0 0 10.0.1.222:56075 103-10-125-164.va:27024 ESTABLISHED
tcp 0 0 10.0.1.222:46680 syd15s20-in-f10.1:https ESTABLISHED
tcp 0 0 10.0.1.222:52730 syd09s23-in-f3.1e:https ESTABLISHED
Para mostrar solo los puertos TCP, use --all
y --tcp
opciones, o -at
para abreviar:
$ netstat -at | head -n 5
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:27036 *:* LISTEN
tcp 0 0 localhost:27060 *:* LISTEN
tcp 0 0 *:16001 *:* LISTEN
Para mostrar solo los puertos UDP, utilice --all
y --udp
opciones, o -au
para abreviar:
$ netstat -au | head -n 5
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 *:27036 *:*
udp 0 0 10.0.1.222:44741 224.0.0.56:46164 ESTABLISHED
udp 0 0 *:bootpc
Las opciones de netstat suelen ser intuitivas. Por ejemplo, para mostrar todos los puertos TCP y UDP de escucha con ID de proceso (PID) y dirección numérica:
$ sudo netstat --tcp --udp --listening --programs --numeric
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Addr State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 2500/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1726/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1721/cupsd
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 4023/sshd: tux@
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::22 :::* LISTEN 1726/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1721/cupsd
tcp6 0 0 ::1:6010 :::* LISTEN 4023/sshd: tux@
udp 0 0 0.0.0.0:40514 0.0.0.0:* 1499/avahi-daemon:
udp 0 0 192.168.122.1:53 0.0.0.0:* 2500/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 2500/dnsmasq
udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 1499/avahi-daemon:
udp6 0 0 :::111 :::* 1/systemd
udp6 0 0 :::44235 :::* 1499/avahi-daemon:
udp6 0 0 :::5353 :::* 1499/avahi-daemon:
La versión corta de esta combinación común es -tulpn
.
Para mostrar información sobre un servicio específico, filtre con grep
:
$ sudo netstat -anlp | grep cups
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1721/cupsd tcp6 0 0 ::1:631 :::* LISTEN 1721/cupsd
unix 2 [ ACC ] STREAM LISTENING 27251 1/systemd /var/run/cups/cups.sock
unix 2 [ ] DGRAM 59530 1721/cupsd
unix 3 [ ] STREAM CONNECTED 55196 1721/cupsd /var/run/cups/cups.sock
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
Siguientes pasos
Una vez que haya ejecutado el netstat
comando, puede tomar medidas para proteger su sistema asegurándose de que solo los servicios que utiliza activamente estén escuchando en su red.
- Reconocer puertos y servicios comúnmente explotados. Como regla general, cierre los puertos que no esté usando.
- Esté atento a los números de puerto poco comunes y aprenda a reconocer los puertos legítimos en uso en su sistema.
- Preste mucha atención a los errores de SELinux. A veces, todo lo que necesita hacer es actualizar los contextos para que coincidan con un cambio legítimo que haya realizado en su sistema, pero lea los errores para asegurarse de que SELinux no lo esté alertando sobre actividades sospechosas o maliciosas.
Si encuentra que un puerto está ejecutando un servicio sospechoso, o simplemente desea cerrar un puerto que ya no usa, puede denegar manualmente el acceso al puerto a través de las reglas del firewall siguiendo estos pasos:
Si está utilizando firewall-cmd
, ejecute estos comandos:
$ sudo firewall-cmd –remove-port=<port number>/tcp
$ sudo firewall-cmd –runtime-to-permanent
Si está utilizando UFW, ejecute el siguiente comando:
$ sudo ufw deny <port number>
Luego, detenga el servicio usando systemctl
:
$ systemctl stop <service>
Aprende netstat
Netstat es una herramienta útil para recopilar rápidamente información sobre las conexiones de red de su servidor. El monitoreo regular de la red es una parte importante para conocer su sistema y lo ayuda a mantener su sistema seguro. Para incorporar este paso a su rutina administrativa, puede usar herramientas de monitoreo de red como netstat o ss, así como escáneres de puertos de código abierto como Nmap o sniffers como Wireshark, que permiten tareas programadas.
Dado que los servidores albergan mayores cantidades de datos personales, es cada vez más importante garantizar la seguridad de los servidores personales. Al comprender cómo se conecta su servidor a Internet, puede disminuir la vulnerabilidad de su máquina y, al mismo tiempo, beneficiarse de la creciente conectividad de la era digital.