Last active
February 7, 2023 01:49
-
-
Save pmNiko/c23a71bc7824e0313806269593ef49e0 to your computer and use it in GitHub Desktop.
Centos 7 - Apache httpd - Preparación del entorno
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
----- Preparación del serve Centos 7 con Apache httpd ---------- | |
---------__________________________________________________________________--------- | |
___Premisas para la puesta en producción | |
- Un hosting funcional con una MV de Centos 7(x64) acceso root | |
- Un DNS válido para poder enlazar a la IP del server | |
- Conocimientos básicos del shell de Unix | |
*Nota: todo el proceso estará realizado como root, sin embargo puede generarse un usuario con | |
permisos root(grupo wheel) y realizar el ejemplo. Tenga en cuenta que deberá darle | |
permisos de ejecución a los enlaces, etc. | |
___Configuración básica del firewall | |
No es buena idea dar libre acceso a los puertos de nuestro server, por cuestiones de seguridad, | |
por lo tanto vamos a instalar y administrar el firewall de centos para lograr un acceso | |
controlado. | |
- Instalamos: yum install firewalld | |
- Inicializamos: systemctl start firewalld | |
- Listar firewall-cmd --list-services | |
firewall-cmd --list-all | |
- Agreguamos servicios: firewall-cmd --permanent --add-service=ssh | |
firewall-cmd --permanent --add-service=http | |
firewall-cmd --permanent --add-service=https | |
- Implentar los cambios: firewall-cmd --reload | |
- Lo habilitamos: systemctl enable firewalld | |
___Configuración del timezone | |
- Lista de zonas horarias: timedatectl list-timezones | |
- Adosamos la zona horaria: timedatectl set-timezone America/Argentina/Buenos_Aires | |
- Confirmación de la zona: timedatectl | |
___Adicionalmente configuraramos NTP | |
Esto mantendra sincronizada la hora con otros servidores para corregir | |
la hora automticamente, alinenadose con los servidores globales. | |
- Instalamos el modulo: yum install ntp | |
- Iniciamos: systemctl start ntpd | |
- Habilitamos el servicio: systemctl enable ntpd | |
___Instalación de Apache | |
- Actualización: yum update httpd | |
- Instalación: yum install httpd | |
- Iniciar el servicio: systemctl start httpd | |
- Estado del servicio: systemctl status httpd | |
En este momento deberiamos ser capaces de ver la pantalla de bienvenida de Apache | |
accediendo a la url http://<IP SERVER> o http://<DNS> o http://<CNAME><DNS> | |
Configuración básica | |
-------------------------- --------------------- ------------------------------------ | |
---------------- Trabajando con host vistuales en Apache ------------------ | |
La forma básica de trabajar con el server de Apache sería utilizando la carpeta por | |
defecto "html" o creando una con un nombre distinto "example_html" y redirigiendo el host. | |
El hecho es que también podemos usar los vistual host como un proxy server y tener | |
directorios parañlelos para cada uno de nuestro servicios. Pero para lograr el objectivo | |
debemos abrir las politicas de SELinux. SELinux le permite personalizar las politicas | |
por defecto ya que Apache debera contar con poder escribir en los archivos necesarios que | |
vallamos a definir para nuestros VHOST. | |
Se detallarán dos maneras de definir nuestras politicas para Apache. | |
1_ Ajustar políticas de Apache de forma universal: | |
Establecer la política de Apache de forma universal indicará a SELinux que trate de forma | |
idéntica todos los procesos de Apache usando el booleano httpd_unified. Si bien este enfoque | |
es más conveniente, no le brindará el mismo nivel de control que uno centrado en una política | |
de archivos o directorios. | |
Ejecute el siguiente comando para configurar una política universal de Apache: | |
$ setsebool -P httpd_unified 1 | |
El comando setsebool cambia los valores booleanos de SELinux. El marcador -P actualizará el | |
valor de tiempo de inicio y hará que este cambio persista en los reinicios. httpd_unified es | |
el booleano que indicará a SELinux que trate todos los procesos de Apache como el mismo tipo, | |
por lo que lo habrá habilitado con un valor de 1. | |
2_ Ajustar políticas de Apache en un directorio: | |
Configurar individualmente los permisos de SELinux para el directorio /var/www/example.com/log | |
le brindará mayor control sobre sus políticas de Apache, pero también puede requerir más | |
mantenimiento. Debido a que esta opción no establece políticas de forma universal, deberá fijar | |
de forma manual el tipo de contexto para cualquier nuevo directorio de registro especificado en | |
sus configuraciones de host virtuales. | |
Primero, compruebe el tipo de contexto que SELinux dio al directorio /var/www/example.com/log | |
Este comando enumera e imprime el contexto de SELinux del directorio. El resultado debe | |
ser similar a lo siguiente: | |
$ ls -dZ /var/www/example.com/log/ | |
Output | |
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/ | |
El contexto actual es httpd_sys_content_t, que indica a SELinux que el proceso de Apache solo | |
puede leer archivos creados en este directorio. A través de este tutorial, cambiará el tipo de | |
contexto del directorio /var/www/example.com/log a httpd_log_t. Este tipo permitirá que Apache | |
genere archivos de registro de la aplicación web y realice anexos a ellos: | |
$ semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?" | |
A continuación, utilice el comando restorecon para aplicar estos cambios y hacer que persistan | |
a través de los reinicios: | |
$ restorecon -R -v /var/www/example.com/log | |
El indicador -R ejecuta este comando de forma recursiva, lo que significa que actualizará cualquier | |
archivo existente para que utilice el nuevo contexto. El indicador -v imprimirá los cambios de | |
contexto realizados por el comando. Verá el siguiente resultado que confirma los cambios: | |
Output | |
restorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0- >unconfined_u:object_r:httpd_log_t:s0 | |
Puede enumerar los contextos una vez más para ver los cambios: | |
$ ls -dZ /var/www/example.com/log/ | |
Output | |
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log | |
Ahora que el directorio /var/www/example.com/log usa el tipo httpd_log_t, estará listo | |
para probar su configuración de host virtual. | |
3_ Probar el host virtual | |
Una vez que el contexto se SELinux se haya actualizado con cualquiera de los métodos, | |
Apache podrá realizar tareas de escritura en el directorio /var/www/example.com/log. | |
Ahora podrá reiniciar con éxito el servicio de Apache: | |
$ systemctl restart httpd | |
Enumere el contenido del directorio /var/www/example.com/log para ver si Apache creó | |
los archivos de registro: | |
$ ls -lZ /var/www/example.com/log | |
Verá que Apache pudo crear los archivos error.log y requests.log especificados en la | |
configuración del host virtual: | |
Output | |
-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log | |
-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log | |
Ahora que tiene su host virtual configurado y los permisos SELinux actualizados, | |
Apache proporcionará su nombre de dominio. Puede comprobarlo visitando http://example.com, | |
donde debería ver algo como esto: | |
4_ Gestor de paquetes snapd | |
$ yum update | |
$ yum install epel-release | |
$ yum install snapd | |
$ systemctl enable --now snapd.socket | |
$ ln -s /var/lib/snapd/snap /snap | |
$ reboot | |
$ snap --version | |
5_ Error 503 al acceder a la url de la API | |
Este error no se trata realmente de permisos de archivo ni nada por el estilo. | |
Lo que realmente significa es que a httpd se le ha denegado el permiso para | |
conectarse a esa dirección IP y puerto. | |
La causa más común de esto es que SELinux no permite que httpd realice conexiones de red. | |
Para resolverlo, debe cambiar un valor booleano de SELinux | |
(que persistirá automáticamente en los reinicios). También es posible que desee reiniciar | |
httpd para restablecer el trabajador proxy, aunque esto no es estrictamente necesario. | |
Para permitir que apache realice conexiones de red, emita el siguiente comando. | |
$ setsebool httpd_can_network_connect 1 | |
Luego reinicie apache. | |
$ service httpd restart | |
Fuente: https://stackoverflow.com/questions/25055008/reverse-proxy-with-apache-on-centos-6 | |
___Fuentes: | |
- Firewalld-cmd: | |
https://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-centos-7-servers#configuring-a-basic-firewall | |
- Instalación de Apache: | |
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-centos-7-es | |
- Gestor de paquetes snapd: | |
https://www.cyberithub.com/how-to-install-and-use-snapd-on-rhel-centos-7-8-using-10-easy-steps/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment