Best practice per l'hardening del server Apache?

103

Quali sono alcune best practice, raccomandazioni, letture obbligatorie per la protezione di un server Apache?

    
posta Eric Warriner 12.11.2010 - 00:08
fonte

11 risposte

30

Utilizza la guida Center for Internet Security (CIS) per proteggere Apache (descrive in dettaglio come migliorare la sicurezza):

Modifica: collegamento aggiornato Benchmark CIS Apache HTTP Server 2.2.x

Se hai una licenza per Nessus , puoi eseguire un controllo automatico afferrando il loro modello di controllo:

    
risposta data 12.11.2010 - 00:43
fonte
12
  • Utilizza accessi basati su chiave SSH
  • Secure MySQL
  • Disabilita phpMyAdmin, webmin, ecc.
  • Chiudi tutte le porte / processi che non sono necessari
  • Utilizza un controllo integrità file
  • Usa mod_security
  • Imposta le autorizzazioni / i gruppi appropriati

Questa è una buona guida:
link

Guida di base per l'indurimento: link

Se stai utilizzando PHP: link

Trova 404 (o altri codici di stato) nel registro di apache
awk '$9 == 404 {print $7}' access_log | uniq -c | sort -rn | head

    
risposta data 17.07.2011 - 18:52
fonte
7

La risposta originariamente molto votata a questa domanda accettata è stata cancellata perché era un plagio diretto di 20 modi per proteggere il tuo Configurazione di Apache . Quella pagina è una risorsa fantastica.

@RoryMcCune ha anche postato questo link come risposta a questa risposta: C'è un progetto OWASP per sviluppare un Set di regole core ModSecurity qui che potrebbe essere utile.

    
risposta data 11.01.2012 - 23:46
fonte
6

Ci sono molti buoni consigli qui, quindi non ripeterò le cose già menzionate. Ma quello che dirò è:

Non dimenticare di sostituire le pagine di errore predefinite con elementi che non forniscono la versione del tuo server Web o la revisione del kernel. Tendo a sostituire ogni html predefinito con 1 liner che sono qualcosa come "Errore 400." Dà pochissimo al sistema. Questo principio si applica a tutti i server Web in grado di visualizzare pagine di errore personalizzate, che hanno quasi tutte l'impostazione predefinita di fornire troppe informazioni del necessario. Si potrebbe pensare che ServerSignature lo nasconda, ma in molti casi no.

Inoltre, non dimenticare di cancellare tutti i contenuti HTML predefiniti (specifici della lingua ecc.) in modo che le impronte digitali siano molto più difficili.

Per quanto riguarda le buone letture, c'era un white paper di Apcon 2008 che vale la pena leggere.

Mod_Security è citato alcune volte, questo è più adatto per le applicazioni web, quindi se stai servendo solo contenuti statici, non ti aiuterà molto , anche se ci sono alcuni attacchi che aiutano a difendersi durante la gestione delle richieste che potrebbe influenzare un server Web statico .

L'altra cosa che vorrei menzionare è una buona gestione dei log, se non si stanno facendo i controlli e tenendo d'occhio il sistema si corre il rischio che un utente malintenzionato lo stia martellando senza averne consapevolezza.

    
risposta data 17.07.2011 - 21:17
fonte
6

Si applicano tutti i principi generali di sicurezza: esegui solo i moduli necessari, disattiva le funzionalità che non ti servono, riordina le tue autorizzazioni / proprietà (la maggior parte dei contenuti sono di sola lettura, quindi perché i file richiedono qualcosa di più di 400 permanenti ?).

Le cose che sono particolari per Apache, come i lavori CGI, o diversi vhosts che pubblicano lo stesso contenuto due volte con due diversi meccanismi di sicurezza su di esse sono molto più difficili da individuare; non esattamente un controllo automatico, in realtà devi conoscere Apache, il sistema operativo sottostante e le applicazioni in esecuzione in Apache.

Per completezza, ecco una Lista di controllo della sicurezza di Apache 2.2 di DISA. AGGIORNAMENTO: ecco un link alla loro intera raccolta di documenti di rafforzamento del server web.

    
risposta data 22.11.2010 - 20:15
fonte
4

Potrebbe valere la pena dare un'occhiata a mod_security ad Apache.

Recentemente ho dato il via ad alcuni dei miei server, non solo ha apportato alcune modifiche alla configurazione di Apache come cambiare il numero di versione ecc, ma agisce anche da firewall di applicazioni Web per proteggere da una vasta gamma di attacchi come l'iniezione SQL ecc.

    
risposta data 12.11.2010 - 00:22
fonte
2

How Do I Secure Apache Web Server

Quale risposta ti aspetteresti se chiedessi "Come faccio a volare un jumb-jet" o "Come faccio a fare un intervento chirurgico al cervello" - lo stesso vale per rendere sicuro un server web - devi fare migliaia di ore di allenamento, pratica e ricerca. Ma dal momento che tutti devono iniziare da qualche parte ...

Ci sono molte liste di controllo di base su Internet per sapere come rafforzare un server - ma come per il mio commento altrove variano notevolmente in termini di qualità.

Consiglierei the sans one come buona fonte.

Una volta che hai seguito la checklist, devi stabilire i mezzi con cui puoi

  • verifica l'integrità del tuo server (hai sicuramente bisogno di un ID basato su host come tripwire insieme a un rilevatore rootkit)
  • fai attenzione e applica le patch
  • ripristina il tuo sistema in uno stato buono noto

Non pianificare il modo in cui gestisci un incidente di sicurezza se succede. Pianifica cosa fare quando succede.

Dopo aver configurato e configurato il sistema, sostituisci il disco rigido e scopri quanto tempo impiega a riavviare il servizio senza utilizzare il disco originale.

    
risposta data 13.01.2012 - 15:03
fonte
1

questo non è solo legato all'apache (e conta anche per nginx + php-fpm), ma spesso dimenticato: php-eastereggs, che potrebbe essere cambiato da php.ini

  expose_php = off

non è così terribile come lasciare un phpinfo.php dietro, ma di solito è un suggerimento per un'amministrazione di sistema molto pigra.

vedi easter-eggs

    
risposta data 08.07.2013 - 09:19
fonte
0

Usa l'ultima versione di apache, applica patch al tuo sistema operativo e anche a terze parti come openssl o altro.

Blocca porte indesiderate.

Questo ti proteggerà da alcune vulnerabilità note, ma sarai sempre suscettibile a uno 0 giorni, naturalmente.

    
risposta data 11.01.2012 - 20:50
fonte
0

Buon thread girato. Molte persone dicono la verità.

Hanno dimenticato uno, OpenBSD modo:

In OpenBSD, the Apache httpd(8) server has been chroot(2)ed by default

link

Puoi ripeterlo facilmente con apache2 o nginx su qualsiasi altro sistema operativo simile a Unix.

    
risposta data 12.08.2013 - 09:42
fonte
0

Ecco 6 passaggi chiave:

  1. Proteggi il tuo codice applicazione
  2. disabilita tutti i moduli non usati. Prova a disabilitare tutto, quindi, uno per uno, aggiungi i moduli.
  3. rimuovi tutti gli script e i file di backup nella cartella web.
  4. disabilita l'elenco delle directory
  5. usa modsecurity per proteggere la tua applicazione dagli attacchi a livello di applicazione.
  6. Utilizzare Fail2ban per attivare errori HTTP (403, 404).

Non fare affidamento sul firewall di rete, è inutile quando si parla di sicurezza Web.

    
risposta data 10.04.2015 - 15:54
fonte

Leggi altre domande sui tag