Tenemos el siguiente esquema:

Queremos que los equipos con direcciones 172.16.1.X tenga acceso desde internet por los servicios FTP, SSH, IMAP, POP3, HTTP y permita los ICMP.
Por el contrario los equipos con direcciones 172.16.0.X tendran solo acceso a HTTP y cualquier peticion ICMP debera se rechazada.
Para administrar el Firewall vamos ha dejar que solo se puede acceder mediante SSH si la direccion de acceso es de 172.16.0.0/16.
Suponemos que las IPs estan asignadas como viene en el esquema.
Para empezar vamos a configurar el Firewall.
NOTA: El firewall no es mas que un equipo Linux con dos tarjetas de red e IPTABLES y un servidor SSH.
Para poder permitir al Firewall que "enrute" el trafico desde la red 192.168.1.0/24 hacia 172.16.0.0/16 tendremos que poner el fichero "/proc/sys/net/ipv4/ip_forward" a 1. Esto se puede hacer escribiendo:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Ahora vamos a cerrar el acceso al Firewall y dejar solo el SSH:
# iptables -P INPUT DROP
# iptables -A INPUT -s 172.16.0.0/24 -p TCP --dport 22 -j ACCEPT
# iptables -P OUTPUT DROP
# iptables -A OUTPUT -d 172.16.0.0/24 -p TCP --sport 22 -j ACCEPT
Como podeis observar la direccion usa una mascara de 24bits para evitar el acceso desde los equipos de 172.16.1.X
Ahora vamos a configurar que datos debe de pasar de una red a otra.
# iptables -P FORWARD DROP
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 20 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 21 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 22 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 80 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 110 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 143 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 220 -j ACCEPT
# iptables -A INPUT -d 172.16.1.0/24 -p TCP --dport 993 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 20 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 21 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 22 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 80 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 110 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 143 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 220 -j ACCEPT
# iptables -A INPUT -s 172.16.1.0/24 -p TCP --sport 993 -j ACCEPT
# iptables -A INPUT -s 172.16.0.0/24 -p TCP --dport 80 -j ACCEPT
# iptables -A INPUT -d 172.16.0.0/24 -p TCP --sport 80 -j ACCEPT
# iptables -A INPUT -d 172.16.0.0/24 -p ICMP -j REJECT