One place for hosting & domains

      Firewall

      Cómo configurar un firewall con UFW en Ubuntu 20.04


      Introducción

      UFW, o Uncomplicated Firewall, es una interfaz de gestión de firewall simplificada que oculta la complejidad de las tecnologías de filtrado de paquetes de nivel inferior, como iptables y nftables. Si desea comenzar a proteger su red y no está seguro respecto de la herramienta que debe utilizar, UFW puede ser la mejor opción .

      En este tutorial, verá la manera de configurar un firewall con UFW en Ubuntu 20.04.

      Requisitos previos

      Para este tutorial, necesitará lo siguiente:

      UFW viene instalado por defecto en Ubuntu. Si se desinstaló por alguna razón, puede instalarlo con sudo apt install ufw​​​2​​​.

      Paso 1: Utilizar IPv6 con UFW (opcional)

      Este tutorial se redactó teniendo en cuenta IPv4, pero funcionará para IPv6 siempre que lo habilite. Si su servidor de Ubuntu tiene IPv6 habilitado, compruebe que UFW esté configurado para que admitir IPv6 de modo que administre las reglas de firewall para IPv6 además de IPv4. Para hacerlo, abra la configuración de UFW con nano o su editor favorito.

      • sudo nano /etc/default/ufw

      A continuación, asegúrese de que el valor de IPV6 sea yes. Debería tener el siguiente aspecto:

      /etc/default/ufw excerpt

      IPV6=yes
      

      Guarde y cierre el archivo. Cuando UFW esté habilitado, se configurará para escribir reglas de firewall de IPv4 y IPv6. Sin embargo, antes de habilitar UFW, nos convendrá comprobar que su firewall esté configurado para que usted pueda establecer conexión a través de SSH. Empezaremos con la configuración de las políticas predeterminadas.

      Paso 2: Configurar políticas predeterminadas

      Si recién está dando los primeros pasos con su firewall, las primeras reglas que deben definirse son sus políticas predeterminadas. Estas reglas controlan el manejo del tráfico que no coincida de forma explícita con otras reglas. Por defecto, UFW está configurado para denegar todas las conexiones entrantes y permitir todas las conexiones salientes. Esto significa que quien intente establecer conexión con su servidor no podrá hacerlo, mientras que cualquier aplicación dentro del servidor podrá llegar al mundo exterior.

      Restableceremos los valores predeterminados de sus reglas de UFW para garantizar que podamos seguir con este tutorial. Para fijar los valores predeterminados utilizados por UFW, emplee estos comandos:

      • sudo ufw default deny incoming
      • sudo ufw default allow outgoing

      Establecen los valores predeterminados para denegar las conexiones entrantes y permitir las salientes. Con solo estos valores predeterminados de firewall podría bastar para una computadora personal, pero normalmente los servidores deben responder a las solicitudes de usuarios externos. Lo veremos a continuación.

      Paso 3: Habilitar conexiones SSH

      Si habilitamos nuestro firewall de UFW ahora, denegaría todas las conexiones entrantes. Esto significa que deberemos crear reglas que permitan explícitamente las conexiones entrantes legítimas (SSH o HTTP, por ejemplo) si queremos que nuestro servidor responda a estos tipos de solicitudes. Si utiliza un servidor en nube, probablemente le convenga permitir las conexiones SSH entrantes para poder conectarse y administrar su servidor.

      Para configurar su servidor de modo que permita las conexiones SSH entrantes, puede utilizar este comando:

      Esto creará reglas de firewall que permitirán todas las conexiones en el puerto 22, que es el que escucha el demonio SSH por defecto. UFW registra el significado del puerto allow ssh porque está enumerado como servicio en el archivo /etc/services.

      Sin embargo, podemos escribir la regla equivalente especificando el puerto en vez del nombre del servicio. Por ejemplo, este comando funciona como el anterior:

      Si configuró su demonio SSH para utilizar un puerto diferente, deberá especificar el puerto apropiado. Por ejemplo, si su servidor SSH escucha en el puerto 2222 puede utilizar este comando para permitir las conexiones en ese puerto:

      Ahora que su firewall está configurado para permitir las conexiones SSH entrantes, podemos habilitarlo.

      Paso 4: Habilitar UFW

      Para habilitar UFW, utilice este comando:

      Recibirá una advertencia que indicará que el comando puede interrumpir las conexiones SSH existentes. Ya configuramos una regla de firewall que permite conexiones SSH. Debería ser posible continuar sin inconvenientes. Responda a la solicitud con y y presione ENTER.

      Con esto, el firewall quedará activo. Ejecute el comando sudo ufw status verbose para ver las reglas que se configuran. En el resto de este tutorial se abarca en mayor profundidad la forma de utilizar UFW. Se analizarán opciones como las de permitir o denegar diferentes tipos de conexiones.

      Paso 5: Habilitar otras conexiones

      En este momento, debería permitir el resto de las conexiones a las que su servidor debe responder. Las conexiones que debería permitir dependen de sus necesidades específicas. Afortunadamente, ya sabe cómo escribir reglas que permiten las conexiones basadas en un nombre de servicio o un puerto; ya lo hicimos para SSH en el puerto 22. También puede hacerlo para:

      • HTTP en el puerto 80, que es lo que utilizan los servidores web no cifrados, con sudo ufw allow http o sudo ufw allow 80
      • HTTPS en el puerto 443, que es lo que utilizan los servidores web cifrados, con sudo ufw allow https o sudo ufw allow 443

      Existen varias maneras de permitir otras conexiones, aparte de especificar un puerto o un servicio conocido.

      Intervalos de puerto específicos

      Puede especificar intervalos de puerto con UFW. Algunas aplicaciones utilizan varios puertos en vez de uno solo.

      Por ejemplo, para permitir las conexiones de X11 que utilizan los puertos 6000 a 6007, use estos comandos:

      • sudo ufw allow 6000:6007/tcp
      • sudo ufw allow 6000:6007/udp

      Al especificar intervalos de puerto con UFW, debe definir el protocolo (tcp o udp) al que deberían aplicarse las reglas. No lo mencionamos antes porque cuando no se especifica el protocolo se permiten ambos de forma automática, lo cual está bien en la mayoría de los casos.

      Direcciones IP específicas

      Al trabajar con UFW, también puede especificar direcciones IP. Por ejemplo, si desea permitir las conexiones desde una dirección IP específica, como una dirección IP de trabajo o doméstica 203.0.113.4, debe definir from y luego la dirección IP:

      • sudo ufw allow from 203.0.113.4

      También puede especificar un puerto concreto al que la dirección IP pueda conectarse agregando to any port seguido del número de este. Por ejemplo, si desea permitir que 203.0.113.4 se conecte al puerto 22 (SSH), utilice este comando:

      • sudo ufw allow from 203.0.113.4 to any port 22

      Subredes

      Si desea permitir una subred de direcciones IP, puede hacerlo utilizando la notación CIDR para especificar una máscara de red. Por ejemplo, si desea permitir todas las direcciones IP de la 203.0.113.1 a la 203.0.113.254 podría utilizar este comando:

      • sudo ufw allow from 203.0.113.0/24

      Del mismo modo, también puede especificar el puerto de destino al que puede conectarse la subred 203.013.0/24. Una vez más, utilizaremos el puerto 22 (SSH) como ejemplo:

      • sudo ufw allow from 203.0.113.0/24 to any port 22

      Conexiones a una interfaz de red específica

      Si desea crear una regla de firewall que solo se aplique a una interfaz de red específica, puede hacerlo optando por “allow in on” seguido del nombre de la interfaz de red.

      Tal vez le convenga revisar sus interfaces de red antes de continuar. Para hacerlo, utilice este comando:

      Output Excerpt

      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state . . . 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default . . .

      El resultado resaltado indica los nombres de la interfaz de red. Normalmente, tienen nombres similares a eth0 o enp3s2.

      Así, si su servidor tiene una interfaz de red pública llamada eth0, podría permitir el tráfico HTTP (puerto 80) hacia él con este comando:

      • sudo ufw allow in on eth0 to any port 80

      Al hacerlo permitiría que su servidor recibiera solicitudes HTTP desde la Internet pública.

      O bien, si desea que su servidor de base de datos de MySQL (puerto 3306) escuche las conexiones en la interfaz de red privada eth1, por ejemplo, podría utilizar este comando:

      • sudo ufw allow in on eth1 to any port 3306

      Esto permitiría que otros servidores de su red privada se conectaran a su base de datos de MySQL.

      Paso 6: Denegar conexiones

      Si no cambió la política predeterminada para las conexiones entrantes, UFW está configurado para denegarlas a todas. Generalmente, esto simplifica el proceso de creación de una política de firewall segura al exigirle crear reglas que permitan de forma explícita el acceso de puertos específicos y direcciones IP.

      Sin embargo, a veces le convendrá denegar conexiones específicas basadas en la dirección IP o subred de origen, quizás por saber que su servidor recibe ataques desde ellas. Además, si desea cambiar el valor su política entrante predeterminada a allow (no lo recomendamos), debería crear reglas deny para cualquier servicio o dirección IP cuyas conexiones no desee permitir.

      Para escribir reglas de deny, puede utilizar los comandos descritos anteriormente y sustituir allow por deny.

      Por ejemplo, para denegar conexiones HTTP, podría utilizar este comando:

      A su vez, si desea denegar todas las conexiones de 203.0.113.4 podría utilizar este comando:

      • sudo ufw deny from 203.0.113.4

      Ahora veremos la forma de eliminar reglas.

      Paso 7: Eliminar reglas

      Saber eliminar reglas de firewall es tan importante como saber crearlas. Existen dos maneras diferentes de especificar las reglas que se eliminarán: por número de regla o por regla real (se asemejan a la forma en que las reglas se especifican al crearse). Comenzaremos con el método de eliminación por número de regla porque es más sencillo.

      Por número de regla

      Si utiliza el número de regla para eliminar reglas de firewall, lo primero que le convendrá hacer es obtener una lista de reglas de firewall. El comando “UFW status” tiene una opción para mostrar números junto a cada regla, como se muestra aquí:

      Numbered Output:

      Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere

      Si decidimos eliminar la regla 2, que permite las conexiones del puerto 80 (HTTP), podemos especificarlo en un comando “UFW delete”como este:

      Esto mostraría un mensaje de confirmación y eliminaría la regla 2, que permite conexiones HTTP. Tenga en cuenta que si tiene IPv6 habilitado, le convendría eliminar también la regla IPv6 correspondiente.

      Por regla real

      La alternativa a números de regla es especificar la regla real que se eliminará. Por ejemplo, si desea eliminar la regla allow http, podría escribir lo siguiente:

      • sudo ufw delete allow http

      También podría especificar la regla mediante allow 80 en vez de hacerlo por nombre de servicio:

      Con este método se eliminarán las reglas IPv4 y IPv6, si existen.

      Paso 8: Comprobar el estado y las reglas de UFW

      En cualquier momento, puede verificar el estado de UFW con este comando:

      Si UFW está desactivado, lo cual se aplica por defecto, verá algo como esto:

      Output

      Status: inactive

      Si UFW está activo, lo cual debería suceder si siguió el paso 3, en el resultado se indicará que está activo y se enumerará cualquier regla configurada. Por ejemplo, si el firewall está configurado para permitir conexiones SSH (puerto 22) desde cualquier parte, el resultado podría ser parecido a este:

      Output

      Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere

      Utilice el comando status si desea verificar la configuración que UFW aplicó al firewall.

      Paso 9: Deshabilitar o reiniciar UFW (opcional)

      Si decide que no desea utilizar UFW, puede desactivarlo con este comando:

      Cualquier regla que haya creado con UFW dejará de estar activa. Siempre puede ejecutar sudo ufw enable si necesita activarla más adelante.

      Si ya configuró reglas de UFW y decide que desea empezar de nuevo, puede utilizar el comando “reset”:

      Con esto se desactivará UFW y se eliminará cualquier regla definida anteriormente. Tenga en cuenta que los ajustes originales de las políticas predeterminadas no se restablecerán si las modificó en algún momento. Esto debería permitirle empezar de nuevo con UFW.

      Conclusión

      De esta manera, su firewall quedará configurado para permitir conexiones SSH (al menos). Asegúrese de permitir cualquier otra conexión entrante que necesite su servidor y, al mismo tiempo, limitar cualquier conexión innecesaria, de modo que su servidor funcione y sea seguro.

      Para obtener información sobre más configuraciones comunes de UFW, consulte el tutorial Aspectos básicos de UFW: reglas y comandos comunes de firewall.



      Source link

      Como Configurar um Firewall com o UFW no Ubuntu 20.04


      Introdução

      O UFW, ou Uncomplicated Firewall, é uma interface de gerenciamento simplificado de firewall que esconde a complexidade das tecnologias de filtragem de pacotes de baixo nível, como iptables e nftables. Se você deseja começar a proteger sua rede, mas não tem certeza sobre qual ferramenta usar, o UFW pode ser a escolha certa para você.

      Este tutorial lhe mostrará como configurar um firewall com o UFW no Ubuntu 20.04.

      Pré-requisitos

      Para seguir este tutorial, você vai precisar do seguinte:

      O UFW vem instalado por padrão no Ubuntu. Se ele tiver sido desinstalado por algum motivo, você pode instalá-lo com sudo apt install ufw.

      Este tutorial foi escrito tendo o IPv4 em mente, mas funcionará também com o IPv6, contanto que você o habilite. Se seu servidor Ubuntu tiver o IPv6 habilitado, certifique-se de que o UFW esteja configurado para dar suporte ao IPv6, para que ele gerencie as regras de firewall do IPv6, além das regras do IPv4. Para fazer isso, abra a configuração UFW com o nano ou seu editor favorito.

      • sudo nano /etc/default/ufw

      Então, certifique-se de que o valor IPV6 seja yes. Deve se parecer com isto:

      /etc/default/ufw excerpt

      IPV6=yes
      

      Salve e feche o arquivo. Agora, quando o UFW estiver habilitado, ele será configurado para escrever regras de firewall para ambos IPv4 e IPv6. No entanto, antes de habilitar o UFW, nós vamos querer garantir que seu firewall esteja configurado para permitir que você se conecte via SSH. Vamos começar configurando as políticas padrão.

      Passo 2 — Configurando as políticas padrão

      Se você estiver apenas começando com seu firewall, as primeiras regras a definir são suas políticas padrão. Essas regras controlam a maneira de lidar com tráfego que não seja claramente compatível com quaisquer outras regras. Por padrão, o UFW é configurado para negar todas as conexões de entrada e permitir todas as conexões de saída. Isso significa que qualquer um que tentasse acessar o seu servidor não conseguiria conectar-se, ao passo que os aplicativos dentro do servidor conseguiriam alcançar o mundo exterior.

      Vamos retornar as regras do seu UFW para as configurações padrão, para que possamos ter certeza de que você conseguirá acompanhar este tutorial. Para definir os padrões usados pelo UFW, utilize estes comandos:

      • sudo ufw default deny incoming
      • sudo ufw default allow outgoing

      Esses comandos configuram os padrões para negar as conexões de entrada e permitir as conexões de saída. Esses padrões do firewall poderiam suprir as necessidades de um computador pessoal Porém, os servidores normalmente precisam responder às solicitações que chegam de usuários externos. Vamos verificar isso a seguir.

      Passo 3 — Permitindo as conexões via protocolo SSH

      Se nós habilitássemos nosso firewall UFW agora, ele negaria todas as conexões de entrada. Isso significa que precisaremos criar regras que permitam de maneira explícita as conexões de entrada legítimas — conexões SSH ou HTTP, por exemplo — se quisermos que nosso servidor responda a esses tipos de pedidos. Se você estiver usando um servidor na nuvem, você provavelmente irá querer permitir conexões de entrada via protocolo SSH para que você consiga se conectar e gerenciar o seu servidor.

      Para configurar seu servidor para permitir as conexões de entrada via SSH, você pode utilizar este comando:

      Esse procedimento criará regras do firewall que permitirão todas as conexões na porta 22, que é a porta na qual o SSH daemon escuta por padrão. O UFW sabe o que a porta allow ssh significa porque ela está listada como um serviço no arquivo /etc/services.

      No entanto, podemos realmente escrever a regra equivalente, especificando a porta em vez do nome do serviço. Por exemplo, este comando funciona de forma semelhante ao anterior:

      Se você configurou seu SSH daemon para usar uma porta diferente, você terá que especificar a porta apropriada. Por exemplo, se seu servidor SSH estiver escutando na porta 2222, você pode usar este comando para permitir as conexões naquela porta:

      Agora que seu firewall está configurado para permitir as conexões de entrada via SSH, podemos habilitá-lo.

      Passo 4 — Habilitando o UFW

      Para habilitar o UFW, utilize este comando:

      Você receberá um aviso que diz que o comando pode interromper conexões via SSH existentes. Nós já configuramos uma regra de firewall que permite conexões via SSH, então tudo bem continuar. Responda ao prompt com y e tecle ENTER.

      O firewall agora está ativo. Execute o comando sudo ufw status verbose para ver as regras que foram definidas. O resto deste tutorial tratará de como usar o UFW em mais detalhes, como, por exemplo, permitir ou negar diferentes tipos de conexões.

      Passo 5 — Permitindo outras conexões

      Neste ponto, você deve permitir todas as outras conexões às quais seu servidor precisa responder. As conexões que você deve permitir dependem das suas necessidades específicas. Felizmente, você já sabe escrever regras que permitem conexões baseadas em um nome de serviço ou porta; já fizemos isso para o SSH na porta 22. Você também pode fazer isso para:

      • O HTTP na porta 80, que é a porta que os servidores Web não criptografados utilizam, usando sudo ufw allow http ou sudo ufw allow 80
      • O HTTPS na porta 443, que é a porta que os servidores Web criptografados utilizam, usando sudo ufw allow https ou sudo ufw allow 443

      Há várias outras maneiras de permitir outras conexões, além de especificar uma porta ou serviço conhecido.

      Faixas de portas específicas

      Você pode especificar faixas de portas com o UFW. Alguns aplicativos usam várias portas, em vez de uma única porta.

      Por exemplo, para permitir conexões via protocolo X11, que usam as portas 60006007, utilize esses comandos:

      • sudo ufw allow 6000:6007/tcp
      • sudo ufw allow 6000:6007/udp

      Ao especificar as faixas de porta com o UFW, você deve especificar o protocolo (tcp ou udp) para o qual as regras devem aplicar-se. Nós não mencionamos isso antes porque não especificar o protocolo automaticamente permite ambos os protocolos, o que é OK na maioria dos casos.

      Endereços IP específicos

      Ao trabalhar com o UFW, você também pode especificar endereços IP. Por exemplo, se quiser permitir conexões de um endereço IP específico, como um endereço IP de trabalho ou domicílio de 203.0.113.4, você precisa especificar from, então o endereço IP:

      • sudo ufw allow from 203.0.113.4

      Você também pode especificar uma porta específica na qual o endereço IP tem permissão para se conectar, adicionando to any port seguido do número da porta. Por exemplo, se quiser permitir que o endereço 203.0.113.4 se conecte à porta 22 (SSH), utilize este comando:

      • sudo ufw allow from 203.0.113.4 to any port 22

      Sub-redes

      Se você quiser permitir uma sub-rede de endereços IP, você pode fazer isso usando uma notação CIDR para especificar uma máscara de rede. Por exemplo, se você quiser permitir todos os endereços IP na faixa de 203.0.113.1 a 203.0.113.254, você pode usar este comando:

      • sudo ufw allow from 203.0.113.0/24

      De maneira similar, você também pode especificar a porta de destino na qual a sub-rede 203.0.113.0/24 tem permissão para se conectar. Novamente, nós vamos usar a porta 22 (SSH) como um exemplo:

      • sudo ufw allow from 203.0.113.0/24 to any port 22

      Conexões a uma Interface de Rede Específica

      Se você quiser criar uma regra de firewall que se aplique apenas a uma interface de rede específica, você pode fazer isso especificando “allow in on” seguido do nome da interface de rede.

      Você pode querer verificar suas interfaces de rede antes de continuar. Para fazer isso, utilize este comando:

      Output Excerpt

      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state . . . 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default . . .

      O resultado destacado indica os nomes de interfaces de rede. Normalmente, elas recebem nomes como eth0 ou enp3s2.

      Então, se o seu servidor tiver uma interface de rede pública chamada eth0, você pode permitir o tráfego HTTP (porta 80) nela, usando este comando:

      • sudo ufw allow in on eth0 to any port 80

      Fazer isso permitiria que seu servidor recebesse pedidos HTTP da internet pública.

      Ou, se você quiser que seu servidor de banco de dados MySQL (porta 3306) escute conexões na interface de rede privada eth1, por exemplo, você pode usar este comando:

      • sudo ufw allow in on eth1 to any port 3306

      Isso permitiria que outros servidores na sua rede privada se conectassem ao seu banco de dados MySQL.

      Passo 6 — Negando conexões

      Se você não tiver mudado a política padrão para conexões de entrada, o UFW está configurado para negar todas as conexões de entrada. Geralmente, isso simplifica o processo de criação de uma política de firewall segura ao exigir que você crie regras que permitam explicitamente portas e endereços IP específicos.

      No entanto, algumas vezes você irá querer negar conexões específicas baseadas no endereço IP ou na sub-rede da origem, talvez porque você saiba que seu servidor está sendo atacado a partir daí. Além disso, se você quisesse alterar sua política de entrada padrão para permitir (allow) (o que não é recomendado), você precisaria criar regras para negar (deny) quaisquer serviços ou endereços IP para os quais você não quisesse permitir conexões.

      Para escrever regras de deny, você pode usar os comandos descritos acima, substituindo allow por deny.

      Por exemplo, para negar conexões HTTP, você pode usar este comando:

      Ou se você quiser negar todas as conexões do endereço 203.0.113.4 você pode usar este comando:

      • sudo ufw deny from 203.0.113.4

      Agora, vamos ver como excluir regras.

      Passo 7 — Excluindo regras

      Saber como excluir regras do firewall é tão importante quanto saber como criá-las. Há duas maneiras diferentes para especificar quais regras excluir: pelo número da regra ou pela regra em si (semelhante ao modo como as regras foram especificadas quando foram criadas). Vamos começar com o método excluir pelo número da regra porque é mais fácil.

      Pelo número da regra

      Se você estiver usando o número da regra para excluir regras do firewall, a primeira coisa que você vai querer fazer é obter uma lista das regras do seu firewall. O comando status do UFW tem uma opção para mostrar números ao lado de cada regra, como demonstrado aqui:

      Numbered Output:

      Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere

      Se decidirmos que queremos excluir a regra 2, aquela que permite conexões na porta 80 (HTTP), podemos especificar isso em um comando delete do UFW desta forma:

      Isso mostraria um prompt de confirmação e então excluiria a regra 2, que permite conexões HTTP. Note que se você tivesse o IPv6 habilitado, você iria querer excluir a regra correspondente ao IPv6 também.

      Pela regra

      A alternativa para os números das regras é especificar a regra propriamente dita a ser excluída. Por exemplo, se quiser remover a regra allow http, você pode escrever desta forma:

      • sudo ufw delete allow http

      Você também poderia especificar a regra por allow 80, em vez de pelo nome do serviço:

      Esse método irá excluir as regras do IPv4 e do IPv6, se houver.

      Passo 8 — Verificando o status e as regras do UFW

      A qualquer momento, você pode verificar o status do UFW com este comando:

      Se o UFW estiver desabilitado – o que acontece por padrão, você verá algo como isso:

      Output

      Status: inactive

      Se o UFW estiver ativo – o que deve ser o caso se você tiver seguido o Passo 3 – o resultado dirá que ele está ativo e listará quaisquer regras que estejam definidas. Por exemplo, se o firewall estiver configurado para permitir conexões via SSH (porta 22) de qualquer lugar, o resultado poderia parecer com este:

      Output

      Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere

      Use o comando status, se quiser verificar como o UFW configurou o firewall.

      Passo 9 — Desabilitando ou redefinindo o UFW (opcional)

      Se você decidir que não quer usar o UFW, você pode desativá-lo com este comando:

      Quaisquer regras que você tenha criado com o UFW já não estarão mais ativas. Você sempre poderá executar sudo ufw enable se precisar ativá-lo mais tarde.

      Se você já tiver regras do UFW configuradas, mas decidir que quer começar novamente, você pode usar o comando de redefinição:

      Isso irá desabilitar o UFW e excluir quaisquer regras que tiverem sido definidas anteriormente. Lembre-se de que as políticas padrão não irão voltar para suas configurações originais se, em algum momento, você as tiver alterado. Isso deve dar a você um novo começo com o UFW.

      Conclusão

      Seu firewall agora está configurado para permitir (pelo menos) conexões via SSH. Certifique-se de permitir outras conexões de entrada necessárias para o seu servidor, ao mesmo tempo em que limita quaisquer conexões desnecessárias, para que seu servidor seja funcional e seguro.

      Para aprender sobre mais configurações comuns do UFW, verifique o tutorial Fundamentos do UFW: regras comuns de firewall e comandos.



      Source link

      Cómo instalar un firewall con firewalld en CentOS 8


      Introducción

      firewalld es un software de administración de firewalls disponible para muchas distribuciones de Linux que funciona como front-end para los sistemas de filtrado de paquetes en kernel nftables o iptables de Linux.

      En esta guía, aprenderá a instalar un firewall de firewalld para su servidor de CentOS 8 y los aspectos básicos de la administración del firewall con la herramienta administrativa firewall-cmd.

      Requisitos previos

      Para completar este tutorial, necesitará un servidor con CentOS 8. Se asumirá que inició sesión en este servidor como usuario no root con privilegios sudo. Para configurarlo, consulte nuestra Guía de configuración inicial de servidores para CentOS 8.

      Conceptos básicos de firewalld

      Antes de comenzar a hablar sobre cómo usar realmente la utilidad firewall-cmd para gestionar la configuración de su firewall, debemos familiarizarnos con algunos conceptos que presenta la herramienta.

      Zonas

      El demonio firewalld gestiona grupos de reglas usando entidades denominadas zonas. Las zonas son conjuntos de reglas que determinan el tráfico que debe permitirse según el nivel de confianza en la red. Se asignan interfaces de red a las zonas para indicar qué comportamientos debe permitir el firewall.

      Para las computadoras que pueden cambiar de red con frecuencia (como las portátiles), este tipo de flexibilidad proporciona un buen método para cambiar sus reglas en función de su entorno.  Es posible que tenga reglas estrictas que prohíban la mayor parte del tráfico cuando opera en una red WiFi pública y restricciones más flexibles cuando se conecta a su red doméstica.  Para los servidores, estas zonas no suelen ser tan importantes porque el entorno de red rara vez, o nunca, cambia.

      Independientemente de lo dinámico que pueda ser su entorno de red, es útil familiarizarse con la idea general detrás de cada una de las zonas predefinidas de firewalld.  A continuación, presentamos las zonas predefinidas de firewalld ordenadas de la menos confiable a la más confiable:

      • drop: tiene el menor nivel de confianza. Todas las conexiones entrantes se descartan sin respuesta y solo se permiten conexiones salientes.
      • block: es similar a la anterior, pero en lugar de simplemente descartar las conexiones, las solicitudes entrantes se rechazan con un mensaje icmp-host-prohibited o icmp6-adm-prohibited.
      • public: representa redes públicas que no son de confianza. No se confía en otras computadoras, pero puede permitir ciertas conexiones entrantes según cada caso individual.
      • external: redes externas, en caso de que esté usando el firewall como puerta de enlace. Está configurada para enmascaramiento de NAT para que su red interna permanezca privada, pero sea accesible.
      • internal: el otro lado de la zona externa; se usa para la parte interna de una puerta de enlace. Las computadoras son bastante confiables y hay algunos servicios adicionales disponibles.
      • dmz: se utiliza para computadoras ubicadas en una red perimetral (equipos aislados que no tendrán acceso al resto de su red).  Solo se permiten ciertas conexiones entrantes.
      • work: se utiliza para las máquinas de trabajo. Se confía en la mayoría de las computadoras de la red. Se pueden permitir algunos servicios más.
      • home: un entorno doméstico. En general, implica que se confía en la mayoría de las otras computadoras y que se aceptarán algunos servicios más.
      • trusted: se confía en todas las máquinas de la red. Es la más abierta de las opciones disponibles y debe usarse con moderación.

      Para usar el firewall, podemos crear reglas, alterar las propiedades de nuestras zonas y luego asignar nuestras interfaces de red a las zonas que sean más apropiadas.

      Permanencia de las reglas

      En firewalld, las reglas se pueden aplicar al conjunto de reglas de tiempo de ejecución actual o se pueden establecer como permanentes. Cuando se añade o modifica una regla, por defecto, solo se modifica el firewall que se está ejecutando en ese momento. Después del siguiente reinicio, o al volver a cargar el servicio firewalld, solo se mantendrán las reglas permanentes.

      En la mayoría de las operaciones de firewall-cmd, se puede usar un indicador --permanent para indicar que los cambios se deben aplicar a la configuración permanente. Además, el firewall que esté en ejecución se puede guardar en la configuración permanente con el comando firewall-cmd --runtime-to-permanent.

      Esta separación entre la configuración en tiempo de ejecución y la permanente le permite probar reglas de forma segura en su firewall activo y, luego, volver a cargarlo para comenzar de nuevo si hay problemas.

      Instalar y habilitar firewalld

      firewalld está instalado por defecto en algunas distribuciones de Linux, entre ellas, muchas imágenes de CentOS 8. Sin embargo, es posible que deba instalar firewalld de forma manual:

      • sudo dnf install firewalld

      Después de instalar firewalld, puede habilitar el servicio y reiniciar su servidor. Tenga en cuenta que habilitar firewalld hará que el servicio se inicie en el arranque. Es recomendable que cree las reglas de su firewall y las pruebe antes de configurar este comportamiento para evitar posibles problemas.

      • sudo systemctl enable firewalld
      • sudo systemctl start firewalld

      Cuando el servidor se reinicie, se abrirá el firewall, sus interfaces de red se asignarán a las zonas que configuró (o a las zonas configuradas por defecto) y se aplicará toda regla relacionada con las zonas a las interfaces asociadas.

      Podemos verificar que el servicio esté en ejecución y que sea accesible al escribir lo siguiente:

      • sudo firewall-cmd --state

      Output

      running

      Esto indica que nuestro firewall se está ejecutando con la configuración predeterminada.

      Familiarizarse con las reglas actuales del firewall

      Antes de comenzar a realizar las modificaciones, debemos familiarizarnos con el entorno y las reglas predeterminadas que proporciona firewalld.

      Explorar las zonas predeterminadas

      Podemos ver qué zona está selecciona actualmente como predeterminada al escribir lo siguiente:

      • firewall-cmd --get-default-zone

      Output

      public

      Debido a que no dimos a firewalld ningún comando para que se desvíe de la zona predeterminada, y a que ninguna de nuestras interfaces está configurada para vincularse con otra zona, esa zona será también la única active (la que controla el tráfico de nuestras interfaces). Podemos verificarlo al escribir lo siguiente:

      • firewall-cmd --get-active-zones

      Output

      public interfaces: eth0 eth1

      Aquí, podemos ver que, en nuestro servidor de ejemplo, el firewall controla dos interfaces (eth0 y eth1). Las dos se están gestionando de acuerdo con las reglas definidas para la zona public.

      ¿Pero cómo sabemos qué reglas están relacionadas con la zona public? Podemos imprimir la configuración predeterminada de la zona al escribir lo siguiente:

      • sudo firewall-cmd --list-all

      Output

      public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

      El resultado nos permite determinar que esta es una zona predeterminada y activa, y que las interfaces eth0 y eth1 están asociadas a ella (ya sabíamos todo esto de nuestras consultas anteriores). Sin embargo, también podemos observar que esta zona permite tráfico de un cliente DHCP (para la asignación de direcciones IP), SSH (para administración remota) y Cockpit (una consola web).

      Explorar zonas alternativas

      Ahora tendrá una buena idea de la configuración de la zona predeterminada y activa. También podemos obtener información sobre otras zonas.

      Para obtener una lista de las zonas disponibles, escriba lo siguiente:

      Output

      block dmz drop external home internal public trusted work

      Podemos ver la configuración específica asociada con una zona incorporando el parámetro --zone= a nuestro comando --list-all:

      • sudo firewall-cmd --zone=home --list-all

      Output

      home target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client mdns samba-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

      Puede ver todas las definiciones de zona usando la opción --list-all-zones. Puede ser conveniente canalizar el resultado a un paginador para visualizarlo de forma más sencilla:

      • sudo firewall-cmd --list-all-zones | less

      A continuación, aprenderemos a asignar zonas a interfaces de red.

      Seleccionar zonas para sus interfaces

      A menos que haya configurado sus interfaces de red de otro modo, cada interfaz se colocará en la zona predeterminada cuando se inicie el firewall.

      Cambiar la zona de una interfaz

      Puede mover una interfaz entre zonas durante una sesión usando el parámetro --zone= en combinación con el parámetro --change-interface=. Al igual que con todos los comandos que modifican el firewall, deberá usar sudo.

      Por ejemplo, podemos mover nuestra interfaz eth0 a la zona home escribiendo lo siguiente:

      • sudo firewall-cmd --zone=home --change-interface=eth0

      Output

      success

      Nota: Al desplazar una interfaz a una zona nueva, tenga en cuenta que probablemente modifique los servicios que funcionarán. Por ejemplo, en este caso nos desplazamos a la zona home, que tiene SSH habilitado. Esto quiere decir que nuestra conexión no debería descartarse. No todas las zonas tienen SSH habilitado de forma predeterminada, y el cambio a una de estas zonas podría causar que la conexión se descarte, lo que le impediría volver a iniciar sesión en su servidor.

      Podemos verificar si el desplazamiento se realizó de forma correcta al volver a consultar las zonas activas:

      • firewall-cmd --get-active-zones

      Output

      home interfaces: eth0 public interfaces: eth1

      Ajustar la zona predeterminada

      Si todas sus interfaces se pueden gestionar bien con una sola zona, probablemente sea más fácil designar la mejor zona como predeterminada y, luego, usarla para su configuración.

      Puede cambiar la zona predeterminada con el parámetro --set-default-zone=, que cambiará de inmediato cualquier interfaz que esté usando la zona predeterminada:

      • sudo firewall-cmd --set-default-zone=home

      Output

      success

      Establecer reglas para sus aplicaciones

      Repasemos la manera básica de definir excepciones de firewall para los servicios que desee que estén disponibles.

      Agregar un servicio a sus zonas

      El método más directo es agregar los servicios o puertos que necesita a las zonas que está utilizando.  Puede obtener una lista de las definiciones de servicio disponibles con la opción --get-services:

      • firewall-cmd --get-services

      Output

      RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

      Nota: Puede obtener más información sobre cada uno de estos servicios consultando su archivo .xml asociado en el directorio /usr/lib/firewalld/services. Por ejemplo, el servicio SSH se define de la siguiente manera:

      /usr/lib/firewalld/services/ssh.xml

      <?xml version="1.0" encoding="utf-8"?>
      <service>
        <short>SSH</short>
        <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
        <port protocol="tcp" port="22"/>
      </service>
      

      Puede habilitar un servicio para una zona usando el parámetro --add-service=. La operación actuará sobre la zona predeterminada o cualquier zona que se especifique en el parámetro --zone=. Por defecto, solo se aplica a la sesión de firewall actual. Puede ajustar la configuración permanente del firewall al incluir el indicador --permanent.

      Por ejemplo, si ejecutamos un servidor web que proporciona tráfico HTTP convencional, podemos permitir temporalmente este tráfico para las interfaces de nuestra zona public escribiendo lo siguiente:

      • sudo firewall-cmd --zone=public --add-service=http

      Puede omitir el indicador --zone= si desea modificar la zona predeterminada. Podemos verificar si la operación se realizó de forma correcta usando las operaciones --list-all o --list-services:

      • sudo firewall-cmd --zone=public --list-services

      Output

      cockpit dhcpv6-client http ssh

      Una vez que haya probado que todo funcione como se espera, probablemente desee modificar las reglas permanentes del firewall para que su servicio siga estando disponible después de un reinicio.  Podemos hacer que nuestro cambio anterior sea permanente al volver a escribirlo y agregar el indicador --permanent:

      • sudo firewall-cmd --zone=public --add-service=http --permanent

      Output

      success

      Alternativamente, puede usar el indicador --runtime-to-permanent para guardar la configuración del firewall que se está ejecutando en la configuración permanente:

      • sudo firewall-cmd --runtime-to-permanent

      Tenga cuidado con esto, ya que todos los cambios que realice en el firewall en ejecución se aplicarán de forma permanente.

      Independientemente del método que elija, puede verificar si se aplicó correctamente al agregar el indicador --permanent a la operación --list-services. Debe usar sudo para toda operación con --permanent:

      • sudo firewall-cmd --zone=public --list-services --permanent

      Output

      cockpit dhcpv6-client http ssh

      Ahora, su zona public permitirá tráfico web HTTP en el puerto 80. Si su servidor web está configurado para usar SSL/TLS, también querrá agregar el servicio https. Podemos agregarlo a la sesión actual y al conjunto de reglas permanentes escribiendo lo siguiente:

      • sudo firewall-cmd --zone=public --add-service=https
      • sudo firewall-cmd --zone=public --add-service=https --permanent

      ¿Qué sucede si no hay ningún servicio adecuado disponible?

      Los servicios que se incluyen con la instalación de firewalld representan muchas de las aplicaciones más frecuentes a las que podría querer permitir el acceso. Sin embargo, es probable que haya escenarios en los que estos servicios no se ajusten a sus requisitos.

      En ese caso, tendrá dos opciones.

      Abrir un puerto para sus zonas

      La manera más sencilla de agregar compatibilidad con una aplicación específica es abrir los puertos que utiliza en las zonas adecuadas. Para hacerlo, debe especificar el puerto o el intervalo de puertos y su protocolo asociado (TCP o UDP).

      Por ejemplo, si nuestra aplicación se ejecuta en el puerto 5000 y utiliza TCP, podríamos agregar esta información temporalmente a la zona public usando el parámetro --add-port=. Los protocolos se pueden designar como tcp o udp:

      • sudo firewall-cmd --zone=public --add-port=5000/tcp

      Output

      success

      Podemos verificar si el resultado es correcto usando la operación --list-ports:

      • sudo firewall-cmd --zone=public --list-ports

      Output

      5000/tcp

      También se puede especificar un intervalo de puertos secuenciales al separar el puerto inicial y el final del intervalo con un guión. Por ejemplo, si nuestra aplicación utiliza los puertos UDP 4990 a 4999, podríamos abrirlos en la zona public al escribir lo siguiente:

      • sudo firewall-cmd --zone=public --add-port=4990-4999/udp

      Después de probar estos cambios, probablemente deseemos agregarlos al firewall permanente. Para hacerlo, utilice sudo firewall-cmd --runtime-to-permanent o vuelva a ejecutar los comandos con el indicador --permanent:

      • sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
      • sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
      • sudo firewall-cmd --zone=public --permanent --list-ports

      Output

      success success 5000/tcp 4990-4999/udp

      Definir un servicio

      Abrir puertos para sus zonas es una solución sencilla, pero puede ser difícil llevar un registro de a cuál corresponde cada uno. Si alguna vez retira un servicio de su servidor, puede resultarle difícil recordar los puertos abiertos que siguen siendo necesarios. Para evitar que esto suceda, se puede definir un servicio nuevo.

      Los servicios son conjuntos de puertos con un nombre y una descripción asociados. El uso de servicios es más fácil de administrar que el de puertos, pero requiere cierto trabajo previo. La forma más sencilla de comenzar es copiar una secuencia de comandos existente (ubicada en /usr/lib/firewalld/services) al directorio /etc/firewalld/services donde el firewall busca definiciones no estándar.

      Por ejemplo, podríamos copiar la definición del servicio SSH para usarla en nuestra definición de servicio example de la siguiente manera: El nombre del archivo sin el sufijo .xml será el nombre del servicio en la lista de servicios del firewall:

      • sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml

      Ahora, puede ajustar la definición que se encuentra en el archivo que copió. Primero, ábralo en el editor de texto que prefiera. En este tutorial, usaremos vi:

      • sudo vi /etc/firewalld/services/example.xml

      Para comenzar, el archivo contendrá la definición de SSH que copió:

      /etc/firewalld/services/example.xml

      <?xml version="1.0" encoding="utf-8"?>
      <service>
        <short>SSH</short>
        <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
        <port protocol="tcp" port="22"/>
      </service>
      

      En realidad, esta definición está compuesta, en su mayoría, por metadatos. Es conveniente que cambie el nombre corto del servicio entre las etiquetas <short>. Es el nombre de su servicio legible por el ser humano. También debería agregar una descripción para tener más información si alguna vez necesita auditar el servicio. La única configuración que debe hacer que realmente afecta la funcionalidad del servicio probablemente sea la definición del puerto en la que identifica el número de puerto y el protocolo que desea abrir.  Se pueden especificar varias etiquetas <port/>.

      Imagine que tenemos que abrir el puerto 7777 para TCP y el 8888 para UDP en nuestro servicio example. Podemos modificar la definición existente con algo similar a lo siguiente:

      /etc/firewalld/services/example.xml

      <?xml version="1.0" encoding="utf-8"?>
      <service>
        <short>Example Service</short>
        <description>This is just an example service. It probably shouldn't be used on a real system.</description>
        <port protocol="tcp" port="7777"/>
        <port protocol="udp" port="8888"/>
      </service>
      

      Guarde y cierre el archivo.

      Vuelva a cargar el firewall para poder acceder a su nuevo servicio:

      • sudo firewall-cmd --reload

      Puede observar que, ahora, se encuentra en la lista de servicios disponibles:

      • firewall-cmd --get-services

      Output

      RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server example finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

      Ahora, puede usar este servicio en sus zonas como lo haría habitualmente.

      Crear sus propias zonas

      Si bien las zonas predefinidas probablemente sean más que suficientes para la mayoría de los usuarios, puede ser útil definir zonas propias que describan mejor su función.

      Por ejemplo, podría resultarle útil crear una zona para su servidor web que se llame publicweb. Sin embargo, podría querer tener otra zona configurada para el servicio DNS que proporciona en su red privada. Sería conveniente denominarla “privateDNS”.

      Cuando agrega una zona, la debe añadir a la configuración permanente del firewall. Luego, puede volver a cargarlo para que la configuración se aplique a su sesión en ejecución. Por ejemplo, podemos crear las dos zonas que mencionamos anteriormente al escribir lo siguiente:

      • sudo firewall-cmd --permanent --new-zone=publicweb
      • sudo firewall-cmd --permanent --new-zone=privateDNS

      Puede verificar que estén presentes en su configuración permanente al escribir lo siguiente:

      • sudo firewall-cmd --permanent --get-zones

      Output

      block dmz drop external home internal privateDNS public publicweb trusted work

      Como se indicó anteriormente, todavía no estarán disponibles en el firewall en ejecución:

      Output

      block dmz drop external home internal public trusted work

      Vuelva a cargar el firewall para aplicar estas nuevas zonas a la configuración activa en ejecución:

      • sudo firewall-cmd --reload
      • firewall-cmd --get-zones

      Output

      block dmz drop external home internal privateDNS public publicweb trusted work

      Ahora, puede comenzar a asignar los servicios y puertos apropiados a sus zonas. Es recomendable ajustar el firewall en ejecución y probar los cambios antes de guardarlos en la configuración permanente. Por ejemplo, podría querer agregar los servicios SSH, HTTP y HTTPS a la zona publicweb:

      • sudo firewall-cmd --zone=publicweb --add-service=ssh
      • sudo firewall-cmd --zone=publicweb --add-service=http
      • sudo firewall-cmd --zone=publicweb --add-service=https
      • sudo firewall-cmd --zone=publicweb --list-all

      Output

      publicweb target: default icmp-block-inversion: no interfaces: sources: services: http https ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

      Del mismo modo, podríamos agregar el servicio DNS a nuestra zona privateDNS:

      • sudo firewall-cmd --zone=privateDNS --add-service=dns
      • sudo firewall-cmd --zone=privateDNS --list-all

      Output

      privateDNS target: default icmp-block-inversion: no interfaces: sources: services: dns ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

      Luego, podríamos cambiar nuestras interfaces a estas nuevas zonas para probarlas:

      • sudo firewall-cmd --zone=publicweb --change-interface=eth0
      • sudo firewall-cmd --zone=privateDNS --change-interface=eth1

      En este punto, podrá probar su configuración. Si los valores son correctos, querrá agregar estas reglas a la configuración permanente. Podría hacerlo al volver a ejecutar todos los comandos con el indicador --permanent, pero, en este caso, usaremos el indicador --runtime-to-permanent para guardar toda nuestra configuración en tiempo de ejecución de forma permanente:

      • sudo firewall-cmd --runtime-to-permanent

      Después de aplicar estas reglas de forma permanente, vuelva a cargar el firewall para verificar que los cambios se conserven:

      • sudo firewall-cmd --reload

      Corrobore que se hayan asignado las zonas correctas:

      • firewall-cmd --get-active-zones

      Output

      privateDNS interfaces: eth1 publicweb interfaces: eth0

      Compruebe, también, que los servicios correspondientes estén disponibles en las zonas:

      • sudo firewall-cmd --zone=publicweb --list-services

      Output

      http https ssh
      • sudo firewall-cmd --zone=privateDNS --list-services

      Output

      dns

      ¡Configuró sus propias zonas de forma correcta! Si desea que una de estas zonas sea predeterminada para otras interfaces, recuerde configurar ese comportamiento con el parámetro --set-default-zone=:

      • sudo firewall-cmd --set-default-zone=publicweb

      Conclusión

      De esta manera, contará con conocimientos bastante completos sobre cómo administrar el servicio firewalld en su sistema de CentOS para usarlo a diario.

      El servicio firewalld le permite configurar reglas y conjuntos de reglas que se pueden mantener y que tienen en cuenta su entorno de red. Permite una transición sin problemas entre diferentes políticas de firewall mediante el uso de zonas y les brinda a los administradores la posibilidad de sintetizar la gestión de los puertos en definiciones de servicio más sencillas. Al adquirir conocimientos prácticos de este sistema, podrá aprovechar la flexibilidad y la potencia que ofrece esta herramienta.

      Para obtener más información sobre firewalld, consulte la documentación oficial de firewalld.



      Source link