Суть этих правил - организовать МАС + ИП фильтер и фильтер доступности рабочих портов для ресурсов:
## политика по умолчанию
-P INPUT ACCEPT
-P FORWARD DROP
## цепочка проверки портов
-N check_ports
-A check_ports FORWARD -i eth1 -o ppp0 -p tcp -s 192.168.1.0/255.255.255.0 --dport 80 -j RETURN
-A check_ports FORWARD -i eth1 -o ppp0 -p tcp -s 192.168.1.0/255.255.255.0 --dport 8080 -j RETURN
-A check_ports FORWARD -i eth1 -o ppp0 -p tcp -s 192.168.1.0/255.255.255.0 --dport 22 -j DROP
## цепочка проверки аккаунта
-N check_account
-A check_account FORWARD -i eth1 -o ppp0 -s 192.168.1.229 -m mac --mac-source 20:CG:52:9F:BB:N5 -j RETURN
-A check_account FORWARD -i eth1 -o ppp0 -s 192.168.1.230 -m mac --mac-source 50:CF:30:TF:BB:E2 -j RETURN
-A check_account FORWARD -i eth1 -o ppp0 -s 192.168.1.231 -m mac --mac-source 20:CD:40:9F:BB:E5 -j DROP
## разрешить входящие пакеты всем
-I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -d 192.168.1.0/255.255.255.0 -i ppp0 -o eth1 -j ACCEPT
## Здесь нужно дальше запустить цепочки и придумать логику
## Я так подозреваю, что в конце всех правил нужно ставить
## -A FORWARD -i eth1 -o ppp0 -j ACCEPT
## для пакетов которые остались живы после проверки в двух цепочках
## Но, не уверен - прошу у вас помощи.