1. Для подсети порты 80 и 21 открыты
2. Остальной интернет отпинываем
3. Я сохранаю для себя безграничные клиентские возможности ( т.е. тыкаться на любой удаленный порт ).
4. [optional

Конкретные решения не обязательно, достаточно алгоритм.

p.s.: Извините, если что-то назвал не своими именами, или перемешал. В первый раз столкнулся с такой задачей.
p.p.s: на всякий случай: iptables --list
Код: Выделить всё
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ftp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpts:5555:5565
ACCEPT udp -- anywhere anywhere state NEW udp dpts:5555:5565
ACCEPT tcp -- XXX.XXX.0.0/16 anywhere state NEW tcp dpt:http
ACCEPT all -- anywhere anywhere state NEW
TRUSTED all -- anywhere anywhere state NEW
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP icmp -- anywhere anywhere state INVALID
Chain LOGME (1 references)
target prot opt source destination
RETURN all -- anywhere 255.255.255.255
LOG icmp -- anywhere anywhere limit: avg 1/min burst 5 LOG level notice prefix `firewall: '
LOG tcp -- anywhere anywhere limit: avg 1/min burst 5 LOG level notice prefix `firewall: '
LOG udp -- anywhere anywhere limit: avg 1/min burst 5 LOG level notice prefix `firewall: '
Chain TRUSTED (1 references)
target prot opt source destination
LOGME all -- anywhere anywhere
DROP icmp -- anywhere anywhere
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable