Esta regra funcionou para mim. A ordem é importante para o iptables, então colocar os DROPs no final resolveu o problema.
iptables -A INPUT -i eth0 -p tcp --dport $ssh_port -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport $ssh_port -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i $internal_interface -j ACCEPT
iptables -A OUTPUT -o $internal_interface -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP