
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 nslookup
no IP dinâmico e libere/reescreva a MYIP
cadeia 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