introduzione
Un server CentOS 7 appena attivato deve essere personalizzato prima di poter essere utilizzato come sistema di produzione. In questo articolo, le personalizzazioni più importanti che dovrai effettuare sono fornite in modo facile da capire.
Prerequisiti
Un server CentOS 7 appena attivato, preferibilmente configurato con chiavi SSH. Accedi al server come root.
ssh -l root server-ip-address
Passaggio 1: creare un account utente standard
Per motivi di sicurezza, non è consigliabile eseguire attività di elaborazione quotidiane utilizzando l'account root. Si consiglia invece di creare un account utente standard che verrà utilizzato sudoper ottenere i privilegi di amministratore. Per questo tutorial, supponiamo che stiamo creando un utente di nome joe . Per creare l'account utente, digitare:
adduser joe
Imposta una password per il nuovo utente. Ti verrà richiesto di inserire e confermare una password.
passwd joe
Aggiungi il nuovo utente al gruppo di ruote in modo che possa assumere i privilegi di root utilizzando sudo.
gpasswd -a joe wheel
Infine, apri un altro terminale sul tuo computer locale e usa il seguente comando per aggiungere la tua chiave SSH alla directory home del nuovo utente sul server remoto. Ti verrà richiesto di autenticarti prima di installare la chiave SSH.
ssh-copy-id joe@server-ip-address
Dopo aver installato la chiave, accedere al server utilizzando il nuovo account utente.
ssh -l joe server-ip-address
Se l'accesso ha esito positivo, è possibile chiudere l'altro terminale. D'ora in poi, tutti i comandi saranno preceduti da sudo.
Passaggio 2: non consentire l'accesso principale e l'autenticazione della password
Dal momento che ora è possibile accedere come utente standard utilizzando le chiavi SSH, una buona pratica di sicurezza è quella di configurare SSH in modo che sia il login root che l'autenticazione con password non siano consentiti. Entrambe le impostazioni devono essere configurate nel file di configurazione del demone SSH. Quindi, aprilo usando nano.
sudo nano /etc/ssh/sshd_config
Cerca la riga PermitRootLogin , decommentala e imposta il valore su no .
PermitRootLogin no
Fai lo stesso per la PasswordAuthenticationlinea, che dovrebbe essere già decommentata:
PasswordAuthentication no
Salva e chiudi il file. Per applicare le nuove impostazioni, ricaricare SSH.
sudo systemctl reload sshd
Per impostazione predefinita, l'ora sul server è indicata in UTC. È meglio configurarlo per mostrare il fuso orario locale. A tale scopo, individua il file della zona del tuo paese / area geografica nella /usr/share/zoneinfodirectory e crea un link simbolico da esso alla /etc/localtimedirectory. Ad esempio, se ti trovi nella parte orientale degli Stati Uniti, creerai il collegamento simbolico usando:
sudo ln -sf /usr/share/zoneinfo/US/Eastern /etc/localtime
Successivamente, verificare che l'ora sia ora indicata nell'ora locale eseguendo il datecomando. L'output dovrebbe essere simile a:
Tue Jun 16 15:35:34 EDT 2015
L' EDT nell'output conferma che è l'ora locale.
Passaggio 4: abilitare il firewall IPTables
Per impostazione predefinita, l'applicazione firewall attiva su un server CentOS 7 appena attivato è FirewallD. Sebbene sia un buon sostituto delle IPTables, molte applicazioni di sicurezza non lo supportano ancora. Quindi, se utilizzerai una di quelle applicazioni, come OSSEC HIDS, è meglio disabilitare / disinstallare FirewallD.
Iniziamo disabilitando / disinstallando FirewallD:
sudo yum remove -y firewalld
Ora installiamo / attiviamo le IPTables.
sudo yum install -y iptables-services
sudo systemctl start iptables
Configurare IPTables per l'avvio automatico all'avvio.
sudo systemctl enable iptables
IPTables su CentOS 7 viene fornito con un set predefinito di regole, che è possibile visualizzare con il seguente comando.
sudo iptables -L -n
L'output sarà simile a:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Puoi vedere che una di queste regole consente il traffico SSH, quindi la tua sessione SSH è sicura.
Poiché tali regole sono regole di runtime e andranno perse al riavvio, è consigliabile salvarle in un file utilizzando:
sudo /usr/libexec/iptables/iptables.init save
Tale comando salverà le regole nel /etc/sysconfig/iptablesfile. Puoi modificare le regole in qualsiasi momento modificando questo file con il tuo editor di testo preferito.
Passaggio 5: consentire traffico aggiuntivo attraverso il firewall
Poiché molto probabilmente utilizzerai il tuo nuovo server per ospitare alcuni siti Web a un certo punto, dovrai aggiungere nuove regole al firewall per consentire il traffico HTTP e HTTPS. A tale scopo, apri il file IPTables:
sudo nano /etc/sysconfig/iptables
Subito dopo o prima della regola SSH, aggiungi le regole per il traffico HTTP (porta 80) e HTTPS (porta 443), in modo che quella parte del file appaia come mostrato nel blocco di codice in basso.
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Salvare e chiudere il file, quindi ricaricare IPTables.
sudo systemctl reload iptables
Una volta completato il passaggio precedente, il server CentOS 7 ora dovrebbe essere ragionevolmente sicuro ed essere pronto per l'uso in produzione.