iptables bloquea el acceso al puerto 8000 excepto desde la dirección IP

80

Nunca he usado iptables y la documentación en línea parece un poco opaca.

Me gustaría bloquear todas las solicitudes al puerto 8000 en mi servidor, excepto las que provienen de una dirección IP específica. ¿Cómo hago eso usando iptables?

será
fuente
2
//, ¿Sería tan amable de compartir un enlace a la documentación opaca?
Nathan Basanese

Respuestas:

149

Esta pregunta debería estar en Server Fault . Sin embargo, lo siguiente debería funcionar, asumiendo que está hablando de TCP y la IP que desea permitir es 1.2.3.4:

iptables -A INPUT -p tcp --dport 8000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP
Jon Bright
fuente
3
¿Cómo haría para revertir esta restricción de IP / puerto que ha configurado aquí? (en caso de que quiera deshacer esto en el futuro)
tester
4
probador, para eliminar cosas, consulte esto - stackoverflow.com/questions/10197405/…
Quest Monger
2
Sé que esto es relativamente antiguo, y esto clavó totalmente lo que necesitaba. Y dado que la respuesta ha sido aceptada de todos modos, ¿cómo se hace lo mismo con un rango de IP específico? ¡Gracias! :)
jagc
1
@JiegoCordoviz Puede agregar una máscara a la dirección de origen: "-s 1.2.3.0/24" aceptará cualquier cosa que comience con "1.2.3.". Busque "calculadora de máscara de red" si tiene un rango y desea calcular una máscara de red.
Jon Bright
17

Otra alternativa es;

sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP

Tuve un problema similar en el que 3 máquinas virtuales con puente solo necesitan acceder entre sí con una combinación diferente, así que probé este comando y funciona bien.

Editar**

Según el comentario de Fernando y este enlace, el signo de exclamación ( !) se colocará antes del -sparámetro:

sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP
HRgiger
fuente
1
El signo de exclamación ( !) ahora se debe colocar antes de que el -sparámetro: sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP.
Fernando Silveira
No estoy seguro de qué hace el signo de exclamación aquí. ¿Es mejor que la respuesta aceptada?
aexl
@aexl prácticamente lo mismo excepto una sola línea
HRgiger
5

Siempre puede usar iptables para eliminar las reglas. Si tiene muchas reglas, simplemente imprímalas usando el siguiente comando.

iptables-save > myfile

vipara editarlos desde la línea de recomendación. Simplemente use el "dd" para borrar las líneas que ya no desea.

iptables-restore < myfile and you're good to go.  

RECUERDE QUE SI NO CONFIGURA SU SO PARA GUARDAR LAS REGLAS EN UN ARCHIVO Y LUEGO CARGUE EL ARCHIVO DURANTE EL ARRANQUE, SUS REGLAS SE PERDERÁN.

RecentCoin
fuente
3
En Debian no hay iptables-load, sino iptables-restore iptables-restore < myfile// wiki.debian.org/iptables
Fedir RYKHTIK