Come concedere o negare l'accesso ai siti Web sul server Apache
Apache è uno dei server web più utilizzati al mondo e offre una piattaforma robusta e flessibile per l'hosting di siti web.
Quando gestisci un sito web, potresti dover controllare chi può accedere a determinate risorse o a interi siti web. Ad esempio, potresti voler bloccare indirizzi IP specifici o consentire l'accesso solo da determinate regioni o reti. Apache rende ciò possibile utilizzando una funzionalità chiamata Controllo dell'accesso.
In questa guida, esamineremo i passaggi per consentire o negare l'accesso ai siti web in Apache utilizzando una configurazione semplice e leggibile dall'uomo.
Nozioni di base sul controllo degli accessi Apache
Apache utilizza due direttive principali per controllare l'accesso:
Richiedi
: viene utilizzato per consentire l'accesso a determinati utenti, indirizzi IP o gruppi.Deny
eAllow
(deprecato nelle versioni successive): utilizzato in precedenza nelle versioni precedenti di Apache ma sostituito dalla direttivaRequire
.
Nelle versioni più recenti di Apache (2.4 e successive), la direttiva Require
è il modo principale per gestire i controlli di accesso.
Passaggio 1: modifica il file di configurazione di Apache
I file di configurazione di Apache possono essere trovati in posizioni diverse a seconda del sistema.
Per esempio:
- Ubuntu/Debian:
/etc/apache2/apache2.conf
o all'interno del file host virtuale (ad esempio,/etc/apache2/sites-available/your-site .conf
). - CentOS/RHEL:
/etc/httpd/conf/httpd.conf
o il file host virtuale (ad esempio,/etc/httpd/conf.d/your- sito.conf
).
Utilizza un editor di testo come nano o vi per modificare questi file.
Passaggio 2: configurare il controllo degli accessi utilizzando la direttiva Richiedi
La direttiva Require
specifica a chi è consentito o negato l'accesso. Diamo un'occhiata agli esempi sia per consentire che per negare l'accesso.
Esempio 1: negare l'accesso da indirizzi IP specifici
Per negare l'accesso da indirizzi IP specifici, utilizzare la direttiva Require not
.
Ad esempio, per bloccare l'IP 192.168.1.100:
<Directory /var/www/html>
Require all granted
Require not ip 192.168.1.100
</Directory>
In questo caso:
Richiedi tutto concesso
: consente l'accesso a tutti gli indirizzi IP.Richiede non ip 192.168.1.100
: nega l'accesso all'indirizzo IP specificato.
Esempio 2: consentire l'accesso solo a indirizzi IP specifici
Se desideri consentire l'accesso solo a uno specifico IP o intervallo di IP, utilizza quanto segue:
<Directory /var/www/html>
Require ip 192.168.1.0/24
</Directory>
Qui, Richiedi ip 192.168.1.0/24
consente l'accesso solo agli IP compresi nell'intervallo da 192.168.1.0 a 192.168.1.255 (una rete locale comune allineare).
Esempio 3: negare l'accesso a tutti tranne che a IP specifici
Potresti voler negare l'accesso a tutti tranne che a un determinato IP o gruppo di IP.
<Directory /var/www/html>
Require all denied
Require ip 192.168.1.10
</Directory>
In questo caso:
Richiedi che tutti siano negati
: blocca l'accesso a tutti.Richiedi ip 192.168.1.10
: consente l'accesso solo all'indirizzo IP 192.168.1.10.
Esempio 4: limitare l'accesso in base al nome host
Puoi anche limitare l'accesso in base ai nomi host. Ad esempio, se desideri consentire l'accesso solo agli utenti di un dominio specifico (come example.com
), puoi utilizzare:
<Directory /var/www/html>
Require host example.com
</Directory>
Ciò consentirebbe solo ai visitatori di example.com
di accedere al sito web.
Passaggio 3: blocco di interi paesi in Apache
Per bloccare il traffico proveniente da paesi specifici, devi installare un modulo aggiuntivo chiamato mod_maxminddb
, che utilizza un database GeoIP per determinare il paese in base all'indirizzo IP del visitatore.
Installa mod_maxminddb su Linux
Per utilizzare il modulo mod_maxminddb
, devi installarlo e configurarlo.
Su Ubuntu/Debian, esegui:
sudo apt update
sudo apt install libmaxminddb0 libmaxminddb-dev mmdb-bin apache2-dev
git clone https://github.com/maxmind/mod_maxminddb.git
cd mod_maxminddb
sudo apxs -i -a -c mod_maxminddb.c
Su CentOS/RHEL, esegui:
sudo yum install epel-release
sudo yum install libmaxminddb libmaxminddb-devel mmdb-bin httpd-devel
git clone https://github.com/maxmind/mod_maxminddb.git
cd mod_maxminddb
sudo apxs -i -a -c mod_maxminddb.c
Scarica il database MaxMind GeoIP
MaxMind fornisce un database GeoLite2 gratuito che possiamo utilizzare per determinare il paese in base agli indirizzi IP.
tar -xvzf GeoLite2-Country.tar.gz
sudo mkdir -p /usr/share/GeoIP
sudo mv GeoLite2-Country.mmdb /usr/share/GeoIP/
Configura Apache per utilizzare mod_maxminddb
Ora dobbiamo dire ad Apache di utilizzare il modulo mod_maxminddb
e il database GeoIP.
sudo nano /etc/apache2/apache2.conf # On Ubuntu/Debian
sudo nano /etc/httpd/conf/httpd.conf # On CentOS/RHEL
Aggiungi la seguente configurazione per abilitare mod_maxminddb
e specificare il percorso del database GeoIP:
<IfModule mod_maxminddb.c>
MaxMindDBEnable On
MaxMindDBFile COUNTRY_DB /usr/share/GeoIP/GeoLite2-Country.mmdb
MaxMindDBEnv MM_COUNTRY_CODE COUNTRY_DB/country/iso_code
</IfModule>
Aggiungi il controllo degli accessi in base al Paese
Ora che il modulo è configurato, puoi utilizzarlo per bloccare o consentire l’accesso in base al Paese del visitatore. Ad esempio, per bloccare l'accesso agli utenti in Cina (CN) e Russia (RU), utilizza questa configurazione nel file host virtuale Apache:
<Directory /var/www/html>
SetEnvIf MM_COUNTRY_CODE CN BlockCountry
SetEnvIf MM_COUNTRY_CODE RU BlockCountry
Require all granted
Require not env BlockCountry
</Directory>
Dopo aver aggiunto le nuove configurazioni, riavvia Apache per applicare le modifiche:
sudo systemctl restart apache2 # On Ubuntu/Debian
sudo systemctl restart httpd # On CentOS/RHEL
Per verificare che il modulo sia installato correttamente, puoi controllare se mod_maxminddb
è caricato in Apache:
apachectl -M | grep maxminddb
Se è caricato correttamente, dovresti vedere un output simile a:
maxminddb_module (shared)
Conclusione
Controllare l'accesso al tuo sito web è un aspetto essenziale della gestione della sicurezza e della funzionalità del tuo server web. Le funzionalità di controllo degli accessi di Apache ti consentono di consentire o negare l'accesso in base a indirizzi IP, nomi host o persino posizione geografica.
Che tu stia bloccando i bot, limitando le risorse interne o proteggendo il tuo sito web da utenti non autorizzati, Apache rende semplice ed efficace l'implementazione di questi controlli.