Existem alguns problemas em como você escreveu suas regras.
-A POSTROUTING -j MASQUERADE
Esta regra aplica-se de forma muito ampla. Você só precisa de tal regra para conexões da LAN que sai da sua rede. Uma maneira de fazer isso seria especificar em qual interface de saída se aplica:
-A POSTROUTING -o eth0 -j MASQUERADE
Além disso, sua tabela de filtros não faz muito sentido:
*filter
:INPUT ACCEPT [3474:500657]
:FORWARD ACCEPT [24:1613]
:OUTPUT ACCEPT [857:128814]
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.1.101 -i eth1 -o eth0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -s 192.168.2.102 -i eth2 -o eth0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -s 192.168.3.103 -i eth3 -o eth0 -m conntrack --ctstate NEW -j ACCEPT
COMMIT
Cada uma de suas regras ACEITA pacotes de acordo com determinados critérios. No entanto, tudo é redundante, pois, no final, você vai ACEITÁ-LO com a política padrão da cadeia. Então o resultado é que você ACEITA tudo, o que também seria o caso se você removesse todas as regras.