Bloquee el tráfico a LAN pero permita el tráfico a Internet (iptables)

2

En mi red doméstica estoy configurando un servidor CentOS que será utilizado por aproximadamente una docena más o menos con fines educativos, por ejemplo, aprender a usar el shell de Linux y los sitios web host, entre otras cosas. Tengo el puerto 22 y el puerto 80 en mi enrutador para que puedan iniciar sesión a través de SSH a través de Internet.

Como no puedo confiar plenamente en estos usuarios, actualmente estoy tratando de bloquear el servidor tanto como sea posible (verificando permisos, bloqueando torrents, etc.) Ya que no quiero que las personas prueben el resto de las computadoras en mi red a través del servidor , Me gustaría bloquear el tráfico a las computadoras en la LAN local sin dejar de permitir el tráfico a Internet.

No estoy muy familiarizado con iptables, pero he intentado establecer algunas reglas de iptables: primero permite el tráfico a 192.168.1.1 (enrutador) y 192.168.1.2 (computadora que estoy usando para configurar el servidor), y luego bloquea tráfico a 192.168.1.0/24 y registra dicho tráfico. Se debe permitir el resto del tráfico. Sin embargo, el problema es que el servidor no puede hacer conexiones a Internet.

Aquí está mi configuración actual de iptables:

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            192.168.1.2
2    ACCEPT     all  --  0.0.0.0/0            192.168.1.1
3    LOGGING    all  --  0.0.0.0/0            0.0.0.0/0
4    DROP       all  --  0.0.0.0/0            192.168.1.0/24
5    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

Chain LOGGING (1 references)
num  target     prot opt source               destination
1    LOG        all  --  0.0.0.0/0            0.0.0.0/0           limit: avg 10/min burst 5 LOG flags 0 level 7 prefix `DROP: '
2    DROP       all  --  0.0.0.0/0            0.0.0.0/0

Hacer ping a las IP permitidas (192.168.1.1 y 192.168.1.2) funciona (bien), pero hacer ping a Google no (mal):

[root@server ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1950ms

[root@server ~]# ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=128 time=0.294 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=128 time=0.270 ms

Por supuesto, entiendo que hay un cierto nivel de confianza involucrado en otorgar a las personas acceso a un servidor en mi red, pero todavía quiero fortalecerlo tanto como pueda. Si alguien puede comentar sobre otras cosas que puedo hacer, también lo agradecería.

¡Gracias por adelantado!

tlng5
fuente

Respuestas:

2

OK, descubrí el problema yo mismo, así que responderé mi propia pregunta como referencia. El problema era que todo el tráfico pasaba por la cadena de REGISTRO, y la segunda regla de la cadena de REGISTRO elimina todo el tráfico. Acabo de eliminar la regla 2 de la cadena LOGGING y todo funcionó.

tlng5
fuente
0

Tengo un desafío similar, tengo un dispositivo IOT con varias vulnerabilidades que quiero segregar en mi LAN, pero está conectado a través de un interruptor con otros dispositivos que NO quiero segregar. Intenté crear una CADENA separada y ponerle una referencia al comienzo de la cadena de ENTRADA para cualquier cosa con una fuente del dispositivo IOT o el destino del dispositivo IOT, y luego en la nueva cadena, si la fuente es LAN y el destino es IoT luego DROP o si el origen es IoT y el destino es LAN entonces DROP, pero no puedo hacer que suelte paquetes, aún puedo hacer ping y acceder al dispositivo. incluso intenté agregar mis reglas al comienzo de varias otras cadenas para ver si había una diferencia, pero no tuve suerte, ¿alguna idea?

b1tphr34k@RT-AC87U-C598:/tmp/home/root# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
TIVOFILTER  all  --  192.168.10.8         anywhere
TIVOFILTER  all  --  anywhere             192.168.10.8
logdrop    icmp --  anywhere             anywhere             icmp echo-request
logaccept  all  --  anywhere             anywhere             state RELATED,ESTABLISHED
logdrop    all  --  anywhere             anywhere             state INVALID
PTCSRVWAN  all  --  anywhere             anywhere
PTCSRVLAN  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             state NEW
ACCEPT     all  --  anywhere             anywhere             state NEW
logaccept  udp  --  anywhere             anywhere             udp spt:bootps dpt:bootpc
INPUT_ICMP  icmp --  anywhere             anywhere
logdrop    all  --  anywhere             anywhere

Chain FORWARD (policy DROP)
target     prot opt source               destination
DROP       all  --  192.168.10.8         192.168.10.0/24
DROP       all  --  192.168.10.0/24      192.168.10.8
logaccept  all  --  anywhere             anywhere             state RELATED,ESTABLISHED
logdrop    all  --  anywhere             anywhere
logdrop    all  --  anywhere             anywhere             state INVALID
logaccept  all  --  anywhere             anywhere
SECURITY   all  --  anywhere             anywhere
NSFW       all  --  anywhere             anywhere
logaccept  all  --  anywhere             anywhere             ctstate DNAT
logaccept  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  192.168.10.0/24      192.168.10.8
DROP       all  --  192.168.10.8         192.168.10.0/24

Chain ACCESS_RESTRICTION (0 references)
target     prot opt source               destination

Chain FUPNP (0 references)
target     prot opt source               destination
ACCEPT     udp  --  anywhere             192.168.10.5         udp dpt:54927
ACCEPT     tcp  --  anywhere             192.168.10.7         tcp dpt:32400

Chain INPUT_ICMP (1 references)
target     prot opt source               destination
RETURN     icmp --  anywhere             anywhere             icmp echo-request
RETURN     icmp --  anywhere             anywhere             icmp timestamp-request
logaccept  icmp --  anywhere             anywhere

Chain NSFW (1 references)
target     prot opt source               destination
logdrop    udp  --  anywhere             anywhere             udp spt:https
logdrop    udp  --  anywhere             anywhere             udp dpt:https
logdrop    udp  --  anywhere             anywhere             udp spt:www
logdrop    udp  --  anywhere             anywhere             udp dpt:www
logdrop    icmp --  anywhere             anywhere             icmp timestamp-request
logdrop    icmp --  anywhere             anywhere             icmp timestamp-reply
RETURN     all  --  anywhere             anywhere

Chain PControls (0 references)
target     prot opt source               destination
logaccept  all  --  anywhere             anywhere

Chain PTCSRVLAN (1 references)
target     prot opt source               destination

Chain PTCSRVWAN (1 references)
target     prot opt source               destination

Chain SECURITY (1 references)
target     prot opt source               destination
RETURN     tcp  --  anywhere             anywhere             tcpflags: FIN,SYN,RST,ACK/SYN limit: avg 1/sec burst 5
logdrop    tcp  --  anywhere             anywhere             tcpflags: FIN,SYN,RST,ACK/SYN
RETURN     tcp  --  anywhere             anywhere             tcpflags: FIN,SYN,RST,ACK/RST limit: avg 1/sec burst 5
logdrop    tcp  --  anywhere             anywhere             tcpflags: FIN,SYN,RST,ACK/RST
RETURN     icmp --  anywhere             anywhere             icmp echo-request limit: avg 1/sec burst 5
logdrop    icmp --  anywhere             anywhere             icmp echo-request
RETURN     all  --  anywhere             anywhere

Chain TIVOFILTER (2 references)
target     prot opt source               destination
DROP       all  --  192.168.10.0/24      192.168.10.8
DROP       all  --  192.168.10.8         192.168.10.0/24

Chain logaccept (8 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             state NEW LOG level warning tcp-sequence tcp-options ip-options prefix "ACCEPT "
ACCEPT     all  --  anywhere             anywhere

Chain logdrop (14 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             state NEW LOG level warning tcp-sequence tcp-options ip-options prefix "DROP "
DROP       all  --  anywhere             anywhere
Jeremy Sadler
fuente
Esta es una pregunta, no una respuesta, tenía que ponerla en el área de preguntas, por lo que seguramente encontraría ayuda
Rodney Salcedo