SSH - Dicas, configurar e exemplos de comando.
Página 1 de 1
SSH - Dicas, configurar e exemplos de comando.
Ola galera voltei como novo tutorial mais esse e para que gosta de servidores linux srs abraço fuii
Sobre este documento
Original em formato texto com marcações para conversão em HTML, processo automatizado com scripts e txt2tags.
Dicas, instalar e configuar, exemplos de linha de comando e indicações de tutoriais.
Os comandos e dicas podem não atender as suas necessidades, não ser compatível com sua instalação, tente adaptar ao seu ambiente. SSH é muito útil para adminstrar maquinas remotamente, transferir arquivos e outros serviços, modo de operação semelhante ao Telnet mas de forma segura, os dados e senhas trafegam pela rede em modo criptografados.
Também funciona com servidor para estações windows em conexões como putty, winscp, FreeNX e outros...
Considere que os pacotes do protocolo ssh são os mesmos na maioria das distribuições, as diferenças entre as distros estão nos comandos para instalar e iniciar o servidor sshd, também algumas diferenças entre as próprias versões do SSH.
FAQ com mensagens da lista Linux-br e contribuições direta, acesse os arquivos em formato .txt.
http://www.zago.eti.br/ssh/
Instalar e configurar
CL10 - Conectiva 10
SSH tem pacotes para clientes e servidor, os pacotes cliente servem para fazer conexões com outras maquinas, iniciar a conexão a partir da maquina local, os pacotes servidor servem para atender as requisições, receber e atender os pedidos de conexões de outras maquinas, na maquina local precisa dos pacotes cliente e na maquina remota precisa dos pacotes servidor para completar a conexão, a parte cliente basta instalar e executar os comandos, a parte servidor requer o daemon rodando (sshd), portanto, além da instalação precisa iniciar o serviço e refinar o ajuste a seu modo.
Dependendo do perfil de instalação já inclue todos os pacotes ou nem instala, como exemplo, CL10 com perfil "servidor Samba", em tempo de instalação não inclue os pacotes do ssh, mas podem ser instalaos a qualquer momento, a seguir alguns exemlos de comandos para verificar e instalar, exemplos para linha de comando, pode fazer o mesmo serviço em ambiente gráfico via synaptic e outras ferramentas.
Lembre que somente o root tem poderes para instalar programas, torne root com su -, também requer o CD 1 e CD2 ou a maquina configurada para buscar os pacotes na internet.
Ver quais pacotes estão instalados; rpm -qa | grep ssh
Ver quais os pacotes disponiveis para instalar: apt-cache search ssh
Instalar somente o cliente ssh
apt-get install openssh openssh-clients
Instalar somente o servidor ssh
apt-get install openssh openssh-server
Instalar todos os pacotes do ssh, cliente + server
apt-get install openssh openssh-clients openssh-server
Iniciar (levantar) o servidor sshd execute: service sshd start
Iniciar o servidor ssh no boot (automatizar para iniciar o serviço junto com o boot da maquina tanto em modo 3 texto ou 5 gráfico).
chkconfig --level 35 sshd on
Ou simplesmente: chkconfig sshd on
Após alguma alteração na configuração precisa reiniciar o serviço, execute: service sshd restart
Parar o servidor ssh, execute: service sshd stop
Resultado de alguns comandos.
resultado do comando: rpm -qa | grep ssh
[root@faqcl10 tmp]# rpm -qa | grep ssh
openssh-clients-3.8.1p1-60281cl
openssh-server-3.8.1p1-60281cl
openssh-3.8.1p1-60281cl
FC5
Ambiente, FC5 x86_64 instalado com perfil default Gonome, sem seleção de pacotes manual.
Neste perfil de instalação, já instala o cliente e server do SSH, vem configurado para exportar o X "X11Forwarding yes" e comentada a linha que permite login remoto como root "#PermitRootLogin yes", para liberar, retire o comentário desta diretiva em /etc/ssh/sshd_config, evite esta alteração em micros de cara para internet.
Já vem instalado mas não vem configurado para iniciar o servidor sshd automaticamente.
Iniciar o servidor sshd manualmente service sshd start
Parar o servidor sshd manualmente service sshd stop
Reiniciar o servidor sshd manualmente service sshd restart
Conferir se está rodando; status service sshd status
configurações permanente no boot, use chkconfig, para iniciar o servidor sshd no boot;
chkconfig sshd on
Use o gerenciador de pacotes preferido para instalar, veja o pacotes instalados no FC5 test3
[root@localhost ssh]# rpm -qa | grep ssh
openssh-askpass-4.3p2-1
openssh-4.3p2-1
openssh-server-4.3p2-1
openssh-clients-4.3p2-1
Executar programas da interface gráfica na maquina remota, na mquina local, abra um konsole e digite a linha de comando para fazer a conexão com a opção -X, no console remoto execute os programas, para executar gerereciador nautilus ou konqueror, depois de completar a conexão, digite na linha de comando o nome do aplicativo e enter, exemplo de formato da linha de comando;
ssh -X user-remoto@ip-remoto
ssh -X zago@192.168.1.64
konqueror
nautilus
Continue consultando este documento, tem mais exemplos e dicas...
CentOS 4.3
Ambiente, CentOS 4.3 - x86_64 instalado com perfil default Gnome, sem seleção de pacotes manual.
Neste perfil de instalação, já instala o cliente e server do SSH, vem configurado para exportar o X "X11Forwarding yes" e comentada a linha que permite login remoto como root "#PermitRootLogin yes", para liberar, retire o comentário desta diretiva em /etc/ssh/sshd_config, evite esta alteração em micros de cara para internet.
Resumo de alguns comandos;
Iniciar o servidor sshd manualmente service sshd start
Parar o servidor sshd manualmente service sshd stop
Reiniciar o servidor sshd manualmente service sshd restart
Conferir se está rodando; status service sshd status
configurações permanente no boot, use chkconfig, para iniciar o servidor sshd no boot;
chkconfig sshd on
Use o gerenciador de pacotes preferido para instalar, veja o pacotes instalados no CentOS 4.3 - x86_64
[root@localhost ~]# rpm -qa | grep ssh
openssh-clients-3.9p1-8.RHEL4.12
openssh-3.9p1-8.RHEL4.12
openssh-askpass-gnome-3.9p1-8.RHEL4.12
openssh-server-3.9p1-8.RHEL4.12
openssh-askpass-3.9p1-8.RHEL4.12
Por default já vem configurado para exportar o X com esta linha no /etc/ssh/sshd_config
`` ForwardX11Trusted yes``
Faça a conexão ssh com a diretiva -X para executar programas da interface gráfica na maquina remota, segue alguns exemplos para uso em linha de comando no konsole.
ssh -X user-remoto@ip-remoto
ssh -X zago@192.168.1.64
Depois de completada a conexão, digite o nome do pacote da interface gráfica e enter
konqueror
nautilus
Ou tudo na mesma linha de comando
ssh -X -C zago@192.168.1.64 /usr/bin/nautilus
Esta linha de comando abre o nautilus na interface gráfica local.
Continue consultando este documento, tem mais exemplos e dicas sobre X remoto via ssh...
SUSE 10 e 10.1
Ambiente; estação de trabalho com instalação do KDE, sem seleção de pacotes adicionais.
Neste perfil de instalação já inclue o cliente e server SSH, também inclue o firewall negando acesso remoto via ssh, desativar ou configurar firewall, execute yast2 -> Segurança e usuários -> Firewall
Conforme o perfil de instalação pode não incluir o ssh, caso falhe ou não foi selecionado no perfil de instalação, procure e instale o pacote openssh, procure no yast ou no seu gerenciador de pacotes, lembre de iniciar o serviço após a instalação, veja exemplos abaixo.
Por default já vem configurado para exportar o X "X11Forwarding yes" e comentada a linha que permite login remoto como root "#PermitRootLogin yes", para liberar, retire o comentário desta diretiva em /etc/ssh/sshd_config.
Se preferir permitir conexão direta como root, em um konsole como root, copie e cole as duas linhas abaixo, altera a configuração e reinicia o serviço sshd;
sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config
rcsshd restart
Quando tiver problemas com acesso remoto, verifique se o firewall está habilitado, faça teste com firewall desabilitado e depois que funcionar implemente suas regras, dependendo da instalação o firewall vem habilitado e negando acesso remoto via ssh, permite conexão no konsole da própria maquina mas não responde a conexões de outras maquinas da rede, em algumas instalações volta ao prompt sem mensagem alguma, isto é caracterisco do firewall ativado.
Por default o firewall nega conexão remota, sem firewall o ssh vem configurado para aceitar conexão remota de qualquer usuário do sistema, a segurança pode ser combinada com regras de firewall e configurações do ssh para limitar quem pode ou não fazer login, configure em /etc/ssh/sshd_config e implemente outras regras de segurança, tem varias dicas em outros tópicos deste documento e nas mensagens do FAQ.
Configurar para iniciar o servidor sshd junto com o boot chkconfig sshd on
SUSE usa formato diferente, "rc" mais o daemon do serviço, formando uma palavra mais a opção desejada, exemplos;
Iniciar o servidor sshd manualmente rcsshd start
Parar o servidor sshd manualmente rcsshd stop
Reiniciar o servidor sshd manualmente rcsshd restart
Conferir se está rodando; status rcsshd status
Inciar automaticamente junto com o boot
chkconfig, marcar para iniciar serviço junto com o boot; chkconfig daemon on/off, exemplo para iniciar ssh
chkconfig sshd on
Listar todos os serviços disponíveis para seleção com chkconfig, marcados ou não.
chkconfig --list
suse10:~ # chkconfig --list | grep ssh
sshd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
Mandriva 2006
Perfil KDE para estação de trabalho não inclue instalação automatica dos pacotes para servidor do ssh.
Instalar via interface gráfica, execute mcc e procure pelo pacote openssh-server
Instalar via linha de comando, execute:
urpmi install openssh-server
service sshd status
Kurumin 5
Rodando Kurumin a partir do CD ou instalado em HD.
Habilitar servidor ssh, clique em menu K -> Redes e acesso remoto -> SSH -> ativar o servidor SSH, prontinho, não precisa fazer mais nada, já inicia o servidor ssh e por default permite login remoto direto como root (PermitRootLogin yes) e também executar aplicativos do ambiente gráfico remotamente (X11Forwarding yes), claro que precisa da rede configurada, senha do root e iniciar o servidor ssh.
Muito prático para administração remota, backup em geral de instalações e partições, restaurar intalações Linux, backup e restauração de instalações Windows, mesmo em NTFS, use o dd+ssh para criar a imagem e restaurar, veja dicas de como configurar a rede, senha do root e mais dicas em;
http://www.zago.eti.br/distro/kurumin-dicas.html
kubuntu 6.06 e 7.04
ssh - instalar e configurar
Na instalação default inclue o cliente ssh (openssh-client)
Para permitir conexões remotas, login remoto a partir de outras maquinas, instale o pacote openssh-server, procure por ele no gerenciador de pacotes, instalando pelo "aptitude, adept, smart ", exemplo via smart na linha de comando
smart install openssh-server
Via aptitude
aptitude install openssh-server
Prontinho, durante a instalação já inicia o daemon sshd para aceitar conexões remotas.
Configuração default permite login de root e exportando o X.
PermitRootLogin yes
X11Forwarding yes
Demais comandos e uso são os mesmos de qualquer distro.
Debian 3.1 - Sarge
Neste tópico, comandos e dicas exclusivo sobre a distro, demais comandos, consulte a documentação geral, comum a todas as distros.
Instalar via linha de comando, como root, execute;
apt-get install ssh
Esta linha de comando inicia um dialogo com instruções e avisos, faça as opções e prossiga com a instalação, no final da instalação o cliente e server são instalados, conforme as opções já inicia o servidor ssh (sshd) automaticamente, permitindo conexões remotas e uso do cliente ssh.
Por default já vem liberado login de root "PermitRootLogin yes", para impedir login como root, altere esta diretiva para "no".
Exportar o X, altere a diretiva "X11Forwarding no" para "X11Forwarding yes", ou simplesmente copie e cole;
sed -i "s/X11Forwarding no/X11Forwarding yes/g" /etc/ssh/sshd_config
Não consegui executar aplicativos do X remotamente, abre o aplicativo na própria maquina e não na maquina remota de onde dispara o comando, algo muito estranho que não acontece em outras distros, qualquer dia procuro entender isto e postar a solução aqui.
Algumas dicas, usuários e outros comandos - resumo
Usuário; na maquina que roda o servidor sshd, precisa criar o usuário e definir senha como sendo um usuário local, na conexão remota tem que indicar o usuário e senha do sistema remoto, tanto na linha de comando ou outro cliente ssh, usuário cliente ssh são os mesmos do sistema remoto e não precisa existir no cliente, veja na documetação de sua distro sobre criar usuários e senhas, no FAQ ssh.txt neste diretório tem mensagens com algumas dicas de firewall e como melhorar o controle desta conexão.
Saber quais clientes estão conectados, use a variavel de ambiente $SSH_CLIENT.
[zago@speedy zago]$ echo $SSH_CLIENT
192.168.1.53 33033 22
Veja também os resultados de;
netstat -na
w
DEBUG - LOG - faça a conexão com -vv para exibir as mensagens, ajuda na localização de problemas, tente também iniciar o iniciar o servidor em modo debug (ssh -d) e conectar com o cliente, provavelmente o servidor vai exibir as mensagens de erros, tais como permissões e etc..., exemplos
ssh -v zago@localhost
ssh -vv zago@192.168.1.3
/usr/sbin/sshd -d
service sshd status
Copia preservando data e permissões de arquivos,(ownership e timestamp) use -p minusculo, cuidado que -P maiusculo indica a porta, direto do man scp.
-p Preserves modification times, access times, and modes from the original file.
Exemplo de copia do dirlocal mantendo as permissões no destino em dirremoto.
scp -rp dirlocal user@IP:/dirremoto
Testar conexão com a maquina local
Testar a conexão, faça a conexão na propria maquina, no console use um dos exemplos;
ssh login_usuário_válido@localhost
ssh login_usuário_válido@ip_da-propria-maquina
ssh zago@192.168.1.53
ssh zago@localhost
Concluindo a conexão indica que a configuração local está OK, falhando conexão externa indica problemas externos como firewall, rede, rotas e etc..
[zago@zago zago]$ ssh zago@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 6c:d1:55:25:11:1e:3a:7e:71:59:33:4c:cb:9e:79:ef.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
zago@localhost's password:
Last login: Tue Oct 11 11:24:33 2005
[zago@zago zago]$ netstat -na
Conexões Internet Ativas (servidores e estabelecidas)
Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado
tcp 0 0 0.0.0.0:111 0.0.0.0:* OUÇA
tcp 0 0 0.0.0.0:22 0.0.0.0:* OUÇA
tcp 0 0 0.0.0.0:631 0.0.0.0:* OUÇA
tcp 0 0 127.0.0.1:33057 127.0.0.1:22 ESTABELECIDA
DEBUG - LOG - faça a conexão com -vv para exibir as mensagens, ajuda na localização de problemas, tente também iniciar o iniciar o servidor em modo debug (ssh -d) e conectar com o cliente, provavelmente o servidor vai exibir as mensagens de erros, tais como permissões e etc..., exemplos
ssh -v zago@localhost
ssh -vv zago@192.168.1.3
Falha de conexão por troca maquina, IP ou de chaves
Falha na conexão, na reinstalação, troca de IP e outras alterações, pode falhar a conexão e retornar um aviso que existe alguém interceptando a conexão, que é um ataque ou violação, esta mensagem também ocorre em caso de ataque real, portanto tem duas possibilidades, um real ataque ou a maquina destino não é mais a mesma utilizada em conexão anterior com este IP, isto ocorre porque mudou a chave, como não é possivel saber a causa, por segurança recusa a conexão.
Tendo certeza que não se trata de sniffer na rede ou ataque e que é provavel a troca de IP ou instalação então edite o arquivo, .ssh/known_hosts que fica no home do usuário e remova a entrada deste IP (chave velha), neste arquivo procure pela linha com o IP remoto que causou o problema e apague-o, ou remova o diretorio todo (todas as chaves), depois faça a conexão que vai recriar as chaves, vai recriar como sendo a primeira conexão com esta maquina, veja o exemplo, primeiro remove o .ssh e depois conecta por ssh:
[zago@zago zago]$ rm -rf ~/.ssh
[zago@zago zago]$ ssh zago@192.168.1.1
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
DSA key fingerprint is 32:57:2a:2b:e6:1b:da:b2:33:fe:88:2f:33:cd:b1:91.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.1' (DSA) to the list of known hosts.
zago@192.168.1.1's password:
Last login: Thu Jul 18 13:22:19 2002 from 192.168.1.53
Removenda a linha com sed.
Remover linha que inicia com IP 192.168.1.205, utilizo para remover chave de IP que foi moficado no arquivo ~/.ssh/known_hosts
sed -i '/^192.168.1.205/d' ~/.ssh/known_hosts
Em minhas instalações de testes isto é repetitivo, para não ficar repetindo a digitação, coloquei no inicio do .bash_history, outra opção que utilizo, criar script e passar o IP na linha de comando, script que utilizo em minhas instalações.
cat /usr/bin/zzsedip
#!/bin/bash
sed -i "/^$1/d" ~/.ssh/known_hosts
Com este script basta passar o IP na linha de comando, digitar zzse e tecla tab para completar, depois tecle um espaço e IP que deseja remover
zzsedip 192.168.1.205
Agora é só voltar com as setas até a linha que deu erro e dar enter para criar nova chave e completar a conexão...
Segurança
Sniffando o SSH com o Strace
http://www.Dicas-L.com.br/dicas-l/20070511.php
Restringir acesso
Mais uma medida de segurança, restringir o acesso somente aos usuários listados na configuração do ssh, no CL10 o final do /etc/ssh/sshd_conf vem assim;
#Banner /some/path
#VerifyReverseMapping no
Subsystem sftp /usr/libexec/sftp-server
Para incluir os usuários que poderão se conectar via ssh, acrescente no final de /etc/ssh/sshd_conf, AllowUsers mais o nome de login dos usuários separados por espaços, exemplo;
Subsystem sftp /usr/libexec/sftp-server
AllowUsers anderson zago erika carol
Enquanto não utilizada a diretiva "AllowUsers" qualquer usuário da maquina pode conectar via ssh. Quando acrescenta-la, passa a permitir apenas os usuários listados e válidos na maquina, esta diretiva prevalece sobre a regra "default" que permite login de todos.
Alterar a porta do ssh, usar outra porta
A porta padrão do ssh é 22, por isto tem muitos scripts que ficam tentando conexão nesta porta, por este e outros motivos, pode se alterar a porta do ssh, por exemplo, alterar de 22 para porta 2222, use seu editor preferido para editar o arquivo /etc/ssh/sshd_config e procure pela linha; #Port 22 altere para Port 2222, observe que além de alterar a porta, também precisa remover o comentário da linha, caso não encontre esta linha, pode adicionar no inicio do arquivo, depois de efetuar a alteração, precisa reiniciar o serviço, veja no tópico sobre instalação, para testar na própria maquina, em um konsole execute a linha de comando neste formato;
ssh -p 2222 IP-ou-dominio -l usuario
ssh -p 2222 192.168.1.2 -l zago
ssh -p 222 zago@192.168.1.2
Ocorrendo erros, procure interpretar a mensagem de erro, verifique a configuração, entre as principais causas, verifique se o serviço ssdh (servidor ssh) está rodando, regras de firewall bloqueando acesso, se está tentando com usuário permitido na configuração do ssh.....
Redirecionamento e algumas regras de firewal
Existem diversas opções e regras para redirecionar um pedido que chega da internet para uma estação ou servidor que estão atrás do firewall, pode ser por porta, IP ou protocolo.
Segue alguns exemplos;
Redirecionar ssh, independe do cliente, na origem pode ser utilizado linha de comando do ssh, fish no konqueror, putty em cliente windows, o que importa é a porta, os demais requisitos ficam por conta da configuração do cliente e servidor, exemplo para redirecionar tudo que chega na porta 22 (usada pelo ssh), redirecionar para a estação com IP 192.168.1.53, todos os pedidos que chegam no firewall e porta 22 serão redirecionados.
$iptables -t nat -A PREROUTING -p tcp -s 0/0 --dport 22 -i eth0 -j DNAT --to 192.168.1.53:22
Onde:
eth0 = placa de rede de cara pra net, ajuste na sua instalação
22 é a porta que quero redicionar pra outra maquina (22 é a porta default utilizada nas conexões por ssh), pode ser alterada.
192.168.1.53 é o IP reservado da maquina interna que vai atender a conexão.
Na maquina remota (internet) a conexão é disparada para o IP do firewall, a regra acima redireciona para a estação, um exemplo de linha de comando para conexão via ssh;
ssh user@IP, ou ssh zago@200.200.200.200, quando este pedido chega no Firewall com IP 200.200.200.200 é automaticamente redirecionado para a estação com IP 192.168.1.53 que atenderá o pedido e completará a conexão.
Outra opção, usar porta diferente, assim pode redirecionar cada porta para estações especificas, também pode redirecionar com troca de porta, neste exemplo a 2222 será redirecionada para 22, nesta regra vai redirecionar para a estação, somente os pedidos que chegam na porta 2222, os demais pedidos na porta 22 ou outra qualquer serão tratados por outras regras.
$iptables -t nat -A PREROUTING -p tcp -s 0/0 --dport 2222 -i eth0 -j DNAT --to 192.168.1.53:22
Pode configurar o ssh para ouvir em outra porta, ou até mesmo manter a default, neste exemplo foram mantidas, tanto o firewall como estação estão ouvindo na porta 22, o uso da porta 2222 foi utilizando somente na linha de comando e na regra de iptables, a regra de redirecionamento funciona somente para os pedidos que chegam na porta 2222, a linha de comando na internet tem que indicar a porta, exemplo;
ssh -p 2222 zago@200.200.200.200
o (-p 2222) serve para indicar a porta, os pedidos que chegarem na porta 22 seguem outras regras, pode ser redirecionada para outra maquina ou atendida pela própria maquina do firewall.
Restringindo o redirecionamento somente a determinado IP, permitindo que somente conexões com origem no IP 200.204.198.164 sejam redirecionadas para a estação, qualquer conexão com origem em IP diferente não serão redirecionadas, exemplo da regra;
$iptables -t nat -A PREROUTING -p tcp -s 200.204.198.164 --dport 2222 -i eth0 -j DNAT --to 192.168.1.53:22
Observe a comodidade, a partir do console da maquina remota pode fazer uma conexão normal na porta 22 do micro firewall para inserir a regra acima, abrir outro console para aplicar a linha de comando da copia na porta 2222 que cai na regra do redirecionamento e portanto na estação remota para fazer a copia para a maquina local, concluida a transferencia de arquivos, voltar ao console anterior e desfazer as alterações no firewall.
Como pode notar, são varias opções, e tem mais meios de dificultar o acesso de estranhos, neste documento e no FAQ tem mais dicas, voce sabe o que tem a proteger, portanto implemente as medidas de segurança, continue pesquisando....
Liberando acesso local e limitando conexões externas
Liberando somente conexões para a rede interna, regra aplicável em micros que compartilha a internet, com duas placas de rede, uma para a rede interna e outra de cara para internet, conectada ao modem, considerando que a placa que está de cara para internet seja a eth0, inclua esta regra no firewall.
iptables -A INPUT -p tcp -i eth0 --syn --dport 22 -j DROP
ajuste o device de rede (eth0) conforme sua instalação, em conexões via pppoe o device deve ser (ppp0), observe que esta regra fecha qualquer tentativa de conexão via ssh chegando pela eth0 mas continua aceitando todas que chegam pela eth1
Caso queira liberar somente alguns IP da rede interna, use regras neste formato.
iptables -A INPUT -p tcp -s $IP_PERMITIDO1 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -s $IP_PERMITIDO2 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -s $IP_PERMITIDO3 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -s $IP_PERMITIDO4 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
As variaveis de $IP_PERMITIDO1 a $IP_PERMITIDO4 devem ser definidas no inicio do script de firewall ou substituidas pelo IP, a ultima linha fecha para os demais IP tanto da rede interna como da internet.
Liberar acesso remoto somente para um IP conhecido, para manutenção, no inicio do firewall defina a variável $IP_PERMITIDO ou substitua no exemplo abaixo;
iptables -A INPUT -p tcp -s $IP_PERMITIDO --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
Liberar mais de um IP, repita a primeira linha alterando a variável ou inserindo o IP diretamente.
Liberar acesso somente a um IP e negar para os demais.
iptables -I INPUT -p tcp -s $IP_PERMITIDO --dport 22 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
Knocking - abrir porta ssh remotamente
Knocking on servers doors
Voce pode fechar todo fluxo na porta 22 e so voce abre quando precisa.
Tutorial com script e dicas para RedHat / Fedora
http://www.Dicas-L.com.br/dicas-l/20060913.php
Tutoriais para SUSE 10.1 e outras distribuições.
http://www.zago.eti.br/ssh/knock.html
fail2ban - bloquear ataques brute force
Bloqueio de IP quando falha login, configurável, por default permite 3 tentativas de senha, depois bloqueia novas tentativas, ideal para proteção de robots que ficam tentando fazer login via SSH, FTP, SMTP, Apache, etc.
Tutorial para instalações Debian e seus derivados, serve como referencia para outras distro.
http://www.howtoforge.com/fail2ban_debian_etch
Indicado por:
Anderson Marcelo De Oliveira
anderson@infomachine.com.br
Iptables - Bloquear ataques Brute Force
Regras Iptables para Bloquear ataques Brute Force no SSH
Colaboração: mairon lima mendes
http://www.Dicas-L.com.br/dicas-l/20060724.php
No SUSE 10.1 editei as regras para remover a quebra de linha e eliminar as mensagens de erro, ainda não verifiquei o resultado.
Cuidado com a quebra de linha, copia do endereço acima vem com quebra de linha, tanto via navegador (copiar e colar) como via lynx, precisa editar para eliminar a quebra ou acrescentar \ no final da linha quebrada.
Caso tenha dificuldade, tem cópia destas regras dentro deste modelo, tente baixar com wget para evitar quebra de linha.
wget http://www.zago.eti.br/firewall/fireaula.sh
Para facilitar a separação das linhas, todas iniciam com $iptables, também estão separadas por uma linha em branco
DenyHosts contra ataques de força bruta
DenyHosts - bloquear hosts que realizam tentativas de acesso ao sistema por SSH - força bruta
http://www.dicas-l.com.br/dicas-l/20060609.php
Tópico em elaboração no SUSE 10.1. Falhou e qualquer dia continuo com os testes...
Teste com o pacote DenyHosts-2.4b-python2.4.noarch.rpm, procure por ele ou versão mais recente
http://denyhosts.sourceforge.net/
rpm -ivh DenyHosts-2.4b-python2.4.noarch.rpm
error: Failed dependencies:
/bin/env is needed by DenyHosts-2.4b-python2.4.noarch
python(abi) = 2.4 is needed by DenyHosts-2.4b-python2.4.noarch
versão do python instalado
smart install python
warning: python-2.4.2-18@i586 is already installed
Console remoto - conexões com outras maquinas
SSH permite conexão segura e criptografada, ideal para conexão remota para configuração ou administração, completada a conexão tem um console (shell) da maquina remota, quando iniciar a conexão a partir de um konsole do ambiente gráfico, pode copiar e colar linhas de comandos ou textos entre o konsole e navegador ou editor de textos, muito útil e pratico, pode abrir diversas conexões com a mesma maquina ou maquinas diferentes.
Exemplos de linha de comando pra conexão com a maquina remota, formato (ssh user@IP), as linhas abaixo tem o mesmo resultado:
ssh zago@192.168.1.53
ssh -l zago 192.168.1.53
ssh -p 22 192.168.1.2 -l zago
Quando se usa porta diferente, exemplo para quem usa na porta 2222
ssh -p 2222 192.168.1.2 -l zago
Algumas instalações vem configurada para não aceitar conexão do root, tem duas soluções, conectar com user comum e tornar root com (su -), ou alterar a confgiruação para permitir liberar login do root.
Algumas distros na configuração default permite login de root, como exemplo o Debian (Sarge), outras vem com este recurso bloqueado, como exemplo o CL10.
Na instalação padrão do CL10 não é permitido login do root diretamente, mas quando precisar fazer algo como root, efetue login como usuario comum e depois digite "su -" e a senha do root para se tornar root, quando aos poderes e recursos não faz diferença, caso prefira, pode liberar login de root diretamente, altere para "yes" a diretiva (PermitRootLogin no) em:
/etc/ssh/sshd_config
altere a linha PermitRootLogin no
para PermitRootLogin yes
Reinicie o sshd service sshd restart
Prontinho, já pode fazer a conexão como root.
Ou simplificando em uma tacada só, comando pra copiar e colar:
sed -i "s/PermitRootLogin no/PermitRootLogin yes/g" /etc/ssh/sshd_config
service sshd restart
Prontinho, na linha de comando pode executar todos os comandos disponíveis no console, quando configurado para exportar o X, faça a conexão com a diretiva -X para executar aplicativos do ambiente gráfico, veja também outros tópicos neste documento, como executar aplicativos do ambiente gráfico, exportar o X.
Executar comando remoto e encerrar conexão, comandos que não requer interação, como iniciar, parar e ver status de serviços, quando precisa somente executar o comando e encerrar a conexão, pode fazer tudo em uma única linha de comando, exemplo para ver status do servidor samba, desligar o micro, iniciar serviço, ver o resultado do comando free;
ssh -C zago@192.168.1.120 /usr/bin/smbstatus \; free
Desligar maquina remota;
ssh -C root@192.168.1.70 poweroff
Executar comando remoto
Em manutenção de arquivos de configuração é comum fazer a conexão via ssh para depois executar o comando, seja comandos simples como ver espaço em disco, arquivos ou editar algum .conf, para estes casos pode passar o comando junto com a linha de comando da conexão, no final do comando já cai no console da maquina local e evita o trabalho de fazer e encerrar a conexão, no caso de executar somente um comando, como ls, du ou até mesmo editar um .conf, no final do comando, tem o resultado remoto mas cai no console local.
Alguns exemplos, após a linha de comando quando solicitado, informe a senha do usuário remoto , entre maquinas configuradas para conexão sem senha executa o comando direto.
Sobre este documento
Original em formato texto com marcações para conversão em HTML, processo automatizado com scripts e txt2tags.
Dicas, instalar e configuar, exemplos de linha de comando e indicações de tutoriais.
Os comandos e dicas podem não atender as suas necessidades, não ser compatível com sua instalação, tente adaptar ao seu ambiente. SSH é muito útil para adminstrar maquinas remotamente, transferir arquivos e outros serviços, modo de operação semelhante ao Telnet mas de forma segura, os dados e senhas trafegam pela rede em modo criptografados.
Também funciona com servidor para estações windows em conexões como putty, winscp, FreeNX e outros...
Considere que os pacotes do protocolo ssh são os mesmos na maioria das distribuições, as diferenças entre as distros estão nos comandos para instalar e iniciar o servidor sshd, também algumas diferenças entre as próprias versões do SSH.
FAQ com mensagens da lista Linux-br e contribuições direta, acesse os arquivos em formato .txt.
http://www.zago.eti.br/ssh/
Instalar e configurar
CL10 - Conectiva 10
SSH tem pacotes para clientes e servidor, os pacotes cliente servem para fazer conexões com outras maquinas, iniciar a conexão a partir da maquina local, os pacotes servidor servem para atender as requisições, receber e atender os pedidos de conexões de outras maquinas, na maquina local precisa dos pacotes cliente e na maquina remota precisa dos pacotes servidor para completar a conexão, a parte cliente basta instalar e executar os comandos, a parte servidor requer o daemon rodando (sshd), portanto, além da instalação precisa iniciar o serviço e refinar o ajuste a seu modo.
Dependendo do perfil de instalação já inclue todos os pacotes ou nem instala, como exemplo, CL10 com perfil "servidor Samba", em tempo de instalação não inclue os pacotes do ssh, mas podem ser instalaos a qualquer momento, a seguir alguns exemlos de comandos para verificar e instalar, exemplos para linha de comando, pode fazer o mesmo serviço em ambiente gráfico via synaptic e outras ferramentas.
Lembre que somente o root tem poderes para instalar programas, torne root com su -, também requer o CD 1 e CD2 ou a maquina configurada para buscar os pacotes na internet.
Ver quais pacotes estão instalados; rpm -qa | grep ssh
Ver quais os pacotes disponiveis para instalar: apt-cache search ssh
Instalar somente o cliente ssh
apt-get install openssh openssh-clients
Instalar somente o servidor ssh
apt-get install openssh openssh-server
Instalar todos os pacotes do ssh, cliente + server
apt-get install openssh openssh-clients openssh-server
Iniciar (levantar) o servidor sshd execute: service sshd start
Iniciar o servidor ssh no boot (automatizar para iniciar o serviço junto com o boot da maquina tanto em modo 3 texto ou 5 gráfico).
chkconfig --level 35 sshd on
Ou simplesmente: chkconfig sshd on
Após alguma alteração na configuração precisa reiniciar o serviço, execute: service sshd restart
Parar o servidor ssh, execute: service sshd stop
Resultado de alguns comandos.
resultado do comando: rpm -qa | grep ssh
[root@faqcl10 tmp]# rpm -qa | grep ssh
openssh-clients-3.8.1p1-60281cl
openssh-server-3.8.1p1-60281cl
openssh-3.8.1p1-60281cl
FC5
Ambiente, FC5 x86_64 instalado com perfil default Gonome, sem seleção de pacotes manual.
Neste perfil de instalação, já instala o cliente e server do SSH, vem configurado para exportar o X "X11Forwarding yes" e comentada a linha que permite login remoto como root "#PermitRootLogin yes", para liberar, retire o comentário desta diretiva em /etc/ssh/sshd_config, evite esta alteração em micros de cara para internet.
Já vem instalado mas não vem configurado para iniciar o servidor sshd automaticamente.
Iniciar o servidor sshd manualmente service sshd start
Parar o servidor sshd manualmente service sshd stop
Reiniciar o servidor sshd manualmente service sshd restart
Conferir se está rodando; status service sshd status
configurações permanente no boot, use chkconfig, para iniciar o servidor sshd no boot;
chkconfig sshd on
Use o gerenciador de pacotes preferido para instalar, veja o pacotes instalados no FC5 test3
[root@localhost ssh]# rpm -qa | grep ssh
openssh-askpass-4.3p2-1
openssh-4.3p2-1
openssh-server-4.3p2-1
openssh-clients-4.3p2-1
Executar programas da interface gráfica na maquina remota, na mquina local, abra um konsole e digite a linha de comando para fazer a conexão com a opção -X, no console remoto execute os programas, para executar gerereciador nautilus ou konqueror, depois de completar a conexão, digite na linha de comando o nome do aplicativo e enter, exemplo de formato da linha de comando;
ssh -X user-remoto@ip-remoto
ssh -X zago@192.168.1.64
konqueror
nautilus
Continue consultando este documento, tem mais exemplos e dicas...
CentOS 4.3
Ambiente, CentOS 4.3 - x86_64 instalado com perfil default Gnome, sem seleção de pacotes manual.
Neste perfil de instalação, já instala o cliente e server do SSH, vem configurado para exportar o X "X11Forwarding yes" e comentada a linha que permite login remoto como root "#PermitRootLogin yes", para liberar, retire o comentário desta diretiva em /etc/ssh/sshd_config, evite esta alteração em micros de cara para internet.
Resumo de alguns comandos;
Iniciar o servidor sshd manualmente service sshd start
Parar o servidor sshd manualmente service sshd stop
Reiniciar o servidor sshd manualmente service sshd restart
Conferir se está rodando; status service sshd status
configurações permanente no boot, use chkconfig, para iniciar o servidor sshd no boot;
chkconfig sshd on
Use o gerenciador de pacotes preferido para instalar, veja o pacotes instalados no CentOS 4.3 - x86_64
[root@localhost ~]# rpm -qa | grep ssh
openssh-clients-3.9p1-8.RHEL4.12
openssh-3.9p1-8.RHEL4.12
openssh-askpass-gnome-3.9p1-8.RHEL4.12
openssh-server-3.9p1-8.RHEL4.12
openssh-askpass-3.9p1-8.RHEL4.12
Por default já vem configurado para exportar o X com esta linha no /etc/ssh/sshd_config
`` ForwardX11Trusted yes``
Faça a conexão ssh com a diretiva -X para executar programas da interface gráfica na maquina remota, segue alguns exemplos para uso em linha de comando no konsole.
ssh -X user-remoto@ip-remoto
ssh -X zago@192.168.1.64
Depois de completada a conexão, digite o nome do pacote da interface gráfica e enter
konqueror
nautilus
Ou tudo na mesma linha de comando
ssh -X -C zago@192.168.1.64 /usr/bin/nautilus
Esta linha de comando abre o nautilus na interface gráfica local.
Continue consultando este documento, tem mais exemplos e dicas sobre X remoto via ssh...
SUSE 10 e 10.1
Ambiente; estação de trabalho com instalação do KDE, sem seleção de pacotes adicionais.
Neste perfil de instalação já inclue o cliente e server SSH, também inclue o firewall negando acesso remoto via ssh, desativar ou configurar firewall, execute yast2 -> Segurança e usuários -> Firewall
Conforme o perfil de instalação pode não incluir o ssh, caso falhe ou não foi selecionado no perfil de instalação, procure e instale o pacote openssh, procure no yast ou no seu gerenciador de pacotes, lembre de iniciar o serviço após a instalação, veja exemplos abaixo.
Por default já vem configurado para exportar o X "X11Forwarding yes" e comentada a linha que permite login remoto como root "#PermitRootLogin yes", para liberar, retire o comentário desta diretiva em /etc/ssh/sshd_config.
Se preferir permitir conexão direta como root, em um konsole como root, copie e cole as duas linhas abaixo, altera a configuração e reinicia o serviço sshd;
sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config
rcsshd restart
Quando tiver problemas com acesso remoto, verifique se o firewall está habilitado, faça teste com firewall desabilitado e depois que funcionar implemente suas regras, dependendo da instalação o firewall vem habilitado e negando acesso remoto via ssh, permite conexão no konsole da própria maquina mas não responde a conexões de outras maquinas da rede, em algumas instalações volta ao prompt sem mensagem alguma, isto é caracterisco do firewall ativado.
Por default o firewall nega conexão remota, sem firewall o ssh vem configurado para aceitar conexão remota de qualquer usuário do sistema, a segurança pode ser combinada com regras de firewall e configurações do ssh para limitar quem pode ou não fazer login, configure em /etc/ssh/sshd_config e implemente outras regras de segurança, tem varias dicas em outros tópicos deste documento e nas mensagens do FAQ.
Configurar para iniciar o servidor sshd junto com o boot chkconfig sshd on
SUSE usa formato diferente, "rc" mais o daemon do serviço, formando uma palavra mais a opção desejada, exemplos;
Iniciar o servidor sshd manualmente rcsshd start
Parar o servidor sshd manualmente rcsshd stop
Reiniciar o servidor sshd manualmente rcsshd restart
Conferir se está rodando; status rcsshd status
Inciar automaticamente junto com o boot
chkconfig, marcar para iniciar serviço junto com o boot; chkconfig daemon on/off, exemplo para iniciar ssh
chkconfig sshd on
Listar todos os serviços disponíveis para seleção com chkconfig, marcados ou não.
chkconfig --list
suse10:~ # chkconfig --list | grep ssh
sshd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
Mandriva 2006
Perfil KDE para estação de trabalho não inclue instalação automatica dos pacotes para servidor do ssh.
Instalar via interface gráfica, execute mcc e procure pelo pacote openssh-server
Instalar via linha de comando, execute:
urpmi install openssh-server
service sshd status
Kurumin 5
Rodando Kurumin a partir do CD ou instalado em HD.
Habilitar servidor ssh, clique em menu K -> Redes e acesso remoto -> SSH -> ativar o servidor SSH, prontinho, não precisa fazer mais nada, já inicia o servidor ssh e por default permite login remoto direto como root (PermitRootLogin yes) e também executar aplicativos do ambiente gráfico remotamente (X11Forwarding yes), claro que precisa da rede configurada, senha do root e iniciar o servidor ssh.
Muito prático para administração remota, backup em geral de instalações e partições, restaurar intalações Linux, backup e restauração de instalações Windows, mesmo em NTFS, use o dd+ssh para criar a imagem e restaurar, veja dicas de como configurar a rede, senha do root e mais dicas em;
http://www.zago.eti.br/distro/kurumin-dicas.html
kubuntu 6.06 e 7.04
ssh - instalar e configurar
Na instalação default inclue o cliente ssh (openssh-client)
Para permitir conexões remotas, login remoto a partir de outras maquinas, instale o pacote openssh-server, procure por ele no gerenciador de pacotes, instalando pelo "aptitude, adept, smart ", exemplo via smart na linha de comando
smart install openssh-server
Via aptitude
aptitude install openssh-server
Prontinho, durante a instalação já inicia o daemon sshd para aceitar conexões remotas.
Configuração default permite login de root e exportando o X.
PermitRootLogin yes
X11Forwarding yes
Demais comandos e uso são os mesmos de qualquer distro.
Debian 3.1 - Sarge
Neste tópico, comandos e dicas exclusivo sobre a distro, demais comandos, consulte a documentação geral, comum a todas as distros.
Instalar via linha de comando, como root, execute;
apt-get install ssh
Esta linha de comando inicia um dialogo com instruções e avisos, faça as opções e prossiga com a instalação, no final da instalação o cliente e server são instalados, conforme as opções já inicia o servidor ssh (sshd) automaticamente, permitindo conexões remotas e uso do cliente ssh.
Por default já vem liberado login de root "PermitRootLogin yes", para impedir login como root, altere esta diretiva para "no".
Exportar o X, altere a diretiva "X11Forwarding no" para "X11Forwarding yes", ou simplesmente copie e cole;
sed -i "s/X11Forwarding no/X11Forwarding yes/g" /etc/ssh/sshd_config
Não consegui executar aplicativos do X remotamente, abre o aplicativo na própria maquina e não na maquina remota de onde dispara o comando, algo muito estranho que não acontece em outras distros, qualquer dia procuro entender isto e postar a solução aqui.
Algumas dicas, usuários e outros comandos - resumo
Usuário; na maquina que roda o servidor sshd, precisa criar o usuário e definir senha como sendo um usuário local, na conexão remota tem que indicar o usuário e senha do sistema remoto, tanto na linha de comando ou outro cliente ssh, usuário cliente ssh são os mesmos do sistema remoto e não precisa existir no cliente, veja na documetação de sua distro sobre criar usuários e senhas, no FAQ ssh.txt neste diretório tem mensagens com algumas dicas de firewall e como melhorar o controle desta conexão.
Saber quais clientes estão conectados, use a variavel de ambiente $SSH_CLIENT.
[zago@speedy zago]$ echo $SSH_CLIENT
192.168.1.53 33033 22
Veja também os resultados de;
netstat -na
w
DEBUG - LOG - faça a conexão com -vv para exibir as mensagens, ajuda na localização de problemas, tente também iniciar o iniciar o servidor em modo debug (ssh -d) e conectar com o cliente, provavelmente o servidor vai exibir as mensagens de erros, tais como permissões e etc..., exemplos
ssh -v zago@localhost
ssh -vv zago@192.168.1.3
/usr/sbin/sshd -d
service sshd status
Copia preservando data e permissões de arquivos,(ownership e timestamp) use -p minusculo, cuidado que -P maiusculo indica a porta, direto do man scp.
-p Preserves modification times, access times, and modes from the original file.
Exemplo de copia do dirlocal mantendo as permissões no destino em dirremoto.
scp -rp dirlocal user@IP:/dirremoto
Testar conexão com a maquina local
Testar a conexão, faça a conexão na propria maquina, no console use um dos exemplos;
ssh login_usuário_válido@localhost
ssh login_usuário_válido@ip_da-propria-maquina
ssh zago@192.168.1.53
ssh zago@localhost
Concluindo a conexão indica que a configuração local está OK, falhando conexão externa indica problemas externos como firewall, rede, rotas e etc..
[zago@zago zago]$ ssh zago@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 6c:d1:55:25:11:1e:3a:7e:71:59:33:4c:cb:9e:79:ef.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
zago@localhost's password:
Last login: Tue Oct 11 11:24:33 2005
[zago@zago zago]$ netstat -na
Conexões Internet Ativas (servidores e estabelecidas)
Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado
tcp 0 0 0.0.0.0:111 0.0.0.0:* OUÇA
tcp 0 0 0.0.0.0:22 0.0.0.0:* OUÇA
tcp 0 0 0.0.0.0:631 0.0.0.0:* OUÇA
tcp 0 0 127.0.0.1:33057 127.0.0.1:22 ESTABELECIDA
DEBUG - LOG - faça a conexão com -vv para exibir as mensagens, ajuda na localização de problemas, tente também iniciar o iniciar o servidor em modo debug (ssh -d) e conectar com o cliente, provavelmente o servidor vai exibir as mensagens de erros, tais como permissões e etc..., exemplos
ssh -v zago@localhost
ssh -vv zago@192.168.1.3
Falha de conexão por troca maquina, IP ou de chaves
Falha na conexão, na reinstalação, troca de IP e outras alterações, pode falhar a conexão e retornar um aviso que existe alguém interceptando a conexão, que é um ataque ou violação, esta mensagem também ocorre em caso de ataque real, portanto tem duas possibilidades, um real ataque ou a maquina destino não é mais a mesma utilizada em conexão anterior com este IP, isto ocorre porque mudou a chave, como não é possivel saber a causa, por segurança recusa a conexão.
Tendo certeza que não se trata de sniffer na rede ou ataque e que é provavel a troca de IP ou instalação então edite o arquivo, .ssh/known_hosts que fica no home do usuário e remova a entrada deste IP (chave velha), neste arquivo procure pela linha com o IP remoto que causou o problema e apague-o, ou remova o diretorio todo (todas as chaves), depois faça a conexão que vai recriar as chaves, vai recriar como sendo a primeira conexão com esta maquina, veja o exemplo, primeiro remove o .ssh e depois conecta por ssh:
[zago@zago zago]$ rm -rf ~/.ssh
[zago@zago zago]$ ssh zago@192.168.1.1
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
DSA key fingerprint is 32:57:2a:2b:e6:1b:da:b2:33:fe:88:2f:33:cd:b1:91.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.1' (DSA) to the list of known hosts.
zago@192.168.1.1's password:
Last login: Thu Jul 18 13:22:19 2002 from 192.168.1.53
Removenda a linha com sed.
Remover linha que inicia com IP 192.168.1.205, utilizo para remover chave de IP que foi moficado no arquivo ~/.ssh/known_hosts
sed -i '/^192.168.1.205/d' ~/.ssh/known_hosts
Em minhas instalações de testes isto é repetitivo, para não ficar repetindo a digitação, coloquei no inicio do .bash_history, outra opção que utilizo, criar script e passar o IP na linha de comando, script que utilizo em minhas instalações.
cat /usr/bin/zzsedip
#!/bin/bash
sed -i "/^$1/d" ~/.ssh/known_hosts
Com este script basta passar o IP na linha de comando, digitar zzse e tecla tab para completar, depois tecle um espaço e IP que deseja remover
zzsedip 192.168.1.205
Agora é só voltar com as setas até a linha que deu erro e dar enter para criar nova chave e completar a conexão...
Segurança
Sniffando o SSH com o Strace
http://www.Dicas-L.com.br/dicas-l/20070511.php
Restringir acesso
Mais uma medida de segurança, restringir o acesso somente aos usuários listados na configuração do ssh, no CL10 o final do /etc/ssh/sshd_conf vem assim;
#Banner /some/path
#VerifyReverseMapping no
Subsystem sftp /usr/libexec/sftp-server
Para incluir os usuários que poderão se conectar via ssh, acrescente no final de /etc/ssh/sshd_conf, AllowUsers mais o nome de login dos usuários separados por espaços, exemplo;
Subsystem sftp /usr/libexec/sftp-server
AllowUsers anderson zago erika carol
Enquanto não utilizada a diretiva "AllowUsers" qualquer usuário da maquina pode conectar via ssh. Quando acrescenta-la, passa a permitir apenas os usuários listados e válidos na maquina, esta diretiva prevalece sobre a regra "default" que permite login de todos.
Alterar a porta do ssh, usar outra porta
A porta padrão do ssh é 22, por isto tem muitos scripts que ficam tentando conexão nesta porta, por este e outros motivos, pode se alterar a porta do ssh, por exemplo, alterar de 22 para porta 2222, use seu editor preferido para editar o arquivo /etc/ssh/sshd_config e procure pela linha; #Port 22 altere para Port 2222, observe que além de alterar a porta, também precisa remover o comentário da linha, caso não encontre esta linha, pode adicionar no inicio do arquivo, depois de efetuar a alteração, precisa reiniciar o serviço, veja no tópico sobre instalação, para testar na própria maquina, em um konsole execute a linha de comando neste formato;
ssh -p 2222 IP-ou-dominio -l usuario
ssh -p 2222 192.168.1.2 -l zago
ssh -p 222 zago@192.168.1.2
Ocorrendo erros, procure interpretar a mensagem de erro, verifique a configuração, entre as principais causas, verifique se o serviço ssdh (servidor ssh) está rodando, regras de firewall bloqueando acesso, se está tentando com usuário permitido na configuração do ssh.....
Redirecionamento e algumas regras de firewal
Existem diversas opções e regras para redirecionar um pedido que chega da internet para uma estação ou servidor que estão atrás do firewall, pode ser por porta, IP ou protocolo.
Segue alguns exemplos;
Redirecionar ssh, independe do cliente, na origem pode ser utilizado linha de comando do ssh, fish no konqueror, putty em cliente windows, o que importa é a porta, os demais requisitos ficam por conta da configuração do cliente e servidor, exemplo para redirecionar tudo que chega na porta 22 (usada pelo ssh), redirecionar para a estação com IP 192.168.1.53, todos os pedidos que chegam no firewall e porta 22 serão redirecionados.
$iptables -t nat -A PREROUTING -p tcp -s 0/0 --dport 22 -i eth0 -j DNAT --to 192.168.1.53:22
Onde:
eth0 = placa de rede de cara pra net, ajuste na sua instalação
22 é a porta que quero redicionar pra outra maquina (22 é a porta default utilizada nas conexões por ssh), pode ser alterada.
192.168.1.53 é o IP reservado da maquina interna que vai atender a conexão.
Na maquina remota (internet) a conexão é disparada para o IP do firewall, a regra acima redireciona para a estação, um exemplo de linha de comando para conexão via ssh;
ssh user@IP, ou ssh zago@200.200.200.200, quando este pedido chega no Firewall com IP 200.200.200.200 é automaticamente redirecionado para a estação com IP 192.168.1.53 que atenderá o pedido e completará a conexão.
Outra opção, usar porta diferente, assim pode redirecionar cada porta para estações especificas, também pode redirecionar com troca de porta, neste exemplo a 2222 será redirecionada para 22, nesta regra vai redirecionar para a estação, somente os pedidos que chegam na porta 2222, os demais pedidos na porta 22 ou outra qualquer serão tratados por outras regras.
$iptables -t nat -A PREROUTING -p tcp -s 0/0 --dport 2222 -i eth0 -j DNAT --to 192.168.1.53:22
Pode configurar o ssh para ouvir em outra porta, ou até mesmo manter a default, neste exemplo foram mantidas, tanto o firewall como estação estão ouvindo na porta 22, o uso da porta 2222 foi utilizando somente na linha de comando e na regra de iptables, a regra de redirecionamento funciona somente para os pedidos que chegam na porta 2222, a linha de comando na internet tem que indicar a porta, exemplo;
ssh -p 2222 zago@200.200.200.200
o (-p 2222) serve para indicar a porta, os pedidos que chegarem na porta 22 seguem outras regras, pode ser redirecionada para outra maquina ou atendida pela própria maquina do firewall.
Restringindo o redirecionamento somente a determinado IP, permitindo que somente conexões com origem no IP 200.204.198.164 sejam redirecionadas para a estação, qualquer conexão com origem em IP diferente não serão redirecionadas, exemplo da regra;
$iptables -t nat -A PREROUTING -p tcp -s 200.204.198.164 --dport 2222 -i eth0 -j DNAT --to 192.168.1.53:22
Observe a comodidade, a partir do console da maquina remota pode fazer uma conexão normal na porta 22 do micro firewall para inserir a regra acima, abrir outro console para aplicar a linha de comando da copia na porta 2222 que cai na regra do redirecionamento e portanto na estação remota para fazer a copia para a maquina local, concluida a transferencia de arquivos, voltar ao console anterior e desfazer as alterações no firewall.
Como pode notar, são varias opções, e tem mais meios de dificultar o acesso de estranhos, neste documento e no FAQ tem mais dicas, voce sabe o que tem a proteger, portanto implemente as medidas de segurança, continue pesquisando....
Liberando acesso local e limitando conexões externas
Liberando somente conexões para a rede interna, regra aplicável em micros que compartilha a internet, com duas placas de rede, uma para a rede interna e outra de cara para internet, conectada ao modem, considerando que a placa que está de cara para internet seja a eth0, inclua esta regra no firewall.
iptables -A INPUT -p tcp -i eth0 --syn --dport 22 -j DROP
ajuste o device de rede (eth0) conforme sua instalação, em conexões via pppoe o device deve ser (ppp0), observe que esta regra fecha qualquer tentativa de conexão via ssh chegando pela eth0 mas continua aceitando todas que chegam pela eth1
Caso queira liberar somente alguns IP da rede interna, use regras neste formato.
iptables -A INPUT -p tcp -s $IP_PERMITIDO1 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -s $IP_PERMITIDO2 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -s $IP_PERMITIDO3 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -s $IP_PERMITIDO4 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
As variaveis de $IP_PERMITIDO1 a $IP_PERMITIDO4 devem ser definidas no inicio do script de firewall ou substituidas pelo IP, a ultima linha fecha para os demais IP tanto da rede interna como da internet.
Liberar acesso remoto somente para um IP conhecido, para manutenção, no inicio do firewall defina a variável $IP_PERMITIDO ou substitua no exemplo abaixo;
iptables -A INPUT -p tcp -s $IP_PERMITIDO --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
Liberar mais de um IP, repita a primeira linha alterando a variável ou inserindo o IP diretamente.
Liberar acesso somente a um IP e negar para os demais.
iptables -I INPUT -p tcp -s $IP_PERMITIDO --dport 22 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
Knocking - abrir porta ssh remotamente
Knocking on servers doors
Voce pode fechar todo fluxo na porta 22 e so voce abre quando precisa.
Tutorial com script e dicas para RedHat / Fedora
http://www.Dicas-L.com.br/dicas-l/20060913.php
Tutoriais para SUSE 10.1 e outras distribuições.
http://www.zago.eti.br/ssh/knock.html
fail2ban - bloquear ataques brute force
Bloqueio de IP quando falha login, configurável, por default permite 3 tentativas de senha, depois bloqueia novas tentativas, ideal para proteção de robots que ficam tentando fazer login via SSH, FTP, SMTP, Apache, etc.
Tutorial para instalações Debian e seus derivados, serve como referencia para outras distro.
http://www.howtoforge.com/fail2ban_debian_etch
Indicado por:
Anderson Marcelo De Oliveira
anderson@infomachine.com.br
Iptables - Bloquear ataques Brute Force
Regras Iptables para Bloquear ataques Brute Force no SSH
Colaboração: mairon lima mendes
http://www.Dicas-L.com.br/dicas-l/20060724.php
No SUSE 10.1 editei as regras para remover a quebra de linha e eliminar as mensagens de erro, ainda não verifiquei o resultado.
Cuidado com a quebra de linha, copia do endereço acima vem com quebra de linha, tanto via navegador (copiar e colar) como via lynx, precisa editar para eliminar a quebra ou acrescentar \ no final da linha quebrada.
Caso tenha dificuldade, tem cópia destas regras dentro deste modelo, tente baixar com wget para evitar quebra de linha.
wget http://www.zago.eti.br/firewall/fireaula.sh
Para facilitar a separação das linhas, todas iniciam com $iptables, também estão separadas por uma linha em branco
DenyHosts contra ataques de força bruta
DenyHosts - bloquear hosts que realizam tentativas de acesso ao sistema por SSH - força bruta
http://www.dicas-l.com.br/dicas-l/20060609.php
Tópico em elaboração no SUSE 10.1. Falhou e qualquer dia continuo com os testes...
Teste com o pacote DenyHosts-2.4b-python2.4.noarch.rpm, procure por ele ou versão mais recente
http://denyhosts.sourceforge.net/
rpm -ivh DenyHosts-2.4b-python2.4.noarch.rpm
error: Failed dependencies:
/bin/env is needed by DenyHosts-2.4b-python2.4.noarch
python(abi) = 2.4 is needed by DenyHosts-2.4b-python2.4.noarch
versão do python instalado
smart install python
warning: python-2.4.2-18@i586 is already installed
Console remoto - conexões com outras maquinas
SSH permite conexão segura e criptografada, ideal para conexão remota para configuração ou administração, completada a conexão tem um console (shell) da maquina remota, quando iniciar a conexão a partir de um konsole do ambiente gráfico, pode copiar e colar linhas de comandos ou textos entre o konsole e navegador ou editor de textos, muito útil e pratico, pode abrir diversas conexões com a mesma maquina ou maquinas diferentes.
Exemplos de linha de comando pra conexão com a maquina remota, formato (ssh user@IP), as linhas abaixo tem o mesmo resultado:
ssh zago@192.168.1.53
ssh -l zago 192.168.1.53
ssh -p 22 192.168.1.2 -l zago
Quando se usa porta diferente, exemplo para quem usa na porta 2222
ssh -p 2222 192.168.1.2 -l zago
Algumas instalações vem configurada para não aceitar conexão do root, tem duas soluções, conectar com user comum e tornar root com (su -), ou alterar a confgiruação para permitir liberar login do root.
Algumas distros na configuração default permite login de root, como exemplo o Debian (Sarge), outras vem com este recurso bloqueado, como exemplo o CL10.
Na instalação padrão do CL10 não é permitido login do root diretamente, mas quando precisar fazer algo como root, efetue login como usuario comum e depois digite "su -" e a senha do root para se tornar root, quando aos poderes e recursos não faz diferença, caso prefira, pode liberar login de root diretamente, altere para "yes" a diretiva (PermitRootLogin no) em:
/etc/ssh/sshd_config
altere a linha PermitRootLogin no
para PermitRootLogin yes
Reinicie o sshd service sshd restart
Prontinho, já pode fazer a conexão como root.
Ou simplificando em uma tacada só, comando pra copiar e colar:
sed -i "s/PermitRootLogin no/PermitRootLogin yes/g" /etc/ssh/sshd_config
service sshd restart
Prontinho, na linha de comando pode executar todos os comandos disponíveis no console, quando configurado para exportar o X, faça a conexão com a diretiva -X para executar aplicativos do ambiente gráfico, veja também outros tópicos neste documento, como executar aplicativos do ambiente gráfico, exportar o X.
Executar comando remoto e encerrar conexão, comandos que não requer interação, como iniciar, parar e ver status de serviços, quando precisa somente executar o comando e encerrar a conexão, pode fazer tudo em uma única linha de comando, exemplo para ver status do servidor samba, desligar o micro, iniciar serviço, ver o resultado do comando free;
ssh -C zago@192.168.1.120 /usr/bin/smbstatus \; free
Desligar maquina remota;
ssh -C root@192.168.1.70 poweroff
Executar comando remoto
Em manutenção de arquivos de configuração é comum fazer a conexão via ssh para depois executar o comando, seja comandos simples como ver espaço em disco, arquivos ou editar algum .conf, para estes casos pode passar o comando junto com a linha de comando da conexão, no final do comando já cai no console da maquina local e evita o trabalho de fazer e encerrar a conexão, no caso de executar somente um comando, como ls, du ou até mesmo editar um .conf, no final do comando, tem o resultado remoto mas cai no console local.
Alguns exemplos, após a linha de comando quando solicitado, informe a senha do usuário remoto , entre maquinas configuradas para conexão sem senha executa o comando direto.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos