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.
- 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.
- Soyez à l'affût des numéros de port inhabituels et apprenez à reconnaître les ports légitimes utilisés sur votre système.
- 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.