Ricerca nel sito web

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 e Allow (deprecato nelle versioni successive): utilizzato in precedenza nelle versioni precedenti di Apache ma sostituito dalla direttiva Require.

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.

Articoli correlati: