minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Índice
Adicionar dinamicamente etapas de operação do módulo
Etapas para reinstalar o Apache
Configurar ambiente experimental anti-hotlink
Exemplo de hotlinking de imagem local
A velocidade de acesso de um site é determinada por vários fatores, incluindo a velocidade de resposta da aplicação, largura de banda da rede, desempenho do servidor, velocidade de transmissão da rede com o cliente, etc. Um dos fatores mais importantes é a capacidade de resposta do próprio Apache. Você pode usar a compactação da web para aumentar a velocidade do seu aplicativo. Mais importante ainda, não custa nada e aumentará apenas ligeiramente o uso da CPU do servidor em um ou dois pontos percentuais ou menos.
Compressão de página da Web por meio do módulo deflate
Se você já instalou o Apache por meio do pacote de código-fonte, se ainda mantiver o pacote de código-fonte, poderá reconfigurá-lo, compilá-lo e instalá-lo. A reinstalação do Apache não afetará os parâmetros anteriores.
Ou se você configurou a função de carregamento dinâmico de módulos durante a última instalação, você pode usar as ferramentas apxs para adicionar módulos dinamicamente sem reinstalar.
Adicione dinamicamente o módulo deflate sem reinstalar o Apache
cd para o servidor HTTP Apache para armazenar o código do módulo relacionado aos filtros
Use a ferramenta apxs para operar
Finalmente, use o comando apachectl com pipes e grep para verificar se o módulo deflate foi carregado com sucesso.
- [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 o módulo mod_deflate no arquivo de configuração 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>
Adicione o módulo deflate reinstalando diretamente o Apache
Use primeiroapachectl -t -D DUMP_MODULES | grep deflateComando para verificar se o Apache possui atualmente o módulo deflate
Se o Apache estiver habilitado, usesystemctl parar httpdFechar serviço
Insira o diretório de descompactação do pacote de código-fonte, especifique o diretório de instalação e habilite algumas funções. O módulo deflate é usado para compactação de páginas da web.
./configurarApós o processamento, usefazer && fazer 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
Use o comando ll para verificar se o módulo deflate está habilitado. Você pode ver se o arquivo 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
Mas useapachectl -t -D DUMP_MODULES | grep deflateO comando não pode ser consultado porque não está habilitado no arquivo de configuração do Apache.
Edite o arquivo de configuração principal do httpd. Por volta da linha 143, você pode ver que existem muitos.Módulo de Cargainstruções, adicionaremos novas instruções de carregamento de módulo abaixo desses LoadModules.
Na segunda parte da instrução de carregamento do módulo, você pode usar um caminho absoluto ou um caminho relativo. Porque ao instalar o Apache, a regra de prefixo (prefixo) é definida por meio do script ./configure, então você deseja especificar um determinado em. o arquivo de configuração do Apache O caminho para o arquivo, o caminho do prefixo pode ser omitido.
A tag IfModule é usada para carregar condicionalmente a configuração do módulo. Sua função é verificar se o módulo especificado está carregado no ambiente Apache atual. Somente quando o módulo for carregado, as instruções de configuração contidas na tag IfModule entrarão em vigor.
- [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>
Salve e saia, você pode usarhttpd -tPara detectar se há erros de sintaxe no arquivo de configuração Se solicitar Sintaxe OK, significa que não há erros.
Como o httpd precisa recarregar o arquivo de configuração modificado para que a configuração recém-adicionada tenha efeito, reinicie o serviço.
Neste momento, acesse o servidor web no navegador, pressione F12 no teclado para abrir as ferramentas do desenvolvedor, selecione o endereço IP do servidor web, e você poderá ver no cabeçalho da resposta que a tecnologia de compactação é gzip
A experiência termina
O cache de páginas da Web consiste em armazenar em cache algumas páginas que muitas vezes não mudam ou raramente mudam. Na próxima vez que o navegador acessar essas páginas novamente, não haverá necessidade de baixá-las novamente, melhorando assim a velocidade de acesso do usuário. O módulo mod_expires do Apache irá gerar automaticamente a tag Expires e a tag Cache-Control nas informações do cabeçalho da página. Com base nas tags, o navegador cliente decide obter a página no cache da máquina local para a próxima visita, sem fazer outra solicitação para. o servidor Reduzir a frequência e o número de acessos de clientes para atingir o objetivo de reduzir o tráfego desnecessário e aumentar a velocidade de acesso.
Implementar cache de páginas da web
Abra o arquivo de configuração principal httpd, habilite o módulo expires, adicione-o e reinicie o serviço.
- [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
Após reiniciar o serviço, acesse o navegador para acessar o servidor web e você verá que há mais duas linhas de informações no cabeçalho da resposta.
As informações de vulnerabilidade do software estão relacionadas a uma versão específica, portanto, o número da versão é muito útil para os invasores. Nas ferramentas do desenvolvedor no navegador, você pode ver as informações da versão do Apache no item do servidor no cabeçalho da resposta.
Se um invasor de rede obtiver informações sobre a versão do Apache, ele realizará ataques direcionados e causará perdas ao site. Portanto, no ambiente de produção real, o número da versão do Apache deve ser ocultado para reduzir o risco 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
Salve e saia, abra o arquivo httpd.default
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/extra/httpd-default.conf
- 在第55行就可以设置隐藏版本信息,这里改为Prod
- ServerTokens Prod
Você pode ver que as opções são fornecidas nos comentários:Definir como um dos seguintes: Completo | SO | Secundário | Mínimo | Principal | Prod
Opções | ilustrar |
Tokens de Servidor Completos | Retorna as informações mais detalhadas do servidor, incluindo o tipo de sistema operacional e a lista de módulos compilada. Por exemplo: Apache/2.4.41 (Unix) OpenSSL/1.1.1d PHP/7.3.11 |
ServerTokens SO | Somente o tipo de sistema operacional é retornado. Por exemplo: Apache/2.4.41 (Unix) |
ServerTokens Menor | Retorna os números das versões principais e secundárias. Por exemplo: Apache/2.4 |
Tokens de Servidor Mínimos | Retorna o número da versão principal. Por exemplo: Apache/2 |
ServerTokens Principais | Somente o número da versão principal é retornado. Por exemplo: Apache/2 |
Tokens de Servidor Produção | Retorna informações mínimas, mostrando apenas o Apache, omitindo o número da versão. Por exemplo: Apache |
Salve e saia, reinicie o serviço.Acesse o servidor web
Você pode ver que as informações da versão mostram apenas um Apache
O hotlinking do Apache é uma medida de proteção que evita que outros sites ou terceiros não autorizados criem links diretos para imagens, vídeos, áudios ou outros recursos em seu site.
Quando um site usa recursos diretamente do seu site, ele está, na verdade, consumindo sua largura de banda e recursos do servidor, possivelmente sem sua permissão.
Nome da CPU | nome do domínio | endereço de IP | sistema operacional | Principais softwares e versões |
apache1 | www.e1.com | 192.168.10.101 | CentOS 7.9 | httpd-2.4.25.tar.gz |
apache2 | www.e2.com | 192.168.10.201 | CentOS 7.9 | instalação httpd-2.4.25.tar.gz ou yum |
cliente | Windows 10 | Navegador |
Clone o primeiro servidor diretamente ou use yum -y install httpd para instalar o httpd e altere o endereço IP para 192.168.10.102
Modifique os nomes de host dos dois servidores
- 101主机
- [root@localhost ~]# hostname apache1
- [root@localhost ~]# bash
- [root@apache1 ~]#
- 201主机
- [root@localhost ~]# hostname apache2
- [root@localhost ~]# bash
- [root@apache2 ~]#
Modifique os arquivos hosts dos dois servidores web para que eles possam resolver os nomes de domínio correspondentes.
Siga as mesmas etapas abaixo para modificar o host 201
- [root@apache1 ~]# vim /etc/hosts
- 在hosts文件末尾追加
- 192.168.10.101 www.e1.com
- 192.168.10.201 www.e2.com
Para o arquivo hosts do host do cliente Win10, em C:WindowsSystem32driversetc, clique duas vezes no arquivo hosts para abri-lo com o Bloco de Notas.
Desligue o firewall e o mecanismo de segurança do kernel dos dois servidores Web, habilite o serviço httpd e tente ver se você consegue acessar os dois servidores Web no host do cliente.
- 在两个Web服务器操作
- [root@apache1 ~]# systemctl start httpd
- [root@apache1 ~]# setenforce 0
101 host é meu site e preciso roubar as fotos no servidor web 201 host.
Ou seja, www.e1.com rouba o link da imagem de www.e2.com
Venha para o anfitrião 201
Digite o diretório onde o httpd armazena os arquivos da página da web, arraste uma imagem e edite o arquivo 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>
Salve e saia. Neste momento, use o navegador para visitar www.e2.com na máquina host e você verá que há fotos na página da web.
Se quiser roubar imagens de outros sites, você precisa de um link para a imagem. Clique com o botão direito na imagem no navegador e selecione Copiar link da imagem.
Venha para 101 Host
Adicione um link para a imagem na página inicial do 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>
Salve e saia, vá para o host do cliente Win10 e visite os dois URLs www.e1.com e www.e2.com
Use F12 para abrir as ferramentas do desenvolvedor. Você pode ver na rede que o URL de solicitação e os links de imagem de www.e2.com são do próprio www.e2.com.
O URL de solicitação de www.e1.com é www.e1.com, mas a solicitação de imagem é o IP do host www.e2.com + link da imagem
Até agora, um hotlinking de imagem local simples foi implementado.
Se outro host roubar o link da imagem do host 201, apenas a imagem fixa será exibida em vez da imagem que a outra parte deseja roubar.
Importe outra imagem (error.jpg) para o diretório htdocs do host 201 (www.e2.com) que fornece a imagem original para experimentos anti-leeching.
Em seguida, edite o arquivo de configuração do httpd e habilite o módulo de reescrita (reescrita de endereço). O objetivo da reescrita é que se alguém solicitar meu logo.jpg, redirecione a solicitação para error.jpg.
Com a função de reescrita de endereço, a solicitação pode ser revisada e julgada. Caso a solicitação seja prefixada por www.e2.com, o acesso será permitido. Caso o prefixo da solicitação não seja www.e2.com, o acesso à imagem será. não ser 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 |
PermitirSubstituir TODOS | Permitir RewriteEngine e outras regras de reescrita em arquivos .htaccess. ALL: Permite que todos os tipos de diretivas de reescrita sejam substituídas por regras no arquivo .htaccess. Nenhum: não permite o uso de arquivos .htaccess neste diretório para substituir a configuração do servidor |
RewriteEngine ativado | Habilitar reescrita, este é o primeiro passo para habilitar regras de reescrita |
ReescreverCond | Definir condições de reescrita |
%{HTTP_REFERER} | É uma variável interna do Apache. Esta variável pode obter a URL nas informações do cabeçalho da mensagem de solicitação quando o usuário acessa. Combine o valor do Referer na solicitação |
!^http://www.e2.com/.*$ | Qualquer arquivo no URL (.*: corresponde a um ou vários caracteres) Indica que não corresponde a uma string começando com http://www.e2.com/ e terminando com um ou vários caracteres |
[NC] | A filtragem não diferencia maiúsculas de minúsculas |
Regra de reescrita | Definir regras de reescrita |
.*.(gif|jpg|swf)$ http://www.e2.com/error.png | Quando a condição de reescrita anterior corresponder, se o URL solicitado terminar com .gif, .jpg ou .swf Em seguida, a solicitação será redirecionada para http://www.e2.com/error.png .*: corresponde a qualquer número de qualquer caractere .: O ponto escapado pelo caractere de escape, aqui está o significado do ponto simples |
Salve e saia, reinicie o serviço.
Por fim, chegamos ao host do cliente (Win10) para testar e evitar que a imagem seja armazenada em cache pelo navegador, então use as teclas de atalho Ctrl + Shift + Delete para limpar o cache do navegador.
Então visite www.e2.com e tudo funciona bem
Ao visitar www.e1.com, o link da imagem roubada se torna a imagem error.png redirecionada.