Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Tabla de contenido
Agregar dinámicamente pasos de operación del módulo
Ocultar información de versión
Configurar el entorno experimental anti-hotlink
Ejemplo de enlace directo de imágenes locales
La velocidad de acceso a un sitio web está determinada por múltiples factores, entre ellos la velocidad de respuesta de la aplicación, el ancho de banda de la red, el rendimiento del servidor, la velocidad de transmisión de la red con el cliente, etc. Uno de los factores más importantes es la capacidad de respuesta del propio Apache. Puede utilizar la compresión web para aumentar la velocidad de su aplicación. Más importante aún, no cuesta nada en absoluto y sólo aumentará ligeramente el uso de la CPU del servidor en uno o dos puntos porcentuales o menos.
Compresión de páginas web mediante módulo deflate.
Si ya instaló Apache a través del paquete de código fuente, si aún conserva el paquete de código fuente, puede reconfigurarlo, compilarlo e instalarlo. La reinstalación de Apache no afectará los parámetros anteriores.
O si ha configurado la función de cargar módulos dinámicamente durante la última instalación, puede usar las herramientas apxs para agregar módulos dinámicamente sin reinstalarlos.
Agregue dinámicamente el módulo deflate sin reinstalar Apache
cd al servidor HTTP Apache para almacenar el código del módulo relacionado con los filtros
Utilice la herramienta apxs para operar
Finalmente, use el comando apachectl con pipes y grep para verificar si el módulo deflate se cargó exitosamente.
- [root@localhost filters]# cd /root/httpd-2.4.25/modules/filters/
- [root@localhost filters]# apxs -i -c -a mod_deflate.c
- [root@localhost filters]# apachectl -t -D DUMP_MODULES | grep deflate
- deflate_module (shared)
Habilite el módulo mod_deflate en el archivo de configuración httpd
- [root@localhost filters]# vim /usr/local/httpd/conf/httpd.conf
- 在末行模式下搜索:/deflate
- LoadModule deflate_module modules/mod_deflate.so # 去掉开头注释
- <IfModule mod_deflate.c>
- # 对指定的类型应用deflat进行压缩(文本、样式表、图像)
- AddOutputFilterByType DEFLATE text/html text/css text/jpg text/png text/gif
- DeflateCompressionLevel 9 # 指定了压缩级别为9,表示最高级别的压缩(压缩比最高,但消耗CPU资源较多)
- SetOutputFilter DEFLATE # 指定默认的输出过滤器为deflate进行输出内容的压缩
- </IfModule>
Agregue el módulo deflate reinstalando Apache directamente
Usar primeroapachectl -t -D MÓDULOS_DE_VOLCADO | grep deflateComando para verificar si Apache tiene actualmente un módulo desinflado
Si Apache está habilitado, usesystemctl detiene httpdCerrar servicio
Ingrese al directorio de descompresión del paquete de código fuente, especifique el directorio de instalación y habilite algunas funciones. El módulo deflate se utiliza para la compresión de páginas web.
./configurarDespués del procesamiento, usehacer && hacer instalarComando para compilar e instalar
- [root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate
- [root@localhost httpd-2.4.25]# make && make install
Utilice el comando ll para comprobar si el módulo deflate está habilitado. Puede ver que el archivo mod_deflate.so existe.
- [root@localhost httpd-2.4.25]# ll /usr/local/httpd/modules/mod_deflate.so
- -rwxr-xr-x 1 root root 53096 7月 10 20:43 /usr/local/httpd/modules/mod_deflate.so
pero usaapachectl -t -D MÓDULOS_DE_VOLCADO | grep deflateEl comando no se puede consultar porque no está habilitado en el archivo de configuración de Apache.
Edite el archivo de configuración principal de httpd. Aproximadamente en la línea 143, puede ver que hay muchos.Módulo de cargadeclaraciones, agregaremos nuevas declaraciones de carga de módulos debajo de estos LoadModules.
En la segunda parte de la declaración de carga del módulo, puede usar una ruta absoluta o una ruta relativa. Porque al instalar Apache, la regla de prefijo (prefijo) se define a través del script ./configure, por lo que desea especificar una determinada en. el archivo de configuración de Apache. La ruta al archivo, la ruta del prefijo se puede omitir.
La etiqueta IfModule se utiliza para cargar condicionalmente la configuración del módulo. Su función es verificar si el módulo especificado está cargado en el entorno Apache actual. Solo cuando el módulo esté cargado, las instrucciones de configuración incluidas en la etiqueta IfModule tendrán efecto.
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
-
- LoadModule deflate_module modules/mod_deflate.so
- <IfModule mod_deflate.c> # 只有当 mod_deflate 模块加载时才会执行下面的配置
- DeflateCompressionLevel 6 # 压缩级别,数字越大压缩比就越大
- SetOutputFilter DEFLATE # 启用deflate模块
- # 告诉服务器对哪些文件进行压缩,如果是已经压缩过的,就不再压缩
- AddOutputFilterByType DEFLATE text/html text/plain text/xml text/csstext/javascript application/x-javascript application/javascript application/json
- SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
- SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
- SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
- AddOutputFilterByType DEFLATE text/*
- AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript
- AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
- </IfModule>
Guardar y salir, puedes usarhttpd-tPara detectar si hay errores de sintaxis en el archivo de configuración. Si indica Sintaxis OK, significa que no hay errores.
Debido a que httpd necesita recargar el archivo de configuración modificado para que la configuración recién agregada surta efecto, reinicie el servicio.
En este momento, acceda al servidor web en el navegador, presione F12 en el teclado para abrir las herramientas de desarrollador, seleccione la dirección IP del servidor web y podrá ver en el encabezado de respuesta que la tecnología de compresión es gzip.
El experimento termina
El almacenamiento en caché de páginas web consiste en almacenar en caché algunas páginas que a menudo no cambian o rara vez cambian. La próxima vez que el navegador acceda a estas páginas, no es necesario volver a descargarlas, lo que mejora la velocidad de acceso del usuario. El módulo mod_expires de Apache generará automáticamente la etiqueta Expires y la etiqueta Cache-Control en la información del encabezado de la página. En función de las etiquetas, el navegador del cliente decide obtener la página en el caché de la máquina local para la próxima visita, sin realizar otra solicitud. el servidor Reducir la frecuencia y el número de accesos de clientes para lograr el propósito de reducir el tráfico innecesario y aumentar la velocidad de acceso.
Implementar el almacenamiento en caché de páginas web
Abra el archivo de configuración principal httpd, habilite el módulo de caducidad, agréguelo y reinicie el servicio.
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
- 在末行模式搜索:/expires_module
- 将前面的注释去掉,开启expires模块
- LoadModule expires_module modules/mod_expires.so
- <IfModule mod_expires.c>
- ExpiresActive On # 开启缓存功能
- ExpiresDefault "access plus 60 seconds" # 缓存时间设置为60秒
- </IfModule>
-
- 检测语法正确性,重启服务
- [root@localhost httpd-2.4.25]# httpd -t
- Syntax OK
- [root@localhost httpd-2.4.25]# systemctl restart httpd
Después de reiniciar el servicio, vaya al navegador para acceder al servidor web y podrá ver que hay dos líneas más de información en el encabezado de respuesta.
La información de vulnerabilidad del software está relacionada con una versión específica, por lo que el número de versión es muy útil para los atacantes. En las herramientas de desarrollo del navegador, puede ver la información de la versión de Apache en el elemento del servidor en el encabezado de respuesta.
Si un atacante de la red obtiene la información de la versión de Apache, llevará a cabo ataques dirigidos y provocará pérdidas en el sitio web. Por lo tanto, en el entorno de producción real, el número de versión de Apache debe ocultarse para reducir el riesgo de ataques.
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
- 在末行模式下搜索:/httpd-default
- 将Include语句前的注释去掉,表示包含Include语句后面指定的文件在当前文件中(相当于把指定文件的内容复制粘贴到当前文件的当前Include语句的位置)
- # Various default settings
- Include conf/extra/httpd-default.conf
Guarde y salga, abra el archivo httpd.default
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/extra/httpd-default.conf
- 在第55行就可以设置隐藏版本信息,这里改为Prod
- ServerTokens Prod
Puede ver que las opciones se proporcionan en los comentarios:Establezca uno de los siguientes valores: Completo | SO | Menor | Mínimo | Mayor | Prod
Opciones | ilustrar |
Tokens de servidor completos | Devuelve la información más detallada del servidor, incluido el tipo de sistema operativo y la lista de módulos compilados. Por ejemplo: Apache/2.4.41 (Unix) OpenSSL/1.1.1d PHP/7.3.11 |
Sistema operativo ServerTokens | Sólo se devuelve el tipo de sistema operativo. Por ejemplo: Apache/2.4.41 (Unix) |
ServerTokens Menor | Devuelve los números de versión mayor y menor. Por ejemplo: Apache/2.4 |
Tokens de servidor mínimos | Devuelve el número de versión principal. Por ejemplo: Apache/2 |
ServerTokens Mayor | Sólo se devuelve el número de versión principal. Por ejemplo: Apache/2 |
Producto de ServerTokens | Devuelve información mínima, mostrando solo Apache, omitiendo el número de versión. Por ejemplo: apache |
Guarde y salga, reinicie el servicio.Acceder al servidor web
Puedes ver que la información de la versión solo muestra un Apache.
Apache hotlinking es una medida de protección que evita que otros sitios web o terceros no autorizados se vinculen directamente a imágenes, videos, audios u otros recursos en su sitio web.
Cuando un sitio web utiliza recursos directamente de su sitio, en realidad está consumiendo su ancho de banda y recursos del servidor, posiblemente sin su permiso.
nombre de la CPU | nombre de dominio | dirección IP | Sistema operativo | Principales software y versiones. |
apache1 | www.e1.com | 192.168.10.101 | CentOS7.9 | httpd-2.4.25.tar.gz |
apache2 | www.e2.com | 192.168.10.201 | CentOS7.9 | Instalación httpd-2.4.25.tar.gz o yum |
cliente | Ventanas 10 | Navegador |
Clone el primer servidor directamente o use yum -y install httpd para instalar httpd y cambie la dirección IP a 192.168.10.102
Modificar los nombres de host de los dos servidores.
- 101主机
- [root@localhost ~]# hostname apache1
- [root@localhost ~]# bash
- [root@apache1 ~]#
- 201主机
- [root@localhost ~]# hostname apache2
- [root@localhost ~]# bash
- [root@apache2 ~]#
Modifique los archivos de hosts de los dos servidores web para que puedan resolver los nombres de dominio correspondientes.
Siga los mismos pasos a continuación para modificar el host 201
- [root@apache1 ~]# vim /etc/hosts
- 在hosts文件末尾追加
- 192.168.10.101 www.e1.com
- 192.168.10.201 www.e2.com
Para el archivo de hosts del host del cliente Win10, en C:WindowsSystem32driversetc, haga doble clic en el archivo de hosts para abrirlo con el Bloc de notas.
Apague el firewall y el mecanismo de seguridad del kernel de los dos servidores web, habilite el servicio httpd e intente ver si puede acceder a los dos servidores web en el host del cliente.
- 在两个Web服务器操作
- [root@apache1 ~]# systemctl start httpd
- [root@apache1 ~]# setenforce 0
101 host es mi sitio y necesito robar las imágenes en el servidor web 201 host.
Es decir, www.e1.com roba el enlace de la imagen de www.e2.com.
Ven al anfitrión 201
Ingrese al directorio donde httpd almacena los archivos de la página web, arrastre una imagen y edite el archivo index.html.
- [root@apache2 ~]# cd /usr/local/httpd/htdocs/
- 在该目录下从宿主机拖入一张图片
- [root@apache2 htdocs]# vim index.html
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>标题</title>
- </head>
- <body>
- <h1>原图网站</h1>
- <img src="logo.jpg" /> # 如果图片文件是在网页文件同一目录下,可以不用加路径
- </body>
- </html>
Guarde y salga. En este momento, use el navegador para visitar www.e2.com en la máquina host y podrá ver que hay imágenes en la página web.
Si desea robar imágenes de otros sitios web, necesita un enlace a la imagen. Haga clic derecho en la imagen en el navegador y seleccione Copiar enlace de imagen.
Ven a 101 anfitrión
Agregue un enlace a la imagen en la página de inicio del servidor 101Web
- [root@apache1 ~]# cd /var/www/html # 使用yum安装httpd的存放网页文件的目录
- [root@apache1 html]# vim index.html
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>标题</title>
- </head>
- <body>
- <h1>盗图网站</h1>
- <img src="http://www.e2.com/logo.jpg" />
- </body>
- </html>
Guarde y salga, vaya al host del cliente Win10 y visite las dos URL www.e1.com y www.e2.com
Utilice F12 para abrir las herramientas de desarrollador. Puede ver en la red que la URL de solicitud y los enlaces de imágenes de www.e2.com son propios de www.e2.com.
La URL de solicitud de www.e1.com es www.e1.com, pero la solicitud de imagen es la IP del host www.e2.com + enlace de imagen
Hasta ahora, se ha implementado un enlace directo de imágenes local simple.
Si otro host roba el enlace de la imagen del host 201, solo se mostrará la imagen fija en lugar de la imagen que la otra parte quiere robar.
Importe otra imagen (error.jpg) al directorio htdocs del host 201 (www.e2.com) que proporciona la imagen original para experimentos anti-sanguijuelas.
Luego edite el archivo de configuración de httpd y habilite el módulo de reescritura (reescritura de direcciones). El propósito de la reescritura es que si alguien solicita mi logo.jpg, redirija la solicitud a error.jpg.
Con la función de reescritura de dirección, la solicitud se puede revisar y juzgar. Si la solicitud tiene el prefijo www.e2.com, se permitirá el acceso. Si el prefijo de la solicitud no es www.e2.com, se permitirá el acceso a la imagen. no estar permitido.
- [root@apache2 htdocs]# vim /usr/local/httpd/conf/httpd.conf
- 在末行模式下搜索:/rewrite
- LoadModule rewrite_module modules/mod_rewrite.so # 将开头注释去掉,启用rewrite模块
-
- 在末行模式下搜索:/htdocs
- 在<Directory "/usr/local/httpd/htdocs">标签内往下翻
- 找到AllowOverride参数的行,修改内容为下方内容
- AllowOverride None
- RewriteEngine On
- RewriteCond %{HTTP_REFERER} !^http://e2.com$ [NC]
- RewriteCond %{HTTP_REFERER} !^http://e2.com/.*$ [NC]
-
-
- RewriteCond %{HTTP_REFERER} !^http://www.e2.com$ [NC]
- RewriteCond %{HTTP_REFERER} !^http://www.e2.com/.*$ [NC]
- RewriteRule .*.(gif|jpg|swf)$ http://www.e2.com/error.png
parámetro | ilustrar |
Permitir anular TODO | Permita RewriteEngine y otras reglas de reescritura en archivos .htaccess. TODOS: permite que todos los tipos de directivas de reescritura sean anuladas por reglas en el archivo .htaccess. Ninguno: no permite el uso de archivos .htaccess en este directorio para anular la configuración del servidor. |
RewriteEngine activado | Habilitar la reescritura, este es el primer paso para habilitar las reglas de reescritura |
ReescrituraCond | Definir condiciones de reescritura |
%{REFERENCIA HTTP} | Es una variable incorporada de Apache. Esta variable puede obtener la URL en la información del encabezado del mensaje de solicitud cuando el usuario accede. Haga coincidir el valor del Referer en la solicitud |
!^http://www.e2.com/.*$ | Cualquier archivo bajo la URL (.*: coincide con uno o varios caracteres) Indica que no coincide con una cadena que comienza con http://www.e2.com/ y termina con uno o varios caracteres. |
[CAROLINA DEL NORTE] | El filtrado no distingue entre mayúsculas y minúsculas |
Regla de reescritura | Definir reglas de reescritura |
.*.(gif|jpg|swf)$ http://www.e2.com/error.png | Cuando la condición de reescritura anterior coincide, si la URL solicitada termina en .gif, .jpg o .swf Luego la solicitud será redirigida a http://www.e2.com/error.png .*: coincide con cualquier número de caracteres .: El punto escapado por el carácter de escape, aquí está el significado de punto simple |
Guarde y salga, reinicie el servicio.
Finalmente, llegamos al host del cliente (Win10) para probar y evitar que el navegador almacene en caché la imagen, así que use las teclas de acceso directo Ctrl + Shift + Eliminar para borrar el caché del navegador.
Luego visite www.e2.com y todo funciona bien.
Al visitar www.e1.com, el enlace de la imagen robada se convierte en la imagen error.png redirigida.