Habilitando servidor webdav usando Apache no Ubuntu Linux

Ferramentas: Ubuntu 9.04, apache2, ldap

WebDav é um tipo se serviço que permite a download e upload de arquivos de um servidor
de uma forma bastante transparente. É um padrão aberto e multiplataforma especificado na RFC 4510.
Permite o mapeamento de uma URL como se fosse um diretório local.

Esse artigo irá explicar como criar um servidor WebDav usando o servidor Web Apache 2 na distribuição Ubuntu Linux.
Esse artigo presume que você tenha conhecimento da instalar e configuração de servidor apache, no caso via pacotes debian,
porém se você souber extrair as informações aqui contidas poderá instalá-lo das outras diversas formas possíveis,
os locais de diretórios aqui abordados são do padrão debian-ubuntu.

1. PRIMEIRAS CONFIGURAÇÕES

Instale o apache e suas dependencias.

Iremos adicionar um novo host virtual, na porta 8080 para efetuar nossos testes, assegure-se que outra aplicação não está utilizando essa porta, senão escolha outra. Para criar um novo VirtualHost basta adicionar no arquivo “/etc/apache2/ports.conf” as seguintes linhas:

NameVirtualHost *:8080
Listen 8080

2. CONFIGURANDO O WEBDAV

Os diretórios a seguir são somente para organizar melhor a aplicação, você pode cria-los como desejar.
Crie a pasta /var/webdav/ e crie dentro as seguintes pastas:
*htdocs/ : será o local onde os arquivos serão inseridos, será o dav público;
*htdocs/basic/ : para exemplificar a autenticação basic;
*htdocs/digest/ : para exemplificar a autenticação digest;
*htdocs/ldap/ : para exemplificar a autenticação ldap;
*htdocs/ldap_grupo/ : para exemplificar o uso de ldap e grupos;
*config/ : pasta criada para conter o arquivo de senhas caso seja o caso, será visto depois.
altere o dono da pasta htdocs para www-data
sudo chown www-data /var/webdav/htdocs/

Agora é necessario adicionar o módulo de webdav, execute o comando a seguir (Apache2 deverá estar instalado):

# a2enmod dav
# a2enmod dav_fs

Esse comando simplesmente criará um link dos módulos desejados de /etc/apache/mod-avaliable/… para /etc/apache/mod-enable/…

Agora criaremos o seguinte arquivo “/etc/apache/site-enabled/webdav” com o conteúdo a seguir:

<VirtualHost *:8080>
	DocumentRoot /var/webdav/htdocs/
        <Directory /var/webdav/htdocs/>
		DAV On
	</Directory>
</VirtualHost>

Agora reinicie o servidor e teste o endereço http://localhost:8080

# /etc/init.d/apache2 restart

3. ACESSANDO WEBDAV NO UBUNTU USANDO NAUTILUS

Para utilizar uma url webdav no linux você pode utilizar o Nautilus, para isso faça os seguintes passos:
*Abri um navegador de arquivos (nautilus)
*Clique em arquivo > conectar ao servidor…
*Selecione Webdav, e informe as configurações do nosso servidor (localhost|8080)

4. AUTENTICAÇÃO POR ARQUIVO: BASIC

Uma das formas de restringir o acesso ao nosso servidor webdav é criar um arquivo de senhas.

Adicione os módulos necessários executando o comando:

# a2enmod auth_basic
# a2enmod auth_file

Agora iremos criar um arquivo de usuários e senhas.
Execute o comando a seguir, onde teste é o nome do usuário que você deseja criar:

# htpasswd -c /var/webdav/config/passwd_basic.dav teste

O parametro “-c” significa create, caso o arquivo já exista irá ser substituido.

Agora modificaremos novamente o arquivo “/etc/apache/site-enabled/webdav” e adicionaremos dentro de <VirtualHost…>:

 	Alias /basic /var/webdav/htdocs/basic
	<Location /basic>
		AuthType Basic
		AuthName webdav
		AuthBasicProvider file
		AuthUserFile /var/webdav/config/passwd_basic.dav
		Require valid-user
	</Location>

Reinicie o servidor e teste.

5. AUTENTICAÇÂO POR ARQUIVO: DIGEST

A autenticação Digest é bastante similar à Basic, a diferença está somente na forma com que o password é enviado ao servidor,
no formato MD5 que o torna mais seguro para transmissão via internet e também que esse obedece o realm especificado em AuthName.

Adicione os módulos necessários executando o comando:

# a2enmod auth_digest

Execute o comando a seguir, onde webdav é o nome do realm e teste o nome do usuário que você deseja criar:

# sudo htdigest -c /var/webdav/config/passwd_digest.dav webdav teste

Vamos ao  “/etc/apache/site-enabled/webdav” e adicionamos dentro de <VirtualHost…>:

	Alias /digest /var/webdav/htdocs/digest
	<Location /digest>
		AuthType Digest
		AuthName webdav
		AuthUserFile /var/webdav/config/passwd_digest.dav
		Require valid-user
	</Location>

6. AUTENTICACAO EM SERVICO LDAP

Adicione os módulos necessários executando o comando:

# a2enmod ldap
# a2enmod authnz_ldap

Adicionaremos em “/etc/apache/site-enabled/webdav” dentro de <VirtualHost…>:

	Alias /ldap /var/webdav/htdocs/ldap
	<Location /ldap>
		AuthType Basic
		AuthBasicProvider ldap
		AuthName webdav
		AuthLDAPURL "ldaps://ldap.servidor.com:636/ou=EMPRESA,dc=pr,dc=gov,dc=br"
	</Location>

7. AUTENTICACAO EM SERVICO LDAP

Adicionaremos em “/etc/apache/site-enabled/webdav” dentro de <VirtualHost…>:

	Alias /ldap_grupo /var/webdav/htdocs/ldap_grupo
	<Location /ldap_grupo>
		Order deny,allow
  		Deny from All
		AuthType Basic
		AuthBasicProvider ldap
		AuthName webdav
		AuthzLDAPAuthoritative on
		AuthLDAPURL ldaps://ldap.servidor:636/ou=EMPRESA,dc=pr,dc=gov,dc=br?uid?sub
		Require valid-user
		AuthLDAPGroupAttribute memberUid
		AuthLDAPGroupAttributeIsDN off
		Require ldap-group cn=nome-do-grupo,ou=EMPRESA,dc=pr,dc=gov,dc=br
		satisfy any
	</Location>

8. WARNINGS

O warning “client used wrong authentication scheme: /basic”, parece ser normal quando temos multiplas validações em um mesmo domínio, acredito ser um bug do navegador ou uma associação ao realm.

9. CONCLUSÃO

Configurar um webdav no apache é bastante simples e pode ser bastante útil.

O resultado final do arquivo “/etc/apache/site-enabled/webdav” é:

#Para ignorar certificados SSL inválidos
LDAPVerifyServerCert off

<VirtualHost *:8080>
        ServerAdmin medianeira@gmail.com

        DocumentRoot /var/webdav/htdocs/
        <Directory /var/webdav/htdocs/>
		DAV On
	</Directory>
	
	Alias /basic /var/webdav/htdocs/basic
	<Location /basic>
		AuthType Basic
		AuthName webdav
		AuthBasicProvider file
		AuthUserFile /var/webdav/config/passwd_basic.dav
		Require valid-user
	</Location>

	Alias /digest /var/webdav/htdocs/digest
	<Location /digest>
		AuthType Digest
		AuthName webdav
		AuthUserFile /var/webdav/config/passwd_digest.dav
		Require valid-user
	</Location>
	
	Alias /ldap /var/webdav/htdocs/ldap
	<Location /ldap>
		AuthType Basic
		AuthBasicProvider ldap
		AuthName webdav
		AuthLDAPURL "ldaps://ldap.servidor.com:636/ou=EMPRESA,dc=pr,dc=gov,dc=br"
	</Location>
	
	Alias /ldap_grupo /var/webdav/htdocs/ldap_grupo
	<Location /ldap_grupo>
		Order deny,allow
  		Deny from All
		AuthType Basic
		AuthBasicProvider ldap
		AuthName webdav
		AuthzLDAPAuthoritative on
		AuthLDAPURL ldaps://ldap.servidor.com:636/ou=EMPRESA,dc=pr,dc=gov,dc=br?uid?sub
		Require valid-user
		AuthLDAPGroupAttribute memberUid
		AuthLDAPGroupAttributeIsDN off
		Require ldap-group cn=nome-do-grupo,ou=EMPRESA,dc=pr,dc=gov,dc=br
		satisfy any
	</Location>
</VirtualHost>

Referências:

http://httpd.apache.org/docs/2.2/howto/auth.html

http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html

  1. Nenhum trackbacks ainda.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.