Como o SSH apareceu na porta 22

O SSH é executado na porta 22 por padrão, o que não é uma coincidência. Aqui está a história de como ele conseguiu esse porto.

Quando eu ( Tatu Ilonen ) publiquei essa história pela primeira vez em abril de 2017, ela se tornou viral: foi lida por cerca de 120.000 leitores em três dias.

Histórico de recebimento da porta 22 para SSH


Eu escrevi a primeira versão do SSH (Secure Shell) na primavera de 1995. Telnet e FTP foram amplamente utilizados na época.

Mas eu ainda desenvolvi o SSH para substituir o telnet (porta 23) e o ftp (porta 21). A porta 22 estava livre e convenientemente localizada entre as portas para telnet e ftp. Eu pensei que esse número de porta poderia ser um daqueles pequenos detalhes que darão aura de confiança ao SSH. Mas como conseguir isso? Eu nunca aloquei portas, mas conhecia quem faz isso.

A alocação de portas era bastante simples na época. A Internet era menor e estávamos nos estágios iniciais do boom da Internet. Os números de porta foram alocados pela IANA (Internet Assigned Numbers Authority). Naquela época, isso significava os respeitados pioneiros da Internet John Postel e Joyce C. Reynolds . Entre outras coisas, John foi o editor de protocolos menores como IP (RFC 791), ICMP (RFC 792) e TCP (RFC 793). Alguns de vocês já devem ter ouvido falar deles.

Fiquei francamente assustado com John como autor de todas as principais RFCs da Internet!

De uma maneira ou de outra, mas antes do anúncio do ssh-1.0 em julho de 1995, enviei o seguinte email para a IANA:

De ylo Mon 10 de julho 11:45:48 +0300 1995
De: Tatu Ylonen <ylo@cs.hut.fi>
Para: Autoridade de Números Atribuídos na Internet <iana@isi.edu>
Assunto: pedido de número da porta
Organização: Universidade de Tecnologia de Helsinque, Finlândia

Caro senhor,

Eu escrevi um programa para efetuar login com segurança de uma máquina para outra através de uma rede insegura. Esta é uma melhoria significativa da segurança em relação aos protocolos telnet e rlogin existentes e suas implementações. Impede, em particular, IP, DNS e falsificação de roteamento. Meu plano é distribuir livremente o programa na Internet e garantir seu uso mais amplo possível.

Gostaria de obter um número de porta privilegiada registrado para o programa. É desejável no intervalo de 1 a 255, para que possa ser usado no campo WKS nos servidores de nomes.

Abaixo aplico o projeto RFC para o protocolo. O software foi usado localmente por vários meses e está pronto para publicação, com exceção do número da porta. Se você pode atribuir rapidamente um número de porta, gostaria de apresentar o programa esta semana. Atualmente, estou usando a porta 22 no teste beta. Seria ótimo usar esse número (atualmente listado como "não atribuído" nas listas).

O nome do serviço para o software é "ssh" (Secure Shell).

Atenciosamente

Tatu Ilonen <ylo@cs.hut.fi>

... então a especificação do protocolo ssh-1.0 segue

No dia seguinte, uma carta de Joyce estava na caixa de entrada:

Data: segunda-feira, 10 de julho de 1995 15:35:33 -0700
De: jkrey@ISI.EDU
Para: ylo@cs.hut.fi
Assunto: Re: request for port number
Cc: iana@ISI.EDU

Tatuagem

Atribuímos a porta 22 para SSH, especificando você como a pessoa de contato.

Joyce

Nós conseguimos! Agora SSH tem porta 22 !!!

Em 12 de julho de 1995 às 2:32 da manhã, anunciei a versão beta final para meus testadores beta na Universidade de Helsinque. Às 17:23, ele enviou pacotes ssh-1.0.0 aos testadores e às 17:51 enviou um anúncio sobre SSH (Secure Shell) à cypherpunks@toad.com discussão cypherpunks@toad.com . Eu também dupliquei o anúncio em vários grupos de notícias, listas de discussão e diretamente para indivíduos que discutiram tópicos relacionados na Internet.

Alterando a porta SSH no servidor


Por padrão, o servidor SSH ainda está sendo executado na porta 22. No entanto, isso acontece de maneira diferente. Uma razão está testando. Outra é executar várias configurações no mesmo host. É raro um servidor ser executado sem privilégios de root; nesse caso, ele deve estar localizado em uma porta não privilegiada (ou seja, com um número de 1024 ou mais).

O número da porta pode ser configurado alterando a diretiva da Port 22 em / etc / ssh / sshd_config . Também é especificado pelo parâmetro -p <port> no sshd . O cliente SSH e os programas sftp também suportam o parâmetro -p <port> .

Especificando uma porta SSH na linha de comando


O parâmetro -p <port> pode ser usado para especificar o número da porta ao conectar usando o comando ssh no Linux. SFTP e scp usam o parâmetro -P <port> (observação: P maiúsculo). Uma instrução da linha de comando substitui qualquer valor nos arquivos de configuração.

Configurando o acesso SSH por meio de firewalls


O SSH é um dos poucos protocolos que geralmente têm permissão para trabalhar através de firewalls para acesso de saída, especialmente em empresas pequenas e técnicas. O SSH de entrada geralmente é permitido em um ou mais servidores.

Ssh de saída


Configurar o ssh de saída em um firewall é muito simples. Se houver restrições no tráfego de saída em geral, basta criar uma regra que permita conexões de saída na porta TCP 22. Isso é tudo. Se você deseja limitar os endereços de destino, pode criar uma regra apropriada, permitindo o acesso apenas aos servidores da sua organização na nuvem ou a um servidor de salto que proteja o acesso à nuvem.

Túnel reverso é um risco


No entanto, o SSH de saída ilimitado pode ser arriscado. O protocolo SSH suporta tunelamento . A idéia principal é que o servidor SSH no servidor externo escute conexões de qualquer lugar, encaminhe-as para a organização e estabeleça uma conexão com algum tipo de servidor interno.

Em alguns casos, isso é conveniente. Desenvolvedores e administradores de sistema geralmente usam o tunelamento para obter acesso remoto a partir de casa ou de um laptop enquanto viaja.

Mas geralmente o tunelamento viola a política de segurança e assume o controle dos administradores de firewall e da equipe de IS. Por exemplo, ele pode violar as regras PCI , HIPAA ou NIST SP 800-53 . Pode ser usado por hackers e serviços especiais para deixar backdoors na rede local.

O programa CryptoAuditor controla o encapsulamento no firewall ou no ponto de entrada de um grupo de servidores em nuvem. Ele trabalha em conjunto com o Universal SSH Key Manager para obter acesso às chaves do host , usando-as para descriptografar sessões SSH no firewall e bloquear o encaminhamento não autorizado.

Ssh de entrada


Para acesso de entrada, existem várias opções:

  • Configure um firewall para encaminhar todas as conexões para a porta 22 para um endereço IP específico na rede interna ou DMZ . Execute um CryptoAuditor ou salte o servidor nesse endereço IP para controlar e verificar o acesso adicional à organização.
  • Use portas diferentes no firewall para acessar servidores diferentes.
  • Permitir acesso SSH somente após o login usando uma VPN, geralmente através de IPsec .

Habilitando o SSH através de iptables


Iptables é um firewall de host incorporado ao kernel do Linux. Geralmente é configurado para proteger o servidor, impedindo o acesso a todas as portas que não foram explicitamente abertas.

Se o iptables estiver ativado no servidor, os seguintes comandos podem permitir o acesso SSH de entrada. Eles devem ser executados sob a raiz.

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT


Se você deseja manter as regras para sempre, em alguns sistemas isso pode ser feito com o comando:

service iptables save

Source: https://habr.com/ru/post/pt418533/


All Articles