GNU/Linux >> Linux Esercitazione >  >> Linux

3 modi rapidi per ridurre la superficie di attacco su Linux

I sistemi Linux sono cose complicate. Per impostazione predefinita, ogni distribuzione include una serie di servizi pensati per aiutarti a far funzionare le cose. Alcune distribuzioni abilitano meno servizi per impostazione predefinita e altre ne abilitano di più. La differenza è nella comodità. Alcune distribuzioni cercano di farti funzionare rapidamente, quindi hanno un ampio set di servizi predefiniti abilitati per semplificare la configurazione, l'accesso e la configurazione. Altri adottano l'approccio opposto e non installano quasi nulla per impostazione predefinita.

Questo articolo è l'inizio di una breve serie, in cui parleremo un po' dell'indurimento, un po' della segmentazione e infine di come scansionare le nostre reti per vedere se abbiamo capito bene. Quindi aspetta e lascia che ti mostri alcuni livelli di difesa.

Installa meno software

Quando installo un nuovo sistema, cerco di installarlo il meno possibile. Comincio con il set di pacchetti di base e non installo davvero nient'altro. È semplice aggiungere servizi dopo l'installazione, quindi perché complicare il processo? Inoltre, se lo fai spesso, probabilmente vorrai installare da un sistema Kickstart (o modello). Quindi, vorresti che la configurazione fosse il più semplice e generica possibile.

Per questo articolo, ho installato un sistema Red Hat Enterprise Linux (RHEL) 7.6 di base per eseguire dei veri test. Ho fatto il minimo indispensabile durante l'installazione, selezionando la base set di pacchetti e configurazione di password, nomi utente e rete. Ho anche abilitato il Network Time Protocol (NTP).

Identifica le porte aperte

Dopo l'installazione, possiamo vedere l'elenco delle porte aperte. Le porte sono il modo in cui i servizi in esecuzione sul tuo server consentono ad altri sistemi di connettersi ad esse. Un server web, ad esempio, legherà le porte 80 e 443 al servizio del server web. In questo articolo, identificheremo quali servizi hanno porte aperte nell'installazione di base, quindi vedremo come elencare i servizi e disabilitare quelli che non vogliamo.

Su un sistema Red Hat Enterprise Linux 7.6, utilizziamo ss comando per visualizzare queste informazioni. Su sistemi che vengono ancora spediti con netstat , utilizzerai netstat comando.

Esecuzione di ss sul nostro sistema di test mostra alcune porte aperte:

[root@rhel76test ~]# ss -tulnp --no-header | awk '{print($1, $5, $7)}'
udp  *:68            users:(("dhclient",pid=3316,fd=6))
udp  127.0.0.1:323   users:(("chronyd",pid=2974,fd=1))
udp  ::1:323         users:(("chronyd",pid=2974,fd=2))
tcp  *:22            users:(("sshd",pid=3523,fd=3))
tcp  127.0.0.1:25    users:(("master",pid=3771,fd=13))
tcp  :::22           users:(("sshd",pid=3523,fd=4))
tcp  ::1:25          users:(("master",pid=3771,fd=14))

Sembra che la base RHEL 7.6 non sia male. Nota nella seconda colonna, alcune delle porte aperte mostrano un IP e poi una porta, mentre altre hanno un * e poi un porto. Le voci che assomigliano a 127.0.0.1:25 significa che stanno solo ascoltando su localhost. Questo risultato significa che non sono accessibili da remoto. I servizi che assomigliano a *:22 significa che stanno ascoltando su qualsiasi interfaccia. Allo stesso modo, per gli indirizzi IPv6, abbiamo ::1:323 e :::22 . Il ::1 le voci sono localhost, il ::: sono spalancati.

Tutto ciò significa che questo sistema ha solo due porte IPv4 e una porta IPv6, aperte al mondo. Il dhclient il servizio è probabilmente un buon esempio di qualcosa che potremmo disabilitare (che chiuderebbe la sua porta), ma solo se il tuo server non utilizza DHCP per ottenere il suo indirizzo IP. Nel caso del mio server di prova, lo è.

Disabilita servizi

Elencare i servizi e fermarli/disabilitarli è relativamente facile su Red Hat Enterprise Linux 7. Useremo systemd per elencare tutte le unità attive, quindi dirgli di interrompere e disabilitare quelle che non vogliamo che siano in esecuzione.

Per elencare tutti i servizi in esecuzione, puoi usare systemctl list-units --type=service --state=running . Sul mio sistema di test, il risultato mostra 19 servizi molto modesti e la maggior parte di essi sembra necessaria. Tuttavia, ne sceglieremo uno con cui dimostrare:

[root@rhel76test ~]# systemctl list-units --type=service --state=running
UNIT                      LOAD   ACTIVE SUB DESCRIPTION
auditd.service            loaded active running Security Auditing Service
chronyd.service           loaded active running NTP client/server
crond.service             loaded active running Command Scheduler
dbus.service              loaded active running D-Bus System Message Bus
firewalld.service         loaded active running firewalld - dynamic firewall daemon
[email protected]        loaded active running Getty on tty1
lvm2-lvmetad.service      loaded active running LVM2 metadata daemon
NetworkManager.service    loaded active running Network Manager
polkit.service            loaded active running Authorization Manager
postfix.service           loaded active running Postfix Mail Transport Agent
qemu-guest-agent.service  loaded active running QEMU Guest Agent
rhnsd.service             loaded active running LSB: Starts the Spacewalk Daemon
rhsmcertd.service         loaded active running Enable periodic update of entitlement certificates.
rsyslog.service           loaded active running System Logging Service
sshd.service              loaded active running OpenSSH server daemon
systemd-journald.service  loaded active running Journal Service
systemd-logind.service    loaded active running Login Service
systemd-udevd.service     loaded active running udev Kernel Device Manager
tuned.service             loaded active running Dynamic System Tuning Daemon

Diciamo che non volevamo che Postfix fosse caricato all'avvio. Useremmo semplicemente systemctl stop postfix , quindi systemctl disable postfix , in questo modo:

[root@rhel76test ~]# systemctl stop postfix
[root@rhel76test ~]# systemctl disable postfix
Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service.
[root@rhel76test ~]# systemctl list-units --type=service --state=running | grep postfix

Ora, probabilmente non vuoi disabilitare Postfix, ma hai capito.

Conclusione

Così il gioco è fatto. Oggi ho imparato una cosa:Red Hat Enterprise Linux 7.6 è già pronto all'uso e abbastanza ordinato. Spero che tu abbia imparato a cercare e disabilitare i servizi per ridurre la superficie di attacco.

Sintonizzati per la prossima puntata di questa serie, dove parlerò di segmentazione della rete e firewall

Grazie per aver letto!


Linux
  1. Come proteggere i tuoi servizi di posta elettronica Linux con SSL/TLS

  2. Parti per un'avventura nel tuo terminale Linux

  3. 6 modi per aumentare il tuo profilo di guadagno e potenziale di amministratore di sistema Linux

  4. Controlla i servizi in esecuzione su Linux

  5. 4 modi per identificare chi è connesso al tuo sistema Linux

10 modi per personalizzare il tuo desktop Linux con lo strumento GNOME Tweaks

Semplici modi per riavviare Ubuntu Linux

Metti un timer sui tuoi comandi in esecuzione con il comando di timeout in Linux

30 strumenti e servizi interessanti per monitorare i tuoi server Linux

Nozioni di base su Linux:3 modi per trovare il tuo indirizzo IP locale in Debian 11

Tutti i modi possibili per ridurre il surriscaldamento del laptop in Linux