Linux

fonte: web

Chi utilizza Linux come sistema desktop dispone di uno strumento potente, veloce, sicuro e semplice da usare per sincronizzare file/cartelle locali con file/cartelle memorizzate in un server remoto: il nome di questo strumento è rsync.

rsync è una utility che una volta imparata ad usare non ne potrete più fare a meno. Potendo essere utilizzata in contemporanea con il protocollo SSH è uno degli strumenti più sicuri e performanti per l’aggiornamento delle risorse in remoto.

Oltre alla sincronizzazione dei file e delle cartelle in remoto, rsync è un ottimo strumento per eseguire il backup dei file e delle cartelle del nostro server, perchè anche in questo caso risulta decisamente veloce e chiaramente sicuro.

Vediamo come si utilizza.

(continua…)



Qualche tempo fa scrissi un articolo su come integrare l’application server Tomcat in Eclipse. Visto che risale a circa due anni fa ho deciso di aggiornare la procedura, anche perchè nel frattempo si è radicalmente semplificata e velocizzata.

Eclipse IDE
Eclipse IDE

La procedura per integrare Tomcat in Eclipse può essere fatta in diversi modi, a seconda delle necessità. Quella che vediamo in questo articolo è una delle procedure base per portare a compimento l’integrazione e iniziare così, dopo 10 minuti, lo sviluppo di applicazioni web con le tecnologie Java.

La prima cosa da fare è chiaramente aver installato e configurato correttamente il Java Developmente Kit, passo che diamo per eseguito e completato correttamente.

(continua…)



Qualche giorno fa mi sono imbattutto in Htaccess Tools e ho scoperto un servizio davvero interessante, comodo e molto ben fatto. In cosa consiste?

Questo sito propone una serie di generatori di .htaccess: autenticazione, protezione, redirezione, ma anche htpasswd, customizzazione delle pagine di errore…insomma davvero una risorsa utilissima.

(continua…)



Continua la nostra ricerca dei tools utili per analizzare e controllare le reti. Dopo aver introdotto Bwmon, vediamo ora un tool davvero interessante, Wireshark . Questo è probabilmente il miglior analizzatore di rete disponibile, ed è stato implementato da un team che comprendeva i maggiori esperti mondiali del settore.

Il download e l’installazioni sono davvero banali, dunque non ci soffermeremo oltre. Una volta scaricata la versione del tool più indicata per il proprio sistema operativo, si esegue il file di setup scaricato e l’installazione prosegue senza ulteriori richieste.

Lanciato il programma, è possibile eseguire uno scan del sistema per rilevare tutte le interfaccie di rete presenti (LAN, Wireless, ecc.) e scegliere così quella al momento connessa e che vogliamo analizzare.

L’interfaccia di gestione si presenta in questo modo:

Interfaccia WireShark

Il cerchio rosso indica il pulsante da premere per attivare il rilevamento delle interfaccie. Effettuata la scelta, il tool visualizza tutte le informazioni che transitano su tale interfaccia, pacchetto per pacchetto. Ci si rende subito conto della potena di Wireshark : è possibile analizzare molto in profondità, addirittura entrare nel pacchetto per controllare ogni parte costituente (Frame 1, IP, UDP, ecc.) .

Oltre che tool utile per i sistemisti, Wireshark può essere un’ottimo strumento didattico, viste le possibilità che offre. E’ sufficiente una prova per rendersi conto delle sue potenzialità, e consigliamo vivamente di analizzare almeno una volta la propria interfaccia di rete.



Per chi amministra server linux, può essere molto utile monitorare la larghezza di banda utilizzata, soprattutto per quelle macchine che gestiscono parecchi domini. Può succedere in questi casi, che vi siano dei picchi di banda, ed è molto importante capirne i motivi: ecco perchè è così importante conoscere ed imparare ad usare uno strumento come bwmon .

Questa utility legge i file /proc/net/dev e /proc/uptime per stampare a video la banda usata, anche determinati archi di tempo selezionati dall’utente, il valore massimo da quando è stato inizializzato il tool ed anche la media della banda utlizziata dall’ultimo reboot.

Il software necessario è reperibile al seguente link.

L’installazione è semplicissima e segue la classica compilazione. Per compilare, ci posizioniamo all’interno della cartella in cui abbiamo “unzippato” il file scaricato e digitiamo il comando make:

$ make

a questo punto possiamo installare il tool, digitando il comando:

$ make install

e bwmon è pronto per iniziare le sue analisi. Vi consigliamo di osservare l’help che fornisce il tool, raggiungibile con il comando bwmon -h:

$ ./bwmon -h

Linux Network Bandwidth Monitor $Revision: 1.3 $
by Kimmo Nupponen (kimmoon@users.sourceforge.net)
$Date: 2002/05/08 06:33:09 $

usage: ./bwmon [-b] [-h] [-a] [-m] [-u seconds]
-a Print bandwidth utiliasation in Kbytes rather than Kbits. The default
is to use Kbits
-a Print also average bandwidth since last boot per interface
-m Print maximum bandwidth since launch of this utility
-h Print this help message
-u Update timeout (integer value)

Use <space-bar> to refresh the screen before update timeout expires
Use ‘q’ or ‘Q’ to exit this utility

Questo è l’output che visualizzerà l’help. Ora possiamo finalmente iniziare le nostre analisi, appoggiandoci a questo comodo e preciso strumento.



Per chi amministra un server, è importante comprendere a fondo come dovrebbe essere configurato il proprio server di posta, soprattutto perchè in caso di problemi o guasti, deve essere in grado di intervenire e trovare la soluzione nel minor tempo possibile ( soprattutto se il server è una macchina aziendale e magari gestisce la posta della clientela ).

Sul web vi sono molte informazioni e documentazione sulla gestione del server di posta, ma la maggior parte dei tutorial è legato a configurazioni specifiche che molto spesso si discostano parecchio da quella che si sta implementando.

Con questa guida impareremo non solo a configurare un server di posta, ma anche come si gestisce l’utenza della posta senza l’ausilio di un pannello di hosting, in modo da comprendere totalmente i meccanismi che guidano la gestione delle mail.

Su un sistema operativo linux, andremo a configurare il server di posta Postfix, il server Courier-Imap e la webmail horde come interfaccia grafica per la visione delle mail.

Noi abbiamo effettuato le prove su un sistema OpenSuse 10.2, ma ciò che vedremo andrà benissimo per qualsiasi sistema operativo linux.

Requisiti

La prima cosa da fare è ovviamente installare tutti i pacchetti che ci servono. Per chi è alle prime armi, consigliamo di utilizzare i meccanismi messi a disposizione da ogni sistema linux per effettuare tali installazione, come yast o smart per OpenSuse 10.2 o yum per i sistema Debian.

Ecco quello che ci occorre:

  • Il server di posta Postix ( )
  • Il server imap Courier
  • La libreria courier-authlib-userdb del server imap Courier
  • La webmail Horde ( o quella che si preferisce, squirrelmail, ecc. )

Installati i pacchetti necessari, procediamo alla configurazione.

Configurazione

Inziamo con la configurazione del Postfix: ovviamente vi sono moltissime configurazione possibili, ognugno è libero di scegliere quella che preferisce e che meglio si adatta alle proprie esigenze. Qui è possibile vedere alcuni esempi sulle diverse configurazioni di base: noi implementeremo quella che nel Postfix viene chiamata Domini MailBox Virtuali : questa configurazione permette di utilizzare un elenco di utenti e le corrispondenti mailbox in modo assolutamente indipendente dagli utenti del sistema (per maggiori dettagli leggete il link sopra indicato).

Editiamo il file principale che gestisce la configurazione del Postifx, main.cf , che solitamente di trova nella cartella /etc/postix/main.cf e inseriamo queste direttive:

virtual_mailbox_domains = mio_dominio.com
virtual_mailbox_base = /var/mailboxes/
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual

Analizziamo come sempre riga per riga le direttive che abbiamo scritto. La direttiva virtual_mailbox_domains serve per specificare al Postfix i domini per i quali intendiamo creare le mailbox. Nel nostro caso abbiamo un solo dominio, mio_dominio.com .

virtual_mailbox_base specifica il prefisso per il percorso di tutte le mailbox virtuali. I tre parametri successivi

virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

sono molto importanti, perchè configurano il cuore del server di posta. Il primo, virtual_mailbox_maps, specifica il file che contiene l’elenco delle caselle di posta presenti nel dominio specificato (virtual_mailbox_domains), nel seguente formato:

user@mio_dominio.com user/

I seguenti due campi, virtual_uid_maps e virtual_gid_maps, sono riespettivamente userid e il groupid dell’utente che il delivery agent utilizza per scrivere nelle mailbox.

L’ultimo campo che rimane da vedere è il virtual_alias_maps : questo è da utilizzarsi quando tra le caselle specificate vi sono dei reindirizzamenti. Il formato è il seguente:

user@mio_dominio.com altro_user@altrodominio.com

in cui il primo elemento rappresenta l’origine, mentre il secondo rappresenta la destinazione, ovvero la casella di posta dove il messaggio per user@mio_dominio.com dovrà essere recapitato. Attenzione: quando modifichiamo il file /etc/postfix/virtual, è necessario eseguire il comando:

postmap /etc/postfix/virtual

affinchè le modfiche abbiamo effetto.

Creazione Utenti

Vediamo ora la procedura che bisogna eseguire dopo la configurazione del Postfix per creare effettivamente l’utenza mail: questo è il punto più importante dell’articolo, perchè in effetti non vi sono molte risorse disponibili al riguardo.

  1. Inserisco la riga per la nuova casella di posta nel file di postfix /etc/postfix/virtual_mailbox:

    nome.cognome@mio_dominio.com nome.cognome/

    ovviamente al posto di nome.cognome è possibile utilizzre lo schema di gestione utenza che si preferisce.

  2. E’ necessario ora rigenerare il file .db lanciando il comando:

    postmap virtual_mailbox

  3.  

    Creaimo l’utenza imap(courier-auth), che viene scritta nel file /etc/authlib/userdb :

    userdb nome.cognome@mio_dominio.com set uid=5000 gid=5000 home=/var/mailboxes mail=/var/mailboxes/nome.cognome

    userdbpw -md5 | userdb nome.cognome@mio_dominio.com set systempw

  4. makeuserdb

Il primo comando andrà specifica il nome utente e la rispettiva mailbox per il nuovo account di posta. Il secondo comando ci permette di assegnare una password per l’account in creazione, mentre il terzo e ultimo comando è necessario per scrivere nei relativi file rendendo così effettive le modifiche.

  1. Per creare tali utenze, abbiamo usato la libreria libreria courier-authlib-userdb che ci siamo procurati durante la fase di installazione dei requisiti.
  2. Per creare fisicamente (intendiamo le directory) le cartelle del nuovo utente è sufficiente che questo riceva un messaggio, sarà postfix stesso a crearle ed inserire il messaggio ricevuto nella giusta cartella. Nel caso in cui volessimo fare una prova, si può mandare una mail esterna (attraverso cioè una qualsiasi casella di posta funzionante) o interna (dal localhost tramite telnet o sendmail).Nel caso di telnet si procede nel seguente modo:S: telnet qualcheparte 25R: 220 qualcheparte Simple Mail Transfer Service ReadyS: HELO miohost
    R: 250 miohost
    S: MAIL FROM:<Marco@miohost>R: 250 OK

    S: RCPT TO:<Roberto@suohost>

    R: 250 OK

    S: DATA

    R: 354 Start mail input; end with <CRLF>.<CRLF>

    S: Blah blah blah…

    S: …etc. etc. etc.

    S: .

    R: 250 OK

    S: QUIT

    R: 221

    dove:

    * HELO tuohost
    (dove tuohost e’ il nome del server che spedisce il messaggio.
    Questo comando e’ usato per identificare il server mittente)

    * MAIL tuoindirizzo (dove tuo indirizzo e’ il tuo indirizzo di posta elettronica. Questo comando inizia una transazione di posta dove i dati vengono consegnati ad una o piu’ caselle di posta)

    * RCPT indirizzodestinatario (dove indirizzo destinatario e’ l’ indirizzo di posta elettronica del destinatario)

    * DATA (questo comando e’ usato per definire il testo del messaggio. Un testo di una e-mail puo’ contenere solo i caratteri compresi nel set dei 128 caratteri dello standard ASCII. La fine del messaggio e’ indicata da una riga contenente esclusivamente la sequenza di caratteri “<CRLF>.<CRLF>” . In altre parole devi premere il tasto invio, digitare un punto e premere di nuovo il tasto invio)

    * RSET (questo comando specifica che la transazione corrente deve essere interrotta)

    * NOOP (questo comando indica che non deve essere eseguita alcuna azione, tranne quella che permette al ricevente di inviare una risposta di OK)

    * QUIT (questo comando e’ usato per chiudere la connessione)

    E le risposte piu’ comuni:

    220 <dominio> Service ready
    221 <dominio> Service closing transmission channel
    250 Requested mail action okay, completed
    354 Start mail input; end with <CRLF>.<CRLF>
    421 <dominio> Service not available, closing transmission channel
    450 Requested mail action not taken: mailbox unavailable [Es. mailbox occupata]
    500 Syntax error, command unrecognized [Es. una riga di comando troppo lunga]
    501 Syntax error in parameters or arguments
    502 Command not implemented
    550 Requested action not taken: mailbox unavailable
    551 User not local; please try <indirizzo>
    554 Transaction failed

    Nel caso di sendmail si procede in questo modo:

    sendmail user@dominio.com<enter>
    From: user@altrodominio.com
    Subject: Oggetto messaggio
    (riga vuota)

    tutto il testo del messaggio

    .
    (un punto solo sulla riga)



Di default, la configurazione del motore PHP permette di uplodare file di dimensioni non superiori ai 2 MB. Nel file di configurazione php.ini , infatti, si trova la seguente direttiva:

upload_max_filesize = 2M

che non fa altro che fissare la dimensione massima per i file in upload a 2 MB, appunto. Molto spesso però tale limite rappresenta un problema, soprattutto quando dobbiamo gestire piccoli file audio e video. Ovviamente nel caso in cui dovessimo implementare applicativi che lavorano con upload di file di grandi dimensione, 100 MB ad esempio, la strada di utilizzare tale direttiva non è certo quella consigliata (il motore PHP e il server web Apache non sono stati concepiti per gestire una tale dimensione di file in upload).

Quindi, quando dobbiamo gestire file di dimensioni superiori hai 2 MB, dicevamo, il limite imposto rimane un problema. Come risolvere dunque la situazione?

Sicuramente l’idea di modificare il valore nella direttiva upload_max_filesize non è la miglior cosa da fare: è bene ridurre al minimo le modifiche al file php.ini , visto che tale file configurare tutto il motore PHP. Aumentare la dimensione dei file nel php.ini l’aumenterà in tutti i progetti implementati in tale linguaggio.

La soluzione migliore è modificare tale impostazione solamente nel dominio o nel progetto interessato: ovviamente tutto dipende dalla configurazione del sistema in cui l’applicativo “gira”.

Se abbiamo la possibilità di accedere al file di configurazione del dominio ( normalmente si chiamano http.include, ma dipende dal sistema utilizzato ovviamente ), è sufficiente aggiungere all’interno del VirtualHost di tale file la direttiva:

php_value upload_max_filesize XM

che altro non fa che impostare il limite al valore X solo per il dominio in particolare, lasciando quindi il limite di default per tutto il resto. Nel caso in cui non si potesse accedere al file di configurazione del dominio, si può procedere inserendo tale direttiva in un file .htacces : in questo modo si ottiene lo stesso effetto senza dover modificare il file di configurazione del dominio.

Da questo momento, il limite per i file in upload sarà di X MB, ma solo per il dominio preso in considerazione!



Gestire un server, in particolare un server Linux, è un’attività che richiede parecchio lavoro e costante impegno. Per svolgere al meglio il proprio lavoro, soprattutto se si è responsabili di una macchina, è necessario seguire con attenzione gli aggiornamenti e le security patch rilasciate per il proprio sistama operativo, o per gli applicativi utilizzati.

Ma è ovviamente molto difficile avere tutto sotto controllo senza un ausilio “esterno”: ecco a cosa servono i tool come Tiger, Nmap e Nessus.

Questi tool hanno diverse caratteristiche interessanti, alcuni sono più precisi, altri più approfonditi, ma comunque hanno uno scopo in comune: permettere all’amministratore di rete di monitorare il proprio sistema e scoprire le vulnerabilità prima che sia troppo tardi.

Tiger e Nmap sono in effetti più semplici da installare ed utilizzare, ma è anche vero che non raggiungono la profondità di analisi e la precisione di Nessus.

Quest’ultimo è eseguibile su diversi sistemi operativi, tra i quali ci sono i seguenti:

  • Red Hat ES 3, ES 4, and ES 5 (i386 and x86-64)
  • Fedora Core 7 and 8
  • SUSE 9.3 and 10.0
  • Debian 4 (i386 and amd64)
  • FreeBSD 6.0
  • Solaris 9 and 10
  • Mac OS X 10.5
  • Windows 2000, XP, Server 2003, Server 2008, and Vista
  • Enterasys Dragon appliance running Dragon 7.2 or later

Anche gli altri due tool supportano diversi sistemi operativi, per questo motivo conviene leggere le rispettive documentazioni e le rispettive liste di plugin per capire quale sia il tool che meglio si addice all’analisi che vogliamo eseguire sul nostro sistema.

In particolare, i link a cui facciamo riferimento sono i seguenti:

Non proseguiamo con ulteriori spiegazioni, visto che la documenzione di ogni tool è veramente esauriente ed intuitiva. Ad ogni modo, rimaniamo come sempre a disposizione per chi incontrasse difficoltà nella configurazione, nell’installazione o nell’utilizzo.



L’ammistrazione da remoto di server linux può essere effettuata in diversi modi, ma il modo più sicuro ed efficiente è sicuramente l’utilizzo di SSH (Secure SHell), un protocollo che permette di stabilire una sessione remota cifrata ad interfaccia a linea di comando con un altro host.

Supponendo di utilizzare un PC con una qualche versione di linux installata per effettuare la connessione remota, tutto ciò che ci occorre è aprire una finestra di terminale o shell (per chi utilizza windows, è possibile sfruttare tool come Putty per effettuare connessioni remote). Siccome è buona norma non utilizzare l’utente root per lavorare, supporremo che utilizziamo nel nostro sistema di casa un utente diverso, ad esempio user-007. Dunque, aprendo il terminale, a linea di comando vedremo un qualcosa di simile:

$user-007\

Ora, normalmente in remoto ci si collega come utente root, ma allora sorge un problema: nel sistema di casa che utilizziamo per effettuare la connessione remota siamo identificati con l’utente user-007, mentre nell’host remoto vogliamo essere identificati come utente root.

Allora il comando che dobbiamo utilizzare è il seguente:

ssh root@indirizzo_ip

dove al posto di indirizzo _ip ovviamente andremo a mettere l’ip del server con il quale vogliamo effettuare la connessione remota. A questo punto ci verrà richiesta la password di sistema relativa all’utente remoto root: una volta inserita, entreremo nel server e potremo gestirlo da linea di comando proprio come facciamo con il nostro sistema linux locale.

Utilizzare PC domestici con linux per lavorare ed effettuare connessioni SSH è decisamente la cosa più sicura ed efficiente per ammistrare un server da remoto: vi sono tool per windows che permettono di utilizzare meccanismi che simulano o lavorano in modo simile ad un sistema linux per amministrare server linux, ma provate per esempio ad uplodare sul server una grande quantità di dati (ad esempio video o altro materiale multimediale). La differenza che potrete osservare parla da sola.



ISPConfig è un pannello di controllo hosting opensource per server Linux. Attraverso questo pannello, diventa molto più comodo e semplice gestire la configurazione e la manuntezione del vostro server Linux: è un prodotto veramente interessante, soprattutto perchè complete e assolutamente gratuito.

Prima di procedere con l’installazione, è bene che studiate bene i requisiti presentati al seguente indirizzo.

Vediamo come installarlo e configurarlo correttemente. Dopo averlo scaricato al seguente indirizzo, procediamo con la ‘decomprensione’ del file archivio e sistemandoci nella cartella di installazione:

tar xvfz ISPConfig*.tar.gz
cd install_ispconfig

A questo punto siamo pronti per partire con il processo di installazione, lanciando il comando

./setup

A questo punto l’installatore si preoccuperà di tutto il processo, a noi non resterà che rispondere a delle domande che nella maggior parte dei casi sono semplici e chiare. La prima cosa che farà l’installatore sarà compilare Apache con il modulo PHP5: questa compilazioni non modificherà eventuali precedenti personalizzazioni nella configurazione del server wev

Una volta conclusa questa prima fase, sarà necessario creare un certificato SSL: a questo proposito verranno sottoposte una serie di domande, alle quali si può rispondere accettando i valori di default o inserendone di personali.

Bisogna fare attenzione quando raggiungiamo i seguenti punti :

Encrypting RSA private key of CA with a pass phrase for security [ca.key]

Encrypting RSA private key of SERVER with a pass phrase for security [server.key]

del processo di creazione del certificato, perchè qui possiamo chiedere se vogliamo crittografare la password realativa. E’ importante scegliere no, perchè altrimenti ogni qualvolta intendiamo riavviare il sistema ISPConfig ci verrà chiesta una password, e questo comporta che non è possibile riavviare il sistema senza un intervento umano.

Se ci troviamo di fronte un fallimento della compilazione, il processo di setup viene interrotto e i file finora compilati vengono rimossi. Dal messaggio di errore, dovrebbe essere chiaro il problema: una volta risolto, si può procedere nuovamente con il processo di setup.

In caso di successo, invece, ci verrà chiesto di scegliere una lingua: questa scelta si riferisce al linguaggio dell’interfaccia di ISPConfig. Una volta accetta la licenza, che consigliamo di leggere bene, viene chiesta la modalità di installazione: sarebbe meglio scegliere la modalità expert, perchè permette un maggior controllo sull’installazione. Quindi digitiamo 2 e proseguiamo con il processo di installazione.

Segue il riconscimento del daemon postfix, e la scelta della web-root: se non ci va bene la proposta di default, digitiamo n ed inseriamo la cartella che preferiamo. Inserita la web-root verranno richiesti ulteriori dati di configurazione:

Please enter your MySQL server: localhost
Please enter your MySQL user: root
Please enter your MySQL password: (inserire la pass scelta durante l’installazione del MySQL Server)

Please enter a name for the ISPConfig database (e.g. db_ispconfig): db_ispconfig
Please enter the IP address of the ISPConfig web (e.g. 192.168.0.1): xxx.xxx.xxx.xxx (Inserire il proprio IP)
Please enter the host name (e.g. www): www
Please enter the domain (e.g. xyz.de):
tuodominio.com

Please select the protocol (http or https (SSL encryption)) to use to access the ISPConfig system:
1) HTTPS
2) HTTP
Your Choice:
1

Se stiamo procedendo ad una installazione di test, il nome host lo possiamo lasciare vuoto, e al posto del nome di dominio possiamo inserire l’indirizzo IP.

Una volta completati tutti i passaggi ISPConfig sarà finalmente installato sul proprio server. Se durante l’installazione abbiamo indicato www come nome host e tuodominio.com come dominio, allora l’interfaccia di ISPConfig sarà raggiungibile al seguente indirizzo:

https://www.tuodominio.com:81 o http://www.tuodominio.com:81

Il primo login andrà fatto inserendo admin come username e password. Ovviamente la prima cosa da fare una volta installato il pannello, è proprio quello di cambiare questi dati, viato che quelli di default non sono mai sicuri.

L’installazione è conclusa, e al seguente indirizzo potete trovare il manuale di utilizzo del pannello. Le istruzioni di installazione dettagliate per ogni sistema operativo linux sono disponibili qui.