Se você deseja separar usuários sem fio e com fio, por que não corresponder às interfaces? Assumindo que o ppp0 esteja voltado para a internet, eth0 é sua LAN local e wlan0 é o wireless:
iptables -P FORWARD DROP # Drop everything except:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED # Accept already accepted connections
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT # Accept outgoing connections from local LAN
iptables -A FORWARD -i wlan0 -o ppp0 -j ACCEPT # Accept outgonig connnections from wlan
Se você usar isso:
- nada pode ser conectado pela internet
- usuários sem fio só podem se conectar à internet
- usuários com fio só podem se conectar à internet
- você pode impor intervalos IP separados se adicionar o
--src-range
Se o seu servidor DHCP estiver sendo executado no dispositivo OpenWrt, a cadeia FORWARD não afetará isso de nenhuma maneira. Para permitir que o servidor DHCP use
iptables -P INPUT DROP # Drop everything except:
iptables -A INPUT -m state --state RELATED,ESTABLISHED # Accept already accepted connections
iptables -A INPUT ! -i ppp0 -p tcp --dport 22 -j ACCEPT # Don't forget SSH
iptables -A INPUT ! -i ppp0 -p udp --sport 68 --dport 67 # Accept DHCP requests from any local network
Eu geralmente permito tudo em OUTPUT, exceto alguns tipos de ICMP e spam. Mas você pode preferir o DROP padrão mais seguro, então aqui está a regra específica:
iptables -P OUTPUT DROP # Drop everything except:
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT ! -o ppp0 -p udp --sport 67 --dport 68 -j ACCEPT # Allow DHCP to the local network
Faz mais sentido em um roteador que não deve se conectar a tudo.
Eu recomendaria contra filtragem de MAC na minha experiência, não acrescenta segurança apenas inconviniência. Mas se você quiser ver:
iptables -m mac --help
O registro de endereços MAC pode ser útil, mas eles são facilmente forjados. Basta adicionar -j LOG
ou -j NFLOG
antes da regra ACEITAR com as mesmas regras de correspondência.
Como você está configurando um computador acessível apenas pela rede, deve ter muito cuidado para não se bloquear. Você não pode simplesmente ir até ele e excluir as regras manualmente. Em particular, digitar iptables -P INPUT DROP
com uma cadeia INPUT vazia irá matar sua sessão SSH. Eu recomendo usar o iptables-save
e iptables-restore
e gravar as regras em um arquivo de configuração. Também ajuda se você puder testar as regras em um computador com um teclado e monitor antes de testá-lo no roteador.