Quali sono alcune best practice, raccomandazioni, letture obbligatorie per la protezione di un server Apache?
Quali sono alcune best practice, raccomandazioni, letture obbligatorie per la protezione di un server Apache?
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:
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
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.
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.
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.
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 come un firewall di applicazioni Web che aiuta a proteggere da un'ampia varietà di attacchi come l'iniezione SQL ecc.
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
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.
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
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.
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.
Ecco 6 passaggi chiave:
modsecurity
per proteggere la tua applicazione dagli attacchi a livello di applicazione. Non fare affidamento sul firewall di rete, è inutile quando si parla di sicurezza Web.
Leggi altre domande sui tag configuration apache webserver hardening