Header Ads

Como configurar a autenticação HTTP básica no Apache

A autenticação HTTP básica usa nomes de usuário e senhas para proteger determinadas rotas do seu site. É comumente usado para bloquear painéis de administração e serviços de back-end e, em conjunto com o HTTPS, fornece boa segurança para recursos baseados na Web.

Como funciona a autenticação HTTP?

A autenticação HTTP básica protege certos recursos ou rotas com um nome de usuário e senha. Quando um usuário tenta acessar esse recurso, o navegador exibe uma caixa de diálogo solicitando credenciais antes de enviar qualquer coisa. Os painéis de administração da maioria dos roteadores domésticos são protegidos dessa maneira.

Nos bastidores, quando um usuário tenta acessar um recurso protegido, o servidor envia ao usuário um cabeçalho WWW-Authenticate junto com uma resposta 401 Não autorizada. O cliente envia de volta o nome de usuário e a senha apropriados, armazenados no cabeçalho da Autorização. O servidor verifica a combinação em uma lista de senhas com hash e o cliente tem permissão para conectar-se, se corresponder.

A autenticação HTTP básica requer o envio de senhas em texto sem formatação, você precisa ter o HTTPS / TLS configurado em seu servidor, ou você estará vulnerável a ataques do tipo intermediário. O HTTPS criptografará a conexão e bloqueará qualquer pessoa que tentar detectar sua senha. Você pode configurar um certificado gratuito com o LetsEncrypt ou, se estiver procurando proteger um servidor privado, crie e assine um você mesmo.

Gere um arquivo de senha

Para que a autenticação HTTP básica funcione, você precisará de um arquivo para atuar como um banco de dados de nomes de usuários e suas senhas correspondentes. Você pode criar isso com o utilitário htpasswd, que deve ser instalado com a instalação do Apache por meio da biblioteca apache2-utils. Se não estiver instalado, você poderá instalá-lo no gerenciador de pacotes da sua distribuição; para sistemas baseados no Debian como o Ubuntu, isso seria:

 sudo apt-get install apache2-utils 

Em seguida, você pode gerar o arquivo de senha com o sinalizador -c. Este comando cria um novo arquivo de senha e define a senha para o “ admin ” usuário:

 sudo htpasswd -c /etc/apache2/. htpasswd admin 

Você será solicitado a fornecer uma senha, que será hash e armazenada em /etc/apache2/. htpasswd. Se você deseja adicionar outro usuário, deixe de fora o sinalizador -c para anexar uma entrada.

Como alternativa, você pode alterar a opção AuthBasicProvider do Apache para permitir diferentes métodos de verificação de senhas, como nos bancos de dados. No entanto, a opção padrão de usar arquivos htpasswd funciona bem na maioria dos casos, especialmente com apenas alguns usuários.

Configurando o Apache

Existem algumas maneiras de configurar a autenticação de senha no Apache. Você ainda estará adicionando as mesmas opções de configuração, mas o Apache armazena arquivos de configuração em vários locais e o que você precisa editar depende da sua configuração.

Se você quiser habilitar a autenticação para tudo, edite o arquivo de configuração principal:

 /etc/apache2/apache2. conf 

Se você quiser autenticar uma pasta específica, edite o arquivo de configuração dessa pasta nos sites ativados. Por exemplo, a configuração padrão é em:

 /etc/apache2/sites-available/000-default. conf 

embora o seu provavelmente seja nomeado com base na rota. Se precisar fazer uma nova, você pode copiar esta configuração padrão e alterar o DocumentRoot.

Se você gerenciou a hospedagem e não tem acesso aos principais arquivos de configuração, provavelmente estará modificando um arquivo . htaccess, geralmente localizado na raiz da pasta do seu site. Por exemplo:

 /var/www/html/. htaccess 

Em qualquer caso, você desejará abrir qualquer arquivo que se adeque ao seu caso de uso e adicionar o seguinte dentro de um bloco de diretório. Se você estiver modificando um arquivo . htaccess, o & Diretório > o bloco não é necessário, apenas as linhas dentro:

 < Diretório "/ var / www / html" > AuthType Basic AuthName "Conteúdo restrito" AuthUserFile /etc/apache2/. htpasswd Requer usuário válido < / Directory > 

As configurações de autenticação serão aplicadas a todo o diretório, que você normalmente deseja definir para toda a raiz do documento, embora você possa aplicá-la apenas a uma pasta específica alterando o caminho:

 < Diretório "/ var / www / html / protected" > / Diretório & 

Isso definirá o tipo de autenticação e apontará o Apache para o arquivo de senha. Não é necessário nomear nada específico, para que você possa gerar arquivos de senha diferentes para diretórios diferentes.

Reinicie o Apache para aplicar as alterações:

 serviço sudo apache2 restart 

Verifique a rota protegida no seu navegador e você deve ser parado e solicitado uma senha. Se você não puder fornecê-lo, receberá um erro 401 não autorizado e acesso negado.

Lembre-se de que as senhas ainda são transmitidas em texto sem formatação, então você desejará ativar o HTTPS para Apache.

Via: How to Geek

Nenhum comentário