AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / 问题

Perguntas[apache2](server)

Martin Hope
Ami Heines
Asked: 2024-12-17 15:55:09 +0800 CST

Como rejeitar o cabeçalho do Host se for diferente da URL da solicitação no Apache?

  • 7

Tenho um servidor Apache/2.4.6 (CentOS) com vários subdomínios como ServerAlias ​​no Apache VirtualHost.

algo como:

<VirtualHost *:443>
  ServerName mydomain.com
  ServerAlias a.mydomain.com
  ServerAlias b.mydomain.com

Cada empresa cliente deve acessar através de seu subdomínio e há bancos de dados diferentes para cada empresa cliente, por questões de segurança, há uma separação de dados.

Fui alertado por um especialista em segurança cibernética de que há uma vulnerabilidade em que um usuário de um subdomínio 'a.mydomain.com' pode acessar outro subdomínio 'b.mydomain.com' adicionando um cabeçalho de Host às chamadas do cliente para o servidor web.

No começo, tentei obter as informações em PHP, mas falhei, o PHP não obtém as informações dos cabeçalhos. Então, mudei para procurar uma solução para essa situação no nível do servidor web - Apache.

Quero detectar e rejeitar quando um usuário malicioso tenta enganar o servidor e enviar a solicitação para outro subdomínio usando um Host Header. Neste exemplo, o usuário deve ser atendido por a.mydomain.com e não b.mydomain.com:

curl 'https://a.mydomain.com/users/login' \
  -H 'Host: b.mydomain.com' \
  --data-raw $'{"email":"[email protected]","password":"*****"}'

Uma chamada normal do aplicativo do lado do cliente se parece com isto:

curl 'https://a.mydomain.com/users/login' \
  --data-raw $'{"email":"[email protected]","password":"*****"}'

Eu tentei RequestHeader unset host, mas não funciona como eu esperava.

Minha expectativa era que se o usuário malicioso enviasse um cabeçalho "Host", o servidor deveria ignorá-lo. Isso faria com que ambas as chamadas culr acima fossem efetivamente as mesmas.

Acho que o que acontece é que o Apache está usando a URL na chamada, mas se houver um cabeçalho "Host", ele tem precedência e é isso que é usado e o domínio original da URL é descartado.

Se for esse o caso, então RequestHeader unset hostnão envie nenhum host para meu código PHP, o que faz com que meu código seja interrompido, pois ele precisa saber qual empresa cliente o está chamando.

apache2
  • 2 respostas
  • 271 Views
Martin Hope
TRiG
Asked: 2024-09-10 21:36:22 +0800 CST

Na configuração do Apache, os redirecionamentos ou as regras de reescrita têm precedência?

  • 5

Quero que um domínio no Apache exista puramente como um redirecionamento. Para esse fim, crio /etc/apache2/sites-available/redirect.example.info.confo seguinte:

<VirtualHost *:80>
    ServerName redirect.example.info
    ServerAdmin webmaster@localhost
    Redirect / https://example.com/

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

Quando executo certbot --apache, isso é reescrito para:

<VirtualHost *:80>
    ServerName redirect.example.info
    ServerAdmin webmaster@localhost
    Redirect / https://example.com/

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

RewriteEngine on
RewriteCond %{SERVER_NAME} =redirect.example.info
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

E um novo arquivo /etc/apache2/sites-available/redirect.example.info-le-ssl.confé criado:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName redirect.example.info
    ServerAdmin webmaster@localhost
    Redirect / https://example.com/

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

SSLCertificateFile /etc/letsencrypt/live/ca-webs.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ca-webs.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Isso funciona como desejado. Os redirecionamentos são executados http://redirect.example.info→ https://redirect.example.info→ https://example.com. Mas não é óbvio para mim como está funcionando. O arquivo reescrito tem um Redirectcomando e um RewriteRulecomando, e eu pensei que o Redirect(vindo primeiro) teria precedência. Como esse arquivo é realmente avaliado?

apache2
  • 1 respostas
  • 25 Views
Martin Hope
inersha
Asked: 2024-06-12 04:38:35 +0800 CST

Qual é o melhor método para implementar a limitação de taxa com o Apache?

  • 5

Estou executando um servidor web Apache e gostaria de adicionar alguns limites de taxa simples por endereço IP individual.

No momento, estou recebendo o que parecem ser muitas solicitações de bot chegando ao site e isso está retardando um pouco as solicitações normais.

Eu gostaria de poder adicionar limitação de taxa para desacelerar os bots, ao mesmo tempo que não impede os rastreamentos do Googlebot quando ele aparece. Suponho que algo em torno de 20.000 solicitações/hora por IP deve bastar, provavelmente menos.

De qualquer forma, qual é o método mais simples para adicionar limitação de taxa ao Apache?

Até agora encontrei algumas opções:

  • mod_security
  • mod_evasive
  • mod_ratelimit
  • mod_limitpconn

Mas não parece haver uma solução clara e óbvia.

Alternativamente, parece que usar o Nginx como proxy reverso (e usar a limitação de taxa incorporada a ele) seria outra opção viável. Parece mais fácil de implementar do que o que descobri até agora também para o Apache. Embora eu prefira usar o Apache apenas se houver uma solução simples que esteja faltando.

Fail2Ban parece ser outra solução simples, mas não tenho certeza se poderia usá-lo para retornar 429códigos de resposta quando um visitante atingir o limite de taxa.

O que você recomendaria?

apache2
  • 1 respostas
  • 116 Views
Martin Hope
sKling
Asked: 2024-04-22 16:26:52 +0800 CST

Apache - Redirecionar www e não subdomínio para a mesma página sem obter 404 no TYPO3

  • 6

Portanto, tenho o seguinte problema: quando uso https://www.example.com como domínio, obtenho o conteúdo, mas quando uso https://example.com recebo a página de erro TYPO3 404 genérica.

Tentei configurar um redirecionamento com example.com e .* como caminho de origem e minha página inicial como destino e também tentei configurar baseVariants na configuração do site. É um pouco estranho que minha base normal seja apenas example.com e não www.example.com , mas www.example.com é aquele que está funcionando enquanto o outro dá apenas 404.

Preciso ter https://example.com e https://example.com configurados para obter a mesma página.

Eu uso o TYPO v12.4.14 em um Ubuntu 22.04.4 com um servidor Web Apache e PHP 8.1

[Isso é o que tentei com os redirecionamentos. Mas isso não funciona porque a expressão regular não possui delimitadores. Pelo menos foi isso que aprendi desde que fiz esse post inicialmente] 1

Edição 2: tentei fazer 2 vhosts para redirecionar example.com para www.example.com . Aqui estão meus arquivos de configuração:

Arquivo 1 exemplo.conf:

<VirtualHost *:80>

    ServerName example.com
    ServerAdmin [email protected]
    Redirect permanent / https://www.example.com

</VirtualHost>

Arquivo 2 exemplo-ssl.conf

<VirtualHost *:443>

    ServerName example.com
    ServerAdmin [email protected]
    Redirect permanent / https://www.example.com

</VirtualHost>

Agora funciona para http:// exemplo. com, mas não para https:// exemplo. com

Nota: perguntei isso antes no estouro de pilha e copiei para aqui.

Este é meu conf padrão 000-default-le-ssl.config

<IfModule mod_ssl.c>
<VirtualHost *:443>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    # ServerName example.com

    ServerAdmin [email protected]
    DocumentRoot "/var/www/Example/public/"

    <Directory "/var/www/Example/public">
         Options Indexes FollowSymLinks MultiViews
     AllowOverride All
     Order allow,deny
     allow from all
    </Directory>


    # 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


    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf



Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    Redirect permanent / https://www.example.com/

    # 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

    

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf


</VirtualHost>

apache2
  • 1 respostas
  • 36 Views
Martin Hope
SCMedia
Asked: 2024-01-18 20:45:53 +0800 CST

Atualização do Apache para 2.4.58 no Ubuntu 22.04

  • 5

Estou tentando atualizar o Apache de 2.4.52 para 2.4.58 em um droplet com Digital Ocean executando Ubuntu 22.04. Meu caminho de atualização é:

sudo apt update

E então:

sudo apt install apache

Mas recebo uma mensagem que diz

apache2 is already the newest version (2.4.52-lubuntu4.7)

apache2
  • 2 respostas
  • 39 Views
Martin Hope
Marc
Asked: 2023-11-18 18:47:50 +0800 CST

Ligação de host conf padrão do Apache

  • 6

Eu tenho uma instalação padrão do Apache2 no Ubuntu à qual adicionei mysite1.com com o seguinte:

 <VirtualHost mysite1.com:80>

Desde essa adição, quando eu ligo, http://<external-ip>não consigo mais configurar o site padrão do Apache em /etc/apache2/sites-enabled/000-default.conf:

 <VirtualHost *:80>

Por que está http://<external-ip>vinculado a mysite.com?

Quero que todos os cabeçalhos não configurados Host:atinjam o padrão e <external-ip>, IMO, não estejam configurados.

ATUALIZAÇÃO: A solução fornecida por @Daniel Ferradal é usar apenas curingas em todos os <VirtualHost *:80>blocos e empregar ServerNamediretivas para fazer mapeamento de nomes de host.

apache2
  • 1 respostas
  • 52 Views
Martin Hope
German Online Publisher
Asked: 2023-10-23 06:50:34 +0800 CST

Backlinks estranhos criados a partir do próprio domínio

  • 5

No Ahrefs notei que uma de minhas páginas tem estranhos (milhares) de backlinks que vêm de quatro domínios próprios (e um IP do meu próprio servidor dedicado).

Por exemplo: Este URL (que é suspeito)

https://florida-paintings.art/industrie/verbindungstechnik/kleben/10314-dosierung-von-1k-acrylatklebstoff-mit-komplexen-dichtraupengeometrien

é um backlink para este:

https://www.developmentscout.com/industrie/messtechnik/11934-caq-system

Outro exemplo: Este URL (que é suspeito)

https://51.89.98.21/branche/gebaeudetechnik/11720-smart-panel-okw-gehaeuse

é um backlink para este:

https://www.developmentscout.com/branche/mobile-arbeitsmaschine/11919-profi-drohne

O estranho também é que todos os URLs suspeitos têm uma tag canônica NÃO a "certa", mas sim uma tag de auto-referência para seu próprio URL.

A gestão dos meus domínios é realizada pelo servidor DNS da OVH.

Não tenho ideia de "quem" (CMS Joomla, Debian, ISP, etc.) está gerando todos esses URLs. Então, se alguém tiver uma ideia, eu agradeceria muito!

Obrigado Jens

apache2
  • 2 respostas
  • 111 Views
Martin Hope
craigmj
Asked: 2023-10-11 23:18:21 +0800 CST

O Apache com mod_http2 é vulnerável ao Http/2 Rapid Reset CVE-2023-44487

  • 8
Esta questão foi migrada do Webmasters Stack Exchange porque pode ser respondida em Server Fault. Migrado há 4 dias .

Não consigo encontrar nada sobre isso no site Apache, então desativei o http/2 por precaução. Alguma informação sobre como proteger o Apache2 contra isso?

apache2
  • 1 respostas
  • 1099 Views
Martin Hope
John
Asked: 2023-08-18 01:19:28 +0800 CST

Por que meu navegador está exibindo a linha Content-Type?

  • 5

Seguindo o que está descrito aqui --- https://httpd.apache.org/docs/2.4/howto/cgi.html --- Criei um pequeno documento Perl:

#!/usr/bin/perl
print "Content-Type: text/html; charset=utf-8\n\n";
print "Hello, World.";

e chamou first.pl. Eu também modifiquei para que pareça

#!/usr/bin/perl
print "Content-Type: text/html; charset=utf-8\r\n\r\n";
print "Hello, World.";

porque um amigo apontou que o significado de "\n" depende do sistema e o que é necessário é CR-LF CR-LF, mas os resultados são os mesmos.)

Quando eu olho localhost/~mylogin/first.plno navegador Chrome, recebo a seguinte saída:

Content-Type: text/html; charset=utf-8

Hello, World.

(O ; charset=...material é uma ligeira modificação do que os documentos do Apache sugerem, porque deixá-lo de fora também produziu uma linha de saída Content-Type, e algumas pesquisas sugeriram que o charset pode ser importante. Acontece que não fez diferença.)

As referências dos documentos do Apache dizem "onde quer que você coloque seu arquivo, você verá uma linha Hello, World. aparecer na janela do navegador".

Claramente, estou vendo duas linhas, a primeira das quais deveria ter sido tratada apenas como descrição do conteúdo restante, e acho que isso é um problema.

Espero que seja algum erro realmente básico e gostaria de receber qualquer sugestão.

Contexto

Estou em um Mac rodando Monterey 12.6.6

Comecei a seguir as instruções daqui .

A partir do httpd.confarquivo vanilla, fiz apenas algumas edições, descomentando o seguinte:

LoadModule perl_module libexec/apache2/mod_perl.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
Include /private/etc/apache2/extra/httpd-userdir.conf

E em /etc/apache2/extra/httpd-userdir.conf, eu descomentei

Include /private/etc/apache2/users/*.conf

Eu criei /etc/apache2/users/mylogin.confe dei a ele este conteúdo:

<Directory "/Users/mylogin/Sites/"> 
  AddLanguage en .en 
  AddHandler perl-script .pl 
  PerlHandler ModPerl::Registry 
  Options Indexes MultiViews FollowSymLinks ExecCGI 
  AllowOverride None 
  Require host localhost
</Directory>

eu corri

chmod +a "_www allow execute" ~

[em todos os casos acima, substituí "mylogin" pelo meu login real, é claro]

E então, seguindo as instruções do Apache, adicionei isso ao httpd.confarquivo:

<Directory "/Users/mylogin/Sites">
    Options +ExecCGI
    AddHandler cgi-script .cgi 
</Directory>
apache2
  • 2 respostas
  • 43 Views
Martin Hope
Jean
Asked: 2023-04-20 18:44:11 +0800 CST

ModSecurity: Como evitar que o corpo seja exibido na saída JSON?

  • 5

Usando o Modsecurity, escrevo as requisições capturadas em um log, no formato JSON. O campo do corpo é muito detalhado para o meu índice ELK e gera muitos erros de análise.

Posso desativar a presença do corpo no log JSON?

apache2
  • 1 respostas
  • 20 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve