Nesse post estarei "dando uma luz" para quem usa o Apache como servidor web.
Ao instalar seus serviços web, o apache não cria o arquivo .htaccess em seu servidor, exceto se você está usando uma CMS (Sistema de Controle de Conteúdo, sigla em inglês) como por exemplo o WordPress ou o Joomla!.
Para achar seu arquivo pelo navegador, digite na barra de endereços a URL:
Substituindo "seusite" pelo link (URL) do seu site.
Dependendo das configurações do servidor, podem aparecer de muitas formas diferentes o seu conteúdo.
Por padrão ele vem oculto dentro de /var/www/ do seu servidor, para ativá-lo entre no terminal e digite
Substitua "site-a-editar" pelo nome do diretório do seu site.
Se tudo correr bem, você deverá ver algo assim:
Salve o arquivo e depois reinicie o serviço web do seu apache digitando:
Pronto, agora ele já está funcionando.
Você pode criá-lo por um editor de textos gráfico e salvá-lo como ".htaccess", tendo cuidado para que seja somente esse o nome do arquivo, sem extensões ou outras palavras e colocá-lo no servidor por meio de um upload.
Ou então no terminal digite
Substitua "exemplo.com" para o nome do seu site no apache.
Usando o atributo "Authentication" podemos restringir o acesso a certas áreas do site. Usar o htaccess é mais efetivo que o apache2.conf pois este necessita de permissões especiais e muito mais conhecimento técnico.
Para que isso funcione bem, existe a necessidade de criar um arquivo chamado .htpasswd para que este seja o banco de usuários e senhas aceitas na autenticação. Para criá-lo recomendo que use um editor gráfico de texto.
A criação e edição do .htpasswd é muito fácil, após ter criado o arquivo, abra-o e coloque nele os usuários e suas respectivas senhas como exemplo:
Não escreva mais nada nele e tenha cuidado para que cada usuário esteja em uma linha sozinho com sua senha e com entradas duplicadas (que podem causar "bugs" no sistema).
Caso necessite de criptografia para essas senhas, acesse este site aqui (em inglês) para que não ocorram erros nas configurações do arquivo de senhas.
Por razões de segurança, não coloque o arquivo .htpasswd no mesmo diretório do .htaccess.
Voltando ao .htaccess, adicione o código abaixo em seu arquivo para que o .htpasswd seja encontrado pelo servidor.
Substitua "nome-usuario-local" pelo nome do usuário do servidor local e "pasta-diferente-qualquer" pelo nome da pasta que escolheste para o arquivo .htpasswd . Ao lado de "AuthName" coloque a mensagem entre aspas que vai ser vista no navegador pelo usuário. Somente altere a segunda linha se for necessário, caso contrário deixe-a como está.
Não altere as duas últimas linhas, pois elas que vão tratar e filtrar os dados inseridos pelo usuário no navegador.
Pronto, agora o .htaccess está funcional e com um sistema básico de credenciais para acesso.
Você pode perguntar-se, "Por que eu faria isso? Elas não estão funcionando bem?". Sim, porém quando não muda-se as páginas padrão, elas exibem informações como a porta do seu servidor que está com o serviço httpd rodando, além de qual sistema operacional está rodando o apache (veja a imagem acima), então não é recomendável deixá-las padrão.
Para alterá-la é bem simples, vá até o .htaccess e adicione a seguinte linha
Substitua "404" pelo erro que deseja mudar e "/new404.html" pela página a qual deva ser exibida caso o erro ocorra. Não esqueça que cada redirecionamento tem de estar em uma linha sozinho.
Outro exemplo fictício:
No exemplo acima, os erros foram redirecionados para a página principal do site.
Se quiser um guia completo de quais códigos numéricos de erro colocar no seu arquivo entre aqui na Wikipedia.
Porque fazer isso? Para que evite que o usuário caia em páginas do tipo "index of /". Partindo do pressuposto de que seu servidor só precisa exibir páginas web, não é necessário deixar as pastas acessáveis externamente.
Fazer isso é bem simples, é só adicionar o código abaixo no arquivo .htaccess
Pronto, as páginas do tipo "index of /" estarão inacessíveis pelo navegador.
Com o código abaixo colocado no seu arquivo .htaccess
Substitua ".htaccess" na primeira linha pelo caminho do arquivo que quer bloquear.
Caso necessário, substitua a última linha por "Allow nome-usuario" (para liberar um usuário específico) ou "Allow valid-user" (para liberar qualquer usuário logado).
Uma ideia para bloquear o acesso remoto é bloquear qualquer arquivo de log, de backup e, caso seja da política da sua empresa, qualquer outro que não é para ser visto por ninguém, usando o código acima.
Já aviso que para cada arquivo vai ser necessário um novo bloco de código com o seu caminho, etc.
É possível que somente configurando corretamente o arquivo .htaccess a segurança do seu servidor seja aumentada drasticamente, principalmente contra as chamadas "dorks" e os script kiddies da vida.
http://stackoverflow.com/questions/11728976/how-to-deny-access-to-a-file-in-htaccess
http://httpd.apache.org/docs/current/howto/htaccess.html
https://www.digitalocean.com/community/tutorials/how-to-use-the-htaccess-file
Espero que tenha ficado claro e até a próxima pessoal.
Ao instalar seus serviços web, o apache não cria o arquivo .htaccess em seu servidor, exceto se você está usando uma CMS (Sistema de Controle de Conteúdo, sigla em inglês) como por exemplo o WordPress ou o Joomla!.
Visualizando o arquivo no navegador
Para achar seu arquivo pelo navegador, digite na barra de endereços a URL:
http://seusite/.htacess
Substituindo "seusite" pelo link (URL) do seu site.
Dependendo das configurações do servidor, podem aparecer de muitas formas diferentes o seu conteúdo.
Acessando o .htaccess em servidores linux
Por padrão ele vem oculto dentro de /var/www/ do seu servidor, para ativá-lo entre no terminal e digite
sudo nano /etc/apache2/site-a-editar/default
Substitua "site-a-editar" pelo nome do diretório do seu site.
Se tudo correr bem, você deverá ver algo assim:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Salve o arquivo e depois reinicie o serviço web do seu apache digitando:
sudo service apache2 restart
Pronto, agora ele já está funcionando.
Editando o .htaccess em servidores linux
Você pode criá-lo por um editor de textos gráfico e salvá-lo como ".htaccess", tendo cuidado para que seja somente esse o nome do arquivo, sem extensões ou outras palavras e colocá-lo no servidor por meio de um upload.
Ou então no terminal digite
sudo nano /var/www/exemplo.com/.htaccess
Substitua "exemplo.com" para o nome do seu site no apache.
Alterando as permissões de autenticação
Usando o atributo "Authentication" podemos restringir o acesso a certas áreas do site. Usar o htaccess é mais efetivo que o apache2.conf pois este necessita de permissões especiais e muito mais conhecimento técnico.
Para que isso funcione bem, existe a necessidade de criar um arquivo chamado .htpasswd para que este seja o banco de usuários e senhas aceitas na autenticação. Para criá-lo recomendo que use um editor gráfico de texto.
A criação e edição do .htpasswd é muito fácil, após ter criado o arquivo, abra-o e coloque nele os usuários e suas respectivas senhas como exemplo:
joao:senhadeleaqui
maria:amo!minhamae
lucas:sacul2015
Não escreva mais nada nele e tenha cuidado para que cada usuário esteja em uma linha sozinho com sua senha e com entradas duplicadas (que podem causar "bugs" no sistema).
Caso necessite de criptografia para essas senhas, acesse este site aqui (em inglês) para que não ocorram erros nas configurações do arquivo de senhas.
Por razões de segurança, não coloque o arquivo .htpasswd no mesmo diretório do .htaccess.
Voltando ao .htaccess, adicione o código abaixo em seu arquivo para que o .htpasswd seja encontrado pelo servidor.
AuthUserFile /usr/local/nome-usuario-local/pasta-diferente-qualquer/.htpasswd
AuthGroupFile /dev/null
AuthName "Mensagem a ser exibida solicitando a senha"
AuthType Basic
Require valid-user
Substitua "nome-usuario-local" pelo nome do usuário do servidor local e "pasta-diferente-qualquer" pelo nome da pasta que escolheste para o arquivo .htpasswd . Ao lado de "AuthName" coloque a mensagem entre aspas que vai ser vista no navegador pelo usuário. Somente altere a segunda linha se for necessário, caso contrário deixe-a como está.
Não altere as duas últimas linhas, pois elas que vão tratar e filtrar os dados inseridos pelo usuário no navegador.
Pronto, agora o .htaccess está funcional e com um sistema básico de credenciais para acesso.
Alterando as páginas de erro padrão
Página de erro 404 padrão do apache |
Para alterá-la é bem simples, vá até o .htaccess e adicione a seguinte linha
ErrorDocument 404 /new404.html
Substitua "404" pelo erro que deseja mudar e "/new404.html" pela página a qual deva ser exibida caso o erro ocorra. Não esqueça que cada redirecionamento tem de estar em uma linha sozinho.
Outro exemplo fictício:
ErrorDocument 404 /index.php
ErrorDocument 500 /index.php
ErrorDocument 401 /index.php
ErrorDocument 402 /index.php
ErrorDocument 403 /index.php
No exemplo acima, os erros foram redirecionados para a página principal do site.
Se quiser um guia completo de quais códigos numéricos de erro colocar no seu arquivo entre aqui na Wikipedia.
Bloqueando acesso a todas as pastas do servidor
Porque fazer isso? Para que evite que o usuário caia em páginas do tipo "index of /". Partindo do pressuposto de que seu servidor só precisa exibir páginas web, não é necessário deixar as pastas acessáveis externamente.
Fazer isso é bem simples, é só adicionar o código abaixo no arquivo .htaccess
Options All -Indexes
Pronto, as páginas do tipo "index of /" estarão inacessíveis pelo navegador.
Restringindo acesso a qualquer outro arquivo pelo navegador
Com o código abaixo colocado no seu arquivo .htaccess
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>
Substitua ".htaccess" na primeira linha pelo caminho do arquivo que quer bloquear.
Caso necessário, substitua a última linha por "Allow nome-usuario" (para liberar um usuário específico) ou "Allow valid-user" (para liberar qualquer usuário logado).
Dica extra
Uma ideia para bloquear o acesso remoto é bloquear qualquer arquivo de log, de backup e, caso seja da política da sua empresa, qualquer outro que não é para ser visto por ninguém, usando o código acima.
Já aviso que para cada arquivo vai ser necessário um novo bloco de código com o seu caminho, etc.
Conclusão
É possível que somente configurando corretamente o arquivo .htaccess a segurança do seu servidor seja aumentada drasticamente, principalmente contra as chamadas "dorks" e os script kiddies da vida.
Referências (em inglês)
http://stackoverflow.com/questions/11728976/how-to-deny-access-to-a-file-in-htaccess
http://httpd.apache.org/docs/current/howto/htaccess.html
https://www.digitalocean.com/community/tutorials/how-to-use-the-htaccess-file
Espero que tenha ficado claro e até a próxima pessoal.
"Grandes conhecimentos trazem grandes responsabilidades"
0 comentários:
Postar um comentário