Las tablas IP solo permiten acceso localhost

58

He luchado a lo largo de los años para obtener una comprensión sólida de iptables. Cada vez que intento leer las páginas de manual, mis ojos comienzan a brillar.

Tengo un servicio al que solo quiero permitir que el host local tenga acceso.

¿Qué términos (o configuración, si alguien se siente generoso) debo buscar en Google para permitir que solo el host localhost tenga acceso a un puerto determinado?

iptablessuck
fuente
2
¿En qué puerto se está ejecutando este servicio?
Bart De Vos
44344, es un servicio escrito internamente
iptablessuck
1
Me gustaría cambiar mi nick temporalmente por 'iptablesrules' pero no puedo
Art Shayderov
@Art, solo apestan porque no los entiendo :)
iptablessuck
@iptablessuck en realidad parece que puedo. Pero no lo haré porque no estoy seguro de poder volver a cambiarlo :)
Art Shayderov

Respuestas:

65

Si por servicio quiere decir un puerto específico, entonces las dos líneas siguientes deberían funcionar. Cambia el "25" a cualquier puerto que estés tratando de restringir.

iptables -A INPUT -p tcp -s localhost --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j DROP
Hippy
fuente
1
"Cualquier cosa que venga de localhost al puerto 25, acepte" y la segunda regla dice "Suelte cualquier cosa que entre al puerto 25". La primera línea se procesa primero, permitiendo localhost, y cualquier otra cosa se caerá en la segunda línea. ¿Si?
iptablessuck
¡Eso es correcto!
Hyppy
44
@Hyppy, ¿cómo "deshacerías" esto?
probador
10
@tester escriba esos comandos nuevamente, pero reemplácelos -Acon-D
pepoluan
1
@Astronaut escriba 'sudo service iptables save' para guardar los cambios. luego reiniciar. puede verificar si los cambios se guardaron escribiendo 'sudo iptables -L'
Vinayak
30

Yo lo recomiendo:

iptables -A INPUT -i lo -p tcp --dport $APP_PORT -j ACCEPT
iptables -A INPUT -p tcp --dport $APP_PORT -j DROP

Porque, los paquetes autodirigidos no necesariamente tienen 127.0.0.1 como origen, pero todos 'ingresan' desde la lointerfaz.

Ahora, si realmente quiere entender, iptableslo primero que debe hacer es descargar e imprimir buenos diagramas que expliquen las relaciones de las netfiltertablas. Aquí hay dos grandes:

Finalmente, lee muchos iptablesCOMO. Los ejemplos prácticos te ayudarán a ponerte al día rápidamente :)

pepoluan
fuente
ty! loespectáculos para mí después de usar estos comandos con el último comando desde este enlace cyberciti.biz/faq/howto-display-linux-iptables-loaded-rules iptables -L -v -n --line-numbers
2
@Gracchus Me resulta mucho más fácil de usar iptables-save, guardar el resultado en un archivo, editarlo con vimo emacsy iptables-apply
volver a
Creo que dependiendo del caso de uso, la segunda regla debería RECHAZAR explícitamente en lugar de descartar en silencio. ¿Se deja caer en silencio como una mejor práctica? ¿Es seguro usar REJECT?
Sr. Doomsbuster
1
@ tech-pro Sí, RECHAZAR es seguro de usar. Depende de lo que intente lograr y de si desea ser cortés con las personas que intentan utilizar el puerto. RECHAZAR enviará un paquete TCP RST que le indicará al cliente que la máquina está activa pero que el puerto está cerrado. Si está cerrando un puerto que la gente podría usar legítimamente, entonces RECHAZAR es bueno. Si solo espera escáneres de puertos, DROP es mejor.
Ley29
1
@ x-yuri Por ejemplo, ejecuto unboundcomo DNS Cache, delante de dnscrypt-proxy. unboundse une a 127.0.53.1:53, y se dnscrypt-proxyune a 127.0.53.2:53. Cuando una aplicación solicita ya sea unbound o dnscrypt-proxy para resolver un FQDN, ¿adivina desde qué dirección de origen responderá unbound / dnscrypt-proxy?
pepoluan