Configuración inicial necesaria desde la instalación de Apache en CentOS hasta la puesta en marcha.


Fecha de publicación:8 de diciembre de 2020.



INFOMARTION > Configuración inicial necesaria desde la instalación de Apache en CentOS hasta la puesta en marcha.

Resumen.

Este es el procedimiento de configuración inicial necesario para instalar y arrancar Apache en CentOS. La información se basa en el supuesto de que se utiliza CentOS7.

Las versiones son las siguientes.

Versión de CentOS7.6 (1810)
Versión de Apache2.4.6

Índice de contenidos

  1. instalar
  2. configuración básica
  3. resumen

1. instalar

Esta sección describe la configuración de Apache desde su instalación hasta su puesta en marcha.

1-1. Instalación de Apache

Realice la instalación de Apache mediante el comando yum. Realice el trabajo como usuario root.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install httpd

1-2. Comprobación de la puesta en marcha (acceso http)

Compruebe brevemente si es accesible. La instalación de Apache (httpd) con el comando yum habilita el comando apachectl. Usa esto para iniciar Apache.

[root@hostname ~]# apachectl start
[root@hostname ~]# apachectl status
* httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-12-06 17:08:12 JST; 1s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1303 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
           |-1303 /usr/sbin/httpd -DFOREGROUND
           |-1304 /usr/sbin/httpd -DFOREGROUND
           |-1305 /usr/sbin/httpd -DFOREGROUND
           |-1306 /usr/sbin/httpd -DFOREGROUND
           |-1307 /usr/sbin/httpd -DFOREGROUND
           `-1308 /usr/sbin/httpd -DFOREGROUND

Dec 06 17:08:11 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Dec 06 17:08:12 localhost.localdomain httpd[1303]: AH00558: httpd: Could not reliably determ...ge
Dec 06 17:08:12 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

Si al ejecutar el comando 'apachectl status' se devuelve 'Active: active (running)', el sistema se ha iniciado con éxito.

A continuación, acceda a Apache desde su navegador. Establezca los permisos http ya que el firewall (o iptables para CentOS6 y anteriores) sólo permite el acceso ssh por defecto en CentOS7. También me gustaría poner una configuración de permisos colectivos para https. Añade también la opción "permanente" para que la configuración sea permanente.

[root@hostname ~]# firewall-cmd --permanent --add-service=http
[root@hostname ~]# firewall-cmd --permanent --add-service=https
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Está bien si se han añadido 'http' y 'https' a 'services'. Se accede a través del navegador. En mi caso, la dirección IP del servidor es 192.168.50.10, por lo que accedo a "http://192.168.50.10". Está bien si aparece la siguiente página

Una vez que el sistema se haya iniciado con éxito, deténgalo.

[root@hostname ~]# apachectl stop

2. configuración básica

2-1. Creación de la carpeta de salida del archivo de registro

Para gestionar el registro en /var/log/, cree un directorio httpd en /var/log/ como carpeta para los registros de Apache.

Los permisos (permissions) deben ser 755. Esta configuración permite a Apache escribir, pero otros usuarios sólo pueden leer. Si otros usuarios pueden escribir, los registros pueden ser manipulados.

No es necesario ejecutar 'mkdir /var/log/httpd' si ya se ha creado un directorio con el mismo nombre.

[root@hostname ~]# mkdir /var/log/httpd
[root@hostname ~]# chmod 755 /var/log/httpd

Utilice este último procedimiento para cambiar la configuración del destino del registro de Apache.

Este procedimiento es sólo un procedimiento para crear una carpeta para almacenar los registros.

2-2. Configuración del dominio

Cambie la configuración del dominio que aparece en httpd.conf. La configuración de Apache está básicamente centralizada en httpd.conf, así que si quieres cambiar la configuración, modifica httpd.conf. No es necesario configurar los dominios si el entorno es local (no está abierto al público en Internet).

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

# Descomentar y habilitar la configuración de ServerName. El nombre del dominio se establece en función del entorno.

httpd.conf【Antes del cambio】


#ServerName www.example.com:80

httpd.conf【después del cambio】


ServerName domainname:80

2-3. Activación de módulos SSL y archivos de configuración

Activar SSL para permitir el acceso a través de https. La configuración de SSL está relacionada con el SEO, y el http no es una buena idea por razones de seguridad en primer lugar, así que a menos que tengas que usar http, usa https.

Instale el módulo ssl con yum.

[root@hostname ~]# yum -y install mod_ssl

La instalación con yum habilita automáticamente el módulo ssl, por lo que sólo hay que instalarlo. También se crea automáticamente un archivo de configuración. (/etc/httpd/conf.d/ssl.conf se crea automáticamente).

2-4. Cambiar la ruta de salida del registro

Cambie el destino de salida del registro de Apache a la carpeta de salida del archivo de registro que acaba de crear. Sólo cambie el archivo de configuración ssl, ya que se configurará en un paso posterior para que se acceda sólo a través de ssl (https).

[root@hostname ~]# vi /etc/httpd/conf.d/ssl.conf


ssl.conf【Antes del cambio】


ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log

~abreviatura~

CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


ssl.conf【después del cambio】


ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log

~abreviatura~

CustomLog /var/log/httpd/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

La modificación anterior cambia el destino de la salida del registro a bajo "/var/log/httpd".


%t, %h', etc., es la configuración del formato del registro. A continuación se presenta una lista de formatos que pueden utilizarse frecuentemente como referencia.

【参考】

・%T:Tiempo de procesamiento de la solicitud (segundos)

・%h:Nombre del host o dirección IP del cliente. Sólo intenta resolver los nombres de host si HostnameLookups está configurado como On

・%r:Primera línea de la solicitud

・%b:Bytes de la respuesta (excluyendo las cabeceras HTTP). formato CLF, es decir, si no se envía ninguno de los bytes

・%D:Tiempo de procesamiento de la solicitud (microsegundos)

・%>s:Estado HTTP

2-5. Creación de certificados SSL

Procedimiento de creación de certificados. La autocertificación está bien para las operaciones privadas. En el caso de los servidores disponibles públicamente, se debe desaconsejar la autocertificación.

No hay diferencia de seguridad entre los certificados normales y los autocertificados. Esta puede ser la diferencia entre un certificado que puede ser considerado fiable por un tercero y otro que no lo es. (Con la autocertificación, la barra de URL se vuelve roja). Por lo tanto, para los servidores disponibles públicamente (servidores que son vistos por terceros), emita un certificado normal.

La configuración del certificado por defecto para Apache es "/etc/pki/tls/certs/localhost.crt" y "/etc/pki/tls/private/localhost.key".

La configuración se encuentra en "SSLCertificateFile" y "SSLCertificateKeyFile" en "/etc/httpd/conf.d/ssl.conf".


【Para la autocertificación】

Para crear un autocertificado, ejecute el siguiente comando. Ejecutar como usuario root.

Ejecutando 'openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.crt' te pedirá una respuesta varias veces, todas con Enter, sin problema. Se trata de información sobre quién emite el certificado (por ejemplo, en qué país vive y cuál es su dirección de correo electrónico). Si está emitiendo un certificado normal, introduzca la información correcta y configúrelo.

[root@hostname ~]# openssl genrsa > /etc/pki/tls/private/localhost.key
[root@hostname ~]# openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.csr
[root@hostname ~]# openssl x509 -req -signkey /etc/pki/tls/private/localhost.key < /etc/pki/tls/certs/localhost.csr > /etc/pki/tls/certs/localhost.crt

【Para los certificados normales】

Para crear un certificado normal, ejecute el siguiente comando. Ejecutar como usuario root.

[root@hostname ~]# openssl genrsa -out /etc/pki/tls/private/localhost.key 2048
[root@hostname ~]# openssl req -new -key /etc/pki/tls/private/localhost.key -out /etc/pki/tls/certs/localhost.csr

En el caso de los certificados regulares, esto no es suficiente para completar el proceso. El trabajo consiste en entregar el 'server.csr' creado a la Autoridad de Certificación para que emita un certificado de servidor y en instalar el certificado de servidor que se ha emitido.

2-6. SSL (Secure Socket Layer) permanente

No es buena seguridad si el acceso se hace vía http, así que añade una configuración para redirigir a https si el acceso se hace vía http.

Es posible prohibir el acceso vía http, pero desde el punto de vista de la usabilidad se recomienda establecer una redirección. Realice las siguientes tareas como usuario root.

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

Añade lo siguiente al final.

httpd.conf


<IfModule rewrite_module>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Es posible cambiar esta configuración para que los accesos que entran en http sean tratados en https.

Se indica que esta configuración no funciona si se llega por https. (RewriteCond %{HTTPS} off)

No olvide mencionar que sin esta configuración, los accesos https también serán redirigidos, resultando en un bucle interminable.

2-7. Confirmación de la activación (acceso https).

Una vez completados los distintos ajustes, compruebe que se puede acceder al sitio a través de https. Primero ponte en marcha.

[root@hostname ~]# apachectl start

Se accede a través del navegador. Lo mismo que para el acceso http, pero en mi caso la dirección IP del servidor es 192.168.50.10, por lo que accedo a "http://192.168.50.10".

La URL se cambia de "http://192.168.50.10" a "https://192.168.50.10" porque se incluye la configuración de redirección http.

Ahora que se ha iniciado con éxito, detenga Apache.

[root@hostname ~]# apachectl stop

2-8. Ajuste de la puesta en marcha automática

Por último, aunque no es obligatorio, es difícil iniciar Apache cada vez que se reinicia el servidor, por lo que se establece una configuración para que Apache se inicie automáticamente al arrancar el servidor. También se registra al comando systemctl. Tenga en cuenta que este procedimiento es para CentOS7, por lo que si usted está utilizando cualquier otra cosa que no sea CentOS7, tendrá que utilizar el comando de servicio para hacer frente a esto.

Cree un archivo 'apache.service' y describa la configuración necesaria.

[root@hostname ~]# touch /etc/systemd/system/apache.service
[root@hostname ~]# vi /etc/systemd/system/apache.service

Se proporciona la siguiente información.

[Unit]
#Descripción.
Description=Apache
#Control previo y posterior a la ejecución.
#Before=xxx.service
#After=xxx.service

[Service]
#Designación de usuarios y grupos
User=root
Group=root
#Una vez activada, establezca el estado en Activado.
Type=oneshot
RemainAfterExit=yes
#Arranque, parada y recarga.
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl restart

[Install]
#Ajustes equivalentes al nivel de ejecución 3.
WantedBy=multi-user.target

Cuando hayas terminado de describirlo, regístralo con el comando systemctl.

[root@hostname ~]# systemctl enable apache
[root@hostname ~]# systemctl is-enabled apache
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep apache
apache.service                                enabled
[root@hostname ~]# systemctl daemon-reload


3. resumen

Hemos descrito la configuración inicial necesaria cuando se instala Apache.

Apache básicamente funciona hasta cierto punto con la configuración por defecto, pero si realmente lo personaliza, consulte la configuración del destino de la salida del registro y la configuración de SSL, que debe cambiar cuando opere el sistema.

Gracias por mirar hasta el final.