Posso bloquear (praticamente) o acesso à porta SSH apenas para o meu país?

2

Estou pensando que bloquear o acesso à porta SSH para permitir apenas o meu país é um passo óbvio, mas não vejo uma maneira prática de fazer isso.

Estou no Reino Unido, se for importante. Eu tenho acesso total ao servidor Ubuntu. O servidor é um servidor remoto baseado em nuvem.

Isso parece muito fácil e não consigo ver como isso funciona: link

Isso mostra uma carga de IPs, mas não consigo ver como posso transferi-lo para algo utilizável / prático: link

Na verdade, apenas um escritório de pessoas precisará de acesso (ninguém é remoto). Estou relutante em definir o endereço IP atual que usamos ao nos conectar, já que ele parece mudar a cada 6 meses.

Eu tenho outras boas práticas de segurança - desabilite o login root, chaves de criptografia de alto bit, etc., mas isso parece um passo extra óbvio.

Vale a pena o incômodo? Existe uma maneira confiável de fazer isso?

    
por user2143356 23.05.2014 / 13:15

8 respostas

5

Isso soa como um exemplo sutil de segurança pela obscuridade. Qualquer um que esteja realmente interessado em invadir um sistema como esse pode facilmente encontrar um proxy aberto ou alugar um servidor dentro do Reino Unido, e atacar de lá.

Ao mesmo tempo, você dificulta as operações:

  • Você precisará usar heurísticas , já que não há nada como um "país" no TCP / IP. As heurísticas falham e, quando o fizerem, estarão no pior momento possível .
  • Uma configuração não padrão vai frustrar os futuros mantenedores.
  • Backups críticos devem ser replicados em todo o mundo. Você não quer esperar pelo tempo de indisponibilidade da produção para descobrir que um caminho de recuperação crítico está bloqueado.
por 23.05.2014 / 14:50
5

Isto não parece completamente necessário. Dependendo do seu firewall, ele poderá fazer seu próprio bloqueio do GeoIP. Caso contrário, você pode usar iptables para "permitir" o bloqueio de IPs que você obtém no escritório.

No entanto, o que você fez até agora é suficiente para os servidores mais . A autenticação apenas de chaves torna a força bruta inviável. Você pode reduzir ainda mais os ataques alterando a porta SSH padrão. Observe que isso não aumenta a segurança, mas reduz 90% do tráfego falso de scanners automáticos que não procuram SSH em portas diferentes.

    
por 23.05.2014 / 14:04
1

Para ser honesto, não acredito que você possa garantir que apenas pessoas do Reino Unido possam se conectar via SSH, pois não tenho conhecimento de um método 100% para identificar uma conexão.

O

link pode ser uma maneira de fazer isso, mas consultar isso a cada vez e inspecionar o resultado pode acionar muitos tempos limite.

    
por 23.05.2014 / 13:58
1

Se você quiser permitir apenas determinados locais com base em IP, supondo que esteja usando iptables , será necessário definir a política INPUT padrão como DROP e, em seguida, permitir individualmente cada bloco de endereço.

IMHO seria muito menos sobrecarga e ainda relativamente seguro para desativar a autenticação de senha e permitir somente logins baseados em chave para o servidor.

    
por 23.05.2014 / 14:03
1

Descobri que a maioria das listas de locais IP não é confiável. Alguns endereços estão totalmente errados.

Seria mais fácil criar uma VPN para cada pessoa que precisa de SSH, para que eles possam se conectar de qualquer lugar ... e bloquear o acesso SSH ao público.

    
por 23.05.2014 / 14:07
1

Você pode fazer o download da lista de alocações do RIPE e criar regras de iptables com base nisso . Você deve estar ciente de que a lista pode não estar completa, acho que há uma pequena quantidade de endereços IP alocados através de canais ligeiramente diferentes, que não serão exibidos nessa lista.

Um invasor que sabe o que você está fazendo poderia ignorar a filtragem se encontrar qualquer proxy (ou similar), que esteja na lista de endereços IP permitidos.

    
por 23.05.2014 / 14:07
0

Eu tive uma situação semelhante no passado. Tudo o que já foi dito é bastante válido, e eu concordo que você não pode efetivamente bloquear por país sem o uso de um aplicativo de firewall adequado, e mesmo isso é falível.

O ponto sobre você precisar de acesso remoto, algum dia, no pior momento possível "é o verdadeiro argumento decisivo, aqui. como diz o ditado:" Estive lá, Feito isso ". Não é bonito.

Foi assim que resolvi meu problema.

Eu configurei o firewall do escritório para permitir que o ibsh ssh apenas as sub-redes dos provedores e um outro endereço IP externo. Esse servidor externo foi configurado com porta não padrão, portsentry e algumas outras coisas para se certificar de que somente o I poderia obtê-lo e, em seguida, o ssh para a rede interna.

    
por 23.05.2014 / 17:57
0

Configure um DNS dinâmico no seu servidor. Emita chaves para seus clientes autorizados para que cada um possa apenas atualizar seu próprio endereço IP de DNS dinâmico. Isso permite que seu servidor saiba de quais endereços IP seus clientes autorizados estão vindo.

Proteja seu servidor SSH com o TCP Wrapper, onde você só permite que seus clientes autorizados se conectem usando as informações do DNS dinâmico. Os arquivos relevantes são /etc/hosts.{allow,deny} para o TCP Wrapper.

Dada a complexidade dos itens acima, eu fiz isso apenas com alguns clientes Linux. Os clientes móveis apresentam mais um desafio (principalmente devido à falta de nsupdate ou falta de notificação sobre a mudança de endereço IP). Eu instalei um servidor OpenVPN e emiti chaves para os clientes de roaming não-Linux. Se um cliente móvel for perdido / roubado, sua chave correspondente poderá ser revogada / removida no servidor OpenVPN.

Comecei com o IPSec, mas os roteadores NAT sem fio baratos não deixavam os pacotes IPSec embora. Talvez roteadores mais novos / caros sejam.

    
por 26.05.2014 / 19:09