Recherche de site Web

Affichez les connexions réseau de votre serveur Linux avec netstat


La commande netstat fournit des informations importantes sur votre serveur Linux, à la fois pour la surveillance et le dépannage du réseau.

J'ai partagé quelques premières étapes importantes pour vous aider à gérer votre serveur Linux personnel dans un article précédent. J'ai brièvement mentionné la surveillance des connexions réseau pour les ports d'écoute, et je souhaite développer cela en utilisant la commande netstat pour les systèmes Linux.

La surveillance des services et l'analyse des ports sont des pratiques standard de l'industrie. Il existe de très bons logiciels comme Prometheus pour aider à automatiser le processus, et SELinux pour aider à contextualiser et protéger l'accès au système. Cependant, je pense que comprendre comment votre serveur se connecte à d'autres réseaux et appareils est essentiel pour établir une base de référence de ce qui est normal pour votre serveur, ce qui vous aide à reconnaître les anomalies pouvant suggérer un bug ou une intrusion. En tant que débutant, j'ai découvert que la commande netstat fournit des informations importantes sur mon serveur, à la fois pour la surveillance et le dépannage du réseau.

Netstat et les outils de surveillance réseau similaires, regroupés dans le package net-tools, affichent des informations sur les connexions réseau actives. Étant donné que les services exécutés sur des ports ouverts sont souvent vulnérables à l’exploitation, la pratique d’une surveillance régulière du réseau peut vous aider à détecter rapidement les activités suspectes.

Installer Netstat

Netstat est fréquemment préinstallé sur les distributions Linux. Si netstat n'est pas installé sur votre serveur, installez-le avec votre gestionnaire de packages. Sur un système basé sur Debian :

$ sudo apt-get install net-tools

Pour les systèmes basés sur Fedora :

$ dnf install net-tools

Utiliser netstat

À elle seule, la commande netstat affiche toutes les connexions établies. Vous pouvez utiliser les options netstat ci-dessus pour spécifier davantage la sortie souhaitée. Par exemple, pour afficher toutes les connexions d'écoute et de non-écoute, utilisez l'option --all (-a pour faire court). Cela renvoie beaucoup de résultats, donc dans cet exemple, je dirige la sortie vers head pour afficher uniquement les 15 premières lignes de sortie :

$ 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

Pour afficher uniquement les ports TCP, utilisez les options --all et --tcp, ou -at pour faire court :

$ 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

Pour afficher uniquement les ports UDP, utilisez les options --all et --udp, ou -au pour faire court :

$ 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          

Les options de netstat sont souvent intuitives. Par exemple, pour afficher tous les ports TCP et UDP en écoute avec l'ID de processus (PID) et l'adresse numérique :

$ 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 version courte de cette combinaison courante est -tulpn.

Pour afficher des informations sur un service spécifique, filtrez avec 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

Prochaines étapes

Une fois que vous avez exécuté la commande netstat, vous pouvez prendre des mesures pour sécuriser votre système en vous assurant que seuls les services que vous utilisez activement écoutent sur votre réseau.

  1. Reconnaître les ports et services couramment exploités. En règle générale, fermez les ports que vous n’utilisez pas réellement.
  2. Soyez à l'affût des numéros de port inhabituels et apprenez à reconnaître les ports légitimes utilisés sur votre système.
  3. Portez une attention particulière aux erreurs SELinux. Parfois, tout ce que vous avez à faire est de mettre à jour les contextes pour qu'ils correspondent à une modification légitime que vous avez apportée à votre système, mais lisez les erreurs pour vous assurer que SELinux ne vous alerte pas d'une activité suspecte ou malveillante.

Si vous constatez qu'un port exécute un service suspect ou si vous souhaitez simplement fermer un port que vous n'utilisez plus, vous pouvez refuser manuellement l'accès au port via des règles de pare-feu en suivant ces étapes :

Si vous utilisez firewall-cmd, exécutez ces commandes :

$ sudo firewall-cmd –remove-port=<port number>/tcp
$ sudo firewall-cmd –runtime-to-permanent

Si vous utilisez UFW, exécutez la commande suivante :

$ sudo ufw deny <port number>

Ensuite, arrêtez le service lui-même en utilisant systemctl :

$ systemctl stop <service>

Apprendre netstat

Netstat est un outil utile pour collecter rapidement des informations sur les connexions réseau de votre serveur. Une surveillance régulière du réseau est un élément important pour apprendre à connaître votre système et vous aide à assurer la sécurité de votre système. Pour intégrer cette étape dans votre routine administrative, vous pouvez utiliser des outils de surveillance réseau comme netstat ou ss, ainsi que des scanners de ports open source tels que Nmap ou des renifleurs comme Wireshark, qui permettent d'effectuer des tâches planifiées.

À mesure que les serveurs hébergent de plus grandes quantités de données personnelles, il est de plus en plus important d'assurer la sécurité des serveurs personnels. En comprenant comment votre serveur se connecte à Internet, vous pouvez réduire la vulnérabilité de votre machine, tout en bénéficiant de la connectivité croissante de l'ère numérique.

Articles connexes: