One place for hosting & domains

      eliminar

      Cómo listar y eliminar reglas de firewall de Iptables


      Introducción

      Iptables es un firewall que tiene una función esencial en la seguridad de la red para la mayoría de los sistemas Linux. Aunque muchos tutoriales de iptables enseñan cómo crear reglas de firewall para proteger el servidor, este se centrará en un aspecto diferente de la administración de firewall: cómo listar y eliminar reglas.

      En este tutorial, explicaremos cómo hacer las siguientes tareas de iptables:

      • Listar reglas
      • Borrar contadores de paquetes y bytes
      • Eliminar reglas
      • Vaciar cadenas (eliminar todas las reglas de una cadena)
      • Vaciar todas las cadenas y tablas, eliminar todas las cadenas y aceptar todo el tráfico

      Nota: Cuando trabaje con firewalls, tenga precaución de no bloquearse a sí mismo de su propio servidor al bloquear el tráfico SSH (puerto 22, de forma predeterminada). Si pierde acceso debido a la configuración del firewall, es posible que deba conectarse a este mediante una consola fuera de banda para solucionar su problema de acceso.

      Requisitos previos

      En este tutorial, se asume que está usando un servidor Linux con el comando iptables instalado y que el usuario tiene privilegios sudo.

      Si necesita ayuda para esta configuración inicial, consulte nuestra guía Configuración inicial del servidor con Ubuntu 20.04. También está disponible para Debian y CentOS

      Veamos primero cómo enumerar reglas. Hay dos formas diferentes de ver las reglas de iptables activas: en una tabla o como una lista de especificaciones de reglas. Ambos métodos proporcionan aproximadamente la misma información en diferentes formatos.

      Para enumerar todas las reglas de iptables activas por especificación, ejecute el comando iptables con la opción -S:

      Output

      -P INPUT DROP -P FORWARD DROP -P OUTPUT ACCEPT -N ICMP -N TCP -N UDP -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -p udp -m conntrack --ctstate NEW -j UDP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP -A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -j REJECT --reject-with icmp-proto-unreachable -A TCP -p tcp -m tcp --dport 22 -j ACCEPT

      Como se puede ver, el resultado se parece a los comandos que se utilizaron para crearlas, sin el comando iptables anterior. Esto también tendrá un aspecto similar a los archivos de configuración de reglas de iptables, si alguna vez se utilizó iptables-persistent o iptables save.

      Cómo enumerar una cadena específica

      Si desea limitar el resultado a una cadena específica (ENTRADA, SALIDA, TCP, etc.), puede especificar el nombre de la cadena directamente después de la opción -S. Por ejemplo, para mostrar todas las especificaciones de reglas en la cadena TCP, debe ejecutar este comando:

      Output

      -N TCP -A TCP -p tcp -m tcp --dport 22 -j ACCEPT

      Ahora vamos a echar un vistazo a la forma alternativa de ver las reglas de iptables activas, como un cuadro de reglas.

      Cómo listar reglas como tablas

      El listado de las reglas de iptables en la vista de tabla puede ser útil para comparar diferentes reglas entre sí.

      Para generar todas las reglas de iptables activas en una tabla, ejecute el comando iptables con la opción -L:

      Esto generará todas las reglas actuales ordenadas por cadena.

      Si desea limitar el resultado a una cadena específica (ENTRADA, SALIDA, TCP, etc.), puede especificar el nombre de la cadena directamente después de la opción -L.

      Veamos un ejemplo de cadena ENTRADA:

      Output

      Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere DROP all -- anywhere anywhere ctstate INVALID UDP udp -- anywhere anywhere ctstate NEW TCP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW ICMP icmp -- anywhere anywhere ctstate NEW REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable REJECT tcp -- anywhere anywhere reject-with tcp-reset REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable

      La primera línea de resultado indica el nombre de la cadena (ENTRADA, en este caso), seguido por su directiva predeterminada (ANULAR). La siguiente línea consiste en los encabezados de cada columna de la tabla y viene seguida de las reglas de la cadena. Veamos qué indica cada encabezado:

      • target: si un paquete coincide con la regla, el objetivo especifica qué debe hacerse con él. Por ejemplo, un paquete puede aceptar, anularse, registrarse o enviarse a otra cadena para compararse con más reglas
      • prot: el protocolo, como tcp, udp, icmp o all
      • opt: rara vez se utiliza. Esta columna indica opciones IP
      • source: la dirección IP o de subred de origen del tráfico o anywhere
      • destination: la dirección IP o de subred de destino del tráfico o anywhere

      La última columna, que no está etiquetada, indica las opciones de una regla. Es decir, cualquier parte de la regla que no esté indicada mediante las columnas anteriores. Puede ser cualquier cosa, desde puertos de origen y destino hasta el estado de conexión del paquete.

      Cómo mostrar recuentos de paquetes y tamaño total

      Cuando se listan reglas de iptables, también es posible mostrar el número de paquetes y el tamaño total de estos en bytes, que coinciden con cada regla particular. Esto a menudo es útil cuando se trata de tener una idea aproximada de qué reglas coinciden con los paquetes. Para hacerlo, utilice la opción -L y -v juntos.

      Por ejemplo, volvamos a ver la cadena INPUT, con la opción -v:

      • sudo iptables -L INPUT -v

      Output

      Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 284K 42M ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- lo any anywhere anywhere 0 0 DROP all -- any any anywhere anywhere ctstate INVALID 396 63275 UDP udp -- any any anywhere anywhere ctstate NEW 17067 1005K TCP tcp -- any any anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW 2410 154K ICMP icmp -- any any anywhere anywhere ctstate NEW 396 63275 REJECT udp -- any any anywhere anywhere reject-with icmp-port-unreachable 2916 179K REJECT all -- any any anywhere anywhere reject-with icmp-proto-unreachable 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED

      Tenga en cuenta que la lista ahora tiene dos columnas adicionales, pkts y bytes.

      Ahora que sabe cómo listar las reglas de firewall activas de diversas maneras, vamos a ver cómo puede restablecer los contadores de paquetes y bytes.

      Cómo restablecer los recuentos de paquetes y el tamaño total

      Si desea borrar, o dejar en cero, los contadores de paquetes y bytes para sus reglas, utilice la opción -Z. También se restablecen si se produce un reinicio. Esto es útil cuando desea ver si el servidor está recibiendo tráfico nuevo que coincida con las reglas existentes.

      Para borrar los contadores de todas las cadenas y reglas, utilice la opción -Z sola:

      Para borrar los contadores de todas las reglas de una cadena específica, utilice la opción -Z y especifique la cadena. Por ejemplo, para borrar los contadores de la cadena ENTRADA, ejecute este comando:

      Si desea borrar los contadores de una regla determinada, especifique el nombre de la cadena y el número de la regla. Por ejemplo, para dejar en cero los contadores de la primera regla en la cadena ENTRADA, ejecute esto:

      Ahora que aprendió a restablecer los contadores de paquetes y bytes de iptables, vamos a ver los dos métodos que pueden utilizarse para eliminarlos.

      Una de las formas de eliminar reglas de iptables es mediante la especificación de reglas. Para hacerlo, puede ejecutar el comando iptables con la opción -D seguida de la especificación de reglas. Si desea eliminar reglas usando este método, puede utilizar el resultado de la lista de reglas, iptables -S, para obtener ayuda.

      Por ejemplo, si desea borrar la regla que anula paquetes entrantes inválidos (-A INPUT -m conntrack -ctstate INVALID -j DROP), podría ejecutar este comando:

      • sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP

      Tenga en cuenta que aquí debería excluirse la opción -A, que se utiliza para indicar la posición de la regla en el momento de la creación.

      Cómo eliminar reglas por cadena y número

      La otra forma de eliminar reglas de iptables es mediante su número de línea y cadena. Para determinar el número de línea de una regla, liste las reglas en el formato de tabla y agregue la opción --line-numbers:

      • sudo iptables -L --line-numbers
      [secondary_output Output]
      Chain INPUT (policy DROP)
      num  target     prot opt source               destination
      1    ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
      2    ACCEPT     all  --  anywhere             anywhere
      3    DROP       all  --  anywhere             anywhere             ctstate INVALID
      4    UDP        udp  --  anywhere             anywhere             ctstate NEW
      5    TCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
      6    ICMP       icmp --  anywhere             anywhere             ctstate NEW
      7    REJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachable
      8    REJECT     tcp  --  anywhere             anywhere             reject-with tcp-reset
      9    REJECT     all  --  anywhere             anywhere             reject-with icmp-proto-unreachable
      10   ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED
      ...
      

      Con esto se agrega el número de línea a cada fila de reglas, lo que se indica mediante el encabezado num.

      Una vez que sepa qué regla desea eliminar, tome nota del número de cadena y línea de la regla. Luego, ejecute el comando iptables -D seguido por el número de cadena y regla.

      Por ejemplo, si queremos eliminar la regla de entrada que anula paquetes inválidos, podemos ver que es la regla 3 de la cadena ENTRADA. Por ello, debemos ejecutar este comando:

      Ahora que sabe cómo eliminar reglas de firewall individuales, vamos a revisar cómo puede vaciar cadenas de reglas.

      Cómo vaciar cadenas

      Iptables ofrece una forma de eliminar todas las reglas de una cadena, o de vaciar una cadena. En esta sección se cubrirá la variedad de formas de hacer esto.

      Nota: Tenga cuidado de no bloquearse de su servidor mediante SSH, al vaciar una cadena con una directiva predeterminada de anular o denegar. Si lo hace, es posible que necesite conectarse a él a través de la consola para solucionar su problema de acceso.

      Cómo vaciar una cadena única

      Para vaciar una cadena específica, lo que eliminará todas las reglas de la cadena, puede usar la opción -F o la opción equivalente --flush, y el nombre de la cadena para vaciar.

      Por ejemplo, para eliminar todas las reglas de la ENTRADA cadena, ejecute este comando:

      Cómo vaciar todas las cadenas

      Para vaciar todas las cadenas, lo que eliminará todas las reglas de firewall, puede usar la opción -F o la opción equivalente --flush sola:

      Cómo vaciar todas las reglas, eliminar todas las cadenas y aceptar todas

      En esta sección, explicaremos cómo vaciar todas sus reglas, tablas y cadenas de firewall y permitir todo el tráfico de red.

      Nota: Con esto se deshabilitará efectivamente el firewall. Solo debe seguir esta sección si desea volver a iniciar la configuración del firewall.

      Primero, establezca las directivas predeterminadas para cada una de las cadenas incorporadas en ACEPTAR. El motivo principal para hacer esto es garantizar que no quede bloqueado del servidor mediante SSH:

      • sudo iptables -P INPUT ACCEPT
      • sudo iptables -P FORWARD ACCEPT
      • sudo iptables -P OUTPUT ACCEPT

      Luego, vacíe las tablas nat y mangle, vacíe todas las cadenas (-F) y elimine todas las cadenas no predeterminadas (-X):

      • sudo iptables -t nat -F
      • sudo iptables -t mangle -F
      • sudo iptables -F
      • sudo iptables -X

      El firewall ahora permitirá todo el tráfico de red. Si lista las reglas ahora, verá que no hay ninguna, y que solo permanecerán las tres cadenas predeterminadas (ENTRADA, REENVÍO y SALIDA).

      Conclusión

      Después de revisar este tutorial, debería quedar familiarizado con cómo listar y eliminar las reglas de firewall de iptables.

      Recuerde que cualquier cambio de iptables mediante el comando iptables es efímero y debe guardarse para que persista durante reinicios del servidor. Esto se trata en la sección Reglas de almacenamiento del tutorial Reglas y comandos comunes de firewall.



      Source link

      Cómo eliminar imágenes, contenedores y volúmenes de Docker


      Una página con trucos de Docker

      Introducción

      Docker hace que sea fácil envolver sus aplicaciones y servicios en contenedores para poder ejecutarlos en cualquier lugar. Sin embargo, a medida que se trabaja con Docker, también es fácil acumular una cantidad excesiva de imágenes, contenedores y volúmenes de datos que consumen recursos y ocupan espacio en disco.

      Docker le brinda todas las herramientas necesarias para limpiar su sistema desde la línea de comandos. En esta guía a modo de página de trucos se brinda una referencia rápida a comandos útiles para liberar espacio en el disco y mantener su sistema organizado mediante la eliminación de imágenes, contenedores y volúmenes no utilizados de Docker.

      Cómo utilizar esta guía:

      • Esta guía se ofrece con formato de página de trucos con fragmentos de líneas de comandos independientes.
      • Vaya a cualquiera de las secciones que corresponda a la tarea que está tratando de completar.

      La sintaxis de sustitución de comandos, command $(command), que se utiliza en los comandos, está disponible en muchos shells populares como bash, zsh y Windows Powershell.

      Eliminar las imágenes, los contenedores, los volúmenes y las redes sin utilizar o pendientes.

      Docker proporciona un solo comando que eliminará cualquier recurso (imágenes, contenedores, volúmenes y redes) que estén pendientes (no asociados con un contenedor):

      Para eliminar adicionalmente los contenedores detenidos y todas las imágenes no utilizadas (no solo aquellas pendientes), añada el indicador -a al comando:

      Eliminar imágenes de Docker

      Eliminar una o más imágenes específicas

      Utilice el comando docker images con el indicador -a para localizar el ID de las imágenes que quiere eliminar. Esto le mostrará todas las imágenes, incluidas las capas de imagen intermedias. Cuando localice las imágenes que desee eliminar, puede pasar su ID o etiqueta a docker rmi:

      Enumerar:

      Eliminar:

      Eliminar imágenes pendientes

      Las imágenes de Docker constan de varias capas. Las imágenes pendientes son capas que no tienen relación con imágenes etiquetadas. Ya no sirven para nada y ocupan espacio en el disco. Se pueden ubicar añadiendo el indicador de filtro -f junto con el valor dangling=true al comando docker images. Si está seguro de que quiere eliminarlas, puede utilizar el comando docker images purge:

      Nota: Si crea una imagen sin etiquetar, aparecerá en la lista de imágenes pendientes porque no está asociada a una imagen con etiqueta. Puede evitar esta situación proporcionando una etiqueta cuando cree imágenes y puede etiquetar de forma retroactiva una imagen con el comando docker tag.

      Enumerar:

      • docker images -f dangling=true

      Eliminar:

      Eliminar imágenes según un patrón

      Puede encontrar todas las imágenes que coinciden con un patrón utilizando una combinación de docker images y grep. Cuando esté conforme, puede eliminarlas utilizando awk para pasar los ID a docker rmi. Tenga en cuenta que Docker no proporciona estas utilidades y que estas no están necesariamente disponibles en todos los sistemas:

      Enumerar:

      • docker images -a | grep "pattern"

      Eliminar:

      • docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

      Eliminar todas las imágenes

      Es posible enumerar todas las imágenes de Docker de un sistema añadiendo -a al comando docker images. Una vez que esté seguro de que desea eliminarlas por completo, puede añadir el indicador -q para pasar el ID de la imagen a docker rmi:

      Enumerar:

      Eliminar:

      • docker rmi $(docker images -a -q)

      Eliminar contenedores

      Eliminar uno o más contenedores específicos

      Utilice el comando docker ps con el indicador -a para localizar el nombre o la ID de los contenedores que desee eliminar.

      Enumerar:

      Eliminar:

      • docker rm ID_or_Name ID_or_Name

      Eliminar un contenedor al cerrarlo

      Si al crear un contenedor sabe que no querrá conservarlo una vez que lo termine, puede ejecutar docker run --rm para eliminarlo automáticamente después de cerrarlo.

      Ejecutar y eliminar:

      • docker run --rm image_name

      Eliminar todos los contenedores terminados

      Puede localizar contenedores utilizando docker ps -a y filtrarlos según su estado: “created”, “restarting”, “running”, “paused” o “exited”. A fin de revisar la lista de contenedores terminados, utilice el indicador -f para filtrar según el estado. Cuando haya verificado que desea eliminar esos contenedores, utilice -q para pasar los IDs al comando docker rm.

      Enumerar:

      • docker ps -a -f status=exited

      Eliminar:

      • docker rm $(docker ps -a -f status=exited -q)

      Eliminar contenedores utilizando más de un filtro

      Los filtros de Docker pueden combinarse repitiendo el indicador de filtro con un valor adicional. Esto da como resultado una lista de contenedores que cumplen cualquier condición. Por ejemplo, si desea eliminar todos los contenedores marcados como Created (un estado que se puede generar cuando ejecuta un contenedor con un comando no válido) o Exited, puede utilizar dos filtros:

      Enumerar:

      • docker ps -a -f status=exited -f status=created

      Eliminar:

      • docker rm $(docker ps -a -f status=exited -f status=created -q)

      Eliminar contenedores según un patrón

      Puede encontrar todos los contenedores que coinciden con un patrón utilizando la combinación de docker ps y grep. Cuando esté convencido de que tiene la lista que desea eliminar, podrá utilizar awk y xargs para proporcionar el ID a docker rmi. Tenga en cuenta que Docker no proporciona estas utilidades y que no están necesariamente disponibles en todos los sistemas:

      Enumerar:

      • docker ps -a | grep "pattern

      Eliminar:

      • docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

      Detener y eliminar todos los contenedores

      Puede revisar los contenedores de su sistema con docker ps. Al añadir el indicador -a se mostrarán todos los contenedores. Cuando esté seguro de que desea eliminarlos, puede añadir el indicador -q para proporcionar los ID a los comandos docker stop y docker rm:

      Enumerar:

      Eliminar:

      • docker stop $(docker ps -a -q)
      • docker rm $(docker ps -a -q)

      Eliminar volúmenes

      Eliminar uno o más volúmenes específicos – Docker 1.9 y versiones posteriores

      Utilice el comando docker volume ls para ubicar el nombre o los nombres de los volúmenes que desea eliminar. Luego, puede eliminar uno o más volúmenes con el comando docker volume rm:

      Enumerar:

      Eliminar:

      • docker volume rm volume_name volume_name

      Eliminar volúmenes pendientes: Docker 1.9 y versiones posteriores

      Debido a que el punto de volúmenes debe existir independientemente de los contenedores, cuando se elimina un contenedor un volumen no se elimina automáticamente al mismo tiempo. Cuando un volumen existe y ya no está conectado a ningún contenedor, se denomina “volumen pendiente”. Para ubicarlos y confirmar que desea eliminarlos, puede utilizar el comando docker volume ls con un filtro a fin de limitar los resultados a volúmenes pendientes. Cuando esté conforme con la lista, puede eliminarlos con docker volume prune:

      Enumerar:

      • docker volume ls -f dangling=true

      Eliminar:

      Eliminar un contenedor y su volumen

      Si creó un volumen sin nombre, puede eliminarlo al mismo tiempo que el contenedor utilizando el indicador -v. Tenga en cuenta que esto solo funciona con volúmenes sin nombre. Cuando el contenedor se elimina correctamente, se muestra su ID. Tenga en cuenta que no se hace referencia a la eliminación del volumen. Si no tiene nombre, se elimina silenciosamente del sistema. Si se nombra, permanece silenciosamente presente.

      Eliminar:

      • docker rm -v container_name

      Conclusión

      Esta guía abarca algunos de los comandos comunes que se utilizan para eliminar imágenes, contenedores y volúmenes con Docker. Hay una gran cantidad adicional de combinaciones e indicadores que se pueden utilizar con cada uno de estos. Para acceder a una guía completa de lo que está disponible, consulte la documentación de Docker sobre docker system prune, docker rmi, docker rm y docker volume rm. Si hay tareas de limpieza comunes que desearía ver en la guía, haga preguntas o sugerencias en los comentarios.



      Source link