One place for hosting & domains

      Firewall

      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

      Como listar e excluir regras de firewall do Iptables


      Introdução

      O Iptables é um firewall que desempenha um papel essencial na segurança de rede para a maioria dos sistemas Linux. Enquanto muitos tutoriais do iptables vão lhe ensinar como criar regras de firewall para proteger seu servidor, este irá se concentrar em um aspecto diferente do gerenciamento de firewall: listar e excluir regras.

      Neste tutorial, vamos mostrar como fazer as seguintes tarefas do iptables:

      • Listar regras
      • Zerar contadores de pacotes e de bytes
      • Excluir regras
      • Esvaziar cadeias (excluir todas as regras em uma cadeia)
      • Esvaziar todas as cadeias e tabelas, excluir todas as cadeias e aceitar todo o tráfego

      Nota: ao trabalhar com firewalls, tome cuidado para não se bloquear no seu próprio servidor, bloqueando o tráfego de SSH (porta 22, por padrão). Se você perder o acesso devido às suas configurações de firewall, pode ser necessário se conectar através de um console auxiliar para restabelecer seu acesso.

      Pré-requisitos

      Este tutorial assume que você está usando um servidor Linux com o comando iptables instalado, e que seu usuário possui privilégios de sudo.

      Se precisar de ajuda com essa configuração inicial, consulte nosso guia Initial Server Setup with Ubuntu 20.04. Está disponível também para o Debian e o CentOS

      Vamos dar uma olhada em como listar as regras primeiro. Existem duas maneiras diferentes de visualizar as regras ativas do iptables: em uma tabela ou como uma lista de especificações de regras. Ambos os métodos fornecem aproximadamente a mesma informação em diferentes formatos.

      Listando regras por especificação

      Para listar todas as regras ativas do iptables por especificação, execute o comando iptables com a opção -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 podemos ver, a saída se parece com os comandos que foram usados ​​para criar as regras, sem o comando iptables precedendo-as. Isso também será semelhante aos arquivos de configuração de regras de iptables, se você alguma vez usou iptables-persistent ou iptables save.

      Listando uma cadeia específica

      Se você quiser limitar a saída a uma cadeia específica (INPUT, OUTPUT, TCP, etc.), especifique o nome da cadeia diretamente após a opção -S. Por exemplo, para mostrar todas as especificações de regras na cadeia TCP, você executaria esse comando:

      Output

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

      Agora, vamos dar uma olhada na maneira alternativa de visualizar as regras ativas do iptables, como uma tabela de regras.

      Listando regras como tabelas

      Listar as regras do iptables na visualização de tabela pode ser útil para comparar regras diferentes entre si.

      Para exibir todas as regras ativas do iptables em uma tabela, execute o comando iptables com a opção -L:

      Isso irá exibir todas as regras atuais ordenadas por cadeia.

      Se você quiser limitar a saída a uma cadeia específica (INPUT, OUTPUT, TCP, etc.), especifique o nome da cadeia diretamente após a opção -L.

      Vamos dar uma olhada em uma cadeia INPUT de exemplo:

      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

      A primeira linha da saída indica o nome da cadeia (INPUT, neste caso), seguido de sua política padrão (DROP). A próxima linha consiste dos cabeçalhos de cada coluna na tabela, e é seguida pelas regras da cadeia. Vamos examinar o que cada cabeçalho indica:

      • target: se um pacote corresponde à regra, target especifica o que deve ser feito com ela. Por exemplo, um pacote pode ser aceito, descartado, registrado ou enviado para outra cadeia para ser comparado com mais regras
      • prot: o protocolo, tal como tcp, udp, icmp, ou all.
      • opt: raramente usada, essa coluna indica opções IP
      • source: o endereço IP de origem ou sub-rede do tráfego, ou anywhere
      • destination: o endereço IP de destino ou sub-rede do tráfego, ou anywhere

      A última coluna, que não está identificada indica as opções de uma regra. Ou seja, qualquer parte da regra que não está indicada pelas colunas anteriores. Isso poderia ser qualquer coisa desde portas de origem e destino, até o estado de conexão do pacote.

      Mostrando contagens de pacotes e tamanho agregado

      Ao listar regras do iptables, também é possível mostrar o número de pacotes e o tamanho agregado dos pacotes em bytes, que correspondem a cada regra particular. Isso muitas vezes é útil quando se tenta obter uma ideia aproximada de quais regras estão correspondendo aos pacotes. Para fazer isso, use a opção -L e -v juntas.

      Por exemplo, vamos dar uma olhada novamente na cadeia INPUT, com a opção -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

      Observe que a listagem agora tem duas colunas adicionais, pkts e bytes.

      Agora que sabemos como listar as regras ativas de firewall de várias maneiras, vamos dar uma olhada em como podemos zerar os contadores de bytes.

      Zerando contagens de pacotes e tamanho agregado

      Se quiser limpar ou zerar os contadores de bytes e pacotes das suas regras, use a opção -Z. Eles também são zerados se uma reinicialização ocorrer. Isso é útil se você quiser ver se o servidor está recebendo um novo tráfego que corresponda às suas regras existentes.

      Para limpar os contadores de todas as cadeias e regras, use a opção -Z por si só:

      Para limpar os contadores de todas as regras em uma cadeia específica, use a opção -Z e especifique a cadeia. Por exemplo, para limpar os contadores da cadeia INPUT execute este comando:

      Se você quiser limpar os contadores para uma regra específica, especifique o nome da cadeia e o número da regra. Por exemplo, para zerar os contadores da primeira regra na cadeia INPUT, execute isto:

      Agora que você sabe como zerar os contadores de bytes e de pacotes, vamos dar uma olhada nos dois métodos que podem ser usados para excluí-los.

      Excluindo regras por especificação

      Uma das maneiras de excluir regras do iptables é por especificação da regra. Para fazer isso, execute o comando iptables com a opção -D seguida da especificação da regra. Se você quiser excluir regras usando esse método, use a saída da lista de regras, iptables -S, para alguma ajuda.

      Por exemplo, se você quiser excluir a regra que descarta pacotes de entrada inválidos (-A INPUT -m conntrack --ctstate INVALID -j DROP), execute este comando:

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

      Observe que a opção -A, que é usada para indicar a posição da regra no momento da criação, deve ser excluída aqui.

      Excluindo regras por cadeia e número

      A outra maneira de excluir regras do iptables é por sua cadeia e por número de linha. Para determinar o número de linha de uma regra, liste as regras em formato de tabela e adicione a opção --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
      ...
      

      Isso adiciona o número de linha a cada linha de regra, indicado pelo cabeçalho num.

      Depois de saber qual regra você deseja excluir, observe a cadeia e o número de linha da regra. Em seguida, execute o comando iptables -D seguido pela cadeia e pelo número da regra.

      Por exemplo, se quisermos excluir a regra de entrada que descarta pacotes inválidos, veremos que ela é a regra 3 da cadeia INPUT. Então devemos executar este comando:

      Agora que sabemos como excluir regras individuais de firewall, vamos ver como é possível esvaziar cadeias de regras.

      Esvaziando cadeias

      O Iptables oferece uma maneira de excluir todas as regras em uma cadeia ou fazer um flush em uma cadeia. Esta seção cobrirá uma variedade de maneiras de fazer isso.

      Nota: tenha cuidado para não se bloquear no servidor, via SSH, ao esvaziar uma cadeia com uma política padrão drop ou deny. Se fizer isso, será necessário se conectar a ele através do console para restabelecer seu acesso.

      Esvaziando uma única cadeia

      Para esvaziar uma cadeia específica, o que irá excluir todas as regras na cadeia, use a opção -F, ou a opção ---flush equivalente, e o nome da cadeia a ser esvaziada.

      Por exemplo, para excluir todas as regras na cadeia INPUT, execute este comando:

      Esvaziando todas as cadeias

      Para esvaziar todas as cadeias, o que irá excluir todas as regras de firewall, use a opção -F, ou a opção ---flush equivalente, por si só:

      Esvaziando todas as regras, excluindo todas as cadeias e aceitando tudo

      Esta seção mostrará a você como esvaziar todas as suas regras de firewall, tabelas e cadeias, além de permitir todo o tráfego de rede.

      Nota: isso desativará efetivamente o seu firewall. Você só deve seguir esta seção se quiser reiniciar a configuração do seu firewall.

      Primeiro, defina as políticas padrão para cada uma das cadeias integradas como ACCEPT. A principal razão de se fazer isso é garantir que você não será bloqueado no servidor via SSH:

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

      Em seguida, esvazie as tabelas nat e mangle, esvazie todas as cadeias (-F) e exclua todas as cadeias não padrão (-X):

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

      Agora o firewall permitirá todo o tráfego de rede. Se você listar suas regras agora, verá que não existe nenhuma, e apenas as três cadeias padrão (INPUT, FORWARD e OUTPUT) permaneceram.

      Conclusão

      Depois de passar por este tutorial, você deve estar familiarizado em como listar e excluir suas regras de firewall do iptables.

      Lembre-se de que quaisquer alterações do iptables através do comando iptables são efêmeras e precisam ser salvas para persistir após reinicializações do servidor. Isso é abordado na seção Regras de salvamento do tutorial de regras e comandos comuns de firewall.



      Source link

      Cara Membuat Daftar dan Menghapus Aturan Firewall Iptables


      Pengantar

      Iptables adalah suatu firewall yang memainkan peran penting dalam keamanan jaringan untuk banyak sistem Linux. Walaupun banyak tutorial iptables yang akan mengajarkan Anda cara menciptakan aturan firewall untuk mengamankan server, tutorial berikut ini akan berfokus pada aspek yang berbeda dari manajemen firewall: membuat daftar dan menghapus aturan.

      Dalam tutorial ini, kita akan membahas cara melakukan tugas iptables berikut:

      • Membuat daftar aturan
      • Membersihkan Penghitung Bita dan Paket
      • Menghapus aturan
      • Melakukan flush rantai (menghapus semua aturan dalam suatu rantai)
      • Melakukan flush semua rantai dan tabel, menghapus semua rantai, dan menerima semua lalu lintas

      Catatan: Ketika bekerja dengan firewall, berhati-hatilah agar jangan sampai Anda mengunci diri sendiri dari server dengan memblokir lalu lintas SSH (porta 22, secara asali). Jika Anda kehilangan akses karena pengaturan firewall, Anda mungkin perlu menghubungkannya melalui konsol di luar jaringan untuk memperbaiki akses Anda.

      Prasyarat

      Tutorial ini mengasumsikan Anda menggunakan server Linux dengan perintah iptables yang sudah terinstal, dan bahwa pengguna Anda memiliki privilese sudo.

      Jika Anda memerlukan bantuan dengan penyiapan awal ini, silakan merujuk ke panduan Penyiapan Server Awal dengan Ubuntu 20.04 dari kami. Juga tersedia untuk Debian dan CentOS

      Mari kita lihat cara membuat daftar aturan terlebih dahulu. Ada dua cara berbeda untuk melihat aturan iptables Anda yang sedang aktif: di dalam tabel atau sebagai daftar dari spesifikasi aturan. Kedua metode ini memberikan informasi yang kurang-lebih sama dalam format berbeda.

      Untuk membuat daftar dari semua aturan iptables yang aktif menurut spesifikasi, jalankan perintah iptables dengan opsi -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

      Seperti yang Anda lihat, keluarannya terlihat seperti perintah yang digunakan untuk menciptakannya, tanpa perintah iptables yang mendahuluinya. Ini juga akan terlihat mirip dengan berkas konfigurasi aturan iptables, jika Anda pernah menggunakan iptables-persistent atau iptables save.

      Membuat Daftar Rantai Spesifik

      Jika Anda ingin membatasi keluaran menurut suatu rantai spesifik (INPUT, OUTPUT, TCP, dll.), Anda dapat menentukan nama rantai secara langsung setelah opsi -S. Misalnya, untuk menunjukkan semua spesifikasi aturan dalam rantai TCP, Anda akan menjalankan perintah ini:

      Output

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

      Sekarang mari kita lihat cara alternatif untuk melihat aturan iptables yang aktif, sebagai tabel aturan.

      Membuat Daftar Aturan sebagai Tabel

      Membuat daftar aturan iptables dalam bentuk tabel dapat berguna untuk membandingkan aturan-aturan yang berbeda terhadap satu sama lain,

      Untuk mendapatkan keluaran dari semua aturan iptables aktif dalam suatu tabel, jalankan perintah iptables dengan opsi -L:

      Ini akan memberikan keluaran dari semua aturan saat ini yang diurutkan berdasarkan rantai.

      Jika Anda ingin membatasi keluaran menurut suatu rantai tertentu (INPUT, OUTPUT, TCP, dll.), Anda dapat menentukan nama rantai secara langsung setelah opsi -L.

      Mari kita lihat contoh dari rantai INPUT:

      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

      Baris pertama keluaran mengindikasikan nama rantai (INPUT, dalam kasus ini), yang diikuti oleh kebijakan asali (DROP). Baris selanjutnya terdiri atas tajuk dari setiap kolom di dalam tabel, dan diikuti oleh aturan rantai. Mari kita membahas yang diindikasikan setiap tajuk:

      • target: Jika paket sesuai aturan, maka target menetapkan tindakan yang harus dilakukan dengannya. Sebagai contoh, paket dapat diterima, didrop, dicatat, atau dikirim ke rantai lain untuk dibandingkan terhadap aturan lebih lanjut
      • prot: Protokol, seperti tcp, udp, icmp, atau all
      • opt: Jarang digunakan, kolom ini mengindikasikan opsi IP
      • source: Alamat IP sumber atau subnet lalu lintas, atau anywhere
      • destination: Alamat IP tujuan atau subnet lalu lintas, atau anywhere

      Kolom terakhir, yang tidak diberi label, mengindikasikan opsi dari suatu aturan. Yang berarti, bagian apa pun dari aturan yang tidak diindikasikan oleh kolom sebelumnya. Ini dapat berupa apa pun, mulai dari porta sumber dan tujuan hingga kondisi koneksi dari paket.

      Menampilkan Hitungan Paket dan Ukuran Agregat

      Ketika membuat daftar aturan iptables, dimungkinkan untuk menampilkan jumlah paket, dan ukuran agregat dari paket dalam bita, yang sesuai dengan setiap aturan tertentu. Ini seringkali berguna saat sedang mencoba mendapatkan ide kasar tentang aturan yang sesuai dengan paket. Untuk melakukannya, gunakan opsi -L dan -v secara bersamaan.

      Misalnya, mari kita lihat rantai INPUT lagi, dengan opsi -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

      Perhatikan bahwa daftar itu sekarang memiliki dua kolom tambahan, pkts dan bytes.

      Kini karena Anda telah mengetahui cara membuat daftar aturan firewall aktif dengan berbagai cara, mari kita lihat cara Anda dapat melakukan reset penghitung bita dan paket.

      Melakukan Reset Hitungan Paket dan Ukuran Agregat

      Jika Anda ingin membersihkan, atau menjadikan nol, penghitung bita dan paket untuk aturan Anda, gunakan opsi -Z. Opsi ini juga melakukan reset jika boot ulang terjadi. Ini berguna jika Anda ingin melihat apakah server Anda menerima lalu lintas baru yang sesuai dengan aturan yang ada.

      Untuk membersihkan penghitung semua rantai dan aturan, gunakan opsi -Z itu sendiri:

      Untuk membersihkan penghitung semua aturan dalam rantai tertentu, gunakan opsi -Z dan tentukan rantainya. Misalnya, untuk membersihkan penghitung rantai INPUT, jalankan perintah ini:

      Jika Anda ingin membersihkan penghitung untuk suatu aturan tertentu, tentukan nama rantai dan nomor aturan. Misalnya, untuk menjadikan penghitung kembali ke nol pada aturan pertama dalam rantai INPUT, jalankan ini:

      Karena kini Anda telah mengetahui cara melakukan reset penghitung bita dan paket iptables, mari kita lihat dua metode yang dapat digunakan untuk menghapusnya.

      Salah satu cara untuk menghapus aturan iptables adalah dengan spesifikasi aturan. Untuk melakukannya, Anda dapat menjalankan perintah iptables dengan opsi -D yang diikuti oleh spesifikasi aturan. Jika Anda ingin menghapus aturan menggunakan metode ini, Anda dapat menggunakan keluaran dari daftar aturan iptables -S untuk bantuan.

      Misalnya, jika Anda ingin menghapus aturan yang mengedrop paket masuk yang tidak valid (-A INPUT -m conntrack --ctstate INVALID -j DROP), Anda dapat menjalankan perintah ini:

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

      Perhatikan bahwa opsi -A, yang digunakan untuk mengindikasikan posisi aturan pada waktu pembuatan, harus dikecualikan di sini.

      Cara lain untuk menghapus aturan iptables adalah melalui rantai dan nomor barisnya. Untuk menentukan nomor baris aturan, buatlah daftar aturan dalam format tabel dan tambahkan opsi --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
      ...
      

      Ini menambahkan nomor baris di setiap baris aturan, yang diindikasikan oleh tajuk num.

      Setelah Anda mengetahui aturan yang ingin Anda hapus, perhatikan rantai dan nomor baris dari aturannya. Kemudian, jalankan perintah iptables -D yang diikuti oleh rantai dan nomor raturan.

      Misalnya, jika kita ingin menghapus aturan masukan yang mengedrop paket tidak valid, kita dapat melihat bahwa itu adalah aturan 3 dari rantai INPUT. Jadi, kita harus menjalankan perintah ini:

      Karena kini Anda telah mengetahui cara menghapus aturan firewall individual, mari kita membahas cara melakukan flush rantai aturan.

      Melakukan Flush Rantai

      Iptables menawarkan cara untuk menghapus semua aturan dalam suatu rantai, atau melakukan flush suatu rantai. Bagian ini akan mencakup berbagai cara untuk melakukannya.

      Catatan: Berhati-hatilah agar tidak mengunci diri sendiri dari server Anda, melalui SSH, dengan melakukan flush rantai menggunakan kebijakan asali dari drop atau deny. Jika Anda melakukannya, Anda mungkin perlu terhubung dengannya melalui konsol untuk memperbaiki akses.

      Melakukan Flush Rantai Tunggal

      Untuk melakukan flush rantai tertentu, yang akan menghapus semua aturan dalam rantai itu, Anda dapat menggunakan opsi -F, atau padanan kata dari --flush, dan nama dari rantai yang akan dilakukan flush.

      Misalnya, untuk menghapus semua aturan dalam rantai INPUT, jalankan perintah ini:

      Melakukan Flush Semua Rantai

      Untuk melakukan flush semua rantai, yang akan menghapus semua aturan firewall, Anda dapat menggunakan opsi -F, atau padanan kata dari --flush dengan sendirinya:

      Melakukan Flush Semua Aturan, Menghapus Semua Rantai, dan Menerima Semua

      Bagian ini akan menunjukkan kepada Anda cara melakukan flush semua aturan firewall, tabel, dan rantai, serta mengizinkan semua lalu lintas jaringan.

      Catatan: Ini akan secara efektif menonaktifkan firewall Anda. Anda dapat mengikuti bagian ini hanya jika Anda ingin memulai ulang seluruh konfigurasi firewall.

      Pertama-tama, tetapkan kebijakan asali untuk setiap rantai bawaan menjadi ACCEPT. Alasan utama melakukan ini adalah untuk memastikan bahwa Anda tidak akan terkunci dari server Anda melalui SSH:

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

      Lalu lakukan flush tabel nat dan mangle, flush semua rantai (-F), dan hapus semua rantai non-asali (-X):

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

      Firewall Anda kini akan mengizinkan semua lalu lintas jaringan. Jika Anda membuat daftar aturan sekarang, Anda tidak akan melihat apa pun, dan hanya tiga rantai asali (INPUT, FORWARD, dan OUTPUT) yang tersisa.

      Kesimpulan

      Setelah mengikuti tutorial ini, Anda seharusnya memahami cara membuat daftar dan menghapus aturan firewall iptables.

      Ingat bahwa setiap perubahan iptables melalui perintah iptables bersifat tidak permanen, dan perlu disimpan agar tetap ada di sepanjang boot ulang server. Ini dibahas dalam bagian Aturan Penyimpanan dari tutorial Aturan Firewall dan Perintah Umum.



      Source link