Como restringir o acesso a um recurso usando o Apache no Linux
- 2431
- 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
Como restringir o acesso a um recurso usando o Apache no Linux 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 apache Se fornecermos as credenciais certas, o acesso à página será concedido:
O acesso Apache concedido Usando 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 »