Come consentire ad Apache di connettersi a un database remoto sotto SELinux

February 13

SELinux è un grande strumento che dovrebbe essere utilizzato su tutti i server di pubblico accesso, e su qualsiasi server aziendale in cui si ha la necessità di proteggere i dati.

SELinux protegge i servizi fino a quando gli si dice che altri servizi e connessioni è permesso. La sua restrittiva per natura e deve essere configurato per le vostre esigenze.

E 'abbastanza comune per le aziende di utilizzare un server separato per ospitare un database o database condivisi forse per i clienti separato dalle macchine web hosting.

Se questo suona come voi:
"Ho problemi a trovare il PHP / Apache sul server linux per lavorare con il database Mysql. Collegamento esterno da script PHP al database remoto fallisce sempre. Abbiamo fatto un piccolo script PHP che cerca semplicemente di connettersi al database remoto. Quando si esegue lo script php in ssh sul server web funziona bene. Ma quando si esegue sotto Apache si ottiene un errore di connessione, non importa quello che facciamo ".

Poi ci occuperemo come risolvere questo problema :)

istruzione

1 Per prima cosa dobbiamo verificare che SELinux sia abilitato.

Codice:
[Root @ www ~] # getenforce

Si dovrebbe vedere qualcosa che assomiglia
Applicazione

2 Se vedi un risultato diverso, provare:
Codice:
[Root @ www ~] # 1 setenforce

Se si verifica un errore, allora non avete SELinux acceso. Sarà necessario andare a / etc / selinux / config e modificare il file per abilitare SELinux.

Una volta che si accende questo (o disattivarlo per questo) si dovrà riavviare il server Linux per i chagnes abbiano effetto come sono fatto durante il kernel di carico.

3 Una volta che SELinux è abilitato, effettuare le seguenti operazioni

Impostare SELinux per consentire le connessioni remote per HTTP

Codice:
setsebool -P httpd_can_network_connect = 1

4 Questo è tutto! Il vostro tutto fatto. Ad alcune persone piace riavviare per forzare una ricarica, ma non è necessario se non si desidera.

Consigli e avvertenze

  • Ci sono altre restrizioni di SELinux che possono influenzare il server in futuro. È possibile ottenere l'elenco completo con il comando 'getsebool -a'
  • Non tutte le distribuzioni o "sapori" di Linux utilizzano la stessa corporatura. Alcune versioni più recenti non utilizzare questo booleano e hanno questo comportamento impostato in RBACs invece.