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?
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?
Respuestas:
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
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-s
parámetro:
sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP
!
) ahora se debe colocar antes de que el -s
parámetro: sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP
.
Siempre puede usar iptables para eliminar las reglas. Si tiene muchas reglas, simplemente imprímalas usando el siguiente comando.
iptables-save > myfile
vi
para 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.
iptables-restore < myfile
// wiki.debian.org/iptables