nftables es una herramienta común de administración de reglas de firewall y filtrado de paquetes en Linux. Si solo necesita control de acceso al dispositivo, contadores de tráfico, coincidencia de puertos o limitación de velocidad básica, no necesita aprender todo el sistema de reglas de una vez. Comience con tres conceptos:
table: un contenedor de reglas.cadena: donde se evalúan las reglas, generalmente unidas a un gancho.regla: la condición y acción coincidentes reales.
Este artículo describe un flujo de trabajo mínimo que es adecuado para realizar pruebas primero en un entorno seguro.
Estructura básica
Prepare algunas variables primero. Los siguientes comandos los reutilizan:
|
|
Cree una tabla inet que admita IPv4 e IPv6:
|
|
Luego cree una cadena adjunta a la etapa “adelante”:
|
|
Aquí, “tipo filtro” significa que se trata de una cadena de reglas de filtrado y “enganche hacia adelante” significa que procesa paquetes reenviados.
Métodos de coincidencia comunes
Coincidencia por IP de origen. Esto suele ser útil para la dirección de carga:
|
|
Coincidencia por IP de destino. Esto suele ser útil para la dirección de descarga:
|
|
Cuando se hace coincidir por dirección MAC, se puede usar ether saddr para controlar el tráfico ascendente:
|
|
Tenga en cuenta que en redes que implican puenteo, reenvío o traducción de direcciones, es posible que los paquetes descendentes no siempre se filtren de manera confiable por MAC de destino. Para el control de acceso al dispositivo, comience validando primero ether saddr o las reglas basadas en IP.
Para hacer coincidir los puertos, puede cubrir tanto TCP como UDP:
|
|
Para hacer coincidir un rango de puertos, utilice una expresión de comparación:
|
|
Contar el tráfico para un dispositivo
Si solo desea contar el tráfico de carga y descarga para una dirección IP, utilice “contrarretorno”. Después de una coincidencia, registra el contador y regresa, lo que puede reducir aún más los gastos generales de coincidencia cuando existan más reglas estadísticas más adelante.
|
|
Ver las estadísticas:
|
|
Si necesita ver el “identificador” de cada regla, agregue “-a”:
|
|
handle es importante porque nftables generalmente depende de él para eliminar una sola regla.
Limitación de tasa básica
La limitación de la tasa se puede realizar con “tasa límite superior”. Por ejemplo, limite el tráfico a una velocidad específica por dirección MAC:
|
|
Aquí, “mbytes” y “kbytes” pueden entenderse como las unidades habituales M y K. No es necesario multiplicar manualmente por 8. En la práctica, comience con un valor más relajado, confirme la dirección y el efecto correspondientes y luego apriételo si es necesario.
Eliminar y limpiar reglas
Primera lista de reglas con valores de control:
|
|
Luego elimine una regla por identificador:
|
|
Lavar una cadena:
|
|
Eliminar una cadena:
|
|
Eliminar toda la tabla:
|
|
Durante la depuración diaria, limpie únicamente la tabla que creó usted mismo. Evite cambiar directamente las tablas generadas automáticamente por el sistema u otros servicios. Esto facilita la reversión incluso si una regla está escrita incorrectamente.
Notas de uso
Cuando se utilizan nftables, suele ser más seguro crear primero su propia tabla y cadena independientes. Esto tiene dos beneficios:
- Es menos probable que sus reglas se mezclen con las reglas del sistema existente.
- La depuración, el vaciado y la eliminación son más seguros.
Después de escribir reglas, utilice siempre nft list chain para verificar el comportamiento de coincidencia real. Las reglas de MAC, interfaz, puerto y límite de velocidad pueden comportarse de manera diferente entre dispositivos, configuraciones de puente y versiones del sistema. Las pruebas de pequeño alcance son más seguras que escribir reglas complejas todas a la vez.