для начала нужно решить на каком уровне хочешь разруливать L4 || L7.
Если L4, тогда iptables.
L7.. наружу через squid, разрешаешь нужные домены, остальное запретить. На внутрь(то бишь трафик снаружи который можно), проще через nginx/haproxy. То есть делаешь reverse proxy aka proxy pass. Можно отдельно поизвращаться с post/get и прочими запросами, если хочешь разные действия для них.
Хотя haproxy может и в L4, но обычно это скорее для балансировки используют, нежели для фильтрации.
Если совсем жестко, тогда тебе еще нужно будет поднять свой DNS типа coredns. И разрешить только определенные зоны, остальное запретить. DNS трафиком тоже можно выдать информацию если постараться.
Надеюсь понятно, что уровень Nginx/haproxy, это взаимодействие внешних клиентов с вашим ПО. То есть на iptables нужно будет дополнительное правило established related (разрешать трафик наружу для устоявшихся соединений).