OpenVPN - iptables restringem o acesso de um IP a apenas alguns servidores

4

Eu tenho uma grande rede OpenVPN. A maioria dos endereços tem acesso livre um ao outro. No entanto, alguns IPs precisam ser restritos a apenas alguns outros IPs.

Por exemplo, 10.8.0.6 só pode ter permissão para se comunicar com 10.8.0.10. Mas 10.8.0.10 e todos os outros endereços na sub-rede podem se comunicar uns com os outros sem restrição. O seguinte código do iptables vai conseguir isso?

# allow communication between 10.8.0.6 and 10.8.0.10, deny any additional 
# access to 10.8.0.6
iptables -A FORWARD -s 10.180.0.6 -d 10.8.0.10 -j ACCEPT
iptables -A FORWARD -s 10.180.0.10 -d 10.8.0.6 -j ACCEPT
iptables -A FORWARD -s 10.180.0.6 -j DROP


# Begin required lines for server operation
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/16 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE

/etc/init.d/dnsmasq restart
# End required lines for server operation

Obrigado

Você está correto, deveria ter sido 10.8.x.x. MAS, ainda não está funcionando. Os endereços que estou tentando restringir ainda têm acesso a todos os servidores. Aqui está o meu atual rc.local

# Begin access restriction lines
# eg. allow communication between 10.8.0.122 and 10.8.0.58, deny any additional$
# client access only to certain systems
iptables -A FORWARD -s 10.8.0.122 -d 10.8.0.58 -j ACCEPT
iptables -A FORWARD -s 10.8.0.122 -d 10.8.0.66 -j ACCEPT
iptables -A FORWARD -s 10.8.0.122 -d 10.8.0.70 -j ACCEPT
iptables -A FORWARD -s 10.8.0.122 -d 10.8.0.62 -j ACCEPT
iptables -A FORWARD -s 10.8.0.122 -j DROP
# client access only to certain systems
iptables -A FORWARD -s 10.8.0.126 -d 10.8.0.58 -j ACCEPT
iptables -A FORWARD -s 10.8.0.126 -d 10.8.0.66 -j ACCEPT
iptables -A FORWARD -s 10.8.0.126 -d 10.8.0.70 -j ACCEPT
iptables -A FORWARD -s 10.8.0.126 -d 10.8.0.62 -j ACCEPT
iptables -A FORWARD -s 10.8.0.126 -j DROP
# End access restriction lines

# Begin required lines for server operation
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/16 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE

/etc/init.d/dnsmasq restart
# End required lines for server operation

exit 0

Obrigado

ATUALIZAÇÃO:

saída de iptables -L -v -n

root@li590-32:~# iptables -L -n -v
Chain INPUT (policy ACCEPT 2455K packets, 430M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
4597K 2770M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
32180 1813K ACCEPT     all  --  *      *       10.8.0.0/16          0.0.0.0/0
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  *      *       10.8.0.0/16          0.0.0.0/0
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  *      *       10.8.0.0/16          0.0.0.0/0
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable
    0     0 ACCEPT     all  --  *      *       10.8.0.122           10.8.0.58
    0     0 ACCEPT     all  --  *      *       10.8.0.122           10.8.0.66
    0     0 ACCEPT     all  --  *      *       10.8.0.122           10.8.0.70
    0     0 ACCEPT     all  --  *      *       10.8.0.122           10.8.0.62
    0     0 DROP       all  --  *      *       10.8.0.122           0.0.0.0/0
    0     0 ACCEPT     all  --  *      *       10.8.0.126           10.8.0.58
    0     0 ACCEPT     all  --  *      *       10.8.0.126           10.8.0.66
    0     0 ACCEPT     all  --  *      *       10.8.0.126           10.8.0.70
    0     0 ACCEPT     all  --  *      *       10.8.0.126           10.8.0.62
    0     0 DROP       all  --  *      *       10.8.0.126           0.0.0.0/0
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  *      *       10.8.0.0/16          0.0.0.0/0
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 3144K packets, 2737M bytes)
 pkts bytes target     prot opt in     out     source               destination
    
por Kevin 23.05.2013 / 04:01

2 respostas

1

As primeiras três linhas referem-se a 10.180.x.x quando penso que você quis dizer 10.8.x.x?

Se sim, a linha iptables -A FORWARD -s 10.180.0.10 -d 10.8.0.6 -j ACCEPT é desnecessária.

Caso contrário, parece bom.

    
por 23.05.2013 / 11:28
0

iptables trabalha em uma base de ganhos de primeira correspondência de dispositivo, então o conjunto completo de regras que você postou deixa claro o problema: nenhuma das restrições que você colocou após as duas primeiras linhas está vendo tráfego, porque a primeira e as segundas regras estão combinando - e permitindo - todo o tráfego que você tenta igualar e negar mais tarde.

Ou você precisará descobrir onde essas duas primeiras linhas estão sendo definidas e garantir que todas as suas linhas adicionais sejam movidas antes delas, ou para inserir todas as novas linhas antes dos dois primeiros usando iptables -I FORWARD 1 no script acima, para inserir continuamente cada nova linha no início da corrente FORWARD em vez de adicioná-la ao final.

O primeiro método é preferido, pois é mais fácil de manter; mas você não diz em qual distro você está trabalhando, então não posso dizer onde as regras estão sendo definidas.

De qualquer forma, você precisa ter certeza de que na cadeia final, as regras DROP altamente específicas vêm antes de qualquer regra ACCEPT menos específica que corresponderia (e, portanto, permitiria) o mesmo tráfego.

    
por 31.05.2013 / 04:01