GNU/Linux >> Linux Esercitazione >  >> Linux

Configura la sicurezza di base

Alcune persone pensano che questo non sia pericoloso se non ci sono servizi in esecuzione sul server e non importa che tutte le porte siano aperte. Non siamo d'accordo. Se le connessioni alle porte inutilizzate (e popolari) vengono bloccate o interrotte, la stragrande maggioranza degli intrusi malintenzionati si sposterà su un'altra macchina in cui le porte accettano connessioni. Ci vogliono solo pochi minuti per configurare un firewall, quindi ti consigliamo vivamente di farlo per proteggere il tuo server.

Dopo aver creato un nuovo server cloud, ti consigliamo di eseguire le seguenti attività per migliorare la sicurezza del server.

Nota: Piccole modifiche ai seguenti comandi potrebbero essere utili se stai utilizzando una distribuzione diversa. Se necessario, fai riferimento alla documentazione del tuo sistema operativo.

Accedi al server

Non appena hai l'indirizzo IP e la password del tuo server, accedi utilizzando il seguente comando SSH:

ssh [email protected]

Nota :Se stai effettuando l'accesso a un server ricostruito, potresti visualizzare un messaggio che indica che l'identificazione dell'host remoto è cambiata. Quando ricostruisci un server cloud, la chiave dell'host remoto cambia, il che indica un'attività insolita o sospetta sul tuo computer. Per evitare questo problema, rimuovere la voce precedente per l'indirizzo IP del server. Sul tuo locale computer, modifica l'SSH known_hosts file utilizzando il comando seguente e rimuovere tutte le voci che puntano all'indirizzo IP del server cloud:

nano ~/.ssh/known_hosts

Se il tuo computer locale esegue un sistema operativo diverso da Linux o Mac OS X, la posizione di known_hosts il file sarà diverso. Fare riferimento alla documentazione del proprio sistema operativo per conoscere la posizione di questo file.

Cambia la password di root

Dopo aver effettuato l'accesso al tuo server, cambia la password di root emettendo il seguente comando:

passwd

Aggiungi un utente amministratore

Nota :se stai configurando utenti SSH aggiuntivi per un server OnMetal, consulta Creazione di server cloud OnMetal per i passaggi applicabili di OnMetal.

  1. Per aggiungere un utente amministratore, immetti il ​​seguente comando e sostituisci demo con il nome utente a tua scelta:

    adduser demo
    

    Nota :Dopo questo passaggio iniziale, non dovresti accedere come utente root per eseguire operazioni quotidiane sul tuo server. Tuttavia, avrai bisogno dei privilegi di Super User (sudo) per completare queste attività amministrative.

  2. Per assegnare i privilegi sudo all'utente amministratore, emettere il seguente comando, che richiama l'editor nano per impostazione predefinita sul sistema operativo Ubuntu:

    visudo
    
  3. Alla fine del file, aggiungi il tuo nome utente amministratore (al posto di demoin nell'esempio seguente) e la seguente stringa di testo:

    demo   ALL=(ALL) ALL
    
  4. Quando hai finito di aggiungere questa riga, esci, conferma e salva il file come segue:

    un. Premi Ctrl-X uscire.b. Premi y per confermare le modifiche.c. Premi Invio per salvare il file come /etc/sudoers.tmp .

    Nota :Mentre si lavora nell'editor nano, il tasto backspace/cancella funziona in modo imprevisto, eliminando i caratteri davanti al cursore anziché dietro di esso. Puoi risolvere questo problema modificando il /etc/nanorc file (con nano, ad esempio) e decommentando la riga seguente o aggiungendola:

        set rebinddelete
    

Il nuovo comportamento diventa effettivo dopo aver salvato il file e aperto nuovamente nano.

Configura chiavi pubbliche e private (keygen SSH)

Un modo efficace per proteggere l'accesso SSH al tuo server cloud è utilizzare un metodo pubblico/privato chiave, il che significa che una chiave pubblica è posizionata sul server e la chiave privata è sul tuo computer locale. Questo rende impossibile per qualcuno accedere usando solo una password; devono avere la chiave privata. Questa configurazione consiste nei seguenti passaggi di base:crea la chiave sul tuo computer locale, copia la chiave pubblica sul server e imposta le autorizzazioni corrette per la chiave.

Le seguenti istruzioni presuppongono l'utilizzo di Linux o Mac OS X. Per le istruzioni di Windows, consulta Generazione di chiavi utilizzando Putty per Windows.

Passaggio 1. Crea le chiavi pubbliche e private

  1. Sul tuo computer locale, crea una cartella in cui conservare le tue chiavi:

    mkdir ~/.ssh
    
  2. Per creare le chiavi SSH, sul tuo locale computer, immetti il ​​seguente comando:

    ssh-keygen -t rsa
    
    • id_rsa e id_rsa.pub vengono creati nella directory .ssh. Il file rsa.pub contiene la chiave pubblica. Metterai questo file sul tuo server.

    • Il file id_rsa è la tua chiave privata. Non mostrare, regalare o conservare questo file su un computer pubblico.

Passaggio 2. Copia la chiave pubblica

Puoi usare il scp comando per posizionare la chiave pubblica sul tuo server.

  1. Mentre sei ancora sul tuo locale computer, inserisci il seguente comando, sostituendo il tuo utente amministratore con demo, indirizzo IP e home directory dell'utente amministratore:

    scp ~/.ssh/id_rsa.pub [email protected]:/home/demo/
    
  2. Quando richiesto, inserisci la password dell'utente amministratore.

  3. Crea una directory nella cartella home dell'utente amministratore sul tuo server chiamata .ssh e sposta la chiave pub al suo interno, come mostrato nei seguenti esempi:

    mkdir /home/demo/.ssh
    
    mv /home/demo/id_rsa.pub /home/demo/.ssh/authorized_keys
    

Passaggio 3. Modifica le autorizzazioni SSH

Imposta le autorizzazioni corrette sulla chiave utilizzando i seguenti comandi, cambiando l'utente e il gruppo "demo" con il tuo utente e gruppo amministratore:

chown -R demo:demo /home/demo/.ssh
chmod 700 /home/demo/.ssh
chmod 600 /home/demo/.ssh/authorized_keys

Ora hai creato correttamente la chiave sul tuo computer locale, copiato la chiave pubblica sul tuo server e impostato le autorizzazioni corrette per la chiave.

Modifica la configurazione SSH

Mantenere il servizio SSH sulla porta predefinita 22 lo rende un bersaglio facile. Ti consigliamo di modificare la configurazione SSH predefinita per renderla più sicura.

  1. Emetti il ​​seguente comando:

    nano /etc/ssh/sshd_config
    
  2. Cambia la porta predefinita di 22 in una di tua scelta, disattiva i login di root e definisci quali utenti possono accedere:

    Port 22                           <--- change to a port of your choosing
    Protocol 2
    PermitRootLogin no
    PasswordAuthentication no
    UseDNS no
    AllowUsers demo
    

    Nota :il numero di porta può essere qualsiasi numero intero compreso tra 1025 e 65536. Assicurati di annotare il nuovo numero di porta e ricorda di evitare conflitti di porta se in seguito configuri processi di ascolto aggiuntivi.

Poiché hai impostato una chiave pubblica/privata, puoi impostare il parametro PasswordAuthentication su no. Tuttavia, se intendi accedere al tuo server da computer diversi, potresti voler lasciare PasswordAuthentication impostata su yes. Usa la chiave privata solo se il computer locale è sicuro (cioè non mettere la chiave privata su un computer di lavoro).

Queste impostazioni non sono ancora abilitate. Prima di riavviare SSH utilizzando la nuova porta, è necessario creare un semplice firewall utilizzando iptables.

Nota :non riavviare ancora SSH.

Configura un firewall privato utilizzando iptables

L'utilità chiamata iptables è il firewall predefinito per i sistemi Linux. Funziona rifiutando le connessioni alle porte o ai servizi specificati.

Nota: La procedura in questa sezione non si applica ai server che utilizzano systemd . Server che utilizzano systemd ora usa un altro frontend firewall per iptables chiamato FirewallD. La sintassi e l'implementazione di FirewallD variano notevolmente. Per una corretta configurazione del firewall su FirewallDand systemd server, vedere "Introduzione a firewalld" nel portale dei clienti di Red Hat.

Come parte di questa procedura, aprirai tre porte:ssh , http e https.

Creerai quindi due file:

  • /etc/iptables.test.rules

  • /etc/iptables.up.rules

Il primo è un insieme di regole di test temporanee e il secondo è l'insieme permanente di regole che iptables utilizzerà.

Nota :è necessario eseguire il root delle autorizzazioni utente per completare la procedura. Se non sei attualmente connesso come root, usa il comando sudo davanti ai seguenti comandi.

  1. Emetti il ​​seguente comando per vedere quali processi sono attualmente in esecuzione:

    iptables -L
    

    Vedrai qualcosa di simile a questo:

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    Ciò significa che il server accetta qualsiasi cosa da chiunque su qualsiasi porta.

  2. Per creare il firewall, crea il file /etc/iptables.test.rules e aggiungi alcune regole. Se hai già eseguito questi passaggi in precedenza, questo file potrebbe non essere vuoto:

    nano /etc/iptables.test.rules
    
  3. Modifica e aggiungi le porte se necessario.

  4. Emetti il ​​seguente comando per applicare le regole al tuo server:

    iptables-restore < /etc/iptables.test.rules
    
  5. Emetti il ​​seguente comando per notare eventuali differenze:

    iptables -L
    
  6. Se non ci sono modifiche nell'output, ripetere i passaggi precedenti e riprovare.

  7. Controlla le regole e guarda esattamente cosa viene accettato, rifiutato e abbandonato. Quando sei soddisfatto delle regole, salvale in modo permanente emettendo il seguente comando:

    iptables-save > /etc/iptables.up.rules
    

    Nota :Se il server viene riavviato prima di aver salvato le regole in modo permanente, le modifiche andranno perse e il server tornerà alle impostazioni precedenti.

  8. Aggiungi uno script che il sistema esegue all'avvio delle interfacce di rete. Crea il file eseguendo:

    nano /etc/network/if-pre-up.d/iptables
    
  9. Aggiungi le seguenti righe al nuovo file:

    #!/bin/sh
    /sbin/iptables-restore < /etc/iptables.up.rules
    
  10. Salva le modifiche, quindi rendi eseguibile il nuovo script:

    chmod +x /etc/network/if-pre-up.d/iptables
    

Configura iptables in Red Hat

Se stai usando una distribuzione Red Hat, iptables funziona in modo leggermente diverso rispetto al sistema operativo Ubuntu. Utilizzando i seguenti comandi, puoi modificare il set di regole di iptables direttamente dalla riga di comando.

HTTP - porta 80

Per RHEL 7 e CentOS 7, utilizzare il comando seguente per aprire la porta 80 per il traffico HTTP (web) nel firewall iptables:

sudo firewall-cmd --add-service=http --permanent

Per le versioni precedenti del sistema operativo, utilizzare il comando seguente:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport http -j ACCEPT

HTTPS/SSL - porta 443

Per RHEL 7 e CentOS 7, utilizzare il comando seguente per aprire la porta 443 per un traffico HTTP sicuro:

sudo firewall-cmd --add-service=https --permanent

Per le versioni precedenti del sistema operativo, utilizzare il comando seguente:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport https -j ACCEPT

SSH - porta 22

Sebbene la porta 22 sia aperta per impostazione predefinita per consentire l'accesso SSH al server dopo che è stato creato, il comando seguente mostra come aprire la porta 22 in RHEL 7 e CentOS 7:

sudo firewall-cmd --add-service=ssh -permanent

Se hai configurato una porta personalizzata per SSH, utilizza il comando seguente per RHEL7 e CentOS 7:

sudo firewall-cmd --add-port=<customport>/tcp --permanent

Per le versioni precedenti del sistema operativo, utilizzare il comando seguente per aprire la porta 22:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ssh -j ACCEPT

FTP - porta 21

FTP è un servizio comune per il trasferimento di file, ma è in gran parte obsoleto perché non è un protocollo sicuro. Consigliamo vivamente di utilizzare un protocollo di trasferimento file sicuro come SFTP. Se devi assolutamente usare FTP, usa il seguente comando per aprire la porta predefinita di 21 inRHEL 7 e CentOS 7:

sudo firewall-cmd --add-service=ftp --permanent

Per le versioni precedenti del sistema operativo, utilizza i seguenti comandi:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ftp -j ACCEPT
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ftp-data -j ACCEPT

MySQL - porta 3306

Se devi effettuare una connessione remota al tuo database MySQL da un altro server, devi aprire la porta 3306 in iptables. Per RHEL 7 e CentOS 7, utilizzare il comando seguente:

sudo firewall-cmd --add-service=mysql --permanent

Per le versioni precedenti del sistema operativo, utilizzare il comando seguente:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport mysql -j ACCEPT

Salva le tue regole

Usa il comando seguente per salvare tutte le regole che hai creato. Se non viene salvato prima del riavvio del server, il set di regole di iptables tornerà al set di regole predefinito, bloccando tutto il traffico eccetto sulla porta 22. Se stai utilizzando RHEL 7 o CentOS 7, questo passaggio non è necessario.

sudo /sbin/service iptables save

Riavvia iptables

Le tue modifiche a iptables hanno effetto solo dopo aver salvato le regole e riavviato il servizio iptables. Ricorda, se riavvii iptables prima di salvare le regole, iptables torna al set di regole predefinito.

Per RHEL 7 e CentOS 7, utilizzare il comando seguente:

firewall-cmd --reload

Per le versioni precedenti del sistema operativo, utilizzare il comando seguente:

sudo /sbin/service iptables restart

Controlla le regole

Per controllare le regole dopo aver ricaricato il firewall in RHEL 7 e CentOS 7, utilizzare i seguenti comandi:

firewall-cmd --get-active-zones

Questo restituisce quale zona è attiva (quella in cui hai appena salvato tutte le tue regole).

firewall-cmd --zone=<zone> --list-all

Questo elenca i servizi abilitati in una zona specificata.

Riavvia ssh

Ora puoi riavviare il servizio SSH. Rimani connesso mentre riavviish e testalo con una nuova connessione. In questo modo, se si verifica un errore, puoi risolverlo più facilmente.

Sulla maggior parte delle distribuzioni, il servizio è sshd e lo riavvii con il comando:

sudo service sshd restart

Sul sistema operativo Ubuntu e alcune altre distribuzioni, il servizio si chiama ssh e lo riavvii con un comando simile:

sudo service ssh restart

Se hai problemi a stabilire una nuova connessione dopo aver riavviato SSH, controlla i sintomi per determinare cosa potrebbe essere sbagliato.

  • Se la connessione scade, potrebbe esserci un problema con la configurazione di iptables.
  • Se ricevi un avviso relativo a una chiave privata, è possibile che la tua chiave non sia stata installata correttamente sul server (controlla eventuali interruzioni di riga o caratteri mancanti durante un'operazione di copia e incolla).
  • Se stai ricostruendo il server, potresti dover rimuovere la chiave host dal tuo file known_hosts prima di poter stabilire una connessione.

Se sei bloccato

La configurazione errata di SSH, sudo o iptables potrebbe causare il blocco del sistema. In questo caso, accedi al pannello di controllo di TheRackspace Cloud e utilizza la Console di emergenza o la modalità Rescue per riparare le configurazioni.

Queste sono le basi per la connessione a un Cloud Server Linux e la configurazione della sicurezza. Consulta Windows Cloud Server per eseguire questi passaggi su un server Windows.


Linux
  1. Come installare e configurare il server VNC su Debian 10

  2. Come proteggere PostgreSQL Server

  3. Come installare e configurare il server OpenVPN su Ubuntu 20.04

  4. Gestione di base del firewall iptables

  5. Gestione utenti Linux di base

Come configurare NGINX su un server CentOS 7

Come configurare Postfix come server SMTP di solo invio su Ubuntu 20.04

Installa e configura phpMyAdmin

Configura il legame di rete nel server Ubuntu

Ubuntu 19.04:Configura il server NTP

Centos 7 :Configura il server NTP