По опыту скажу: RELATED,ESTABISHED надо в конец. Потому что чтобы бы понять является соединение RELATED и/или ESTABLISHED все соединения, проходящие через это правило, добавляются во внутреннюю таблицу модуля nf_conntrack. Таблица к сожалению не резиновая и на больших нагрузках её может не хватать и обработка правила будет не корректной.
Потому сначала стоит написать более простые разрешения (протоколы, порты) и уже потом, если ни одно из предыдущих правил не сработало, отправлять соединение на обработку модулем nf_conntrack.
Например если у вас слабенький процессор вроде Xeon X3 3440 крутит nginx или haproxy в качестве load balancer для web, то уже при нагрузке в 700-900 запросов в секунду можно видеть как растёт загрузка ЦПУ если такое:
-A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
заменить на такое:
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
А в dmesg начинают проскакивать ошибки вида "nf_conntrack: table full, dropping packet"