SElinux: consente a httpd di connettersi a una port specifica

Il mio sistema sta eseguendo CentOS 6.4 con apache2.2.15. SElinux sta imponendo e sto cercando di connettersi ad un'istanza locale di redis tramite la mia applicazione python / wsgi. Ottengo l'errore 13, il permesso viene negato. Potrei risolvere questo problema con il command:

setsebool -P httpd_can_network_connect

  • Come fare il lavoro NTP nonostante un elevato offset?
  • Può Apache .htaccess convertire la codifica in percentuale in URI codificati da Win-1252 a UTF-8?
  • nginx proxy_cache: limita le richieste parallele a un backend
  • errore a2ensite "Sito non esiste" durante la creazione di apache2 virtuale su ubuntu
  • Eseguire due server http, ma legarsi a diverse interfacce?
  • Magento Errore 404 dopo aver passato da Apache a nginX
  • Tuttavia, non voglio esattamente che httpd sia in grado di connettersi a tutte le porte tcp. Come posso specificare quali sono le connessioni / reti che httpd è connessa? Se potrei creare un module per consentire a httpd di connettersi alla port 6379 (redis) oa qualsiasi tcp su 127.0.0.1, sarebbe preferibile. Non so perché la mia paranoia è così forte su questo, ma hey …

    Qualcuno sa?

  • apache2 non avviato all'avvio. Anche se impostato in runlevel
  • Apache non si riavvia dopo aver inserito mod_wsgi
  • Apache con SPDY triggersto mostra HTTP / 1.1 e non 2.0
  • Qual è il modo migliore per gestire le autorizzazioni per i dati utente di Apache 2 in / var / www?
  • Come posso restituire uno stato di 503 in apache senza invocare script esterni
  • Porta della mappa Apache all'URL
  • 3 Solutions collect form web for “SElinux: consente a httpd di connettersi a una port specifica”

    Per impostazione predefinita, la policy SELinux consentirà solo l'accesso dei servizi alle porte riconosciute associate a tali servizi:

     # semanage port -l | egrep '(^http_port_t|6379)' http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000 # curl http://localhost/redis.php Cannot connect to redis server. 

    – aggiungere la port Redis (6379) alla politica di SELinux

     # semanage port -a -t http_port_t -p tcp 6379 # semanage port -l | egrep '(^http_port_t|6379)' http_port_t tcp 6379, 80, 81, 443, 488, 8008, 8009, 8443, 9000 # curl http://localhost/redis.php Connected successfully. 

    È inoltre ansible installare RPM setroubleshoot-server e eseguire: sealert -a /var/log/audit/audit.log – ti darà una bella relazione con suggerimenti utili (incluso il command sopra).

    Script PHP per verificare la connessione:

     # cat redis.php <?php $redis=new Redis(); $connected= $redis->connect('127.0.0.1', 6379); if(!$connected) { die( "Cannot connect to redis server.\n" ); } echo "Connected successfully.\n"; ?> 

    Potrebbe essere necessario utilizzare

     semanage port -m -t http_port_t -p tcp 6379 

    Se il semantramento è mancante, aggiungere il pacchetto policycoreutils-python

     yum install policycoreutils-python 

    Puoi mettere temporaneamente il selinux in modalità permissiva e lasciare httpd collegarsi a redis, quindi generare e creare un module di criterio personalizzato utilizzando audit2allow

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.