StefanoLaguardia.eu

[Guida]Realizziamo un server a basso costo per mail, torrent e condivisione files (Parte 8)

Siamo giunti all’ultima parte della guida. Oggi affronteremo  la “messa in sicurezza” del sistema con l’installazione di uno script per il firewall di Linux – Iptables -, la configurazione di alcuni comandi da far eseguire all’avvio del sistema in caso di reboot ed, infine, la configurazione del demone SSH per aumentare il grado di sicurezza.

  • Installazione di arno’s iptables firewall

Come molti di voi già sanno, Linux ha un firewall nel suo kernel che si chiama Iptables e che è sin da subito pronto ad essere usato. Di default, tuttavia, il firewall è privo di regole e, dunque, pur in sua presenza, di fatto non blocca connessioni non autorizzate. Capirete che Iptables deve essere configurato e che questa operazione non sempre è facile se non conosciamo bene come funzionano le reti e come si usano i comandi del medesimo firewall.

Per superare i problemi riportati, procederemo con l‘installazione di uno script davvero ben fatto che provvede a configurare in dettaglio Iptables sulla base di alcune nostre direttive di semplicissima comprensione. Vi sto parlando di Arno’s Iptables Firewall. Tale script si installa direttamente dai repositories di debian e, quindi, sarà sufficiente da utente root digitare il seguente comando:

# apt-get install arno-iptables-firewall

Subito dopo aver scaricato il pacchetto, si aprirà una interfaccia di dialog che ci chiederà se vogliamo utilizzare debconf per configurare il firewall:

Alla domanda rispondiamo di “Si” e procediamo con la configurazione del firewall che consiste in una successiva schermata dove ci viene data l’informazione in merito alle interfacce di rete esterne e dove possiamo solo rispondere “Ok”. La successiva schermata ci chiederà di inserire il valore dell’interfaccia di rete esterna da configurare e qui dobbiamo inserire il valore eth0:

Il passo successivo sarà quello di rispondere “No” alla domanda che riguarda la configurazione del server DHCP sull’interfaccia di rete esterna testè configurata e “Ok” alla successiva schermata di informazione. A quel punto si aprirà la schermata che ci chiede quali porte TCP dobbiamo mantenere aperte verso l’esterno. Qui bisogna fare molta attenzione poichè se sbagliamo ad inserire i valori, potremmo restare chiusi fuori dall’accesso SSH piuttosto che dall’accesso al web server (niente di irrimediabile comunque!).

Vediamo, pertanto, quali valori inserire nelle schermate di configurazione delle porte, tenendo presente quali servizi abbiamo configurato nella altre parti di questa guida.
In merito alle porte TCP da mantenere aperte, dobbiamo inserire i valori:

22 80 445 139 10024:10025

Tali valori rappresentano rispettivamente quelli del server SSH, del web server apache, di samba (445 e 139) e del bittorrent (10024:10025). Volendo potete aprire anche altre porte, come la 110 del server pop3, la 25 del server smtp, la 993 del server imap over ssl, la 443 se intendete abilitare l’ssl su apache e… in genere tutte le porte dei servizi che installerete! Diciamo che con le porte riportate nella nota in verde sarete ingrado di usare il server che abbiamo configurato per usare la posta tramite webmail, samba per la condivisione delle directory ed il server torrent.

Dopo aver configurato le porte TCP, ci verrà chiesto di configurare le porte UDP ed è necessario inserire i valori:

137 138

che sono relative alle necessità che ha samba!

La domanda successiva alla configurazione delle porte, riguarda il se il server deve rispondere alle richieste di Ping. Io in genere rispondo di “No”, ma se avete altre esigenze potete tranquillamente rispondere di “Si”.
La configurazione, poi, procede con la richiesta di configurazione delle interfacce interne e possiamo lasciare il campo vuoto per procedere con la successiva schermata che ci riporta alcune informazioni sui files di configurazione del firewall. Infine ci viene chiesto se vogliamo avviare il firewall ed ovviamente risponderemo di si!

Da questo momento in poi il nostro server sarà un po’ più protetto sulla rete!

  • Comandi da far eseguire all’avvio del sistema

Chi ha seguito tutte le fasi di creazione del sistema del quale vi ho parlato, si sarà reso conto del fatto che abbiamo installato svariati servizi e quanti di voi hanno effettuato tutte le configurazioni e siano stati coinvolti in un riavvio del sistema, avrà potuto appurare che alcuni dei servizi si rifiutano di avviarsi a causa della mancanza dei files di log nell’apposita directory. Il motivo di tale problema è legato al fatto che abbiamo configurato il filesystem tab in modo da far caricare i log nella memoria RAM e non sulla scheda flash per evitare continue scritture della delicata memoria su scheda e, quindi, ad ogni riavvio devono essere ricreate le directories o i files necessari alla scrittura dei log. Orbene, quest’ultima operazione non può essere effettuata in automatico dai vari demoni dei servizi perchè questi hanno necessità di trovare le dir al loro posto pena il rifiuto di avviarsi. Tenuto conto di ciò dobbiamo creare alcuni comandi che ricreano le directories ad ogni riavvio del sistema, al fine di evitare mancati riavvii dei servers.

In particolare, dobbiamo creare i files per far creare le dir per Clamav antivirus, Bittorrent BTG e Mysql. Pertanto creeremo 3 files .sh da inserire nella dir /etc/init.d:

# touch /etc/init.d/crea_btgdaemon.sh
# touch /etc/init.d/crea_clamav.sh
# touch /etc/init.d/crea_mysql.sh

A questo punto editiamo il file crea_btgdaemon.sh inserendo al suo interno questi comandi:

touch /var/log/btg-torrent.log
chown btg:adm /var/log/btg-torrent.log

Procediamo editando il file crea_clamav.sh inserendo al suo interno:

mkdir /var/log/clamav
chown -R clamav:adm /var/log/clamav

Ed ancora editiamo il file crea_mysql.sh con questi comandi:

mkdir /var/log/mysql
chown -R mysql:adm /var/log/mysql

Terminata questa operazione di editing dei files, dobbiamo fare in modo che i comandi contenuti nei files stessi siano eseguiti ad ogni avvio del server e siano eseguiti prima che venga data esecuzione ai demoni che hanno bisogno di scrivere i logs. Pertanto procederemo lanciando alcuni comandi di root in questo modo:

# update-rc.d -f crea_btgdaemon.sh start 19 2 3 4 5 .
# update-rc.d -f crea_clamav.sh start 19 2 3 4 5 .
# update-rc.d -f crea_mysql.sh start 16 2 3 4 5 .

Da questo momento in poi non avremo più problemi di mancati riavvii dei demoni a causa della mancanza dei files di log 😉

  • Modifica del file di configurazione di SSH per aumentare la sicurezza

Se parlate con qualsiasi amministratore di sistema in merito ad SSH, questi vi dirà che si tratta di uno strumento straordinario, ma vi dirà anche che bisogna usarlo in maniera ponderata ed utilizzare alcune precauzioni che limitino i danni in caso di sfruttamento di qualche bug del demone da parte di malintenzionati.

La prima e più importante precauzione da utilizzare quando si configura un demone SSH è quello di evitare che possa effettuare il login l’utente root. In poche parole, è sempre meglio evitare che si possa accedere al sistema in remoto facendolo direttamente con l’utente root (con un comando come questo “ssh root@tuohost”), ma dobbiamo fare in modo che si effettui il login con utente “semplice” che poi dovrà, una volta entrato con ssh, cambiare user in root. Il motivo è molto semplice: qualora ci sia una vulnerabilità di SSH che consente di acquisire i privilegi nel sistema con lo stesso utente che usa ssh, si deve evitare che l’utente che possa usare direttamente SSH sia root pena l’acquisizione diretta dei privilegi di root!

Detto questo, per raggiungere i nostri scopi è tutto semplicissimo… si deve editare il file /etc/ssh/sshd_config e modificare questa riga cambiando il valore da:

PermitRootLogin yes

a

PermitRootLogin no

Abbiamo terminato così anche l’ultima parte di questa guida.

Se avete altre domande o dubbi non esitate a lasciare i vostri commenti… spero di aver fatto cosa gradita!

Ti è piaciuto questo articolo? Abbonati alla newslettere per ricevere i nuovi articoli inseriti nel sito:


 

8 Responses

  1. Umberto says:

    le tue guide sono più che esaustive, anche in questo caso tutto ha funzionato bene, un grande aiuto
    per noi smanettoni, ciao

  2. Luca says:

    Posso suggerire anche l’installazione dello script denyhosts (sempre da repository debian) per far calare drasticamente gli attacchi brute force al demone SSH (supponendo che il server sia esposto su Internet)?

  3. […] [Guida]Realizziamo un server a basso costo per mail, torrent e condivisione files (Parte 8) Author: admin | Categoria Blog Personale Siamo giunti all’ultima parte della guida. Oggi affronteremo  la “messa in sicurezza” del sistema con l’installazione di uno script per il firewall di Linux – Iptables -, la configurazione di alcuni comandi da far eseguire all’avvio del sistema in caso di reboot ed, infine, la configurazione del demone SSH per aumentare il grado di sicurezza. […] Vai alla Fonte […]

  4. stefano says:

    Luca wrote:

    Posso suggerire anche l’installazione dello script denyhosts (sempre da repository debian) per far calare drasticamente gli attacchi brute force al demone SSH (supponendo che il server sia esposto su Internet)?

    Ottimo suggerimento!

  5. stefano says:

    @ Umberto:
    Grazie mille! Sono contento che tutto sia andato per il verso giusto!

  6. ludovico says:

    scusi l’ignoranza, ho ubuntu da poco, vorrei che mi spiegasse come trovare “dir /etc/init.d” e come creare esattamente i comandi…

  7. stefano says:

    @ ludovico:
    per accedere alla directory /etc/init.d occorre eseguire da terminale il comando:

    cd /etc/init.d

    Ai fini della guida, però, non c’è bisogno di usarlo, perchè i comandi riportati nel box verde provvedono a creare ciò che serve nella dir /etc/init.d da qualsiasi posizione del filesystemi ci si trovi con il terminale 😉

  8. luca73 says:

    Ciao, complimenti per le guide ottime e esustive. Domanda: il serverino é ancora acceso e funzionantrE? Se dovessi rifarlo cambieresti qualcosa?

Comments

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.