Linux-KVM / iptables: evita spoofing de convidados ao combinar ip + mac address on bridge?

2

Eu tenho meus convidados do KVM em uma configuração de ponte br0 padrão:

auto br0
iface br0 inet static
   address 192.168.1.117
   netmask 255.255.255.0
   network 192.168.1.1
   broadcast 192.168.1.225
   gateway 192.168.1.1
   bridge_ports eth0
   bridge_stp off
   bridge_fd 0

auto eth1
iface eth1 inet static
address 10.0.0.117
netmask 255.255.255.0
gateway 10.0.0.1
broadcast 10.0.0.225

A eth1 é reservada para outro tráfego, mas um convidado pode simplesmente alterar seu ip para se conectar a ele.

O que estou tentando alcançar é lançar todo o tráfego em direção ao host / fora / outro convidado assim que um convidado tentar alterar seu endereço IP ou endereço MAC (em uma tentativa de se juntar a outra rede / falsificar outro convidado)

Eu tentei muitas interfaces (eth0, br0, tap0, tap +), mas parece que não consigo acertar minha regra:

iptables -A INPUT -m physdev --physdev-in tap+ --physdev-out tap+ -s 192.168.1.205 -m mac ! --mac-source 52:54:5a:8d:77:8e -j DROP

O encaminhamento de IP está ativado - não há outras regras no iptables. Estou faltando alguma coisa - ou devo considerar tentar alcançar isso de outra maneira?

    
por Matt 17.05.2011 / 02:19

2 respostas

1

Tanto quanto eu posso ver você simplesmente não pode fazer algumas das coisas que você precisa fazer com o iptables. Você precisa de filtragem no nível da ponte. Você provavelmente deve dar uma olhada em ebtables - é como o iptables para pontes.

Manual: link

    
por 17.05.2011 / 04:43
0

Eu tentei criar um modelo para o conjunto simples de regras do iptables para o seu problema, tente:

iptables -t filter -A FORWARD -m physdev --physdev-in $LINK_FOR_THE_VM --physdev-is-bridged -j ${VMID}-out
iptables -t filter -A ${VMID}-out -m mac ! --mac-source $MAC_ADDR_FOR_THE_VIRTUAL_NIC -j DROP
iptables -t filter -A ${VMID}-out -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp --sport 68 --dport 67 -j ACCEPT
iptables -t filter -A ${VMID}-out ! -s $PERMITTED_IP_ADDR_FOR_THE_VM -j DROP
iptables -t filter -A ${VMID}-out -j RETURN

Aqui está um exemplo:

iptables -t filter -A FORWARD -m physdev --physdev-in vm10 --physdev-is-bridged -j 10-out
iptables -t filter -A 10-out -m mac ! --mac-source 52:54:5a:8d:77:8e -j DROP
iptables -t filter -A 10-out -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp --sport 68 --dport 67 -j ACCEPT
iptables -t filter -A 10-out ! -s 192.168.1.205 -j DROP
iptables -t filter -A 10-out -j RETURN
    
por 31.07.2017 / 05:36