Acessando o servidor IP restrito do IP dinâmico

5

Nossos servidores (todos os CentOS) são todos restritos por IP, mas muitas vezes eu estou fora de casa e preso em um endereço IP dinâmico. Usando um widget DynDNS Eu configurei este IP dinâmico para sempre sincronizar com um nome de host DynDNS, mas como eu deveria fazer essa resolução para um IP em hosts.allow. No momento eu escrevi um script cron que roda a cada poucos minutos e verifica o IP atribuído a esse hostname e grava o IP dinâmico em hosts.allow, mas não estou muito interessado nisso como uma solução. Existe uma maneira mais elegante que eu poderia estar fazendo isso?

Obrigado.

    
por robjmills 04.10.2010 / 10:19

6 respostas

3

O script abaixo iria pingar seu endereço dinâmico e pegar o ip apenas e comparar com o ip armazenado em last_ip.txt, se eles forem diferentes o ip em hosts.allow será removido e substituído pelo novo ip bem como o ip em last_ip.txt.

Você pode então definir este código no seu crontab para executar a cada 5 minutos ou 10 ou o que você achar adequado.

Não é tão complexo e pode resolver o seu problema ...

#!/bin/bash

DYN_IP="www.google.com.br"
CMD=$(ping -c1 $DYN_IP | head -1 | awk -F' ' '{ print $3}' | sed 's/(\|)//g')
FILE="./last_ip.txt"
NEW_IP=$CMD

if [ -e $FILE ]; then
        OLD_IP=$(cat $FILE)
else
        OLD_IP="0"
fi

if [ $OLD_IP != $NEW_IP ]; then
        echo $NEW_IP > last_ip.txt
        sed -i "/^sshd: $OLD_IP/d" /etc/hosts.allow
        echo "sshd: $NEW_IP" >> /etc/hosts.allow
        echo "Allow ip changed to $NEW_IP"
fi
    
por 04.10.2010 / 21:41
2

Minha solução atual para isso é webknocking , onde primeiro faço uma solicitação para uma página da web especial ( opcionalmente com meu usuário / senha) que abre as portas SSH para o IP que eu solicito. Isto é como eu ssh em alguns dos meus servidores do meu telefone. Isso mantém o software extra envolvido ao mínimo para que eu possa sentar em algum computador do café e autorizá-lo para acesso ssh padrão em alguns segundos, mas evita que os intrusos possam brincar com a porta ssh. Uma desvantagem de qualquer solução de impacto é o ponto extra de falha. Minha rede de segurança é um pouco de IP codificado que é permitido acessar e se algo der errado com os scripts ou servidor web que manipula, eu só tenho que usar uma das outras máquinas que tem acesso permanente para entrar e corrigir o quebrado caixa.

Como alternativa, alguns sistemas ip dinâmicos possuem "hooks" ou "callbacks" que podem ser usados para obter uma notificação automatizada de alterações de endereço IP. Isso pode ser feito por e-mail ou por uma solicitação de http que pode ser usada como uma "batida". Alternadamente, você pode fazer o script no final local para que, sempre que seus scripts de rede forem executados ou o IP local mudar, você dispare automaticamente algum tipo de toque ou acionador que force e atualize a lista de acesso dinâmico ao ip.

    
por 04.10.2010 / 11:11
2

Compreendo sua preocupação com terceiros que estão jogando com uma porta SSH aberta. Eu resolvi isso de uma maneira diferente. No meu servidor privado, a porta SSH é aberta a todos, mas é monitorada pelo fail2ban, um pequeno pacote inteligente disponível para o Debian (e provavelmente a maioria das outras distribuições também). Assim que alguém falha ao efetuar login após 3 tentativas do mesmo endereço IP, esse endereço fica bloqueado no firewall por vários dias.

Desde que instalei isso, tive paz e tranquilidade no meu servidor. E eu ainda posso logar (usando minha chave de um stick USB) de qualquer lugar do mundo.

Se você for o único a fazer login nesse servidor, também poderá fazer uma simples porta no firewall ou executar o sshd em uma porta diferente.

    
por 04.10.2010 / 11:35
1

Sugiro bater de porta como alternativa, ou alugue uma conta ssh em um servidor de terceiros e SSH de lá.

    
por 04.10.2010 / 10:29
1

Eu abordaria isso de uma maneira diferente. Em vez de manter seus servidores mantendo uma lista de IPs na lista de permissões, eu configuraria todos eles para permitir apenas o ssh de IPs "internos". Em seguida, configure um host de gateway / plataforma de aterrissagem separado para o qual você possa fazer VPN. Agora, você pode saltar através dessa caixa para alcançar o resto dos servidores com segurança.

Isso limita sua superfície de ataque a uma única caixa, em vez de todas as suas caixas. Além disso, muitas das soluções de VPN permitem que você aprimore os requisitos de segurança para uma conexão, usando certificados, autenticação de dois fatores e outras coisas junto com (ou em vez de) senhas simples. Tudo somado, isso proporcionará maior segurança, maior flexibilidade e melhor manutenção.

Há uma série de opções de VPN disponíveis (eu sou um grande fã de OpenVPN , eu mesmo) que você pode usar para configurar corretamente um ponto de acesso seguro para seus dispositivos. Muitos deles são relativamente fáceis de configurar e, para uma configuração pequena como essa, eles exigem recursos mínimos.

    
por 04.10.2010 / 21:02
1

ConfigServerFirewall tem a funcionalidade que você deseja. Uma vez instalado, você pode conferir esta postagem no fórum para uma boa explicação.

    
por 04.10.2010 / 22:10