A AWS não pode definir cabeçalhos através do Apache

1

Estou tentando enviar cabeçalhos de resposta HTTP do Apache em uma instância do Amazon Linux 2 AMI EC2. Eu tinha tentado originalmente fazer isso em httpd.conf e tentei algumas variações ...

link

Header always set X-Frame-Options "SAMEORIGIN"

Mas o cabeçalho não está definido. Então imaginei que talvez eles estivessem sendo redefinidos em algum ponto da linha, mas pelo menos .htaccess deveria ser capaz de defini-los, então eu tentei algumas variações ...

.htaccess

Header set ApacheFoo ApacheBar
Header add Strict-Transport-Security "max-age=31104000; includeSubdomains"

Mas, novamente, nenhum desses cabeçalhos está definido.

No entanto, se eu usar o PHP para definir os cabeçalhos, ele funciona bem ...

index.php:

<?php
header("phpfoo: phpbar");
die(print_r(headers_list(), 1));

Eu tenho o cabeçalho phpfoo: phpbar aparecendo no DevTools do Chrome, mas nenhum dos definidos diretamente no Apache foi definido.

A solução .htaccess funciona bem na minha configuração local do Windows + Apache, mas não na AWS, por isso estou assumindo que o problema é específico e estou querendo saber se existem algumas peculiaridades específicas dessa plataforma que eu preciso conhecer?

Mais informações

O módulo de cabeçalhos é definitivamente carregado. Se eu executar sudo httpd -S (eu tenho que usar sudo para executar este comando ou há um problema de permissão para acessar um arquivo .pem requerido para SSL, o Apache inicia bem então eu suponho que isto não é um problema se imbuído com suas permissões), esta é a saída (informações específicas do host substituídas por asteriscos):

VirtualHost configuration:
*:80                   *.com (/etc/httpd/conf/httpd.conf:44)
*:443                  is a NameVirtualHost
         default server ip-*-*-*-*.us-east-2.compute.internal (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost ip-*-*-*-*.us-east-2.compute.internal (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost *.com (/etc/httpd/conf/httpd-le-ssl.conf:2)
                 alias www.*.com
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex authdigest-opaque: using_defaults
Mutex watchdog-callback: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex authdigest-client: using_defaults
Mutex lua-ivm-shm: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/run/httpd/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex cache-socache: using_defaults
PidFile: "/run/httpd/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="apache" id=48
Group: name="apache" id=48
    
por Deji 07.09.2018 / 21:51

1 resposta

0

Minha melhor e única resposta até agora é: desista do Amazon Linux 2.

Após tentar e falhar na configuração de um proxy reverso Nginx na esperança de definir os cabeçalhos e contornar o problema (o Amazon Linux 2 parece não ter os utilitários make necessários para construir mod_rpaf - isso foi Na última gota), criei uma nova instância usando o Ubuntu e iniciei um longo processo de configuração de tudo o que tinha configurado no Amazon Linux 2, mas era relativamente mais fácil e menos confuso no Ubuntu e havia muito mais tutoriais úteis para trabalhar em geral.

No final, acabei sendo capaz de adicionar Nginx na pilha como um bônus, tendo um proxy reverso para o Apache, e agora não há nenhum cabeçalho de configuração de problema no Apache.

Para outras pessoas com esse problema, ou considerando o uso da AWS para executar um servidor da Web Apache, meu conselho dessa experiência é: não use o Amazon Linux 2!

Não apenas a configuração de cabeçalhos do Apache simplesmente não parece funcionar (o que é fundamental para ativar alguns recursos de segurança modernos que não dependem do PHP funcionando o tempo todo), mas em geral tudo é muito mais fácil e flexível usando um Construção do Ubuntu. Não há bons documentos da AWS para a compilação do Ubuntu, mas o resto da Internet tem cobertura e você pode aplicar as partes específicas da AWS (grupos de segurança, IP elástico e rota 53) do tutorial do Amazon Linux 2.

    
por 08.09.2018 / 16:31