Originariamente Scritto da
tmit
@raffo: Bravissimo Raffaele
Bella spiegazione che illustra in linea generale quali sono le linee
guida da seguire per mettere in sicurezza almeno il demone SSH
(basilare per la gestione di un server linux based).
Grazie grazie avrei scritto molto piu ma poi mi sono chiesto "qualcuno leggera?" :P
Originariamente Scritto da
viking2010
[/LIST]
Potresti essere un pò più chiaro per questi punti?
Cmq davvero utile il tuo post
I link che ti h dato Acidflame sono altrettanto validi ma se non c'e' molta teoria e quando ci sono troppi comandi e' facile fare copia&incolla senza realmente sapere che cosa succede..
Dunque cio che ho consigliato di fare e' disabilitare l'accesso a SSH tramite password e di entrare solo con chiave RSA e di configurare il firewall di linux mediante iptables in modo che limita e blocca l'accesso all'ip del client se effettua troppe connessioni simultanee.
Che sia ubuntu, gentoo o centos poco importa, la configurazione di openssh e' sempre su /etc/ssh/sshd_config apri questo file con un editor e assicurati che questi parametri non sono commentati (il commento e' un prefisso sulla riga fi un foglio di config o di programmazione che fa ignorare l'interprete di prende in considerazione quella riga, in questo caso il commento e' il #)
Codice:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication no
MaxAuthTries 10
Quest'ultimo parametro blocca l'accesso all'IP che ha sbagliato l'accesso dopo 10 volte mostrando un messaggio del tipo "too many entry for root user".
Fatto cio salva il file ma prima di riavviare ssh crea una chiave RSA altrimenti ti butti fuori dal server e non puoi entrare se non in console o in rescue..
ssh-keygen e' il comando per generare la chiave RSA o DSA, questo ha degli attributi che servono a indicare che tipo di chiave creare. Siamo paranoici e vogliamo una chiave rsa a 8128 bit invece di quella di default che e' di 2084 bit:
ssh-keygen -b 8128 -t rsa
La genera e ci chiede 2 cose, dove vogliamo salvarla e se vogliamo usare una passprhase per proteggere la chiave altrimenti la salva su /root/.ssh/id_rsa senza passprhase e quindi quando la dovremo usare non ci chiedera' una pass per decifrare la chiave prima di poterla usare.
Dopo averla creata dobbiamo fare solo altre due cose: impostare la chiave pubblica nel file authorized_keys che accetta la chiave generata e scaricare la chiave in locale o dove bisogna usarla.
cat /root/.ssh/id_rsa.pub >> /root/ssh/authorized_keys
Questo comando aggiunge al file authorized_keys il contenuto di id_rsa.pub
Ora devi solo copiare id_rsa
cat /root/.ssh/id_rsa
Se ti colleghi con putty hai bisogno di convertire la chiave RSA con il generatore fornito da putty.
Se invece ti colleghi da Unix puoi usare questa sintassi:
ssh -i id_rsa root@server.ovh.net
Puoi rinominare id_rsa come ti pare ma deve avere i permessi di sola lettura da parte del proprietario quindi 400.
Dopo aver provato il corretto funzionamento puoi riavviare ssh con il comando
service ssh restart
(se hai service installato, altrimenti per ubuntu /etc/init.d/ssh restart)
Fin qui e' il primo punto che ho scritto.
Adesso hai un buon livello di sicurezza anche se c'e' un modo per fare lo sniffing della chiave RSA tramite ssldump ma bisogna essere tra il server e l'utente root..
In breve, per bloccare il bruteforce tramite iptables su linux ci sono due semplici comandi che puoi salvare in un file ed eseguirlo al boot oppure aggiungerlo alle regole che gia hai di iptables.
Codice:
iptables -N SSHSCAN
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSHSCAN
iptables -A SSHSCAN -m recent --set --name SSH
iptables -A SSHSCAN -m recent --update --seconds 300 --hitcount 8 --name SSH -j LOG --log-level info --log-prefix "SSH SCAN Bloccati: "
iptables -A SSHSCAN -m recent --update --seconds 300 --hitcount 8 --name SSH -j REJECT
In pratica abbiamo imposto a linux che a chi fa piu di 8 nuove connessioni in 300 secondi nel protocollo ssh su porta tcp 22, viene messo in una blacklist SSHSCAN e viene notificato nei log di sistema con il prefisso SSH SCAN Bloccati. L'IP bloccato quando si prova a connettere il server gli invia un pacchetto icmp di errore (reset).
Il punto tre che avevo consigliato contraddice il punto uno. Se sei paranoico disabilita l'accesso root tramite ssh (impostando "PermitRootLogin no" nella config di ssh) e creando un utente con uid 0 ovvero un secondo root.
useradd -o -u 0 root2
Buona giornata,
RAFFAELE