Limitando a origem da conexão no firewall

1

Sou novo em gerenciamento de servidores e escrevi um script IPTables para firewall. Estou muito preocupado com a segurança do meu servidor e, portanto, estou me perguntando sobre algo que leio com frequência em pessoas que usam firewalls, o que limita a origem da conexão SSH que chega ao servidor.

O problema com isso é que meu servidor é um remoto que aluguei, e como uma pessoa que se conecta ao servidor da minha casa e trabalho, não tenho motivos para acreditar que meus IPs residenciais e de trabalho continuarão sendo mesmo para sempre. Então, se eu limitar a fonte de SSH ao meu servidor, então se meu IP em casa mudar? E se eu viajar para outro país e quiser acessar meu servidor? Eu viajo muito.

Parece que eu sinto falta de algo ... então vocês poderiam explicar a maneira eficiente de lidar com isso?

A pergunta é: Como posso limitar a origem da conexão SSH sem limitar meu próprio acesso ao meu servidor?

Obrigado por qualquer esforço.

    
por The Quantum Physicist 25.01.2014 / 16:33

3 respostas

1

O Iptables não é a ferramenta correta para resolver esse problema, pois é limitado à filtragem por parâmetros simples, como endereço de origem ou de destino, porta, protocolo e similares.

Você deve configurar a autenticação de chave pública SSH, conforme descrito neste Manual de documentação do Ubuntu , e então forçar Autenticação PK usando este Linux.org HowTo .

Você pode aumentar isso bloqueando o SSH dos endereços IP de origem em países para os quais você sabe que não planeja viajar. No entanto, um atacante determinado provavelmente teria pontos de ataque de quase qualquer país, então isso é de benefício limitado.

    
por 25.01.2014 / 17:23
1

Como na resposta do @Jonathan Ben-Avraham, a primeira coisa a fazer é desabilitar o acesso por senha e mudar para a chave pública somente . Claro, isso exige que você não perca a chave privada: salve uma cópia de segurança em algum lugar seguro.

A segunda abordagem que você deve tomar é limitar o número de conexões SSH de entrada. Adicione uma regra iptables ao longo das linhas de

    iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW \
         -m hashlimit --hashlimit-above 1/min --hashlimit-mode srcip \
         --hashlimit-name ssh --hashlimit-burst 5 -j REJECT

A idéia é que você pode (tentar) logar cinco vezes, mas depois fica congelado por um minuto. Isso não irá incomodar um usuário autorizado, mas o script cracker que tenta todas as senhas (ou chaves privadas) que estão flutuando na rede, tentando encontrar uma correspondência, será bloqueado com bastante eficiência.

Você também pode querer adicionar uma autenticação de dois fatores. Este link link descreve bem o processo; basicamente você instala o pacote libpam-google-authenticator, adiciona auth required pam_google_authenticator.so a /etc/pam.d/sshd , instala o Google Authenticator ou o aplicativo androidtoken no seu telefone, executa google-authenticator no seu servidor para configurar tudo e reinicia o serviço ssh. (Este é, na verdade, um TOTP genérico (RFC 6238) e não está associado ao Google, nem fala com eles sobre o AFAIK.)

    
por 25.01.2014 / 21:39
0

Se você não puder limitar o escopo do endereço de origem que precisa se conectar ao seu servidor ssh, dê uma olhada no seguinte link. Poeta batendo basicamente permitirá que você abra portas dinamicamente com base em uma seqüência de pacotes que o cliente envia (wikipedia lhe dirá mais)

Portanto, a porta permanece fechada, a menos que você bata na porta do seu firewall com o código correto.

link

IMHO não é o que eu chamaria de uma solução elegante e requer um cliente, mas que parece corresponder às suas necessidades.

    
por 25.01.2014 / 17:52