• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

Segurança em Apache I

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Aspectos importantes a ter em conta na segurança de Apache. Autenticação e autorização de usuários com Apache.




Por Carlos Cuenca Díaz


Quando um servidor apache recebe uma petição de uma página web, antes de devolver o resultado, realiza várias ações para verificar que a petição está autorizada.

As distintas ações que realiza para verificar a validade da aplicação pode se agrupar em três tipos: Autenticação, Autorização e Controle de Acesso.

A autenticação é o processo pelo qual se verifica a identidade de uma pessoa. De uma forma simples, este processo pode se realizar mediante um nome de usuário e uma senha, porém pode-se chegar a utilizar outros métodos para validar a identidade de uma pessoa, como mediante o uso de certificados, cartões, etc…

Em apache a autenticação pode estar gerenciada por diferentes módulos, dependendo da forma de implementação. Decide-se realizá-la gerenciando arquivos com listas de usuários e senhas (encriptadas), deverá utilizar o módulo mod_auth. Entretanto, se decidir realizá-la mediante banco de dados, deverá utilizar os módulos mod_auth_dbm.

A autorização é o processo pelo qual se verifica que um usuário com uma identidade conhecida, tem acesso ao recurso solicitado. Para realizar esta ação, costuma-se utilizar listas de permissões nas quais se enumeram cada uma das ações que pode realizar um usuário, ou as que não pode fazer. Normalmente, para simplificar o gerenciamento destes arquivos, os usuários costumam se unir em grupos proporcionando as permissões ao grupo.

Em apache a autorização a recursos é gerenciada mediante a diretriz <directory> no arquivo principal de configuração, ou então mediante a configuração da pasta através de arquivos .htaccess.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
O controle de acesso é o processo pelo qual se verifica que a máquina desde a qual se fez a petição, tem acesso ao recurso. Os controles de acesso se utilizam para limitar e controlar as máquinas que têm acesso a um recurso independentemente do usuário que acessa, já que estes controles se realizam antes de se realizar o processo de autenticação.

Em apache, o controle de acesso pode se realizar mediante as diretrizes <directory><files> e <location>, ou através do arquivo de configuração .htaccess para controlar uma pasta especifica.

Em todo caso e para poder realizar a configuração das três características aqui enumeradas, autenticação, autorização e controle de acesso, é necessário ter a diretriz AllowOverride com o valor AuthConfig, para assim permitir o uso das distintas diretrizes de autenticação.

Autenticação e autorização de usuários em Apache. Mod_auth

Para configurar o servidor apache para que seja capaz de autenticar aos usuários e verificar a autorização do mesmo ao recurso solicitado, é necessário realizar as seguintes ações:


1.Criar um arquivo com usuários
2.Criar um arquivo com grupos (se for necessário)
3.Definir as diretrizes no arquivo de configuração ou mediante um arquivo .htaccess

Nos arquivos de usuários de apache, em cada linha se especifica um usuário, escrevendo o nome de usuário separado de dois pontos, seguido da senha encriptada com MD5.

Nos arquivos de grupos de apache, em cada linha se especifica um grupo escrevendo o nome do grupo seguido de dois pontos, e a seguir separado por espaços, os nomes dos usuários.

É recomendável que tanto os arquivos de usuários como os de grupos, se encontrem armazenados fora dos diretórios publicados, para que desta forma ninguém possa baixá-los. Ainda assim, só o usuário root deveria estar autorizado a escrever nele, enquanto que só o usuário que executa o serviço web, deveria estar autorizado para lê-lo.

O arquivo de grupos pode ser criado manualmente, porém o arquivo com os usuários é recomendável criá-lo mediante a utilidade htpasswd, que se encontra na pasta com os binários de apache.

Para criar um arquivo de usuário se utilizará a seguinte sintaxe:

htpasswd -c rota/passwords usuario
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
O flag -c se utiliza para criar um arquivo novo, pelo qual só se deverá colocar a primeira vez que se cria o arquivo, senão o apagará.

Os módulos que intervém na autenticação e autorização são os de core e mod_auth.

As diretrizes de mod_auth necessárias para configurar a autenticação e autorização são as seguintes:


•AuthUserFile: seve para especificar a rota onde se armazenará o arquivo de usuários.
•AuthGroupFile: serve para especificar a rota onde se armazenará o arquivo de grupos.

As diretrizes de core necessárias para complementar a configuração do módulo são:


•AuthType: seleciona o tipo de autenticação de usuários que se utilizará para autenticar a um usuário. Pode variar por diretório. Os valores possíveis são Basic e Digest. Com Basic, a transferência das chaves se fará sem cifrar, e com digest se farão cifradas.
•AuthName: especifica um nome do domínio para o qual se solicita o acesso, este nome aparecerá na tela onde se pede a chave, e por sua vez servirá para que o cliente identifique a senha que deve utilizar ao enviar uma petição a uma área determinada.
•Require: seleciona os usuários que podem acessar a uma área determinada, os usuários podem ser determinados através de nomes ou grupos.
 
Topo