Se você adicionar suas regras personalizadas em /etc/ufw/before*.rules ou após * .rules, elas não desaparecerão após um recarregamento.
Quando comandos ufw válidos são inseridos no shell, ou seja, regras de usuário personalizadas, eles entram em arquivos /etc/ufw/user*.rules e esses persistem.
root@ubuntu:~# ufw allow 22/tcp
Rule added
Rule added (v6)
root@ubuntu:~# grep tcp.*22 /etc/ufw/user*.rules
/etc/ufw/user6.rules:### tuple ### allow tcp 22 ::/0 any ::/0 in
/etc/ufw/user6.rules:-A ufw6-user-input -p tcp --dport 22 -j ACCEPT
/etc/ufw/user.rules:### tuple ### allow tcp 22 0.0.0.0/0 any 0.0.0.0/0 in
/etc/ufw/user.rules:-A ufw-user-input -p tcp --dport 22 -j ACCEPT
root@ubuntu:~# iptables -L -n | grep dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Se você editar o usuário * .rules diretamente, as regras adicionadas (se válidas) serão carregadas com ufw reload , mas não persistirão na próxima reinicialização do serviço ufw.
Portanto, adicione suas regras personalizadas em /etc/ufw/before*.rules ou depois em * .rules.
Referências: