Dopo aver avviato il server, non sarà superfluo occuparsi della sua sicurezza. Il servizio di rete comporta un rischio maggiore perché altri dispositivi e persone possono connettersi ad esso, inclusi gli aggressori. In determinate condizioni, non solo il server web può essere compromesso, ma l’intero computer su cui è in esecuzione questo server e persino altri dispositivi sulla rete locale possono essere compromessi. Poiché Apache funziona con privilegi elevati in Windows e le autorizzazioni dei file non sono configurate correttamente, un server web con uno script vulnerabile potrebbe consentire a un aggressore di accedere a qualsiasi file sul computer.
Negare l’accesso dall’esterno a MariaDB/MySQL
Un server web standard, compreso quello che abbiamo appena installato, ha due servizi di rete:
- il server web stesso, che ascolta sulla porta 80 (quando HTTPS è abilitato, anche la porta 443 è in ascolto)
- servizio di rete del sistema di gestione del database, ovvero MariaDB o MySQL, che ascolta sulla porta 3306
Il DBMS è un servizio di rete, è comodo perché puoi connetterti a MariaDB/MySQL da un altro computer ed eseguire varie azioni sui database. Per i processi locali, questo è anche normale: si connettono al servizio di rete tramite l’interfaccia di rete virtuale Loopback. Per farla breve, questo è il modo per connettersi a un servizio di rete che gira sullo stesso computer. Cioè, sembra che facciamo una richiesta alla rete e il servizio di rete vede questi pacchetti come se provenissero dalla rete. Cioè, il client del servizio di rete e il servizio di rete stesso funzionano come dovrebbero, ma il traffico in realtà non va da nessuna parte dal computer.
Quindi, per MariaDB abbiamo scritto nel file di configurazione:
| 1 | bind-address = 127.0.0.1 |
Ciò significa che ascolta solo sull’interfaccia di rete con indirizzo IP 127.0.0.1, che è correlato a Loopback. Ciò, a sua volta, significa che nessuno dall’esterno (al di fuori del computer su cui è in esecuzione il server web) sarà in grado di connettersi a MariaDB/MySQL. Allo stesso tempo, siti e altre applicazioni funzioneranno con i database come se nulla fosse accaduto: utilizzano solo tali connessioni all’indirizzo 127.0.0.1.
Ciò significa che MariaDB è già protetto.
Negare l’accesso dall’esterno ad Apache
Per quanto riguarda il server web, l’impostazione dipende dalle tue esigenze: a cosa serve esattamente il server?
Se utilizzi il server solo per scrivere script, testare siti e non hai bisogno di poterti connettere ad esso dall’esterno, allora nel file C:\server\apache\conf\httpd.conf , trova la direttiva Listen , il suo valore predefinito è:
| 1 | Listen 80 |
E sostituiscilo con
| 1 | Listen 127.0.0.1:80 |
Riavviare il server affinché le modifiche abbiano effetto:
| 1 | c:\server\apache\bin\httpd.exe -k restart |
Dopodiché, nessun dispositivo nella rete globale o locale sarà in grado di connettersi al tuo server web. Ma come prima, puoi facilmente aprire il suo contenuto in un browser web utilizzando l’indirizzo http://localhost/
Se si desidera rendere il server Apache disponibile a tutti sulla rete locale, ma non sulla rete globale, ci sono due opzioni.
- Il primo :
Assegna un indirizzo statico al computer con il server, quindi impostalo con la direttiva Listen local_IP:80 . Otterrai esattamente l’effetto desiderato: il server web risponderà alle richieste dalla rete locale e ignorerà le richieste da Internet.
- Inoltre, il secondo modo è più semplice del primo:
Nella cartella C:\server\apache\htdocs\ (questa è la nostra cartella radice per i documenti web), crea un file .htaccess e digita:
| 1 | Require ip 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 127.0.0.0/8 ::1/128 |
Questa riga ha consentito l’accesso al server ai dispositivi con IP da tutti gli intervalli locali, nonché indirizzi loopback, per tutti gli altri; quando si tenta di connettersi al server, verrà visualizzato il seguente messaggio:
| 1 2 | ForbiddenYou don't have permission to access / on this server. |

Puoi modificare la riga soprastante in base alle tue esigenze, ad esempio puoi rimuovere gli intervalli 10.0.0.0/8 e 172.16.0.0/12 se non sono utilizzati sulla tua rete locale. Gli indirizzi IP da 10.0.0.0/8 possono essere utilizzati dal provider Internet per NAT e 172.16.0.0/12 può essere utilizzato per reti locali a livello di città (alcuni provider li hanno). Pertanto, se lasci gli intervalli 10.0.0.0/8 e 172.16.0.0/12, in determinate circostanze (il cavo del provider Internet è collegato direttamente al computer senza un router e il provider Internet utilizza gli intervalli 10.0.0.0/8 e 172.16.0.0/12) gli utenti di queste reti locali saranno in grado di connettersi al tuo server con queste impostazioni.
Quindi prova anche
| 1 | Require ip 192.168.0.0/16 127.0.0.0/8 ::1/128 |
Se tutto funziona e non ci sono problemi, allora fermati alla seconda versione.
Impostazione di una password su MariaDB / MySQL
Di default, l’ utente root ha una password vuota. Dal momento che abbiamo disabilitato l’accesso al server MariaDB/MySQL dall’esterno, questo non è così pericoloso. Tuttavia, rimane la minaccia che l’attaccante trovi una vulnerabilità nell’applicazione web e riesca a connettersi tramite essa. Pertanto, se desideri rafforzare il tuo server web, puoi impostare una password per l’ utente root in MariaDB/MySQL.
Per fare ciò, apri la riga di comando e digita:
| 1 2 | cdC:\server\mariadb\bin\.\mysql -u root |
All’interno di MySQL:
| 1 2 3 | FLUSH PRIVILEGES;ALTERUSER'root'@'localhost'IDENTIFIED BY'new_password';exit; |
Sostituisci new_password con la tua password effettiva.