Server LAMP sicuro per l'uso in produzione


10

Qual è la procedura per proteggere un server Linux, Apache, MySQL, PHP (o persino Perl) per l'uso in produzione?

Oltre a impostare la password MySQL e la password di root per Linux quali altri passaggi (forse non così ovvi) dovrebbero essere presi?

Inoltre, quali passi posso fare, se avessi intenzione di essere paranoico in più, che potrebbe non essere normalmente necessario?

Questo è per un uso singolo di base del sito ma deve essere sicuro.


Apache Hardening su un sito gemello.
Marcin

Risposte:


13

Queste raccomandazioni sono fuori dalla mia testa e non intendono essere esaustive.

Dai un'occhiata alla Bastiglia, è una serie di script che implementa le migliori pratiche in Linux.

Non inviare dati di autenticazione tramite protocolli in chiaro. Ad esempio, disabilitare FTP. Se invii dati di autenticazione tramite Apache, utilizza SSL.

Disabilita e rimuovi qualsiasi software non necessario inclusa l'interfaccia della GUI.

Controlla tutti i file con il bit SUID impostato e rimuovi. (Ciò limiterà notevolmente le capacità non root. Comprendi le implicazioni per ogni singolo cambiamento.)

Controlla le directory scrivibili pubbliche e rimuovi il bit scrivibile. (Lascia solo / tmp.)

Evita di eseguire qualsiasi demone come root.

Ricerca tutti i software multiutente che ascoltano in dettaglio i socket per le migliori pratiche di sicurezza.

Evitare di aggiungere utenti al sistema è uno dei migliori approcci. I sistemi multiutente richiedono maggiore attenzione ai dettagli.

Applicare gli standard delle password. Ad esempio: minimo 10 caratteri, caratteri non alfanumerici, utilizzando lettere e numeri. Questo per rendere più difficile la forzatura bruta in caso di compromissione del file di password. Applicare questo tramite il sistema.

Blocca gli utenti dopo 5 tentativi di autenticazione falliti con un blocco di almeno 10 minuti. Mantenere una cronologia delle password in modo che gli utenti non possano utilizzare le 5 password passate.

Se si dispone di un ambiente più ampio, l'utilizzo della segregazione di rete con più sottoreti per isolare il rischio è un requisito assoluto. Se un ambiente più piccolo, si consiglia di eseguire un firewall sul sistema locale per limitare l'esposizione. Ad esempio, consentendo solo SSH al tuo IP. tcpwrappers può essere utilizzato anche per un livello aggiuntivo. (/etc/hosts.allow, /etc/hosts.deny)

E, naturalmente, mantenere aggiornato tutto il software. Soprattutto i demoni rivolti al pubblico.

Con SSH:

  • Disabilita protocollo SSH 1
  • Consenti solo l'autenticazione root without-password(solo keypair)

Con Apache:

  • Disabilita tutti i moduli che non sono necessari
  • Disabilita .htaccess e directory pubbliche
  • Disabilita FollowSymlink e tutte le opzioni non necessarie
  • Non installare PHP se non ti serve.

Con MySQL:

  • Disabilita gli utenti predefiniti.
  • Non utilizzare host con caratteri jolly.
  • Assicurati di impostare un host unico per ogni utente.
  • Non ascoltare su tcp a meno che non sia necessario. (Insolitamente inevitabile.)
  • Limitare il più possibile i privilegi dell'utente dell'applicazione. (SELECT, INSERT, UPDATE, DELETE ideali per la scrittura e SELECT per la lettura)

Consiglierei di ricercare la messa a punto di php.ini per la sicurezza in particolare. È un software più rischioso per impostazione predefinita.

Bastille



2

Ecco un buon articolo che puoi utilizzare come base per la configurazione e modificare di conseguenza in base alla tua dichiarazione: http://it.toolbox.com/blogs/rayheffer/how-to-build-a-secure-lamp-web- server con-centos-5-36786


Ma fondamentalmente, non caricare i moduli che non ti servono esplicitamente, nascondi tutti i numeri di versione e le pagine di debug / informazioni, crea un utente mysql per ogni applicazione con password complesse, fai sempre lavorare le persone sul tuo server usando un account utente normale e falli sudo se hanno bisogno di permessi di root, usa un firewall come iptables e apri solo le porte in base a ciò di cui hai assolutamente bisogno per entrare nella tua scatola ... Che più le ultime patch ti offriranno già una configurazione abbastanza sicura.
Alexandre Nizoux,

Questo articolo non è buono Disabilitare selinux, niente di indurire mysql, disabilitare moduli apache non necessari ...
sumar

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.