Descobri que minha suspeita estava correta e sudo iptables --flush
havia eliminado as regras da cadeia INPUT da ufw, que chamavam de suas próprias cadeias personalizadas. Por alguma razão (ainda desconhecido para mim), o ufw não estava colocando isso de volta quando foi ativado.
Para fazer com que o ufw volte a colocar essas regras, eu tive que remover todas as cadeias ufw do iptables, e então habilitar o ufw. Eu fiz assim:
sudo iptables -X ufw-after-forward
sudo iptables -X ufw-after-input
sudo iptables -X ufw-after-logging-forward
sudo iptables -X ufw-after-logging-input
sudo iptables -X ufw-after-logging-output
sudo iptables -X ufw-after-output
sudo iptables -X ufw-before-forward
sudo iptables -X ufw-before-input
sudo iptables -X ufw-before-logging-forward
sudo iptables -X ufw-before-logging-input
sudo iptables -X ufw-before-logging-output
sudo iptables -X ufw-before-output
sudo iptables -X ufw-reject-forward
sudo iptables -X ufw-reject-input
sudo iptables -X ufw-reject-output
sudo iptables -X ufw-track-input
sudo iptables -X ufw-track-output
Quando habilitei o ufw depois disso, configurei o iptables corretamente.