Server Intranet

Servizi Intranet

  • Web
  • DNS
  • FTP
  • Telnet/SSH
  • NFS (condivisione File linux)
  • SAMBA (Condivisione File Windows)

Server WEB

  • Nell'installazione standard di Ubuntu Desktop non è compreso il server Web Apache 2
  • Per installarlo dovremo abilitare tutti i repository in Synaptic e selezionare Apache2
  • Una volta installato è già perfettamente funzionante. Lo possiamo verificare puntando il nostro browser su localhost o 127.0.0.1
  • Le pagine WEB vanno messe nella directory /var/www

Server WEB

  • Questa directory è di proprietà di root, scrivibile solo da root, leggibile da tutti. Se vogliamo che qualche altro utente possa inserirvi contenuti, dovremo cambiarle il proprietario ed i diritti
  • Dobbiamo ricordare che tutti i file che si metteranno in questa directory, qualunque proprietario abbaino, dovranno essere leggibili da parte dell'utente www-data o del gruppo www-data

Server WEB - Pagine utente

  • Nella configurazione standard non sono abilitate le directory utente.
  • Per abilitarle occorre dare i seguenti comandi, in un terminale:
    sudo bash
    cd /etc/apache2/mods-enabled
    ln -s ../mods-available/userdir.* .
  • Supponiamo che il server si chiami www.miascuola.it

Server WEB - Pagine utente

  • I file che l'utente salvi metterà nella directory public_html della sua home directory (quindi in /home/salvi/public_html) saranno visibili all'indirizzo http://www.miascuola.it/~salvi/, sempre che questi file siano leggibili da parte dell'utente www-data o del gruppo www-data
  • Questo ci consente di creare degli utenti cui concedere di caricare sul server delle pagine personali senza per questo concedergli cl'accesso alle pagine ufficiali del sito

server WEB - programmi CGI

  • Sempre nella configurazione standard è anche abilitata l'esecuzione di programmi CGI
  • Nella directory /usr/lib/cgi-bin possono essere messi dei programmi che, tramite l'interfaccia Common Gateway Interface (CGI), possono produrre delle pagine dinamiche.
  • Naturalmente questi programmi dovranno essere eseguibili dall'utente www-data o dal gruppo www-data
  • Nella configurazione standard non sono installati programmi CGI-BIN.

server WEB - programmi CGI

  • Possiamo crearne uno molto semplice scrivendo un file di nome test che contenga:
    #!/bin/sh
    echo content-type: text/plain
    echo
    cat /proc/version
  • Potremo renderlo eseguibile e copiarlo al posto giusto con i comandi:
    sudo bash
    chmod 755 test
    mv test /usr/lib/cgi-bin

server WEB - programmi CGI

  • Possiamo ora provare il nostro programma collegandoci all'URL:
    • http://www.miascuola.it/cgi-bin/test che ci mostrerà la nostra versione di Linux

Piattaforma LAMP

  • Il termine LAMP indica Linux, Apache, MySQL e PHP ed indica la piattaforma su cui sono sviluppati la maggior parte degli applicativi WEB Open Source
  • Stiamo lavorando in Linux, Apache l'abbiamo appena installato. Non ci rimane che installare PHP e MySQL per avere una piataforma completa.
  • Potremo allora selezionare ed installare con Synaptic i pacchetti php5 php5-mysql mysql-server e phpmyadmin
  • Durante l'installazione di PhpMyAdmin ci viene richiesta una password per l'amministratore, che noi inseiremo e ci ricorderemo.

Piattaforma LAMP

  • Ci viene chiesto anche quale server configurare per PhpMyAdmin e noi selezioneremo il solo Apache2, che è il server che abbiamo installato
  • Quando Synaptic avrà terminato potremo controllare il funzionamento della nostra piattaforma LAMP collegandoci all'amministrazione del database con l' URL http://localhost/phpmyadmin/
  • Se tutto funziona, ci verrà chiesto di inserire un nome utente ed una password. Insriremo root con la password che abbiamo scelto durante l'installazione di PhpMyAdmin

Piattaforma LAMP

  • Dopo il login ci troveremo nella pagina di amministrazione del database, che ci consentirà di creare utenti e database. Questo dimostra che tutto funziona.

DNS

  • Il servizio DNS serve per risolvere i nomi a dominio in indirizzi IP, vale a dire tradurre i nomi, come www.miascuola.it in indirizzi IP
  • Questo servizio è importante perché consente di raggiungere le macchine in internet a partire dai loro nomi invece che dai soli indirizzi IP
  • Un server DNS risponde alle richieste dei client, con i dati che conosce, vale a dire con gli IP delle macchine elencate nella sua tabella di zona
  • Se un server DNS non conosce un nome, lo chiede ad un'altro server DNS, di livello superiore, che è stato configurato come suo forwarder

DNS

  • Se inseriamo un server DNS nella nostra rete, esso dovrà avere come forwarder il server DNS del provider cui ci colleghiamo, vale a dire il server DNS meglio connesso al nostro.

DNS - Perchè

  • In linea di massima non ci serve un DNS per le macchine locali, in quanto le macchine che devono essere facilmente raggiungibili sono poche (sono solo i server) ed è molto facile raggiungerle direttamente con i loro indirizzi IP oppure inserendo i loro indirizzi nel file hosts dei client (/etc/hosts in Linux, C:Windowshosts in Windows - probabilmente non esiste e va creato, magari copiandolo dal file C:Windowshosts.sam)
  • Potrebbe farci comodo invece un server DNS per accelerare le ricerche, in quanto il server si ricorda gli indirizzi già chiesti e non li chiede al forwarder, rispondendo prima ai client se conosce già l'indirizzo (fa da cache)

DNS - Perchè

  • Potremmo anche utilizzare un DNS nella nostra rete per intercettare le richieste DNS per individuare le macchine locali che il sistema operativo Windows XP e Windows 2000 fanno all'accensione.
  • Con client che montano questi sistemi operativi ogni volta che si accende una macchina (XP o 2000), essa si collega al DNS. Se il DNS è esterno e ci colleghiamo tramite un router ISDN che fa automaticamente la chiamata se viene chiesto un indirizzo di internet, ad ogni accensione di macchina scatta una telefonata.

DNS - Come

  • Nella configurazione iniziale non è stato inserito il server DNS (bind9), dovremo quindi installarlo con synaptic.
  • A questo punto dobbiamo inserire i DNS forwarder nel file /etc/bind/named.conf.options. Troveremo, nella sezione options una direttiva forwarders commentata.
  • Ci basterà togliere i commenti e inserire l'elenco dei DNS del nostro provider, tutti terminati con ;, al posto dell'IP 0.0.0.0;.
  • Una volta riavviato il server con il comando /etc/init.d/bind9 restart potremo usare il nostro DNS per risolvere i nomi esterni.

DNS - Zone

  • Se vogliamo anche usare il nostro DNS per risolver i nomi locali della nostra rete, dovremo aggiungere al file /etc/bind/named.conf le sezioni relative alle due tabelle di zona necessarie: la zona diretta (da nome ad IP) e quella inversa (da IP a nome).

DNS - Zone

  • Se noi vorremo aggiungere i nomi nella zona local.salvi.mn.it e delle macchine della rete 10.0.155.0/24 dovremo aggiungere le seguenti righe in fondo al file /etc/bind/named.conf:
    zone local.salvi.mn.it {
    type master;
    file /etc/bind/db.salvi;
    };

    zone 155.0.10.in-addr.arpa {
    type master;
    file /etc/bind/db.155.0.10;
    };

DNS - Zone

  • Faccio notare che nella zona inversa (da indirizzo IP a nome) i numeri dell'indirizzo IP della rete sono invertiti (155.0.10 invece che 10.0.155).

DNS - File zona diretta

  • Occorrerà creare ora il file della zona diretta. Scriveremo nel file /etc/bind/db.salvi (quello indicato nel file /etc/bind/named.conf):
    ;
    ; BIND data file for local.salvi.mn.it zone
    ;
    $TTL 604800
    @ IN SOA local.salvi.mn.it. root.local.salvi.mn.it. (
    1 ; Serial
    604800 ; Refresh
    86400 ; Retry
    2419200 ; Expire
    604800 ) ; Negative Cache TTL
    ;
    @ IN NS 10.0.155.20
    dns IN A 10.0.155.20
    vecchio IN CNAME dns
    compaq IN A 10.0.155.155
    g3 IN A 10.0.155.2
    casa IN A 10.0.155.10

DNS - File zona diretta

  • Molta attenzione nel non mettere punti in più o in meno.

DNS - Zona inversa

  • Dobbiamo ora creare il file della zona inversa /etc/bind/db.155.0.10, come indicato nel file /etc/bind/named.conf. Avrà il seguente contenuto:
    ;
    ; BIND reverse data file for local addresses
    ;
    $TTL 604800
    @ IN SOA local.salvi.mn.it. root.local.salvi.mn.it. (
    1 ; Serial
    604800 ; Refresh
    86400 ; Retry
    2419200 ; Expire
    604800 ) ; Negative Cache TTL
    ;
    @ IN NS dns.local.salvi.mn.it.
    20 IN PTR dns.local.salvi.mn.it.
    10 IN PTR casa.local.salvi.mn.it.
    2 IN PTR g3.local.salvi.mn.it.
    155 IN PTR comapq.local.salvi.mn.it.

DNS - Zona inversa

  • Ricordo che anche in questo caso occorre stare molto attenti ai punti.

FTP

  • Potremo installare il server FTP di base selezionando ftpd con synaptic
  • per farlo partire senza riavviare il PC occorre dare il comando:
    sudo /etc/init.d/openbsd-inetd restart
  • Con l'installazione standard non viene installato alcun server FTP
  • Questo server consente di connettersi alla nostra macchina per scaricare un inviare file
  • Gli utenti elencati nel file /etc/ftpusers non possono connettersi al server

FTP

  • La configurazione di default prevede che gli utenti root, ftp ed anonymous siano elencati in questo file. Questi utenti non possono quindi connettersi al sistema.
  • Suggerisco di non eliminare utenti da questo file, ma eventualmente di aggiungerne.

FTP - Configurazione Utenti Protetti

  • Per gli utenti elencati in /etc/ftpchroot viene creato un ambiente ristretto in modo che possano accedere colo ai file che sono nella loro home directory
  • Dato che questi utenti non possono accedere a directory fuori dalla loro home, questa dovrà contenere i file necessari per FTP.
  • Questi file si riducono al comando /bin/ls con le relative librerie ed i file /etc/passwd e /etc/group.

FTP - Configurazione Utenti Protetti

  • Per copiarli potremo eseguire i seguenti comandi:
    salvi@asus:~$ sudo bash
    [sudo] password for salvi:<la nostra password + invio - non vediamo niente>
    root@asus:~# mkdir bin
    root@asus:~# mkdir lib
    root@asus:~# mkdir etc
    root@asus:~# cp /bin/ls bin
    root@asus:~# cp /lib/tls/i686/cmov/librt.so.1 lib
    root@asus:~# cp /lib/libacl.so.1 lib
    root@asus:~# cp /lib/libselinux.so.1 lib
    root@asus:~# cp /lib/tls/i686/cmov/libc.so.6 lib
    root@asus:~# cp /lib/tls/i686/cmov/libpthread.so.0 lib
    root@asus:~# cp /lib/ld-linux.so.2 lib
    root@asus:~# cp /lib/libattr.so.1 lib
    root@asus:~# cp /lib/tls/i686/cmov/libdl.so.2 lib
    root@asus:~# cp /lib/libsepol.so.1 lib
    root@asus:~# cp /etc/passwd etc
    root@asus:~# cp /etc/group etc

Telnet/SSH

  • Nell'installazione standard sono compresi anche sia telnet e ssh
  • Entrambi questi server consentono di connettersi alla macchina da remoto (da un'altro computer) per operare a riga di comando.
  • La differenza tra i due comandi è che con telnet la connessione è in chiaro, quindi chiunque possa leggere i pacchetti della rete può conoscere le password usate ed i comandi dati.

Telnet/SSH

  • SSH invece crea una connessione cifrata, quindi leggendo i pacchetti non è possibile (quasi) decifrare le operazioni che si stanno compiendo e le password che si inviano.
  • Sarebbe opportuno disabilitare TELNET. Per questo basta commentare (aggiungere una #) all'inizio della linea del file /etc/inetd.conf che comincia con la parola telnet. Al riavvio del servizio inetd (/etc/init.d/inetd restart) il servizio sarà disabilitato
  • Con il servizio telnet l'utente root è disabilitato, mentre non c'è modo di disabilitare altri utenti (un buon motivo in più per disabilitare il servizio telnet)

Telnet/SSH

  • Volendo selezionare quali utenti possono connettersi al nostro sistema si potrà editare il file /etc/ssh/sshd_config ed elencare chi si può connettere nelle sezioni AllowGroups e AllowUsers

NFS (condivisione file Linux)

  • Il protocollo NFS consente a client Linux di montare directory appartenenti a macchine remote (server)
  • Nella nostra installazione di base il server NFS è installato
  • Per poter usare il nostro server non occorre altro che inserire directory da condividere nel file /etc/exports
  • Ogni riga del file (eccetto i commenti, preceduti da #), cominciano con il percorso da esportare (rendere disponibile).

NFS (condivisione file Linux)

  • Segue una lista di macchine o gruppi di macchine cui concedere la risorsa, seguite dal modo in cui viene concessa. ad esempio:
    /home/salvi     10.0.155.0/24(rw,sync) localhost(rw,sync)
    /home/infoitis 10.0.155.0/24(rw,sync) localhost(rw,sync)
  • Nell'esempio vengono esportate due directory, allo stesso modo (/home/salvi e /home/infoitis)
  • Alle macchine della sottorete 10.0.155.0 con netmask 255.255.255.0 (maschera con 24 bit a 1) vengono concessi i diritti di lettura e scrittura (rw), richiedendo che le scritture vengano eseguite realmente prima di confermare il comando (sync)

NFS (condivisione file Linux)

  • Gli stessi diritti vengono concessi alla macchina localhost, che corrisponde alla nostra stessa macchina. Questo è utile per fare delle prove senza usare una seconda macchina.

Samba (Condivisione File Windows)

  • Il server SAMBA è un server per reti SMB, vale a dire, reti di Windows.
  • Come al solito dovremo installarlo con Synaptic
  • Consiglio di installare anche mc, che è un comodo file manager testuale con un semplice editor di testi.
  • Potremo ora modificare il file di configurazione di Samba. Dopo avere avviato una sessione di amminstrazione con sudo bash, potremo lanciare l'editor con:
    mcedit /etc/samba/smb.conf
  • Andremo alla riga 91 che dice ; security = user e cancelleremo il ; con il tasto canc

Samba (Condivisione File Windows)

  • Andremo ora alla riga 222 dove troveremo:
    ;[homes]
    ; comment = Home Directories
    ; browsable = no
  • Cancelleremo con il tasto canc il ; iniziale da tutte e tre le righe e cambieremo il no in yes
  • Potremo ora salvare il file premendo il tasto F2 ed uscire premendo il tasto F10
  • Dovremo ora assegnare una password agli utenti cui vorremo accedere con il comando:
    smbpasswd -a salvi

Samba (Condivisione File Windows)

  • Ci verrà chiesta due volte la password per l'utente e noi la inseriremo, senza vedere nulla di quello che digitiamo.
  • Possiamo ora riavviare il server per fargli conoscere le modifiche alla configurazione con il comando:
    /etc/init.d/samba restart
  • Con questo finisce la riconfigurazione iniziale di Samba e potremo connetterci con le macchine Windows oppure usando la voce Connect to server... del menù Places di Ubuntu
[any material that should appear in print but not on the slide]