Files
clinica-veterinaria-formigi…/docs/apache-ip-lockdown.md

91 lines
1.8 KiB
Markdown

# Blocco directory listing su accesso via IP
Problema verificato:
```bash
curl -k https://129.152.31.221/
```
Risposta non desiderata:
```txt
200 OK
Index of /
```
L'accesso diretto all'IP non deve mostrare `/var/www` o l'elenco dei file.
## Correzione rapida
Sul server Linux:
```bash
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak.$(date +%Y%m%d-%H%M%S)
sudo sed -i 's/Options Indexes FollowSymLinks/Options -Indexes +FollowSymLinks/g' /etc/apache2/apache2.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
```
Verifica:
```bash
curl -k -I https://129.152.31.221/
```
Il risultato atteso non deve essere `200 OK` con directory listing. Un `403 Forbidden`
e accettabile per l'accesso diretto via IP.
## Correzione consigliata
Creare un virtual host di default che blocchi ogni richiesta non associata ai domini
configurati.
File:
```txt
/etc/apache2/sites-available/000-ip-block.conf
```
Contenuto HTTP:
```apache
<VirtualHost *:80>
ServerName 129.152.31.221
Redirect 301 / https://www.clinicaveterinariaformiginese.it/
</VirtualHost>
```
Per HTTPS, se sul server e gia attivo un certificato valido per il dominio principale,
si puo creare un virtual host catch-all usando gli stessi certificati e restituire 403:
```apache
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName 129.152.31.221
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.clinicaveterinariaformiginese.it/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.clinicaveterinariaformiginese.it/privkey.pem
<Location />
Require all denied
</Location>
</VirtualHost>
</IfModule>
```
Attivazione:
```bash
sudo a2ensite 000-ip-block.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
```
Verifiche:
```bash
curl -k -I https://129.152.31.221/
curl -I https://www.clinicaveterinariaformiginese.it/
```