parece correto, se você estiver veiculando apenas https, esse é o que você precisa deixar em aberto. no entanto, somente o aplicativo iniciado com uma conta raiz pode ouvir as portas abaixo de 1024, então você tem duas opções aqui:
- inicie seu aplicativo ruby como root - não é uma boa ideia
- está atrás do apache - pode ser melhor, mas depende do que você deseja fazer, isso pode ser apenas uma sobrecarga adicional
- execute o aplicativo ruby como outro usuário em uma porta diferente, digamos 8443 e tenha o iptables para encaminhar solicitações de 443 para 8443 - isso, eu acho, é o que você quer fazer
abaixo é como você faz o encaminhamento de porta (você pode fazer o mesmo com 80 a 8080, por exemplo):
iptables -t nat -A PREROUTING -i $EXT_IF -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443
diferente disso, não há necessidade de abrir nenhuma outra porta para a internet, apenas certifique-se de deixar o ssh aberto na outra interface, para que você possa acessar e gerenciar o servidor.
como para o aplicativo de firewall, o iptables vem com o Ubuntu e apenas o usa, não há necessidade de nenhuma outra ferramenta sofisticada que eu diga.