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 le netstat
commande 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 bogue ou une intrusion. En tant que débutant, j'ai découvert que le netstat
La commande fournit des informations importantes sur mon serveur, à la fois pour la surveillance et le dépannage du réseau.
Netstat et des 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 souvent préinstallé sur les distributions Linux. Si netstat n'est pas installé sur votre serveur, installez-le avec votre gestionnaire de paquets. 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
Seul, le netstat
La commande affiche toutes les connexions établies. Vous pouvez utiliser le netstat
options ci-dessus pour spécifier davantage la sortie prévue. Par exemple, pour afficher toutes les connexions d'écoute et de non-écoute, utilisez le --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 le --all
et --tcp
options, 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 le --all
et --udp
options, 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
Plus de ressources Linux
- Aide-mémoire des commandes Linux
- Aide-mémoire des commandes Linux avancées
- Cours en ligne gratuit :Présentation technique de RHEL
- Aide-mémoire sur le réseau Linux
- Aide-mémoire SELinux
- Aide-mémoire sur les commandes courantes de Linux
- Que sont les conteneurs Linux ?
- Nos derniers articles Linux
Étapes suivantes
Une fois que vous avez exécuté le netstat
commande, 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 correspondre à 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. La surveillance régulière du réseau est importante 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 du réseau tels que netstat ou ss, ainsi que des analyseurs de ports open source tels que Nmap ou des renifleurs tels que Wireshark, qui permettent des tâches planifiées.
Comme 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.