Guida a Ubuntu Server
Total Page:16
File Type:pdf, Size:1020Kb
Capitolo 6. Amministrazione remota Ci sono diversi modi per amministrare un server Linux da remoto; questa sezione illustra due dei metodi più comuni, come OpenSSH e Puppet. 81 Amministrazione remota 1. Server OpenSSH 1.1. Introduzione Questa sezione della Guida a Ubuntu server introduce una serie di potenti strumenti per il controllo remoto di computer e per il trasferimento di dati tra i computer in rete chiamata OpenSSH. Vengono spiegate alcune delle possibili impostazioni dell'applicazione server OpenSSH e come modificarne la configurazione in Ubuntu. OpenSSH è una versione libera della famiglia di protocolli e strumenti SSH (Secure SHell) per il controllo remoto di un computer o per il trasferimento di file tra computer. Gli strumenti tradizionali usati per svolgere queste funzioni, come telnet o rcp, sono insicuri e quando utilizzati trasmettono la password dell'utente in chiaro. OpenSSH fornisce un demone server e degli strumenti lato client per facilitare operazioni di controllo remoto e trasferimento di file in sicurezza e con crittografia, sostituendo in modo completo gli strumenti tradizionali. Il componente server di OpenSSH, sshd, è in ascolto continuo per le connessioni in arrivo dei client, qualunque sia lo strumento usato sui client. Quando avviene una richiesta di connessione, per mezzo di sshd viene impostata la corretta connessione in base allo strumento utilizzato dal client. Per esempio, se il computer remoto sta effettuando una connessione con l'applicazione client ssh, il server OpenSSH imposta, dopo l'autenticazione, una sessione di controllo remoto. Se un utente remoto si connette a un server OpenSSH con scp, il demone server OpenSSH inizializza, dopo l'autenticazione, una procedura di copia sicura di file tra il server e il client. OpenSSH permette l'utilizzo di diversi metodi di autenticazione, inclusi password semplice, chiave pubblica e ticket Kerberos. 1.2. Installazione L'installazione delle applicazioni server e client di OpenSSH è semplice. Per installare l'applicazione client OpenSSH sui sistemi Ubuntu, usare questo comando al prompt di un terminale: sudo apt-get install openssh-client Per installare l'applicazione server di OpenSSH e i relativi file di supporto, usare questo comando al prompt di un terminale: sudo apt-get install openssh-server È possibile scegliere di installare il pacchetto openssh-server durante il processo di installazione della Server Edition. 1.3. Configurazione È possibile configurare il comportamento predefinito dell'applicazione server di OpenSSH, sshd, modificando il file /etc/ssh/sshd_config. Per maggiori informazioni riguardo le direttive di 82 Amministrazione remota configurazione usate in questo file, consultare l'appropriata pagina di manuale inserendo, a un prompt di terminale, il seguente comando: man sshd_config All'interno del file di configurazione di sshd sono presenti diverse direttive per controllare impostazioni riguardo la comunicazione o i mezzi di autenticazione. Di seguito vengono riportati degli esempi di direttive di configurazione che è possibile cambiare modificando il file /etc/ssh/ sshd_config. Prima di modificare il file di configurazione, è consigliato fare una copia del file originale e proteggerla dalla scrittura, così da avere le impostazioni originali come riferimento ed eventualmente riusarle se necessario. Copiare il file /etc/ssh/sshd_config e proteggerlo da scrittura, con il seguente comando, digitando a un prompt di terminale: sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original sudo chmod a-w /etc/ssh/sshd_config.original Quelli che seguono sono esempi delle direttive di configurazione che è possibile cambiare: • Per impostare OpenSSH in modo da restare in ascolto sulla porta TCP 2222 invece che sulla predefinita porta TCP 22, cambiare la direttiva Port come segue: Port 2222 • Per consentire l'utilizzo in sshd di credenziali di accesso basate su chiave pubblica, aggiungere o modificare la riga: PubkeyAuthentication yes Se la riga è già presente, assicurarsi che non sia commentata. • Per far sì che il server OpenSSH mostri il contenuto del file /etc/issue.net come un banner di pre-accesso, aggiungere o modificare la riga: Banner /etc/issue.net Nel file /etc/ssh/sshd_config. Dopo aver apportato dei cambiamenti al file /etc/ssh/sshd_config, salvarlo e, per rendere effettivi i cambiamenti, riavviare il demone sshd usando il seguente comando: sudo service ssh restart Per poter adattare il comportamento dell'applicazione server alle proprie necessità, sono disponibili molte altre direttive di configurazione per sshd. Se però l'unico metodo per 83 Amministrazione remota accedere a un server è ssh, se si commette un errore nella configurazione di sshd attraverso il file /etc/ssh/sshd_config, può risultare precluso l'accesso al server dopo il suo riavvio. Inoltre, se viene fornita una direttiva di configurazione non corretta, il server sshd potrebbe non riuscire ad avviarsi; è necessario pertanto prestare grande attenzione nella modifica di questo file su un server remoto. 1.4. Chiavi SSH Le chiavi SSH consentono l'autenticazione tra due host senza la necessità di una password. L'autenticazione con chiave SSH utilizza due chiavi, una privata e una public. Per generare le chiavi, in un terminale, digitare: ssh-keygen -t dsa Vengono così generate le chiavi usando un metodo Digital Signature Algorithm (DSA). Durante questo processo viene chiesto di inserire una password: premere semplicemente Enter quando viene chiesto di creare la chiave. La chiave pubblica viene salvata, in modo predefinito, nel file ~/.ssh/id_dsa.pub, mentre quella privata in ~/.ssh/id_dsa. Ora, copiare il file id_dsa.pub nell'host remoto e aggiungere il suo contenuto al file ~/.ssh/authorized_keys digitando: ssh-copy-id NOME_UTENTE@HOST_REMOTO Infine, controllare i permessi del file authorized_keys: solo l'utente autenticato dovrebbe avere i permessi di lettura e scrittura. Nel caso non fossero corretti, modificarli: chmod 600 .ssh/authorized_keys Dovrebbe essere possibile ora collegarsi via SSH all'host senza l'utilizzo di una password. 1.5. Riferimenti • Pagina della documentazione della comunità su SSH1. • Sito web di OpenSSH2 • Pagina wiki di OpenSSH avanzato3 1 https://help.ubuntu.com/community/SSH 2 http://www.openssh.org/ 3 https://wiki.ubuntu.com/AdvancedOpenSSH 84 Amministrazione remota 2. Puppet Puppet è un'infrastruttura a piattaforma incrociata che consente agli amministratori di sistema di eseguire tramite codice attività comuni, quali l'installazione di nuovo software, il controllo dei permessi sui file o l'aggiornamento di account utente. Puppet è importante non solo durante l'installazione iniziale di un sistema, ma anche attraverso l'intero ciclo di vita del sistema. Puppet viene utilizzato in molte circostanze nella configurazione dei server e dei client. Questa sezione illustra l'installazione e configurazione di Puppet in una configurazione client/server; questo semplice esempio mostra come installare Apache usando Puppet. 2.1. Installazione Per installare Puppet, in un terminale sul server digitare: sudo apt-get install puppetmaster Sulla macchina, o le macchine, client, digitare: sudo apt-get install puppet 2.2. Configurazione Prima di configurare puppet, è necessario aggiungere una voce DNS CNAME per puppet.example.com, dove example.com è il proprio dominio. Per impostazione predefinita, i client Puppet verificano sul DNS che puppet.examnple.com sia il nome del server puppet o il Puppet Master. Per maggiori dettagli, consultare Capitolo 8, DNS (Domain Name Service) [140]. Se non si utilizza DNS, è possibile aggiungere delle voci ai file server e client /etc/hosts. Per esempio, aggiungere al file /etc/hosts del server Puppet: 127.0.0.1 localhost.localdomain localhost puppet 192.168.1.17 meercat02.example.com meercat02 Su ciascun client Puppet, aggiungere una voce per il server: 192.168.1.16 meercat.example.com meercat puppet Sostituire gli indirizzi IP e i nomi di dominio nell'esempio precedente con gli indirizzi e i nomi di dominio reali di server e client. Impostare quindi alcune risorse per apache2: creare un file /etc/puppet/manifests/site.pp contenente quanto segue: package { 'apache2': 85 Amministrazione remota ensure => installed } service { 'apache2': ensure => true, enable => true, require => Package['apache2'] } Quindi creare un file /etc/puppet/manifests/nodes.pp per il nodo, con: node 'meercat02.example.com' { include apache2 } Sostituire meercat02.example.com con il nome reale dell'host del client Puppet. Il passo finale per questo semplice server Puppet consiste nel riavviare il demone: sudo service puppetmaster restart Configurato il server Puppet, è necessario configurare il client. Per prima cosa, configurare il demone Puppet per l'avvio. Modificare /etc/default/puppet, cambiando START in «yes»: START=yes Quindi avviare il servizio: sudo service puppet start Tornando sul server Puppet , firmare il certificato client digitando: sudo puppetca --sign meercat02.example.com Controllare il file /var/log/syslog per errori di configurazione. Se tutto funziona correttamente, il pacchetto apache2 e le sue dipendenze saranno installati sul client Puppet. Questo esempio è molto semplice e non evidenzia molte delle caratteristiche e dei vantaggi di Puppet. Per ulteriori informazioni, consultare Sezione 2.3, «Risorse» [86]. 2.3. Risorse • Visitare il sito web per consultare la documentazione ufficiale di Puppet4 4 http://docs.puppetlabs.com/ 86 Amministrazione remota • Consultare anche Pro Puppet5. • Un'altra fonte di ulteriori informazioni