Hvordan Tillat Apache å koble til en ekstern database under SELinux

SELinux er et flott verktøy som skal brukes på alle offentlig Internett server, og på alle bedriftens server der du har behov for å sikre dataene.

SELinux sikrer tjenester før du forteller det at andre tjenester og tilkoblinger er tillatt. Sin restriktive av natur og må konfigureres til dine behov.

Det er ganske vanlig for bedrifter å bruke en egen server for å huse en database, eller kanskje felles databaser for kunder separat fra web vert maskiner.

Hvis dette høres ut som deg:
"Jeg har problemer med å få PHP / Apache på linux server til å jobbe med den eksterne Mysql database. Tilkobling fra PHP-skript til den eksterne databasen alltid mislykkes. Vi gjorde en liten php script som bare prøver å koble til den eksterne databasen. Når du kjører php script i ssh på webserveren det fungerer helt fint. Men når du kjører den under Apache vi får en tilkoblingsfeil, uansett hva vi gjør. "

Da vil vi ta opp hvordan du kan fikse dette :)

Bruksanvisning

1 Først må vi kontrollere at SELinux er aktivert.

Kode:
[Root @ www ~] # getenforce

Du burde se noe tilbake som ser ut som
håndheving

2 Hvis du ser et annet resultat, prøv:
Kode:
[Root @ www ~] # setenforce 1

Hvis du får en feilmelding, så du trenger ikke SELinux slått på. Du må gå til / etc / SELinux / config og redigere filen for å aktivere SELinux.

Når du slå dette på (eller slå den av for den saks skyld) må du starte linux server for chagnes skal tre i kraft når de er ferdig i løpet av kjernen lasting.

3 Når SELinux er aktivert, må du gjøre følgende

Sett SELinux å tillate eksterne tilkoblinger for HTTP

Kode:
setsebool -P httpd_can_network_connect = 1

4 Det er det! Din ferdig. Noen mennesker liker å starte på nytt for å tvinge en reload, men det er ikke nødvendig med mindre du vil.

Hint

  • Det er andre SELinux begrensninger som kan påvirke serveren i fremtiden. Du kan få den fullstendige listen med kommandoen 'getsebool -a'
  • Ikke alle distribusjoner eller "smaker" av linux bruker samme bygge. Noen nyere versjoner bruker ikke denne boolsk og har dette problemet satt i RBACs stedet.