Domanda

Mi piacerebbe configurare un Linux box economico come server web per ospitare una varietà di tecnologie web (mi vengono in mente PHP e Java EE, ma mi piacerebbe sperimentare anche con Ruby o Python in futuro).

Sono abbastanza esperto nella configurazione di Tomcat per l'esecuzione su Linux per servire applicazioni Java EE, ma mi piacerebbe poter aprire questo server, anche solo per poter creare alcuni strumenti che posso utilizzare mentre lavoro l'ufficio.Tutta l'esperienza che ho avuto con la configurazione di siti Java EE è stata tutta per applicazioni intranet in cui ci è stato detto di non concentrarci sulla protezione delle pagine per gli utenti esterni.

Qual è il tuo consiglio su come configurare un server Web Linux personale in un modo sufficientemente sicuro da aprirlo al traffico esterno?

È stato utile?

Soluzione

Questo articolo presenta alcuni dei modi migliori per bloccare le cose:

http://www.petefretag.com/item/505.cfm

Alcuni punti salienti:

  • Assicurati che nessuno possa sfogliare le directory
  • Assicurati che solo root abbia i privilegi di scrittura su tutto e che solo root abbia i privilegi di lettura su determinati file di configurazione
  • Esegui mod_security

L’articolo prende anche alcune indicazioni da questo libro:

Sicurezza Apache (O'Reilly Press)

Per quanto riguarda le distribuzioni, ho utilizzato Debain e Ubuntu, ma dipende solo da quanto vuoi fare.Ho eseguito Debian senza X e l'ho inserito ogni volta che avevo bisogno di qualcosa.Questo è un modo semplice per mantenere basse le spese generali.Oppure Ubuntu ha alcune belle funzionalità della GUI che semplificano il controllo di Apache/MySQL/PHP.

Altri suggerimenti

È importante seguire le migliori pratiche di sicurezza ove possibile, ma non vuoi renderti le cose eccessivamente difficili o perdere il sonno preoccupandoti di stare al passo con gli ultimi exploit.Nella mia esperienza, ci sono due cose fondamentali che possono aiutarti a mantenere il tuo server personale abbastanza sicuro da vomitare su Internet pur mantenendo la tua sanità mentale:

1) Sicurezza attraverso l'oscurità

Inutile dire che fare affidamento su questo nel "mondo reale" è una cattiva idea e non è divertente.Ma questo perché nel mondo reale i cattivi sanno cosa c'è e che c'è del bottino da ottenere.

Su un server personale, la maggior parte degli "attacchi" che subirai saranno semplicemente controlli automatici da parte di macchine che sono già state compromesse, alla ricerca di installazioni predefinite di prodotti noti per essere vulnerabili.Se il tuo server non offre nulla di allettante sulle porte predefinite o nelle posizioni predefinite, l'aggressore automatizzato passerà ad altro.Pertanto, se intendi eseguire un server ssh, inseriscilo su una porta non standard (>1024) ed è probabile che non verrà mai trovato.Se riesci a farla franca con questa tecnica per il tuo server web, allora bene, sposta anche quella su una porta oscura.

2) Gestione dei pacchetti

Non compilare e installare Apache o sshd dal sorgente da solo a meno che non sia assolutamente necessario.Se lo fai, ti assumi la responsabilità di mantenerti aggiornato con le ultime patch di sicurezza.Lascia che i simpatici manutentori dei pacchetti delle distribuzioni Linux come Debian o Ubuntu facciano il lavoro per te.Installalo dai pacchetti precompilati della distribuzione e rimanere aggiornato diventa una questione di rilascio occasionale apt-get update && apt-get -u dist-upgrade comando o utilizzando qualsiasi strumento GUI fornito da Ubuntu.

Una cosa che dovresti considerare è quali porti sono aperti al mondo.Personalmente apro solo la porta 22 per SSH e la porta 123 per ntpd.Ma se apri la porta 80 (http) o ftp assicurati di imparare almeno a sapere cosa stai servendo al mondo e chi può farci cosa.Non so molto di FTP, ma ci sono milioni di fantastici tutorial su Apache solo con una ricerca su Google.

Bit-Tech.Net ha pubblicato un paio di articoli su come configurare un server domestico utilizzando Linux.Ecco i link:

Articolo 1
Articolo 2

Spero che siano di qualche aiuto.

@svrist ha menzionato EC2.EC2 fornisce un'API per l'apertura e la chiusura delle porte in remoto.In questo modo puoi mantenere la tua scatola in funzione.Se devi fornire una demo da un bar o dall'ufficio di un cliente, puoi prendere il tuo IP e aggiungerlo all'ACL.

È sicuro e protetto se mantieni la voce bassa al riguardo (ad esempio, raramente qualcuno verrà a cercare il tuo server di casa se stai semplicemente ospitando un glorificato webroot su una connessione domestica) e il tuo ingegno riguardo alla tua configurazione (ad esempio, evita di usare root per tutto, assicurati di mantenere aggiornato il tuo software).

In tale nota, anche se questo thread potrebbe potenzialmente ridursi a un semplice incendio, il mio suggerimento per il tuo server personale è di attenersi a qualsiasi cosa Ubuntu (prendi Ubuntu Server qui);secondo la mia esperienza, il modo più rapido per ottenere risposte è quello di porre domande sui forum (non sono però sicuro di cosa dire sull'adozione).

La sicurezza del mio server di casa, tra l'altro, beneficia (penso, o mi piace pensare) di non avere un IP statico (funziona su DynDNS).

Buona fortuna!

/mp

Fai attenzione a non aprire liberamente la porta SSH.Se lo fai, assicurati di disabilitare gli accessi root (puoi sempre su O sudo una volta entrato) e prendere in considerazione metodi di autenticazione più aggressivi entro limiti ragionevoli.Un fine settimana ho visto un enorme attacco del dizionario nei registri del mio server che inseguiva il mio server SSH da un server IP domestico DynDNS.

Detto questo, è davvero fantastico poter raggiungere la propria casa dal lavoro o da lontano...e aggiungendo il fatto che puoi utilizzare SFTP sulla stessa porta, non potrei immaginare la vita senza di essa.=)

Potresti considerare un Istanza EC2 da Amazon.In questo modo puoi facilmente testare "roba" senza interferire con la produzione.E paghi solo per lo spazio, il tempo e la larghezza di banda che utilizzi.

Se esegui un server Linux da casa, installa ossec su di esso per un bel IDS leggero che funziona davvero bene.

[MODIFICARE]

Come nota a margine, assicurati di non entrare in conflitto con la politica di utilizzo accettabile del tuo ISP E che consentono connessioni in entrata su porte standard.L'ISP per cui lavoravo aveva scritto nei suoi termini che potevi essere disconnesso per aver eseguito server sulla porta 80/25 a meno che non avessi un account di classe business.Anche se non abbiamo bloccato attivamente quelle porte (non ci importava a meno che non causassero un problema), alcuni ISP non consentono alcun traffico sulla porta 80 o 25, quindi dovrai utilizzare porte alternative.

Se hai intenzione di farlo, spendi un po' di soldi e acquista almeno un router/firewall dedicato con una porta DMZ separata.Ti consigliamo di proteggere la tua rete interna dal tuo server in modo che quando (non se!) il tuo server web sia compromesso, anche la tua rete interna non sia immediatamente vulnerabile.

Ci sono molti modi per farlo che funzioneranno perfettamente.Di solito userei semplicemente un file .htaccess.Veloce da configurare e proteggere Abbastanza .Probabilmente non è l'opzione migliore ma per me funziona.Non inserirei i numeri della mia carta di credito, ma a parte questo non mi interessa davvero.

Wow, stai aprendo un vaso di fiori non appena inizi ad aprire qualcosa al traffico esterno.Tieni presente che quello che consideri un server sperimentale, quasi come un agnello sacrificale, è anche una facile preda per le persone che cercano di fare cose cattive con la tua rete e le tue risorse.

L'intero approccio a un server disponibile esternamente dovrebbe essere molto conservativo e approfondito.Inizia con cose semplici come le policy del firewall, include il sistema operativo sottostante (mantenendolo aggiornato con patch, configurandolo per la sicurezza, ecc.) e coinvolge ogni livello di ogni stack che utilizzerai.Non esiste una risposta o una ricetta semplice, temo.

Se vuoi sperimentare, faresti molto meglio a mantenere il server privato e utilizzare una VPN se hai bisogno di lavorarci da remoto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top