Il file iRedMail.tips, riporta gli url dei siti configurati in apache e dai quali è possibile raggiungere la webmail e le altre applicazioni.
Ad eccezione della webmail, nessuno degli altri siti relativi ai vari tool di amministrazione hanno necessità di essere raggiunti dall'esterno. Inoltre, la maggior parte di questi tool sono i più noti strumenti di amministrazione disponibili nel mondo linux e pertanto, analizzando i log dei server pubblicati è frequente vedere dei tentativi di raggiungere le homepage di accesso da parte di scanner e bot di vario tipo.
E' quindi raccomandabile, come riportato anche nel wiki di iRedmail, restringere l'accessibilità di questi siti secondo le specifiche esigenze.
Originariamente inviato da iRedMail.tips
Nel mio caso, tutti i siti devono essere raggiungibili solo dalla rete locale, ad eccezione della webmail che deve essere raggiungibile anche da internet.
Dagli url indicati nel file, si vede anche che l'installer ha utilizzato per tutti i siti (e per la generazione del certificato SSL) il nome host che ho scelto di non modificare: Poco male, funziona tutto ma è poco elegante e comporta una segnalazione di errore nel browser quando si accede via SSL ad uno dei siti.
Per correggere queste impostazioni, è necessario intervenire nella configurazione dei siti che si trova in apache. I files e le directory che ci interessano sono principalmente questi:
Apache & PHP:
* Configuration files:
- /etc/apache2
- /etc/apache2/apache2.conf
- /etc/apache2/conf.d/*
- /etc/php5/apache2/php.ini
* Directories:
- /usr/share/apache2
- /var/www
La restrizione di accesso ad un particolare sito/directory si può ottenere sfruttando il modulo di apache "authz_host". Per abilitarlo, è sufficiente lanciare il comando:
codice:
root@server:/etc/apache2# a2enmod authz_host
Enabling module authz_host.
Run '/etc/init.d/apache2 restart' to activate new configuration!
ma io ce lo avevo già abilitato.
La configurazione predefinita di apache prevede la creazione di un sito "default" che risponde a tutte le chiamate http che arrivano al server. I siti diventano due nel caso sia attivato anche il supporto ad SSL. La configurazione di questi siti è contenuta nei file disponibili nella directory "/etc/apache2/sites-available":
codice:
root@server:/etc/apache2# ls /etc/apache2/sites-available
default default-ssl
Il file "default" gestisce il sito che risponde alle chiamate http, il file default-ssl l'equivalente per il protocollo SSL. Ogni applicazione fà riferimento ad una specifica sottodirectory, ciascuna delle quali dotata di un proprio files di configurazione. Per restringere l'accesso a queste directory, è sufficiente modificare una direttiva contenuta nel relativo file di configurazione:
Originariamente inviato da /etc/apache2/conf.d/iredadmin.conf
codice HTML:
WSGISocketPrefix /var/run/wsgi
WSGIDaemonProcess iredadmin user=iredadmin threads=15
WSGIProcessGroup iredadmin
AddType text/html .py
<Directory /usr/share/apache2/iredadmin/>
Order allow,deny
Allow from all
</Directory>
In questo file, è sufficiente sostituire la direttiva "Allow from all" con "Allow from 192.168.149.0/255.255.255.0" per specificare le reti da cui consentire l'accesso (ovviamente impostando il valore appropriato) separate da spazi. In alternativa, è possibile specificare singoli indirizzi IP o anche nomi host o specifici domini.
Nel caso venga tentato l'acceso da una rete/host non autorizzato, apache dovrebbe restituire questo risultato:
Ripetere uguale per i files "/etc/apache2/conf.d/awstats.conf" ed "/etc/apache2/conf.d/phpldapadmin".
Per "/etc/apache2/conf.d/phpmyadmin.conf" la procedura è leggermente diversa perchè è necessario aggiungere anche l'opzione "Order allow,deny", dato che di default non è presente.
In ultimo, ridurre al minimo indispensabile gli alias configurati nel file "default" e "default-ssl" può aiutare a ridurre la "superficie d'attacco" al server, che male non fà mai.