Como evitar o roteamento entre algumas sub-redes (mas permitir o roteamento para outras pessoas)

1

Eu tenho um modelo 3 Raspberry Pi com o Raspbian Linux 8.0 configurado como um roteador VPN. Tem as seguintes interfaces de rede:

  • eth0 - configurado como uplink com fio na Internet (atualmente não usado)
  • wlan0 - uplink sem fio à Internet (ativo)
  • eth1 (sub-rede 192.168.5.0/24) - LAN do cliente com fio (para meu PC)
  • wlan1 (sub-rede 192.168.4.0/24) - cliente WLAN (para o meu telefone)
  • tun0, tun1 - interfaces VPN

Tudo está funcionando como eu quero (as conexões do cliente passam pela VPN), exceto por uma coisa: parece ser o roteamento entre eth1 e wlan1, o que eu não quero. Eu não quero máquinas clientes em wlan1 para poder se conectar a máquinas em eth1, mas eles podem. Eu também não quero máquina no cliente WLAN para poder SSH para o Pi, apenas máquinas conectadas por Ethernet, mas atualmente eles podem. Eu tenho SSH configurado para ouvir apenas em 192.168.5.1 (não em 192.168.4.1), mas se eu me conectar ao cliente WLAN ainda posso SSH para 192.168.5.1.

Eu tenho o IP forwarding enable, é claro, já que eu quero rotear entre wlan1 e tun0 / tun1 e entre eth1 e tun0 / tun1.

Aqui estão minhas regras do iptables:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A FORWARD -s 192.168.4.0/24 -i wlan1 -o eth0 -m conntrack --ctstate NEW -m comment --comment "Block traffic from wlan1 (client WiFi) to eth0 (wired uplink)" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.4.0/24 -i wlan1 -o wlan0 -m conntrack --ctstate NEW -m comment --comment "Block traffic from wlan1 (client WiFi) to wlan0 (WiFi uplink)" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.4.0/24 -i wlan1 -o tun0 -m conntrack --ctstate NEW -m comment --comment "Allow traffic from wlan1 (client WiFi) to tun0 (VPN)" -j ACCEPT
-A FORWARD -s 192.168.4.0/24 -i wlan1 -o tun1 -m conntrack --ctstate NEW -m comment --comment "Allow traffic from wlan1 (client WiFi) to tun1 (VPN)" -j ACCEPT

-A FORWARD -s 192.168.5.0/24 -i eth1 -o eth0 -m conntrack --ctstate NEW -m comment --comment "Block traffic from eth1 (client LAN) to eth0 (wired uplink)" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.5.0/24 -i eth1 -o wlan0 -m conntrack --ctstate NEW -m comment --comment "Block traffic from eth1 (client LAN) to wlan0 (WiFi uplink)" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.5.0/24 -i eth1 -o tun0 -m conntrack --ctstate NEW -m comment --comment "Allow traffic from eth1 (client LAN) to tun0 (VPN)" -j ACCEPT
-A FORWARD -s 192.168.5.0/24 -i eth1 -o tun1 -m conntrack --ctstate NEW -m comment --comment "Allow traffic from eth1 (client LAN) to tun1 (VPN)" -j ACCEPT

-A FORWARD -s 192.168.4.0/24 -i wlan1 -o eth1 -m conntrack --ctstate NEW -m comment --comment "Block traffic from wlan1 (client WiFi) to eth1 (client LAN)" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.4.0/24 -d 192.168.5.0/24 -m conntrack --ctstate NEW -m comment --comment "Block traffic from client WiFi range to client LAN range" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.5.0/24 -i eth1 -o wlan1 -m conntrack --ctstate NEW -m comment --comment "Block traffic from eth1 (client LAN) to wlan1 (client WiFi)" -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.5.0/24 -d 192.168.4.0/24 -m conntrack --ctstate NEW -m comment --comment "Block traffic from client LAN range to client WiFi range" -j REJECT --reject-with icmp-port-unreachable

COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -m comment --comment "Use VPN IP for eth0" -j MASQUERADE
-A POSTROUTING -o wlan0 -m comment --comment "Use VPN IP for wlan0" -j MASQUERADE
-A POSTROUTING -o tun0 -m comment --comment "Use VPN IP for tun0" -j MASQUERADE
-A POSTROUTING -o tun1 -m comment --comment "Use VPN IP for tun1" -j MASQUERADE
COMMIT
    
por EM0 09.04.2018 / 22:51

1 resposta

0

Impedir o acesso SSH de wlan1 :

iptables -A INPUT -i wlan1 -p tcp --dport 22 -j REJECT --reject-with icmp-port-unreachable

Uma observação geral: não vejo sentido em usar

-s 192.168.4.0/24 -i wlan1 -o eth1

em vez de

-i wlan1 -o eth1

como você deseja bloquear todos os pacotes, não apenas aqueles com endereço de origem válido, eu acho.

    
por 09.04.2018 / 23:13