Como restringir o acesso a um recurso usando o Apache no Linux
- 2402
- 619
- Maurice Champlin
Restringir o acesso a um recurso é frequentemente necessário ao usar a web. Em aplicativos da Web complexos, isso geralmente é implementado usando um sistema de login que pode ser mais ou menos sofisticado. Se nossos requisitos são bastante básicos, no entanto, podemos usar o sistema de autenticação fornecido pelo Apache Web Server. Neste tutorial, veremos como podemos fazer isso.
Neste tutorial, você aprenderá:
- Como restringir o acesso a uma página da web usando o servidor da Web Apache
- Como armazenar as senhas de usuário em arquivos de texto sem formatação
- Como armazenar as senhas de usuário em um banco de dados
- Como permitir o acesso a vários usuários
Requisitos de software e convenções usadas
Categoria | Requisitos, convenções ou versão de software usada |
---|---|
Sistema | Independente da distribuição |
Programas | O servidor da web apache |
Outro | Privilégios de raiz para modificar arquivos de configuração |
Convenções | # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular |
Configuração básica
A configuração mais básica envolve as duas etapas: a criação de um arquivo de senha Onde as senhas dos usuários serão armazenadas e o uso de diretivas específicas no arquivo de configuração principal do servidor (a localização deste arquivo depende da distribuição que estamos usando: no Fedora e na família de distribuição Red Hat, o arquivo é /etc/httpd/http/conf
, enquanto na distribuição baseada em Debian, por exemplo, é /etc/apache2/apache2.conf
), em um arquivo de configuração do VirtualHost, ou dentro de um .htaccess
arquivo colocado dentro do diretório apropriado.
Se decidirmos usar esta última opção, devemos ter certeza de AuthConfig A diretiva pode ser substituída. Supondo o .htaccess
o arquivo está dentro do /var/www/html/restrito
Diretório, escrevíamos:
AllowoverRide AuthConfig
Criando o arquivo de senha
Criar um arquivo de senha é realmente fácil: tudo o que precisamos fazer é usar o htpasswd
utilidade, que geralmente vem com a instalação do Apache. É muito importante que o arquivo que contém as senhas dos usuários seja colocado em um diretório onde não possa ser acessado pelo público. Neste tutorial, criaremos o arquivo dentro do /etc/httpd
diretório.
Suponha que queremos permitir o acesso ao egdoc do utilizador. Para criar sua senha, executaríamos:
$ sudo htpasswd -c/etc/httpd/senhas egdoc
O htpasswd
O utilitário é usado para gerenciar senhas de usuário e armazená-las em arquivos de texto simples. Nesse caso, invocamos o utilitário e o usamos com o -c
Opção: é necessário para criar o arquivo do zero. Se o arquivo já existir, é truncado; portanto, quando precisamos anexar novas entradas, a opção deve ser omitida.
Fornecemos os dois argumentos: o primeiro é o caminho do arquivo de senha, o segundo é o nome do usuário para o qual queremos criar uma senha para. O comando nos levará a inserir uma senha para o usuário e confirmá -la:
Nova senha: re-type nova senha:
Não poderemos ver a senha quando a inserirmos. Se agora dermos uma olhada dentro do arquivo gerado, podemos ver que ele foi armazenado após hash com o formato Apache APR1 Hashing:
EGDOC: $ APR1 $ GEVSWC3P $ ZHR/MQMMN6G7TJ8FH8RCY/
Configure o servidor
Depois que nosso arquivo de senha estiver pronto, precisamos criar a configuração certa para o servidor da Web Apache. Como exemplo, vamos supor que queremos restringir o acesso ao /var/www/restrito
diretório que é o Documentroot
de um VirtualHost configurado da seguinte forma:
Teste de nome do servidor.LAN documentroot/var/www/reestried autytype Basic Authname "Área restrita!"AuthBasicProvider File AuthUserFile/etc/httpd/senhas exigem o EGDOC do usuário
Vamos examinar as diretivas que usamos nesta configuração.
Primeiro de tudo, usamos AuthType. Esta diretiva é usada para selecionar que tipo de autenticação queremos usar. Nesse caso, escolhemos "básico" como um valor: essa funcionalidade é fornecida pelo mod_auth_basic módulo. Outros valores possíveis são Nenhum, Digerir (fornecido pelo módulo mod_auth_digest) e Forma, que é fornecido pelo módulo mod_auth_form.
O AuthBasicProvider A diretiva é usada para declarar qual provedor deve ser usado para autenticação. Nesse caso, poderíamos ter omitido, já que arquivo é o valor padrão, fornecido pelo mod_authn_file módulo.
Com o Authname Diretiva, configuramos um reino. Essa configuração tem basicamente dois propósitos: como primeira coisa, a mensagem que fornecemos aqui, aparecerá como uma mensagem no prompt fornecido pelo servidor, por exemplo:
O site diz: “Área restrita!”
O "reino" também é usado pelo cliente, para decidir qual senha ela deve enviar para o servidor. Se o usuário já estiver autenticado, poderá acessar todos os recursos sob o mesmo reino, sem ter que fazer login novamente.
O AuthUserfile A diretiva é usada para apontar para o arquivo de texto sem formatação que hospeda a senha dos usuários que criamos antes com o htpasswd
Utilitário.
Finalmente, temos o Exigir diretivo. Com esta diretiva, podemos restringir o acesso a um recurso na base de alguns parâmetros como endereço IP do cliente ou, como neste caso, a autenticação como um usuário específico.
O /var/www/teste
diretório contém um arquivo de índice, índice.html
, onde acabamos de colocar o “acesso concedido!" mensagem. Depois que nossa configuração estiver pronta, podemos reiniciar o servidor:
$ sudo systemctl reiniciar httpd
Quando tentamos acessar a página, seremos solicitados a inserir um nome de login e uma senha:
O prompt de login do apacheSe fornecermos as credenciais certas, o acesso à página será concedido:
O acesso Apache concedidoUsando grupos
Na grande maioria dos casos, queremos permitir que vários usuários acessem um recurso. Nesses casos, queremos usar um arquivo de grupo onde associamos o nome de um grupo a uma lista separada por espaço de seus membros. Suponha que o caminho do nosso arquivo seja /etc/httpd/grupos
; Seu conteúdo seria:
Permitidos: Egdoc Tim Rob
Declaramos que os usuários de Egdoc, Tim e Rob são membros do Permissão Grupo: Para cada um deles, uma entrada no arquivo de senha deve ser adicionada. Neste ponto, precisamos alterar a configuração do servidor e adaptá -la à nova configuração:
Teste de nome do servidor.LAN documentroot/var/www/reestried autytype Basic Authname "Área restrita!"AuthBasicProvider File AuthUserFile/etc/httpd/senhas authGroupFile/etc/httpd/grupos requerem grupo permissão
Introduzimos uma nova diretiva, AuthGroupFile, e passou para ele o caminho do arquivo em que os grupos são mapeados para os usuários. Também mudamos o valor do Exigir diretivo; Agora, para poder acessar o recurso, um usuário deve fazer parte do Permissão grupo. Para tornar as alterações eficazes, precisamos reiniciar o servidor.
Armazenando senhas em um banco de dados
No exemplo anterior, vimos como armazenar as senhas dos usuários dentro de um arquivo de texto simples e simples. Esta é uma solução viável perfeita quando não temos muitos usuários. Quando a lista de usuários se torna bastante longa, pode ser bastante impraticável digitalizar todo o arquivo de senha para cada solicitação. Em casos como esse, podemos querer armazenar as senhas em um banco de dados.
Uma opção é criar um Dbm arquivo. Podemos realizar a tarefa usando o htdbm Utilitário. Para gerar um dbm Arquivo na mesma posição que usamos no exemplo anterior, podemos executar:
$ sudo htdbm -cb/etc/httpd/passwd/senhas Egdoc nova senha: re -toype nova senha: banco de dados passwd/senha criada.
Como você pode ver, a sintaxe é muito semelhante à usada para htpasswd. Assim como antes, lançamos o comando usando o -c
opção, para criar o arquivo ou truncá -lo se já existir. Nesse caso, também usamos o -B
opção para usar o BCRYPT Algoritmo para a criptografia de senha. Como mudamos a maneira como as senhas são armazenadas, também devemos alterar a configuração do servidor:
Teste de nome do servidor.LAN documentroot/var/www/reestried autytype Basic Authname "Área restrita!"AuthBasicProvider dbm authdbmuserfile/etc/httpd/passwd/senhas requerem egdoc do usuário
O que mudamos acima é o valor que passamos para o AuthBasicProvider Diretiva, que agora é dbm. Nós também substituímos o AuthUserfile diretiva com Authdbmuserfile, fornecendo como antes, o caminho do arquivo em que a senha é armazenada. Para que esta configuração funcione, devemos ter o mod_authn_dmb módulo ativado.
Conclusão
Neste tutorial, vimos como restringir o acesso a um recurso e implementar um sistema de autenticação de login simples usando o servidor da Web Apache. Vimos como armazenar senhas em arquivos de texto simples ou em um dbm Formato do banco de dados. Também vimos como permitir o acesso a vários usuários usando um Arquivo de grupo e quais diretivas devem ser usadas para atingir nosso objetivo.
Tutoriais do Linux relacionados:
- Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
- Coisas para instalar no Ubuntu 20.04
- Ubuntu 20.04 WordPress com instalação do Apache
- Tutorial do SQLite Linux para iniciantes
- Instalação do Ampache Raspberry Pi
- Como migrar o Apache para o nginx convertendo o VirtualHosts para…
- Mastering Bash Script Loops
- Instale o MySQL no Ubuntu 20.04 LTS Linux
- Como instalar o MySQL no Almalinux
- Tutorial do LFTP sobre Linux com exemplos
- « Como instalar o Docker no Ubuntu 20.04 fossa focal lts
- Como monitorar a integridade do arquivo no Linux usando osquery »