Altere a porta de entrada do servidor SSH como medida de segurança

Mover para outro lugar a porta, a partir da qual o servidor SSH recebe conexões, é uma medida muito simples e eficiente para evitar ataques.
Qualquer cracker sabe que a porta padrão (default listening port) é a 22.

É a partir daí que um ataque de força bruta começa a contar.
Se o invasor não conseguir encontrar a porta de entrada, nos primeiros segundos da sua operação, ele pode desistir e passar para o próximo servidor da sua lista de vítimas.
Esta é uma das táticas de segurança por obscuridade. Em outras palavras, estamos apenas “mudando a porta de lugar” — não se trata de fortalecer a segurança, portanto.
Este método traz 2 problemas que convém levar em conta, antes de colocar em prática:

  1. se você esquecer onde colocou “a porta”, pode acabar trancado do lado de fora.
  2. certifique-se de usar uma porta que não esteja sendo usada por outro serviço ou daemon ou que já seja popularmente usado.

Se estes dois itens não forem problemáticos para você, prossiga com a configuração (que é muito simples).
Você pode obter uma lista de portas em uso (ou não) no sistema, dentro do arquivo ‘/etc/services’:


less /etc/services

Sugiro usar o nmap, se quiser obter uma relação mais completa, contudo.

Como editar o arquivo de configuração do servidor SSH

O procedimento trata de editar o arquivo de configuração do servidor SSH que costuma ficar em ‘/etc/ssh/’.
Use o seu editor favorito para abrir o arquivo ‘/etc/ssh/sshd_config’:


# comece com um backup:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo editor /etc/ssh/sshd_config

Localize a linha que define o ‘Port’ e mude o número para o que achar melhor.


Port 1234


Feito isto, grave o arquivo e saia.
Pode ser interessante anotar a nova porta usada em alguma folha de papel.
Para que as mudanças surtam efeito, reinicie o servidor SSH:


sudo service sshd restart

ou


sudo /etc/init.d/sshd restart

Seja cautelosa(o), agora.
Não desautentique da máquina, simplesmente, para testar.
Se houver problemas com os ajustes, você pode ficar trancado do lado de fora — como mencionei anteriormente.
O mais seguro é abrir um novo terminal para testar a conexão sob uma nova porta.
Se algo deu errado, copie de volta o arquivo de configuração, para verificar exatamente qual foi o problema.
Uma das possibilidades que podem atrapalhar que você consiga se autenticar via SSH, por outra porta, é a configuração do seu firewall.
Neste caso, cabe adequar a configuração do firewall aos ajustes que você fez ao sshd.
Depois disto, tente de novo.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Como fazer cópias entre 2 hosts com o scp

Se você acessa pelo menos um servidor remoto via SSH, provavelmente terá utilidade para um comando de cópia, que permite trocar arquivos entre um host e outro — também através de uma conexão segura.
É isto que o comando scp faz: copia arquivos entre hosts, dentro de uma rede — com o uso do ssh, para transferência segura dos dados.
Durante o processo, o scp irá pedir a mesma senha que vocẽ usa para se autenticar via ssh — uma vez que ambos fazem parte do mesmo conjunto de ferramentas.

O comando scp, tal como o cp, irá sobrescrever arquivos no destino.
Portanto certifique-se de estar digitando a coisa certa e mantenha seus backups em dia.

Para este post, vou usar exemplos simples, em cima dos quais, você poderá construir procedimentos mais complexos, posteriormente.
Recentemente, configurei o .bashrc de uma máquina remota, para apresentar um prompt da linha comando personalizado — o que me ajuda a saber exatamente aonde estou realizando algum procedimento.
Como eu gostaria que a máquina local também tivesse um prompt customizado, pensei em usar o scp para copiar o arquivo .bashrc de lá para cá.
Tendo o nome do host remoto (tatooine, no meu caso) e sua respectiva senha, proceda assim:


scp justincase@tatooine:.bashrc ./

The authenticity of host 'tatooine (192.168.5.4)' can't be established.
RSA key fingerprint is 20:96:8d:4e:1c:d6:d5:40:e3:83:0a:f9:30:04:50:30.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'tatooine,192.168.5.4' (RSA) to the list of known hosts.
justincase@tatooine's password: 
.bashrc                                                                                           100%    0     0.0KB/s   00:00    

Na primeira conexão, as ferramentas ssh pedem confirmação (yes/no) — após o quê, a adicionam à lista de hosts conhecidos.
Você pode usar a opção ‘-r’ para copiar um diretório recursivamente, também:


scp -r justincase@tatooine:temporario/ temp/

justincase@tatooine's password:
error.log                    100% 5627     5.5KB/s   00:00     
error.log.0                  100% 6534     6.4KB/s   00:00     
error.log.2017-05-31.gz      100% 2086     2.0KB/s   00:00     
error.log.2017-06-01.gz      100% 1553     1.5KB/s   00:01     
error.log.2017-06-02.gz      100%  744     0.7KB/s   00:00     
error.log.2017-06-03         100% 7960     7.8KB/s   00:00     
error.log.2017-06-04         100% 6534     6.4KB/s   00:00     

Para copiar (ou subir) um arquivo local para um endereço remoto, use o seguinte exemplo:


scp -l 14 -C Downloads/piwigo-netinstall.php justincase@tatooine:~/

justincase@tatooine's password:
piwigo-netinstall.php                                                                      100%   15KB  14.9KB/s   00:00

No exemplo, acima, adicionei estas 2 opções:

  • -l 14 — que limita a banda em 14 Kbps. O que pode ajudar a não sobrecarregar a sua rede. Neste caso, como o arquivo tem 15 Kb, não houve diferença perceptível.
  • -C — aplica compressão ao(s) arquivo(s), em trânsito. Novamente, o comando é irrelevante para este caso (mas serve como exemplo), em virtude do tamanho ínfimo do arquivo copiado.

E se eu quiser copiar o mesmo arquivo entre dois hosts remotos — tatooine e coruscant?
A maneira mais simples de realizar este trabalho é copiando o arquivo objeto da transferência temporariamente para a máquina local — fazendo-a funcionar como intermediária da transação.
Veja como:


scp -3 jcase@tatooine:~/logs.txt jcase@coruscant:~/logs.txt


jcase@tatooine's password: jcase@coruscant's password:

Para realizar a cópia, o scp vai precisar que você forneça as senhas de cada um dos hosts.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Como se conectar ao MySQL via Telnet

O Telnet é um protocolo de redes, com múltiplas aplicabilidades. Permitir conectar a um servidor MySQL é uma delas.
Neste texto, vou mostrar como é fácil (embora não muito útil) executar uma conexão deste tipo.
imagem de conexão mysql via telnet

Como se conectar ao MySQL via telnet

Embora alguns protocolos, tais como o SMTP e o POP sejam baseados no ASCII, conectar-se o servidor MySQL não vai trazer resultados práticos.
Infelizmente, não será possível sequer fornecer alguns comandos ao servidor.
Contudo, o procedimento é útil para determinar se o servidor está no ar.
Experimente o comando abaixo, para verificar por si mesmo:

telnet localhost 3306

Se o servidor MySQL estiver no ar, uma mensagem semelhante a que segue, será exibida:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
[
5.5.41-0ubuntu0.14.04.1$a['O6af�~%6"G|_EzZ2)mysql_native_passwordConnection closed by foreign host.

mysql conexão telnet
Clique para ver detalhes.

Use o comando netstat, para ter um idéia de quais portas TCP estão em uso, caso a porta 3306 não funcione para vocẽ:

netstat -tln
Conexões Internet Ativas (somente servidores)
Proto Recv-Q Send-Q Endereço Local          Endereço Remoto         Estado      
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               OUÇA      
tcp        0      0 127.0.1.1:53            0.0.0.0:*               OUÇA      
tcp        0      0 127.0.0.1:631           0.0.0.0:*               OUÇA      
tcp6       0      0 ::1:631                 :::*                    OUÇA

Magento: Baixe e instale via SSH.

magento-logo

introdução

Neste artigo, vamos abordar a instalação do Magento, via SSH, no seu site. Ou seja, vamos usar uma shell para fazer o download e deixar o aplicativo pronto para ser configurado em seu servidor.
O uso do SSH vai tornar este processo mais fácil e rápido e, como vamos fazer tudo no servidor, haverá, provavelmente, o benefício da velocidade de download de todo os pacotes necessários.
Dependendo das suas necessidades, os seguintes artigos também podem ser úteis:

Se o seu servidor já estiver pronto, com PHP, MySQL e uma senha para acesso SSH, siga em frente.

Instalação do pacote completo


wget http://www.magentocommerce.com/
downloads/assets/1.7.0.2/magento-1.7.0.2.tar.gz

(Substitua o número  1.7.0.2 nos comandos pela versão que você deseja instalar. Você pode ver os números das versões disponíveis para download na página do MagentoCommerce).
Feito o download, descompacte o arquivo dentro do diretório no qual o Magento será instalado:

tar -zxvf magento-1.7.0.2.tar.gz

No próximo comando moveremos o conteúdo da pasta Magento para o nosso diretório atual, onde estamos instalando o aplicativo:

mv magento/* magento/.htaccess .

Vamos alterar as permissões iniciais dos arquivos e diretórios do Magento:

chmod o+w var var/.htaccess app/etc
chmod -R o+w media

2013-05-23-1369341950_1024x1368
O comando para remover os pacotes de instalação, bem como o que restou de seus arquivos, é opcional – ou você pode deixar para fazer isto mais tarde, quando o seu site estiver configurado e funcionando bem:

rm -rf magento/ magento-1.7.0.2.tar.gz