for i in `cat $PORTSLIB`; do
$IPT -A INPUT -p tcp --dport $i -j ACCEPT
$IPT -A FORWARD -p tcp --dport $i -j ACCEPT
$IPT -A OUTPUT -p tcp --sport $i -j ACCEPT
$IPT -A INPUT -p udp --dport $i -j ACCEPT
$IPT -A FORWARD -p udp --dport $i -j ACCEPT
$IPT -A OUTPUT -p udp --dport $i -j ACCEPT
Vc aqui libera um grupo de portas nas cadeias INPUT, FORWARD e OUTPUT. Não tem nada demais liberar as cadeias INPUT e FORWARD juntas, mas não faz muito sentido fazer isso ao mesmo tempo na cadeia OUTPUT, que é a saída do próprio Firewall. Vc está liberando a mesma porta em sentidos contrários...
Outra coisa que vc está fazendo e que não é eficiente, é liberar as mesmas portas para TCP e UDP, pq são serviços diferentes, que usam portas diferentes. Liberar porta 80/tcp não tem nada de mais, mas não há serviço conhecido que use a porta 80/udp, por exemplo.
Por fim, essas liberações que vc está fazendo acabam valendo apenas para a internet, pois vc mais adiante está liberando todo o tráfego vindo da rede local. Já as liberações nas cadeias FORWARD e OUTPUT são inúteis, pois vc não está fazendo nenhum bloqueio nelas.