Verifique se as regras do iptables estão funcionando

2

Eu tenho três caixas virtuais.

1) Máquina virtual VM-A que funciona como um roteador com duas interfaces:

eth0 - 10.160.10.254

eth1 - 172.10.0.254

2) Máquina virtual VM-B que funciona como uma rede interna com uma interface:

eth0 - 10.160.10.1 (e com gw para 10.160.10.254)

3) Máquina virtual VM-C que funciona como uma rede externa com uma interface:

eth0 172.10.0.1 (e com gw para 172.10.0.254)

Eu quero permitir conexões ssh para o roteador (VM-1) quando originado para um servidor na rede interna com o iptables.

Então, no roteador vbox, estou usando esses dois comandos abaixo:

iptables -A INPUT -s 10.160.10.4 -d 10.160.10.254 -p udp --dport 22 -j ACCEPT

iptables -A INPUT -s 10.160.10.4 -d 10.160.10.254 -p tcp--dport 22 -j ACCEPT

Para testar se isso está funcionando, estou tentando usar o netcat.

Na máquina da rede interna, estou usando o comando nc -lu 22 e na máquina de rede externa. Estou usando o comando nc -u 193.160.10.4 22 , mas nada está aparecendo.

Você sabe o que precisa aparecer e como usar o netcat corretamente para testar as regras do iptables?

    
por codin 24.04.2016 / 13:54

2 respostas

1

O SSH usa o TCP, não o UDP. Você usa nc -u para enviar pacotes UDP. Apenas tente

nc -vz <ip> <port>

Se você quiser testar suas regras iptables dessa maneira, você deve definir a política para a cadeia INPUT como DROP ou REJECT. Tome cuidado para que você permita que os pacotes tcp façam a port 22 de sua fonte antes. Você pode permitir isso a partir do IP da máquina específica, de toda a sub-rede ou da interface.

Exemplo de fonte ip:

iptables -A INPUT -s <source ip> -p tcp --dport 22 -j ACCEPT

Exemplo de sub-rede de origem (Aceita tudo de 192.168.xxx.xxx):

iptables -A INPUT -s 192.168.0.0/16 -p tcp --dport 22 -j ACCEPT

Exemplo de interface de origem (aceita todos os pacotes que chegam através da interface eth0):

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

Defina a política de INPUT para DROP (a ação padrão se nenhuma das regras se aplicar):

iptables -P INPUT DROP

Atenciosamente

EDIT: E, claro, o que David disse, mas estou presumindo alguns erros de digitação na questão, caso contrário, não haverá qualquer conexão de trabalho.

    
por 24.04.2016 / 14:30
0

Existem 2 partes para o seu problema:

Parte 1 - Configuração de Rede

A primeira coisa é que você está usando 3 sub-redes. Estou presumindo que você esteja usando todos como / 24's: 10.160.10.0/24, 172.10.0.0/24 e 192.168.10.0/24

A VM-A está configurada para 10.160.10.0/24 e 172.10.0.0/24.

VM-B está configurado para 192.168.10.0/24

O VM-C está configurado para 172.10.0.0/24.

Com essa configuração de endereço IP, não há como a VM-B ver a VM-A ou VM-B. Você precisa adicionar a sub-rede 192.168.10.0/24 ao VM-A (seu roteador) ou alterar a sub-rede na VM-B para as sub-redes 10.160.10.0/24 ou 172.10.0.0/24. Isso quer dizer que você não pode ter o seu gateway configurado para uma sub-rede totalmente diferente da qual você definiu o endereço IP para um host. O endereço IP do host e o endereço IP do gateway devem estar dentro da mesma sub-rede.

Você também deve saber que o 172.10.0.0/24 não é uma sub-rede privada. O intervalo particular 172 é 172.16.0.0/12, que é endereços IP: 172.16.0.0 - 172.31.255.255 [1]

  1. link

Parte 2 - Configuração do firewall

iptables -A INPUT -s 10.160.10.4 -d 10.160.10.254 -p udp --dport 22 -j ACCEPT

O IP de origem deve ser 10.160.10.1 De onde veio o host 10.160.10.4? Caso contrário, o @Knorke tem um bom controle sobre a configuração do iptables.

    
por 24.04.2016 / 14:26