sshd (secure shell daemon) ssh consente l'accesso ad una shell su di una macchina remota. I dati trasmessi sono cifrati, e per questo si può considerare l'evoluzione del servizio telnet, sempre meno utilizzato. OpenSSH: implementazione libera, molto simile all'originale ssh. Configurazione del client e del server: nella cartella /etc/ssh/ (globali) ed in $HOME/.ssh/ (personali). ssh-keygen permette di generare le chiavi. È possibile utilizzarlo in abbinamento a Kerberos.
sshd (secure shell daemon) Autenticazione con passphrase Bisogna aggiungere, nel proprio file ~/.ssh/authorized_keys, la propria chiave pubblica. In questo modo, verrà richiesto all'utente l'inserimento della passphrase associata alla chiave (impostata durante la sua creazione). Autenticazione con password ( normale ) Bisogna aggiungere la chiave pubblica del server in ~/.ssh/known_hosts. Attenzione ai cambiamenti di questa chiave (il client ssh rifiuta il collegamento, bisogna controllare se aggiornamento normale o tentativo fraudolento).
sshd (secure shell daemon) sshd: configurazione in /etc/ssh/sshd_config. Tra le molte opzioni: SyslogFacility/LogLevel configurazione dei log Compression abilita disabilita compressione dei dati trasmessi (gzip) PermitRootLogin conviene impostarlo a no : per accedere al sistema come root, si utilizza un utente non privilegiato, abilitato però a richiamare su. PasswordAuthentication e PubkeyAuthentication abilita/disabilita autenticazione rispettivamente tramite password e tramite chiavi pubbliche (passphrase)
sshd (secure shell daemon) X11Forwarding X11, il protocollo per l'interfaccia grafica, è un vero e proprio protocollo client/server di rete, attivo normalmente sulla porta 6000. Per evitare di aprire all'esterno questa porta, è possibile incapsulare i pacchetti X11 all'interno di un tunnel ssh. Lato server, bisogna impostare questa opzione a yes. Subsystem configura un sottosistema esterno. Normalmente usato per sftp, protocollo di trasferimento file su ssh: Subsystem sftp /usr/lib/sftp-server Impostando /usr/lib/sftp-server come shell di un utente, questi potrà collegarsi esclusivamente tramite sftp, senza accesso ad una vera shell locale.,
sshd (secure shell daemon) AllowUsers Se presente, l'accesso è riservato esclusivamente agli utenti specificati. Possono essere utilizzati caratteri jolly (* e?). Si può utilizzare la forma nomeutente@nomehost Analogamente sono definibili AllowGroups, DenyUsers e DenyGroups. AllowUsers *@151.97.252. *@151.97.253. limita l'accesso alle macchine delle sottoreti 151.97.252.0/255.255.255.0 e 151.97.253.0/255.255.255.0 AllowUsers tizio consente l'accesso a tizio da qualsiasi macchina. AllowUsers tizio@151.97.252.22 consente l'accesso a tizio esclusivamente da www
ssh: client Configurazione in /etc/ssh/ssh_config. Molte opzioni hanno lo stesso significato di quelle presenti in sshd_config. User: l'utente predefinito con cui collegarsi alla macchina remota. ssh [opzioni] [utente@]host [comandi...] oppure -l utente host Alcune opzioni: -o :opzioni nel formato del file di configurazione -X: abilita X11Forwarding (i dati del protocollo X vengono incapsulati nella connessione ssh)
ssh: client scp [opzioni] [[utente@]host:]origine... [[utente@]host:]destinazione copia di file cifrata tra host differenti. Attenzione ai : -r : copia ricorsiva Esempio scp prova.txt tizio@reliant:html/ copia prova.txt nella cartella html di tizio sul computer reliant scp -r esempi/ caio@ds9: copia la cartella esempi nell'account di caio sul computer ds9 sftp: client ftp minimale (parametri simili) consiglio: utilizzare client avanzati (yafc, konqueror/fish)
screen Utile per amministrazione remota. Consente di: avviare sessioni di lavoro (terminale) multiple, passando da una all'altra; effettuare il distacco ( detach ) di sessioni di lavoro e di riprenderle da un terminale differente (un'altra connessione). Caso d'uso tipico: accesso in ssh ad una macchina. Senza screen, per lanciare contemporaneamente più processi interattivi bisogna avviare più sessioni remote; con screen, si può avviare una sola sessione remota tramite ssh e successivamente utilizzare i terminali multipli messi a disposizione da screen.
screen Inoltre, è utile nel caso di connessioni dialup soggette a frequente caduta. utilizzando i terminali multipli messi a disposizione da screen è possibile recuperare in un secondo momento la sessione altrimenti persa per la caduta della connessione. I comandi per la gestione delle sessioni vanno preceduti dalla combinazione C a (Control a). C a n : attiva una nuova sessione di terminale (finestra) C a w : lista delle finestre attive (nell'ultima riga) C a C a : passa alternativamente alla finestra precedente e a quella successiva;
screen Altri comandi: C a SPAZIO: passa alla successiva finestra. C a 0,..., C a 9: passa direttamente alla finestra specificata. C a d: detach, provvede a sganciare la finestra corrente dalla sessione di terminale. C a l: lock, avvia il programma di lock modo testo blocca tutte le sessioni di terminale controllate da screen Per riagganciare una sessione: screen -R ci sono altre opzioni per consentire di scegliere quando sono presenti più sessioni attive di screen.
apache Il server web attualmente più diffuso. adottato da oltre il 60% dei siti web (fonte: netcraft.net) multipiattaforma: la versione 2 ha un nuova architettura multithread e con un nuovo runtime portabile, per sfruttare al meglio ogni piattaforma (in precedenza sviluppo principalmente per Unix). Permette di caricare moduli aggiuntivi a runtime, che provvedono differenti funzionalità: interpreti per linguaggi di scripting (mod_perl, mod_php,...) ecc ecc ecc (mod_auth, mod_alias, mod_userdir, mod_ssl, mod_frontpage,...)
apache: configurazione Configurazione: httpd.conf Permette di includere file di configurazione esterni tramite alla direttiva Include. Direttive opzionali: racchiuse tra <IfDefine nomecondizione>... </IfDefine> Le direttive legate a moduli aggiuntivi (non facenti parte del core di apache) sono racchiuse tra: <IfModule nomemodule>... </IfDefine>
apache: configurazione Direttive di base: ServerType { standalone inetd } avvia il server in modalità standalone oppure in modalità atta a funzionare con inetd (va modificato il relativo file di conf). ServerName: il nome del server (deve essere un nome valido, risolvibile dal DNS). Port, Listen: rispettivamente la porta primaria in cui resta in ascolto ed eventuali porte aggiuntive. User, Group: specificano rispettivamente l'utente ed il gruppo con i permessi dei quali gira apache (normalmente nobody.nobody, o www data.www data) CustomLog, ErrorLog, il percorso dei file di log (rispettivamente per gli accessi e gli errori).
apache: configurazione DocumentRoot: la cartella iniziale dei documenti html (ovvero la cartella corrispondente alla radice del sito Alias: permette di definire degli alias Alias nome_cartella_virtuale cartella_reale cartelle virtuali: ogni riferimento all'alias viene trasformato in un accesso alla vera cartella. Utile ad esempio per la sicurezza. Motivi di sicurezza Alias /icon /usr/share/apache/icons/ Alias /sezionesito /home/utente/html/sottosez/blabla ScriptAlias: analogo, per le directory contenenti script CGI. CGI: programmi che generano come output una pagina html, e prendono in input le variabili passate via form.
apache:configurazione DirectoryIndex: se viene richiamata una cartella (via browser), il server cerca e visualizza i file presenti nella cartella. questa direttiva è relativa al modulo mod_dir.c: <IfModule mod_dir.c> DirectoryIndex index.php index.php4 index.html index.htm index.cgi </IfModule> UserDir: relativa al modulo userdir, specifica quale cartella va considerata la cartella personale degli utenti. accessibile tramite http://nomeserver/~nomeutente/ LoadModule: consente di caricare moduli aggiuntivi.
apache: opzioni per le cartelle Direttive contenitore: Directory <Directory nomedir>... </Directory> Ogni blocco raccoglie le opzioni specifiche per la cartella indicate (e relative sottocartelle). Le opzioni specificate per sottocartelle di norma sovrascrivono quelle impostate per le cartelle di livello Tra le opzioni disponibili: Option, impostazioni per l'accesso, AllowOverride, Auth*.
apache Option: parametri (None: nessuno, All: tutti). Indexes: visualizza il contenuto della cartella. FollowSymLinks: segue i link simbolici. SymLinksIfOwnerMatch: segue i link simbolici, se il proprietario coincide possibili problemi di sicurezza, può uscire dal filesystem ingabbiato. ExecCGI: la cartella contiene script CGI che e' possibile eseguire. Se le opzioni vengono precedute da + o, vengono rispettivamente aggiunte o tolte da quelle impostate per le cartelle di livello superiore.
apache order: indica l'ordine con cui vengono considerate le direttive allow e deny. order allow,deny: prima allow, poi deny allow e deny: sintassi simile, semantica speculare. allow from {all nodi} nodi possono essere nomi di dominio, suffissi/prefissi di nomi di dominio, indirizzi ip con netmask. allow from 127.0.0.1/8 AllowOverride: quali parametri possono essere ridefiniti dagli utenti tramite un file.htaccess (da inserire nella propria cartelle). None, All, Options, Indexes,...
apache: virtual hosts IP based virtual hosts: ad ogni sito ospitato sul server corrisponde un differente indirizzo IP. Name based virtual hosts: più siti risiedono sullo stesso IP. Apache discrimina in base al nome Name based: Parametro NameVirtualHost ip: l'indirizzo che resta in ascolto delle richieste. Può essere * per indicare tutti.
apache: name based virtual hosts Definizione dei virtual hosts: sezioni <VirtualHost ip>... </VirtualHost> ip deve coincidere con quello specificato in NameVirtualHost (quindi anche *). Sicuramente, vanno ridefinite ServerName e DocumentRoot. Si possono definire opzioni personalizzate (CustomLog, ErrorLog, ServerAdmin,...)
apache: name based virtual hosts NameVirtualHost * <VirtualHost *> ServerName www.domain.tld DocumentRoot /www/domain </VirtualHost> <VirtualHost *> ServerName www.otherdomain.tld DocumentRoot /www/otherdomain ErrorLog logs/www.otherdomain.tld-error_log CustomLog logs/www.otherdomain.tld-access_log </VirtualHost>
Posta elettronica: struttura Quattro componenti: mail user agent (MUA): consente agli utenti di leggere e comporre email. client di posta: mail, mutt, pine (a linea di comando) thunderbird, kmail, evolution, (grafici),... non rientra nella gestione amministrativa, anche se alcuni servizi comunicano con l'amministratore tramite le caselle di posta locali (cron,...). mail transport agent (MTA): si occupa dello scambio dei messaggi di posta tra le macchine. il postino che preleva la posta dalla cassetta e la fa giungere fino alla centrale di posta dove è presente la casella postale dell'utente, utilizzando il protocollo SMTP. Questa è la parte del sistema di posta normalmente identificata come server di posta.
Posta elettronica: struttura delivery agent: si occupa di smistare la posta alle caselle degli utenti. dalla centrale, dove l'ha lasciata il MTA, fino alle caselle postali dei singoli utenti. in origine, semplicemente la shell, normalmente integrato con i server di posta. procmail: preprocessa la posta, può integrare filtri. access agent: consente all'utente di prelevare i propri messaggi dal server, normalmente tramite il MUA. In origine non obbligatorio: utenti avevano l'accesso alla macchina contenente le proprie caselle di posta (diretto, telnet,...), utilizzando quindi client testuali (mail, elm, mutt, pine) Esempi: POP3, imap.
MTA: sendmail, qmail sendmail il più utilizzato, ha una lunga storia. Sistema monolitico. Configurazione: utilizza un linguaggio di macro (m4) i file di configurazione vanno processati per generare il vero file utilizzati da sendmail. qmail robusto, pochissimi bug rilevati (c'è un premio per chi trova bug). sviluppato con particolare attenzione ai problemi di sicurezza.
MTA: postfix Come qmail, appartiene alla nuova generazione: sistemi sviluppati con attenzione alla sicurezza. In generale, postfix offre un'ottima compatibilità con sendmail (i programmi esterni lo vedono a tutti gli effetti come sendmail, mette a disposizione Si compone di vari moduli, slegati il più possibile l'uno dall'altro, ognuno con compiti ben precisi. I moduli comunicano tra loro tramite socket unix o code fifo. daemon master si occupa dell'avvio degli altri demoni
MTA: postfix Schema di funzionamento riportato unicamente per far notare la complessità:
main.cf /etc/postfix/main.cf: corrisponde a sendmail.cf (il file di configurazione di sendmail). Opzioni del tipo: nome = valori Alcune opzioni myhostname il nome della macchina (qualificato: con l'indicazione del dominio) mydomain normalmente ricavabile da myhostname, rimuovendo il nome della macchina. Potrebbe essere necessario modificarlo manualmente.
main.cf mynetworks l'elenco delle reti a cui è connessa la macchina, loopback compreso, ad es: mynetworks = 151.97.252.0/24 127.0.0.1/8 myorigin il dominio da utilizzare per la posta in uscita. Ad esempio, la macchina che consente di spedire la posta per un dominio deve consegnarla a nome del dominio, non a proprio nome; mbox.dmi.unict.it deve spedire la posta come dmi.unict.it (masquerading). in questo caso, myorigin = mydomain
main.cf mydestination i domini per cui si accetta la posta in arrivo. notify_classes imposta l'elenco delle categorie di problemi che vanno segnalati alla casella del postmaster (il gestore del sistema di posta). ad es: delay (messaggio ritardato), buonce, 2buonce (il messaggio torna indietro), policy, protocol (problemi in smtp), resource (relativi alle risorse del sistema operativo, come filesystem pieni, ecc), software (errori interni). alias_map e alias_database: il percorso dei file di alias. Ad es: alias_map = hash: /etc/postfix/aliases
alias (posta) Le mail indirizzate ad un alias vengono in realtà re indirizzate all'utente/utenti specificato. Definibili dai vari MTA, tramite un opportuno file di configurazione. Normalmente /etc/aliases (o /etc/mail/aliases o /etc/postfix/aliases) Per motivi di efficenza, questo file non viene utilizzato direttamente dal MTA. si rigenera una mappa hash binaria (di solito aliases.db, posizionato nella stessa cartella del file degli alias), tramite il comando newaliases.
alias (posta) Formato del file degli alias: alias-locale: destinatario1[, destinatario2,...] Normalmente deve essere definito l'alias postmaster, l'amministratore del sistema di posta. Ogni destinatario può essere un utente della macchina locale, un indirizzo di posta (un utente su una macchina remota); una file contenente un elenco di indirizzi, tramite la direttiva :include: conferenza: :include:/home/conferenza/organizzatori
alias (posta) un file, a cui i messaggi devono essere aggiunti utile per creare un archivio storico dei messaggi: team: tizio, caio, /var/lib/archivio/team oppure per ignorare vecchie caselle ora disattivate: casella: /dev/null un comando, il cui input (stdin) sarà costituito dai messaggi arrivati. questo meccanismo consente di passare far preprocessare la posta in arrivo a dei filtri, come procmail indicato precedentemente. può introdurre problemi di sicurezza... Si utilizza il carattere : casellatest: /usr/local/bin/faiqualcosa
utility postconf permette di modificare e visualizzare le impostazioni di postfix. postalias > newaliases equivalente a newaliases, rigenera le hash degli alias. postsuper manutenzione della coda dei messaggi (ad es. postsuper d CODICE rimuove il messaggio avente il CODICE specificato).