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