Contexto
Na minha infraestrutura Debian Linux, gerencio diversas interfaces de rede com funções específicas.
Interface | Papel | Sub-rede | Descrição |
---|---|---|---|
eth0 |
Conexão pública | 192.0.2.0/24 |
Usado para acesso público externo. |
wg0 |
WireGuard VPN | 10.0.0.0/24 |
Permite a comunicação segura entre máquinas via VPN. |
vmbr0 |
Ponte para Proxmox | 172.16.0.0/16 |
Ponte para máquinas virtuais. |
- Regras de firewall : Nenhuma regra iptables/nftables é aplicada atualmente. Todas as chains têm uma política padrão definida como ACCEPT .
- Configuração do kernel : o encaminhamento IPv4 está desabilitado (
net.ipv4.ip_forward = 0
).
Meta
O objetivo é limitar estritamente as comunicações de rede na infraestrutura:
Quando um computador se conecta à VPN por meio da wg0
interface, ele só deve conseguir se comunicar com uma máquina virtual específica localizada na vmbr0
ponte.
O objetivo é garantir o isolamento completo entre as interfaces e restringir o tráfego a esse caso de uso específico.
Reproduzindo a configuração
Configuração do WireGuard (informações falsas)
Para replicar o ambiente, aqui está uma configuração básica do WireGuard para duas máquinas Linux:
Máquina 1: Servidor VPN (informações falsas)
Interface:wg0
Geração de chaves (exemplo de chaves, geradas via
wg genkey
ewg pubkey
):- Chave privada:
9+9N5R5Dje2dmldDtrjQoBb3AFOWhOAyZ9mfWQKn7QY=
- Chave pública:
Ci4z9W+n8gfrFRRGZs3DNMHmKk1TFNG9QXGV7zg5OkE=
- Chave privada:
Configuração do WireGuard : (informações falsas)
Arquivo
/etc/wireguard/wg0.conf
:[Interface] PrivateKey = 9+9N5R5Dje2dmldDtrjQoBb3AFOWhOAyZ9mfWQKn7QY= Address = 10.0.0.1/24 ListenPort = 51820 [Peer] PublicKey = YdC5+zMdKj5cRW2WlAv7GDETx+gjZukOmeC+lkJZ8is= AllowedIPs = 10.0.0.2/32
Comandos para aplicar :
sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0
Máquina 2: Cliente VPN (informações falsas)
Interface:wg0
Geração de chaves :
- Chave privada:
mWjXaRlvJjThhf9ZZpaAWwdY0Puvy0k9fGy7prlzvV8=
- Chave pública:
YdC5+zMdKj5cRW2WlAv7GDETx+gjZukOmeC+lkJZ8is=
- Chave privada:
Configuração do WireGuard :
Arquivo
/etc/wireguard/wg0.conf
:[Interface] PrivateKey = mWjXaRlvJjThhf9ZZpaAWwdY0Puvy0k9fGy7prlzvV8= Address = 10.0.0.2/24 [Peer] PublicKey = Ci4z9W+n8gfrFRRGZs3DNMHmKk1TFNG9QXGV7zg5OkE= Endpoint = <SERVER_IP>:51820 AllowedIPs = 10.0.0.1/24, 172.16.0.0/16, 192.0.2.0/24 PersistentKeepalive = 25
Comandos para aplicar :
sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0
Essas configurações estabelecem uma conexão simples entre o servidor VPN ( 10.0.0.1
) e o cliente ( 10.0.0.2
). Essa configuração forma a base para testar o requisito descrito.
Ponte
sudo brctl addbr vmbr0
sudo ip addr add 172.16.0.1/16 dev vmbr0
sudo ip link set dev vmbr0 up
Problema
Quando um cliente se conecta à VPN por meio da interface wg0, os seguintes problemas são observados:
Acesso a todas as interfaces: apesar de diferentes sub-redes e o encaminhamento IPv4 estarem desabilitados, o cliente VPN pode executar ping com sucesso em todas as interfaces de rede, incluindo eth0 e vmbr0.
Visibilidade do pacote: Ao executar tcpdump em cada interface (eth0, vmbr0 e wg0), observa-se que os pacotes de ping atravessam apenas a interface wg0. No entanto, as respostas ainda são recebidas quando o cliente faz ping em outras interfaces.
Exposição do serviço: se um serviço estiver sendo executado em qualquer interface, como:
python3 -m http.server --bind 192.0.2.1
(vinculado ao endereço IP eth0 192.0.2.1/24), o cliente VPN tem acesso a este serviço.
Cenário de inatividade da interface: se uma interface (por exemplo, eth0) for desativada usando:
ip link set dev eth0 down
o cliente VPN ainda pode executar ping com sucesso no endereço IP associado à interface inativa e acessar o serviço em execução (por exemplo, o servidor HTTP). Esse comportamento persiste independentemente do estado operacional da interface.
Problema de VM restrita: Ao adicionar uma máquina virtual na ponte vmbr0, o cliente VPN não consegue fazer ping nela. (Normal, mas por que consigo fazer ping na ponte)
Pedido de Assistência
Dada a configuração acima e os problemas observados:
- Por que o cliente VPN tem acesso a todas as interfaces (eth0, vmbr0) em vez de ser restringido pela sub-rede e pela opção de desabilitar o encaminhamento?
- Como o cliente VPN ainda pode acessar serviços ou fazer ping em IPs em interfaces inativas?
Quaisquer ideias ou soluções seriam muito apreciadas!