Если кратко, то на самом деле все работает и работает правильно, но вы видимо не очень понимаете сам принцип работы conntrack в сочетании с TCP.
Да, правило в netfilter удаляется и запись в conntrack очищается. По идее этого достаточно, чтобы все прекратило работать при трафике снаружи, из WAN. Именно это и происходит.
Однако если TCP сессия активна и в ней передается какой-то трафик, то в ней всегда будет обратный TCP трафик из локальной сети в Интернет (как минимум TCP ACK), и вот он тут же пересоздает запись в conntrack, которая теперь по всем признакам выглядит как полностью, 100% легитимный трафик из локальной сети в Интернет, и не имеет никакой связи с пробросом. И все дальнейшиее взаимодействие продолжается через эту запись - в обе стороны.
Если делать как вы хотите, чтобы прям 100% все блокировалось, то нужно на каждую запись в conntrack создавать временную запрещающую запись в firewall, чтобы этот ответный трафик из LAN тоже блокировать. Но с какой, простите, стати? И сколько эта запрещающая запись должна существовать? А что если на нее начнут попадать другие, легитимные соединения, ведь здесь уже нельзя различить трафик, который был инициирован как проброс из WAN и трафик, который был инициирован из локальной сети?
Вобщем то, как вам кажется "красивым" на самом деле имеет еще больше неопределенности, чем то, как сделано сейчас. Потому не вижу смысла что-то делать дополнительно, все работает как задумано.