IPTables - permite a comunicação entre dois hosts, descarta todo o resto

0

Eu tenho um roteador, que eu quero configurar para bloquear todo o tráfego de saída para a Internet. Tanto quanto eu entendo, eu preciso soltar pacotes encaminhados. Além disso, desejo permitir o tráfego entre uma máquina e várias outras máquinas na LAN interna.

Para fazer o seguinte, tentei:

IPT="/sbin/iptables"

LOCAL_CONTROLLER="192.168.1.2"
SUBNET="192.168.1."
MACHINE_IPS="100 101 102 103 104"

for MACHINE in ${MACHINE_IPS}; do
    $IPT -A FORWARD -s $LOCAL_CONTROLLER -j ACCEPT
    $IPT -A FORWARD -s $SUBNET$MACHINE -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT -A FORWARD -s $SUBNET$MACHINE -d $LOCAL_CONTROLLER -j ACCEPT 
    $IPT -A FORWARD -s $SUBNET$MACHINE -j DROP
done

Infelizmente, isso não funciona como eu esperava, e o tráfego de 192.168.1.2 para 192.168.1.103 e de volta está bloqueado.

Você pode apontar onde meu script está errado?

    
por Oz123 17.03.2017 / 11:28

1 resposta

1

A fila FORWARD é usada apenas quando o servidor é a questão é o roteador , para lidar com pacotes de entrada / saída fora de sua rede; ele é usado para bloquear / aceitar o roteamento de pacotes fora de sua rede (no nível do roteador).

Para controlar conexões no nível do host, você normalmente usa INPUT ou OUTPUT filas, não importa de onde as conexões são provenientes, pois elas não fazem roteamento (por exemplo, não fazem IP Forwarding).

Se você realmente quer que um grupo de máquinas em uma rede local converse entre si e não converse com a Internet, a abordagem mais simples de todas não é definir um gateway nessas máquinas.

Se você ainda tiver a ver com iptables , precisará usar a fila INPUT no seu script, em vez de FORWARD .

Se sua principal preocupação é o tráfego indo para a Internet, embora eu prefira não dar a eles um gateway para sair, você precisa usar a fila OUTPUT nas máquinas locais.

Como em:

iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -j DROP

(192.168.1.0/24 - > todas as máquinas na rede 192.168.1)

Esteja ciente de que, se você vir via ssh de outra rede, ficará efetivamente bloqueado com essas regras.

No entanto, se o seu roteador for uma caixa linux, talvez seja suficiente escrever como uma regra FORWARD para bloquear algumas máquinas da Internet:

iptables -A FORWARD -s 192.168.1.10 -j DROP
iptables -A FORWARD -s 192.168.1.11 -J DROP

De man iptables :

INPUT (for packets destined to local sockets)
FORWARD (for packets being routed through the box)
OUTPUT (for locally-generated packets).

    
por 17.03.2017 / 14:12