🐋
Apuntes Sistemas
  • ⚓Presentación
  • 📊Sistemas y Servidores
    • Personalizar el prompt de Windows
    • Utilidad de manejo de apps para Windows
    • PRACTICA: Arranque dual Windows y Ubuntu
    • 🚧SysLinuxOS: el SO para ASIX
    • Comandos Linux
      • PRACTICA - Ejercicio de práctica comandos
      • 🚧Instalación de paquetes
      • Apuntes Linux: blue/red team
      • Ejemplos de bash
      • Listado de comandos de Linux
    • Comandos Windows
      • 🚧Apuntes Powershell
      • Bucles FOR con batch
      • Scripts de práctica de Windows
    • Prácticas con Windows 10
    • Configuración de netplan
    • Terminal shell
      • SSH
      • 🚧Ghostty
      • 🚧Warp: la terminal inteligente
      • tmux: paneles de terminal
      • Tabby: Mejorar terminal
      • Conexión SSH en red NAT con VirtualBox
      • TheFuck!: Corrección de comandos
      • Wave: Mejorar terminal Linux
      • 🚧Registros de sesiones
    • Instalación manual de Wordpress en CDMON
    • 🏗️Proxmox
    • 🚧TrueNAS
    • Docker
      • Instalación de Docker
      • Dockerfiles
      • Volúmenes de docker
      • Deployment web con Docker con ejemplos
        • 🚧PRACTICA: Node.js con docker
      • Docker Compose
        • Ejemplo 1: Implantación de Wordpress
        • Ejemplo 2: Implementación de servidor con Nginx, Flask y mySQL
        • Ejemplo 3: Implantación de onlyoffice
        • 🚧Ejemplo 4: Passbolt
        • 🚧PRACTICA: Creando una web de emulación de juegos con docker-compose
      • Monitorización con Grafana en Docker
      • Pi-hole con docker
      • Actividad clase: Deployment app
      • Proyectos self-hosted de docker
    • 🚧Ansible
      • Configuración de laboratorio de ansible
    • 🚧Monitorización de servicios y redes
      • Servicios y cronjobs
      • 1Panel
      • 🚧WatchYourLAN
      • 🚧Uptime-kuma
      • 🚧Netdata
      • 🚧Prometheus + Grafana + Loki
    • LDAP
      • 🚧Gestión gráfica de LDAP
      • Carpetas compartidas NFS
      • PRACTICA: Infraestructura LDAP
  • 🗃️Servicios
    • 🚧Servidor hosting público
    • DHCP
      • DHCP con Ubuntu
      • 🦖DHCP & DNS script
      • DHCP con Alpine
        • Alpine - configuración de red
    • DNS
      • 😡Comprobación DNS
      • Script para enumeración DNS
      • DNS con ubuntu server
      • 🏗️DNSmasq
      • 🚧Securizar servidor DNS
    • Web
      • IIS con Windows server
      • Apache
        • Instalación de LAMP en Ubuntu
          • Prueba de servidor LAMP
          • 🚧Configuración de seguridad de Ubuntu
          • Creación de un VirtualHost en LAMP
          • Creación de varios VirtualHosts en LAMP
          • 🚧Instalación por script de LAMP
        • Aplicaciones con LAMP
          • Instalación de WP en entorno LAMP
          • 🚧Instalación de MantisBT en LAMP
            • 👷Guía de MantisBT
          • 🚧Instalación de QDPM con LAMP
      • Nginx
        • Virtualhosts
        • Instalando Wordpress en nginx
      • 👷MEAN stack
      • 👷‍♂️Caddy
      • 🚧Plesk
      • 🚧Ajenti -Web interface
    • 🏗️Proxy
      • Nginx como proxy inverso y balanceador
      • 🚧Zoraxy
    • Mailing
      • 🚧Servidor Mail con cloudfare
      • 🚧Reenvío de correos de root
      • 🚧Roundcube como MUA
      • Comprobación ESMTP
      • 🚧Seguridad en mailing
      • 🚧Mailhog
    • 🏗️File transfer
      • 🚧FTP
      • Git
    • Sistemas de comunicación instantánea
      • Comunicación mediante CLI
      • Ejabberd - XMPP
        • 🚧Ejabberd con docker
      • 🚧Openfire - XMPP
      • 🚧Comunicaciones servidor-móvil
    • 🏗️Multimedia services
      • Stremio
      • Ver anime por CLI
      • Jellyfin
      • 🚧HLS sobre Apache
      • 🚧Servicio autohospedado de videoconferencia
      • 🚧Morphos: Conversor docs
      • 🚧Reproductores de música en CLI
      • 🚧Icecast - música en streaming
      • 🚧RTMP-HLS server
      • 🚧Guacamole
  • 🖱️Hardware
    • 🚧Identificando conectores
    • Curso de electrónica analógica
    • Alcanzar los 3200MHz con la RAM
    • Calculadora de cuellos de botella
    • 🚧PXE: Bootear sistemas en red
    • 🚧PRÁCTICA - Clonación de disco con Clonezilla
    • Logitech iFixit
  • 🕸️Redes
    • Apuntes IPv4 Alina
    • ¿Cómo diferenciar tantos elementos de red?
    • 🚧IPv6
    • PRÁCTICA - Subneteo con IPcalc en Linux
    • PRÁCTICA - Comandos de red en Windows
    • 🚧PRÁCTICA - Comandos de red en Linux
    • Herramientas de red
      • 🚧TCPDump: analizado de paquetes en red
      • PRÁCTICA - Netsh
      • 🚧PRÁCTICA - mtr.ping.pe
      • 🚧Netcat
    • Wireshark
    • VPN y escritorio remoto
      • Comunicación punto a punto con ngrok
      • 🚧VPN
    • Escaneo de red
      • PRÁCTICA - Mapeado de red con Draw.io
      • 🚧PRÁCTICA - Nmap/Zenmap
    • Redes inalámbricas
      • Wi-fi
        • 🚧PRÁCTICA - Configuración de router
        • 🚧PRÁCTICA - Como hacer un Wifi Heatmap
        • 🚧Seguridad de redes inalámbricas
        • PRÁCTICA - Crackear la contraseña del Wifi con WPA/WPA2
    • PRÁCTICA - Usar SSH en Cisco packet tracer
  • 🛑Ciberseguridad
    • 🚧Securizando un servidor Linux
      • Protégete de ataques de fuerza bruta con Fail2ban
      • Firewall
        • UFW (uncomplicated firewall)
          • GUFW - Interfaz gráfica de ufw
        • 🚧IPTables
        • 🚧PFsense
          • 🚧DMZ con PFsense
      • 🚧Passbolt: gestor de contraseñas autohospedado
      • 🚧Hashes y encriptación
      • 🚧Certificados SSL/TLS
      • Copias de seguridad
    • 🚧Alerta de escaneo de puertos
    • 🚧Google dorks
    • 🚧Enumeración DNS
    • Comandos destructivos de linux
    • Webs enseñanza cyber
    • Wireless Pentesting CheatSheet Github
    • The password game!
    • Personal Security Checklist
  • 🔌Arduino
    • Termómetro e higrómetros digitales y online con Arduino
    • Construyendo un coche multipropósito
      • Multi
      • Montaje del auto
    • Arduino con Sigfox para IoT
    • 10 proyectos de Arduino
  • 📚Recursos y libros
    • Media library: libros varios
    • Herramientas básicas de sysadmin
  • 🌍Sostenibilidad y digitalización
    • Portfolio curso digitalización MOOC
    • 🚧Explotación de recursos por IA
    • 🚧Nuevas tecnologias y comunicaciones
    • 🚧Enlaces sobre Inteligencia artificial
Con tecnología de GitBook
En esta página
  • Apache
  • Parámetros de conexión del servidor
  • Workers
  • Puertos
  • Timeouts
  • Logs
  • Configuración de directivas Apache
  • MariaDB (MySQL)
  1. Servicios
  2. Web

Apache

AnteriorIIS con Windows serverSiguienteInstalación de LAMP en Ubuntu

Última actualización hace 7 meses

Apache

Apache es un software de servidor web de código abierto ampliamente utilizado que sirve archivos HTML a través de Internet. Es altamente personalizable y admite varias funciones.

En Windows la mejor solución es softwaresintegrados como XAMPP o WAMP.

Para su instalación en terminal de Ubuntu simplemente:

sudo apt install apache2

Apache tiene un directorio de carpetas y archivos tal que así:

Dentro de la jerarquía, su archivo principal de configuración es httpd.conf y en él encontramos parámetros importantes como el puerto de conexión, el host o los virtualhost que queremos configurar

Apache contiene funcionalidades como:

  • mod_rewrite: Reescriba las URL para mejorar el SEO o la facilidad de uso.

RewriteEngine On
RewriteRule ^blog/([a-zA-Z0-9-]+)$ /index.php?slug=$1 [L]
  • archivo .htaccess: Permite la configuración por directorio, útil para reescribir URL y otras configuraciones.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule îndex\.html$ / [R=301,L]
</IfModule>
  • Configuración SSL/TLS: para conexiones HTTPS

<VirtualHost *:443>
    ServerName secure.alex.com
    SSLEngine On
    SSLCertificateFile /path/to/cert.pem
    SSLCertificateKeyFile /path/to/private.key
</VirtualHost>
  • Autenticación y autorización: protege directorios especificas con contraseñas

<Directory "/var/www/private">
    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Directory>
  • Uso de proxys

  • Equilibrio de carga: Distribuye las solicitudes entrantes entre varios servidores para mejorar el rendimiento.

<Proxy balancer://mycluster>
    BalancerMember http://server1:80
    BalancerMember http://server2:80
</Proxy>
ProxyPass "/myapp" "balancer://mycluster/myapp"
ProxyPassReverse "/myapp" "balancer://mycluster/myapp"

Parámetros de conexión del servidor

Workers

En el caso de Apache, tenemos tres módulos de procesamiento de múltiples hilos (MPM). Cada uno de estos MPMs tiene un enfoque diferente para manejar las solicitudes HTTP y gestionar los procesos y hilos asociados con la ejecución del servidor:

  • mpm_prefork -> Adecuado para entornos donde la estabilidad y la simplicidad son prioritarias sobre la eficiencia en el uso de recursos.

  • mpm_worker -> Es especialmente útil en entornos donde se espera un alto volumen de solicitudes y se desea aprovechar la eficiencia de los hilos.

  • mpm_events -> Es una opción adecuada para entornos donde se requiere un alto rendimiento y escalabilidad, especialmente en situaciones donde el número de conexiones simultáneas es alto.

Para saber qué modo está activado por defecto, tendremos que consultar el contenido de la carpeta mods-enabled.

ls -l /etc/apache2/mods-enabled/ | grep mpm

Para activar un modo distinto al habilitado procederemos de la siguiente forma:

a2dismod mpm_event
a2enmod mpm_prefork
service apache2 restart

Se puede modificar el número de workers en el fichero de configuración respectivo de cada módulo.

Puertos

En este caso, con la configuración por defecto deberíamos editar el fichero ports.conf si queremos hacer una configuración general.

Listen 80

<IfModule ssl_module>
  Listen 443
</IfModule>

<IfModule mod_gnutls.c>
  Listen 443
</IfModule>

En el caso en el que tengamos una configuración con VirtualHosts , cada uno puede llevar su propia configuración de puertos.

Timeouts

Referido al período máximo de inactividad permitido entre una solicitud y su correspondiente respuesta.

Logs

La configuración de los logs se realiza en el archivo de configuración principal del servidor, que comúnmente se llama httpd.conf en sistemas basados en Unix/Linux o apache2.conf en otros casos.

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Configuración de directivas Apache

El contenido del fichero httpd.conf está compuesto por un gran número de directivas de las que solo se describen a continuación algunas de ellas. Usalas según necesidades:

Directiva
Función
Ejemplo

ServerTokens

Según el parámetro que se introduzca a continuación: - ProductOnly solo muestra el nombre del servidor web instalado - Minimal muestra el nombre así como la versión de Apache instalada - OS muestra el nombre, versión y sistema operativo - Full muestra nombre, versión, sistema operativo así como los servicios que hacen uso del servidor web

ServerTokens full Apache 2.1/(Linux)/PHP3/MySQL

ServerRoot

Indica al servidor web la ubicación donde se almacenan los ficheros de configuración de Apache.

ServerRoot "/etc/httpd"

Timeout

Indica el número se segundos antes de que se cancele una conexión por falta de respuesta.

Timeout 120

KeepAlive

Indica si se permiten o no las conexiones persistentes, es decir más de una petición por servidor. Puede tomar los valores "On" u "Off"

KeepAlive On

Listen

Permite asociar Apache a una dirección y/o puerto especifico además del predeterminado.

Listen 192.168.1.1:6680

Include

Indica al servidor web la ruta en donde se encuentran almacenados los ficheros de configuración adicionales de Apache como, por ejemplo, los dominios virtuales.

Include conf.d/*.conf

User

Especifica que usuario es el que ejecuta los procesos del servidor de un y, por tanto, los permisos de lectura y escritura que se aplican sobre los recursos.

User usuario1.

Group

Igual que User pero con grupos

Group group1

ServerAdmin

Especfica la persona a la que se le debe notificar los problemas referentes al portal web, a través de su cuenta de correo.

ServerAdmin administrador@correo.com

ServerName

Especifica el nombre y puerto que se usa para identificar al servidor.

ServerName www.dominio.com:80

DocumentRoot

Indica al servidor al ruta en donde se encentran almacenados los ficheros web del sitio principal.

DocumentRoot "/var/www/html"

Options

Indica varias opciones de comportamiento, pudiendo estas ser aplicadas a un directorio concreto.

<Directory /web/images/> Options All

Allow

Indica al sistema los equipos que pueden acceder a una determinada área del servidor. El acceso se puede controlar por nombre, IP, rango de IP, etc. Igualmente pueden ser aplicadas a un directorio concreto. Así mismo, sirve para especificar, entre otras cosas, si se puede ejecutar CGI.

Allow from 150.100.255.166

Deny

Analoga a la anterior, pero para denegar el acceso.

Deny from DominioDenegado.com

MariaDB (MySQL)

En Apache además de los parámetros genéricos Timeout y KeepAliveTimeout , podemos hacer uso de los parámetros incluidos en el módulo .

Referencias:

🗃️
mod_reqtimeout
https://openwebinars.net/academia/aprende/servidor-apache/3345/
Directorio principal