Ho condiviso alcuni importanti primi passi per aiutare a gestire il tuo server Linux personale in un articolo precedente. Ho menzionato brevemente il monitoraggio delle connessioni di rete per le porte in ascolto e voglio ampliarlo utilizzando netstat
comando per sistemi Linux.
Il monitoraggio del servizio e la scansione delle porte sono pratiche standard del settore. C'è un ottimo software come Prometheus per automatizzare il processo e SELinux per contestualizzare e proteggere l'accesso al sistema. Tuttavia, credo che capire come il tuo server si connette ad altre reti e dispositivi sia la chiave per stabilire una linea di base di ciò che è normale per il tuo server, che ti aiuta a riconoscere le anomalie che potrebbero suggerire un bug o un'intrusione. Da principiante, ho scoperto che netstat
Il comando fornisce informazioni importanti sul mio server, sia per il monitoraggio che per la risoluzione dei problemi di rete.
Netstat e strumenti di monitoraggio della rete simili, raggruppati nel pacchetto net-tools, visualizzano informazioni sulle connessioni di rete attive. Poiché i servizi in esecuzione su porte aperte sono spesso vulnerabili allo sfruttamento, la pratica del monitoraggio regolare della rete può aiutarti a rilevare tempestivamente attività sospette.
Installa netstat
Netstat è spesso preinstallato sulle distribuzioni Linux. Se netstat non è installato sul tuo server, installalo con il tuo gestore di pacchetti. Su un sistema basato su Debian:
$ sudo apt-get install net-tools
Per i sistemi basati su Fedora:
$ dnf install net-tools
Utilizza netstat
Da solo, il netstat
comando visualizza tutte le connessioni stabilite. Puoi usare netstat
opzioni precedenti per specificare ulteriormente l'output previsto. Ad esempio, per mostrare tutte le connessioni in ascolto e non in ascolto, utilizza --all
(-a
in breve) opzione. Questo restituisce molti risultati, quindi in questo esempio invio l'output a head
per visualizzare solo le prime 15 righe di output:
$ 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
Per mostrare solo le porte TCP, usa --all
e --tcp
opzioni o -at
in breve:
$ 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
Per mostrare solo le porte UDP, usa --all
e --udp
opzioni o -au
in breve:
$ 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
Le opzioni per netstat sono spesso intuitive. Ad esempio, per mostrare tutte le porte TCP e UDP in ascolto con ID processo (PID) e indirizzo numerico:
$ 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 versione breve di questa combinazione comune è -tulpn
.
Per visualizzare informazioni su un servizio specifico, filtra 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
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Passaggi successivi
Dopo aver eseguito netstat
comando, puoi adottare misure per proteggere il tuo sistema assicurandoti che solo i servizi che utilizzi attivamente siano in ascolto sulla tua rete.
- Riconosci le porte e i servizi comunemente sfruttati. Come regola generale, chiudi le porte che non stai effettivamente utilizzando.
- Fai attenzione ai numeri di porta non comuni e impara a riconoscere le porte legittime in uso sul tuo sistema.
- Fai molta attenzione agli errori di SELinux. A volte tutto ciò che devi fare è aggiornare i contesti in modo che corrispondano a una modifica legittima che hai apportato al tuo sistema, ma leggi gli errori per assicurarti che SELinux non ti avvisi di attività sospette o dannose.
Se scopri che una porta sta eseguendo un servizio sospetto, o vuoi semplicemente chiudere una porta che non usi più, puoi negare manualmente l'accesso alla porta tramite le regole del firewall seguendo questi passaggi:
Se stai usando firewall-cmd
, esegui questi comandi:
$ sudo firewall-cmd –remove-port=<port number>/tcp
$ sudo firewall-cmd –runtime-to-permanent
Se stai usando UFW, esegui il seguente comando:
$ sudo ufw deny <port number>
Quindi, interrompi il servizio stesso utilizzando systemctl
:
$ systemctl stop <service>
Impara netstat
Netstat è uno strumento utile per raccogliere rapidamente informazioni sulle connessioni di rete del tuo server. Il monitoraggio regolare della rete è una parte importante per conoscere il tuo sistema e ti aiuta a mantenere il tuo sistema al sicuro. Per incorporare questo passaggio nella tua routine amministrativa, puoi utilizzare strumenti di monitoraggio della rete come netstat o ss, nonché scanner di porte open source come Nmap o sniffer come Wireshark, che consentono attività pianificate.
Poiché i server ospitano quantità maggiori di dati personali, è sempre più importante garantire la sicurezza dei server personali. Comprendendo in che modo il tuo server si connette a Internet, puoi ridurre la vulnerabilità della tua macchina, pur continuando a beneficiare della crescente connettività dell'era digitale.