quinta-feira, 19 de agosto de 2010

SSH (Secure Shell) - Básico

Segue algumas noções básicas e úteis do SSH (Secure Shell), uma forma segura e rápida de acessar servidores e outros equipamentos rodando um server ssh.

para conectar num servidor ssh digite:
ssh ip_ou_host_do_servidor

para conectar com um usuário específico:
ssh usuario@ip_ou_host_do_servidor


para conectar com uma porta diferente da padrão ssh (22):
ssh -p numero_porta usuario@ip_ou_host_do_servidor

para copiar um arquivo através do ssh use o comando:
scp ip_ou_host_do_servidor:/diretorio/arquivo /diretorio_destino/

caso o ssh esteja configurado para uma porta diferente da padrão (22) também será necessário indicá-la:
scp -P numero_porta ip_ou_host_do_servidor

Alguns exemplos de uso:


ssh 192.168.1.10

ssh -p 9999 root
@192.168.1.10

scp -P 9999 root@192.168.1.10 ~/Download/


scp -P 9999 ~/Dowload/arquivo.csv root@192.168.1.10:/home/usuario/


scp -P 9999 ~/Download/arquivo.csv root@192.168.1.20:~/Download/arquivo_renomeado.csv


caso não seja especificado o login do usuário para acesso, será usado o login com o qual foi executado o comando.

Ao acessar um servidor, é registrada uma chave RSA no arquivo ~/.ssh/known_hosts. Nas próximas conexões, o cliente ssh irá conferir a chave do RSA do servidor com a chave ja cadastrada no arquivo. Isto serve para evitar interceptações de terceiros. Se for mudado o servidor, e mantido o mesmo ip, será necessário remover a linha do arquivo para que a nova chave seja aceita, senão, lhe aparecerá uma mensagem de erro alertando que a chave não confere com a original.


Para modificar as configurações do servidor ssh no linux, modifique o arquivo /etc/ssh/sshd_config. Neste arquivo você encontra diversas configurações interessantes. Duas muito boas são port, onde você define a porta em que o servidor irá receber conexões, e PermitRootLogin onde você pode definir se será ou não aceito o login como root no ssh. É aconselhável deixar como no, pois como o root é um usuário padrão em todas as distribuições, ele se torna um dos principais alvos dos ataques "Brute Force".

Para que as modificações tenham efeito é necessário reiniciar o serviço:

/etc/init.d/ssh stop
/etc/init.d/ssh start

Para windows um bom programa cliente ssh é o Putty (http://www.putty.org/), compatível com diversas versões do windows e também encontrado na versão portátil.


Por hoje é só, vão pela sombra e usem camisinha!
=)

terça-feira, 17 de agosto de 2010

Protegendo pastas do Apache com senha de acesso

Muitas vezes quando estamos utilizando um servidor apache, seja no trabalho ou por diversão, criamos diretórios que não gostariamos que todos vissem, apenas pessoas autorizadas. Para resolver este problema existe uma maneira fácil, simples e rápida.

Vamos usar o comando htpasswd

Como configuração inicial utilize o comando

htpasswd -c /diretorio/arquivo_senha usuario

Explicando o comando:

o Parâmetro -c cria um novo arquivo, se o arquivo já existir ele sobreescreve, perdendo as informações anteriores.

/diretorio/arquivo_senha é o caminho onde esta ou estará o arquivo com as senhas. Algumas pessoas usam por padrão o diretório que irá ser protegido. Eu prefiro um diretório diferente, assim podemos padronizar as senhas, usando o mesmo arquivo de usuários para mais de uma pasta e deixando-o num local fora das pastas do apache.

usuario - aqui você coloca o login do usuário para acessar a pasta (este login não tem relação com os logins do linux, não é necessário criá-lo no servidor e sua única função  é o acesso à pasta do apache definida).

Logo após o comando ele pedirá para digitar a senha para o usuário, e criará o arquivo.

Para cadastrar novos usuários sem excluir os anteriores, mantendo o arquivo, use a mesma sintaxe sem o parâmetro -c

htpasswd /diretorio/arquivo_senha usuario

Também pode ser cadastrado desta forma:

htpasswd -b /diretorio/arquivo_senha usuario senha

Para deletar use o parâmetro -D

htpasswd -D /diretorio/arquivo_senha usuario


Após criar o arquivo devemos modificar o arquivo de configurações do apache que se encontra por padrão no caminho /etc/apache2/apache2.conf.
Adicione as seguintes linhas:

<directory "/var/www/minha_pasta/">
AllowOverride None
Options Indexes MultiViews
Order allow,deny
Allow from all

AuthType Basic
AuthName "Pasta Restrita"
AuthUserFile
 "/etc/meu_arquivo_de_senhas"
Require valid-user

</directory>



Na primeira linha, em <directory "/var/www/minha_pasta">, você deve modificar para o diretório que você quer definir a restrição.
Authname - é onde você coloca o título que irá aparecer na janela de autenticação.
AuthUserFile - você indica o caminho do arquivo de senhas.
Require - Caso você deseje que todos os usuários que estejam cadastrados no arquivo de senhas tenham acesso, deixe valid-user. Você pode modificar valid-user para um usuário específico, cadastrado no arquivo.

É necessário criar um bloco para cada diretório diferente que você queira proteger. As subpastas são automaticamente protegidas.

Após feita as modificações, salve o arquivo e reinicie o apache:

/etc/init.d/apache2 stop
/etc/init.d/apache2 start


O controle de acesso já deverá estar funcionando na pasta cadastrada.

"That's all folks" =)

domingo, 8 de agosto de 2010

- Hello World -


Não sou um leitor assíduo de blogs, mas muitas vezes ao pesquisar procurando soluções para alguns problemas, encontrei posts interessantes que me ajudaram.
Não me sobra muito tempo para ficar frequentando fóruns, e além do mais, muitas vezes esqueço de algumas soluções e tenho que procurá-las novamente. Por causa disto decidi criar este blog, e postar dicas, soluções, tutoriais e ideias que possam ser úteis a quem procura uma luz no fim do túnel, assim como eu procurei várias vezes e ainda procuro. 
Tentarei na maioria das vezes ser o mais prático possível, pois o objetivo é a solução do problema não ensinamentos avançados (se um apt-get resolve o problema, pra que compilar?), mas também comentarei bem as dicas, por que eu não gosto de fazer coisas que eu não esteja entendendo o que está acontecendo, e aposto que vocês também não.
Se alguém achar uma solução melhor que  alguma que eu postar, pode mandar para meu e-mail, ficarei feliz em publicá-las se forem melhores.

Valeu pessoal!!!

Vinicius Gerevini