Ubuntu: Cómo agregar una regla de iptables que UFW no puede crear

15

UFW está funcionando muy bien para mí, excepto en los casos en que no ...

¿Deseo poder agregar otra regla manualmente que se aplicará en el arranque?

  • ¿Dónde debo poner esta regla?
  • ¿Cómo debo hacer que comience en el arranque?
  • ¿Cómo hago que juegue bien con UFW?
Arthur Ulfeldt
fuente
1
ufw es una de esas cosas de "lo que ves es todo lo que obtienes" que facilitan a los novatos. Si necesita hacer más de lo que puede hacer, considere cambiar a iptables por completo. Que "funciona muy bien para mí" es una buena prueba de que puedes probar algo (iptables) más complicado (pero también más flexible).
Halp

Respuestas:

14

De acuerdo con esta página wiki de Ubuntu (desplácese hacia abajo hasta "Funcionalidad avanzada"), puede lograr lo que desea al poner sus propias iptablesreglas en los siguientes archivos:

  • /etc/ufw/before.rules
  • /etc/ufw/after.rules

El beforearchivo se evalúa antes de ufwque se apliquen las reglas; El afterarchivo se evalúa después. (También hay archivos correspondientes before6y de after6reglas, para sus ip6tablesreglas).

Se espera que estos archivos de reglas tengan una iptables-restoresintaxis compatible, presumiblemente porque ufwsimplemente los carga usando iptables-restore. Finalmente, tenga en cuenta que debe detener y reiniciar ufwdespués de realizar cualquier cambio en los archivos de reglas.

Steven Monday
fuente
3
Tenga en cuenta que puede (quizás involuntariamente) cambiar la precedencia de las reglas de iptables si olvida estandarizar el uso de -I o -A cuando usa estos archivos. -I (insertar) agrega reglas en la parte SUPERIOR de la cadena, evaluadas primero, mientras que -A (agregar) las agrega al final de la cadena. Esto puede causar resultados inesperados si usa -I en el archivo .after, por ejemplo. Solo un pensamiento.
Sam Halicke
0

UFW purgará cualquier regla agregada MANUALMENTE en la /etc/ufw/user.rulesque NO esté precedida por un comentario:

### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 out
-A ufw-user-output -p tcp --dport 80 -j ACCEPT

Cuando UFW cordura verifica las reglas en el inicio, espera un comentario que lo acompañe. Si NO está presente, incluso si la sintaxis de la regla es correcta, UFW aún la purgará.

Y no utilice simplemente ningún comentario arbitrario: DEBE ser el comentario que UFW insertaría al crear una regla de usuario a través del cli, es decir:

sudo ufw allow http/tcp

Entonces, si desea pre-sembrar una serie de reglas en un conjunto de reglas en un archivo simple, aún necesitaría crear las reglas a través de la interfaz CLI de UFW para conocer la sintaxis de los comentarios que espera que la regla pase la validación y persista .

Pruebe lo anterior con y SIN el comentario y vuelva a cargar la regla HTTP de muestra anterior; solo comentará con el comentario si la regla agregada manualmente sobrevive al reinicio ( ufw enable ) de UFW.

Este es realmente un comportamiento contrario a la intuición y no está documentado en absoluto.

F1Linux
fuente