Quanto è probabile che io sia stato violato eseguendo un server locale per lo sviluppo?

4

Negli ultimi due giorni ho imparato Apache e server in generale - ho installato Apache, PHP e mySQL sul mio sistema Ubuntu e ho avuto accesso al mio sito web con 'localhost'. Ho sempre pensato che quando si esegue qualcosa come localhost, nulla lascia il proprio computer e non è possibile accedere al server dai computer della rete WiFi, per non parlare degli altri computer connessi a Internet. Tuttavia, mi sono spaventato quando in un video tutorial ho visto che hanno detto di disattivare la connessione Internet non appena installate Apache. È giustificato? Non ci sono informazioni sensibili nel database o in / var / www, sono tutti dati fittizi solo per scopi di apprendimento, ma sono preoccupato che qualcuno possa hackerare il mio intero sistema.

Tenendo presente che ho fatto questo negli ultimi giorni, dovrei considerarmi hackerato?

E per essere chiari, quando eseguo il mio server localmente e posso accedervi tramite localhost, è disponibile per le persone su Internet?

    
posta wenn 03.01.2017 - 19:09
fonte

3 risposte

9

have always thought that when you run something as localhost, nothing ever leaves your computer and your server can't be accessed by computers in your WiFi network

L'accesso ai servizi tramite localhost non significa che sia in esecuzione come localhost:

Quando si avvia un demone, come Apache e MySQL, può essere eseguito su localhost o su tutte le interfacce. Se il tuo indirizzo IP è, per esempio, 10.0.0.5; e Apache gira su tutte le interfacce; puoi accedere alle tue pagine sia su http (s): //10.0.0.5 che su 127. *. Ora, anche eseguendolo su tutte le interfacce, se sei protetto da un dispositivo NAT, come i tuoi punti di accesso predefiniti, è improbabile che qualcuno entri nella tua rete. Ovviamente, tutti gli utenti sulla stessa rete (WLAN, ...) potrebbero accedere al demone.

Il modo migliore per verificare ciò è eseguire un netstat -an sulla tua macchina, l'output dovrebbe essere qualcosa del tipo:

$ netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      -
tcp6       0      0 :::80                   :::*                    LISTEN      -

Qui può vedere che SSH (22) gira su tutte le mie interfacce IPv4, le esecuzioni 6379 (redis) sono accessibili solo su localhost e su esecuzioni http (80) su tutte le interfacce IPv4 e IPv6 (::: 80).

Eseguirli localmente dipende solo dal deamon stesso, apache permette una Listen 127.0.0.1:80 nel file httpd.conf, MySQL ti permette di mettere un bind-address = 127.0.0.1 nel file my.cnf (sotto la direttiva [mysqld]) e presto. Un'ulteriore misura che puoi fare è bloccare tutte le porte usando IPTables sulla tua interfaccia (wlan0, eth0, ...) e consentire solo i servizi che intendi pubblicare.

Non è sicuro considerare "te stesso hackerato". Era, se esposto, di sicuro soggetto ad esso. Dipende se hai credenziali scadenti, versioni vulnerabili, ...

    
risposta data 03.01.2017 - 19:26
fonte
2

Molte applicazioni comuni non sono sicure per impostazione predefinita e se stai scrivendo il tuo primo PHP, è estremamente probabile che abbia delle vulnerabilità. Qualcuna di queste cose che possono influenzare il tuo computer non è solo un disordine nel tuo database (di cui non ti interessa)? Forse, a seconda di cosa sono.

Il modo in cui accedi al server web non influisce su chi può accedervi; ciò che conta è come è configurato il server. In genere, Apache è configurato per impostazione predefinita su ascolta per tutte le richieste sulla porta 80. Per modificare questo è solo accessibile tramite localhost, cambia questo in Listen 127.0.0.1:80 .

Dovresti anche esaminare le regole del firewall per il tuo sistema, poiché ciò fornirà un ulteriore livello di protezione.

    
risposta data 03.01.2017 - 19:28
fonte
1

Oltre alle risposte già fornite, vorrei anche sottolineare due ulteriori cose:

  • Se si esegue qualcosa come Windows 10, si avrà comunque protezione automatica in entrata e nessuno sarà in grado di connettersi al servizio Web sul PC, a meno che non si risponda a quel dialogo sempre utile che ogni tanto si apre chiedendo se si desidera consentire un qualche tipo di accesso alla rete su reti pubbliche o private. Quando si utilizza una rete Wi-Fi che non è la propria, assicurarsi sempre di impostarla come rete pubblica e non consentire ad Apache di parlare sulle reti pubbliche.

    Per Linux, avrai qualcosa chiamato IPTABLES. Come generalmente accade con Linux, la configurazione di questo può essere un po 'più complicata, ma la maggior parte delle distribuzioni ha un front-end più amichevole come la riga di comando UFW. Per Linux, è necessario verificare che, di nuovo, non sia consentita alcuna connessione in entrata. L'installazione di Apache su Linux è quasi certa di riconfigurare IPTABLES per consentire almeno il traffico in entrata sulle porte 80 e 443.

    Non sono sicuro del Mac, ho paura.

  • Quando sei su un Wi-Fi pubblico, assicurati di non avere porte aperte se il Wi-Fi è "aperto", ad es. non ha la crittografia attivata.

risposta data 03.01.2017 - 22:08
fonte

Leggi altre domande sui tag