Centos Apache SELinux

Escrito el 2020-11-15 por Alberto Ferrer
Tiempo de lectura: 2 minuto(s)
Etiquetas: centos apache linux selinux

Guía rápida de como habilitar SELinux con Apache en Centos 7/8 utilizando directorio personal y otros características.

Esto es ciertamente muy básico pero útil y practico. Tener en cuenta que hay pasos los cuales me salte dado que cualquiera leyendo esto tiene una noción básica de lo que estoy escribiendo.

Luego de instalar Apache con dnf o yum pasamos a permitir Apache con el siguiente comando:

    sudo setsebool -P httpd_can_network_connect 1
    sudo setsebool -P httpd_enable_homedirs 1

Si quieren saber que otras opciones existen en el contexto de httpd pueden ejecutar esta variante:

    sudo getsebool -a | grep "httpd_can"

Luego procedemos a crear nuestro directorio:

    mkdir public_html
    chmod 0755 public_html

En el caso de que se requiera hacer operaciones de lectura/escritura debemos permitir nuestra carpeta con este otro comando:

    chcon -Rv --type=httpd_sys_rw_content_t /home/usuario/public_html

En el caso de que busquemos solo lectura (servir archivos y no nos funcione nuestro public_html):

    chcon -t httpd_sys_content_t /home/usuario/public_html

Creamos nuestro vhost:

    sudo vim /etc/httpd/sites-available/barrahome.org.conf
    <VirtualHost *:80>
        ServerName barrahome.org
        ServerAlias barrahome.org www.barrahome.org
        DocumentRoot /home/usuario/public_html
        ErrorLog /home/usuario/logs/error.log
        CustomLog /home/usuario/logs/custom.log combined
    </VirtualHost>
    sudo ln -s /etc/httpd/sites-available/barrahome.org.conf /etc/httpd/sites-enabled/barrahome.org.conf

Ahora permitiremos a Apache la escritura de logs en nuestro directorio personal:

    sudo semanage fcontext -a -t httpd_log_t "/home/usuario/logs(/.*)?"

Para finalizar aplicamos los cambios:

    sudo restorecon -R -v /home/usuario/public_html
    sudo restorecon -R -v /home/usuario/logs