Colocar remotamente na lista de permissões o acesso SSH a um endereço IP específico

Colocar remotamente na lista de permissões o acesso SSH a um endereço IP específico

Acabei de alugar um servidor com um provedor de nuvem que não tem como listar o acesso SSH na lista branca. Estou tentando descobrir uma maneira de colocar meu endereço IP na lista de permissões remotamente para ter acesso ao meu servidor via SSH e colocar todos os outros na lista negra. Eu estava pensando em usar tabelas IP, mas isso nunca funcionará porque meu endereço IP é dinâmico. Semelhante aos grupos de segurança da AWS. Estou disposto a usar um serviço pago, desde que não seja caro ou melhor ainda se alguém souber de um serviço ou de uma maneira eficiente de gerenciar remotamente o iptables em caso de alteração/bloqueio de IP.

Responder1

É bastante simples usar um script para atualizar o iptables e um serviço DDNS.

Coloque a ação IP em uma cadeia separada:

-A MYIP -s 1.2.3.4/32 -j ACCEPT
-A MYIP -j DROP

e então execute esta cadeia na sua porta SSH, por exemplo

-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j MYIP

Em seguida, periodicamente (por exemplo cron), execute um script que faça uma verificação nslookupno IP dinâmico e libere/reescreva a MYIPcadeia se uma alteração for detectada.

#!/bin/bash

IPSAVE=/etc/sysconfig/iptables

update_iptables() {
  MN=$1
  CHAIN=$2

  IP=`nslookup ${MN} | tail --lines=-3 | grep Address | awk '{print $2}'`
  if [ `echo ${IP} | wc -m` -gt 0 ]
  then
    C=`grep -c "\-A ${CHAIN} \-j " ${IPSAVE}`
    D=`grep "\-A ${CHAIN} \-s " ${IPSAVE} | grep -c "${IP}"`
    if [ ${C} -gt 0 ] && [ ${D} -eq 0 ]
    then
      /sbin/iptables -F ${CHAIN}
      /sbin/iptables -A ${CHAIN} -s ${IP}/32 -j ACCEPT
      /sbin/iptables -A ${CHAIN} -j DROP
    fi
  fi
}

update_iptables my.dynamic.hostname.com MYIP

informação relacionada