Sådan tillader Apache at oprette forbindelse til en ekstern database under SELinux

Indlæg af Hanne Mølgaard Plasc

 

1.

Først skal vi bekræfte, at SELinux er aktiveret.

Kode:
[root @ www ~] # getenforce

Du skal se noget tilbage, der ligner
Enforcing

2.

Hvis du ser et andet resultat, kan du prøve:
Kode:
[root @ www ~] # setenforce 1

Hvis du får en fejl, har du ikke SELinux tændt. Du skal gå til / etc / selinux / config og redigere filen for at aktivere SELinux.

Når du tænder for dette (eller slukker det for den sags skyld), skal du genstarte Linux-serveren for at chagnerne skal træde i kraft, når de gøres under kerneladningen.

3. Når SELinux er aktiveret, skal du gøre følgende

Indstil SELinux til Tillad fjernforbindelser til HTTP

Kode:
setsebool -P httpd\_can\_network\_connect = 1

4.

Det er det! Din alt er gjort. Nogle mennesker kan lide at genstarte for at tvinge en genindlæsning, men det er ikke nødvendigt, medmindre du vil.

Tips og advarsler

  • Der er andre selinux begrænsninger, som kan påvirker serveren i fremtiden. Du kan få den fulde liste med kommandoen 'getebool -a'
  • Ikke alle distributioner eller 'smag' af linux bruger den samme build. Nogle nyere versioner bruger ikke denne booleanske og har denne opførsel sat i RBAC'er i stedet.
  • SELinux er et godt værktøj, der skal bruges på alle offentligt tilgængelige web-servere og på enhver virksomhedsserver, hvor du har brug for at sikre dataene.

    SELinux sikrer tjenester, indtil du fortæller det, at andre tjenester og forbindelser er tilladt. Det er ret almindeligt, at virksomhederne bruger en separat server til at huse en database eller måske delte databaser til kunder adskilt fra webhostede maskiner.

    br />
    Hvis dette lyder som dig:
    'Jeg har problemer med at få PHP / Apache på linux-serveren til at arbejde med den eksterne Mysql-database. Forbindelse fra PHP-scripts til den eksterne database mislykkes altid. Vi lavede et lille php script, der simpelthen forsøger at oprette forbindelse til den eksterne database. Når du kører php script i ssh på webserveren fungerer det fint. Men når vi kører det under Apache, får vi en forbindelsesfejl, uanset hvad vi gør. '

    Så skal vi løse, hvordan du løser dette :)