Como desativar ou desativar o firewalld no CentOS 7
Iptables
O CentOS tem um firewall extremamente poderoso construído, comumente referido como iptables, mas com mais precisão é iptables/netfilter. Iptables é o módulo de espaço de usuários, a parte com que você, o usuário, interage na linha de comando para inserir regras de firewall em tabelas predefinidas. Netfilter é um módulo de kernel, embutido no kernel, que realmente faz a filtragem. Existem muitas extremidades da GUI para iptables que permitem aos usuários adicionar ou definir regras com base em um ponto e clicar na interface do usuário, mas muitas vezes não têm a flexibilidade de usar a interface da linha de comando e limitar o entendimento dos usuários do que realmente está acontecendo. Vamos aprender a interface da linha de comando de iptables.
Antes que possamos realmente entender os iptables, precisamos ter pelo menos uma compreensão básica da maneira como funciona. Iptables usa o conceito de endereços IP, protocolos (TCP, UDP, ICMP) e portas. Não precisamos ser especialistas nesses para começar (como podemos procurar qualquer uma das informações de que precisamos), mas ajuda a ter um entendimento geral.
O iptables coloca regras em cadeias predefinidas (entrada, saída e avanço) que são verificadas em relação a qualquer tráfego de rede (pacotes IP) relevantes para essas cadeias e é tomada uma decisão sobre o que fazer com cada pacote com base no resultado dessas regras, eu.e. aceitar ou soltar o pacote. Essas ações são chamadas de metas, das quais os dois alvos predefinidos mais comuns são soltados para soltar um pacote ou aceitar para aceitar um pacote.
Correntes
- Entrada – todos os pacotes destinados ao computador host.
- Saída – todos os pacotes originários do computador host.
- EMBRIENT – Todos os pacotes não destinados nem originários do computador host, mas passando por (roteado por) o computador host. Esta cadeia é usada se você estiver usando seu computador como roteador.
Na maioria das vezes, vamos lidar com a cadeia de entrada para filtrar pacotes que entram em nossa máquina – ou seja, mantendo os bandidos fora.
Regras são adicionadas em uma lista a cada cadeia. Um pacote é verificado em relação a cada regra, começando na parte superior e, se corresponder a essa regra, é tomada uma ação como aceitar (aceitar) ou soltar (soltar) o pacote. Depois que uma regra é correspondente e uma ação tomada, o pacote é processado de acordo com o resultado dessa regra e não é processado por outras regras da cadeia. Se um pacote passar por todas as regras da corrente e atingir o fundo sem ser correspondido a qualquer regra, a ação padrão para essa cadeia é tomada. Isso é chamado de política padrão e pode ser definido para aceitar ou soltar o pacote.
O conceito de políticas padrão nas correntes levanta duas possibilidades fundamentais que devemos considerar primeiro antes de decidirmos como vamos organizar nosso firewall.
1. Podemos definir uma política padrão para soltar todos os pacotes e adicionar regras para permitir especificamente (aceitar) pacotes que podem ser de endereços IP confiáveis ou para determinadas portas nas quais temos serviços em execução, como BitTorrent, FTP Server, Web Server, Samba File Server etc.
2. Podemos definir uma política padrão para aceitar todos os pacotes e, em seguida, adicionar regras para bloquear especificamente os pacotes (drop) que podem ser de endereços ou intervalos IP específicos de incômodo, ou para determinadas portas nas quais temos serviços privados ou nenhum serviço em execução em execução em execução em execução em execução em execução em execução.
Geralmente, a opção 1 acima é usada para a cadeia de entrada, onde queremos controlar o que tem permissão para acessar nossa máquina e a opção 2 seria usada para a cadeia de saída, onde geralmente confiamos no tráfego que está saindo (de origem) de nossa máquina.
2. Começando
Trabalhar com iptables da linha de comando requer privilégios de raiz, então você precisará se enraizar pela maioria das coisas que faremos.
Iptables devem ser instalados por padrão em todos os centos 5.X e 6.X Instalações. Você pode verificar se iptables está instalado no seu sistema:
$ rpm -q iptables iptables -1.4.7-5.1.EL6_2.x86_64
E para ver se os iptables estão realmente em execução, podemos verificar se os módulos iptables estão carregados e usar o switch -l para inspecionar as regras atualmente carregadas:
# lsmod | Grep ip_tables ip_tables 29288 1 iptable_filter x_tables 29192 6 ip6t_reject, ip6_tables, ipt_reject, xt_state, xt_tcpudp, ip_tables
# iptables -l Entrada de cadeia (aceitação da política) Destino de origem do alvo prot opt Aceitar tudo - em qualquer lugar em qualquer lugar relacionado, estabelecido Aceite ICMP - em qualquer lugar em qualquer lugar Aceite tudo - em qualquer lugar Aceite TCP - em qualquer lugar em qualquer lugar Estado novo TCP DPT: SSH Rejeitar tudo-em qualquer lugar em qualquer lugar rejeitado com o ICMP-Host-Proibido Cadeia para a frente (Política aceita) Destino de origem do alvo prot opt Rejeitar tudo-em qualquer lugar em qualquer lugar rejeitado com o ICMP-Host-Proibido Saída da cadeia (aceitação da política) Destino de origem do alvo prot opt
Acima, vemos o conjunto padrão de regras em um sistema CentOS 6. Observe que o serviço SSH é permitido por padrão.
Se iptables não estiver em execução, você pode ativá -lo executando:
# System-Config-SecurityLevel
3. Escrevendo um conjunto de regras simples
Usaremos uma abordagem baseada em exemplo para examinar os vários comandos iptables. Neste primeiro exemplo, criaremos um conjunto de regras muito simples para configurar um firewall de inspeção de pacotes com estado (SPI) que permitirá todas as conexões de saída, mas bloquear todas as conexões de entrada indesejadas:
# iptables -p entrada aceita # iptables -f # iptables -a input -i lo -j aceitar # iptables -a input -m State -Estado estabelecido, relacionado -j aceita # iptables -a input -p tcp - -dport 22 -j aceita # iptables -p entrada de entrada # iptables -p forward gota # iptables -p Saída aceita # iptables -l -v
Questões:
- 1. O que é iptables?
- 2. Quais são as três correntes predefinidas em iptables?
- 3. Qual é o objetivo da cadeia de entrada?
- 4. Como as regras são adicionadas às correntes?
- 5. O que acontece se um pacote corresponder a uma regra na cadeia?
- 6. Qual é a política padrão da cadeia de entrada?
- 7. Qual é a política padrão da cadeia de saída?
- 8. Quais são as duas possibilidades para organizar um firewall usando políticas padrão?
- 9. Qual é a opção recomendada para a cadeia de entrada?
- 10. Como você verifica se iptables está instalado no seu sistema?
- 11. Como você verifica se iptables está funcionando?
- 12. Como você pode ativar iptables se não estiver funcionando?
- 13. Qual é o objetivo de um firewall de inspeção de pacotes com estado (SPI)?
- 14. Que conexões são permitidas pela regra simples definida no exemplo?
- 15. Quais conexões são bloqueadas pela regra simples definida no exemplo?
Respostas:
- 1. O que é iptables?
Iptables é um poderoso firewall embutido em centos que permite aos usuários definir e gerenciar regras de firewall usando a interface da linha de comando. - 2. Quais são as três correntes predefinidas em iptables?
As três correntes predefinidas em iptables são entrada, saída e avanço. - 3. Qual é o objetivo da cadeia de entrada?
A cadeia de entrada é usada para filtrar pacotes que entram no computador host. - 4. Como as regras são adicionadas às correntes?
Regras são adicionadas às correntes em uma lista, com cada regra sendo verificada contra o tráfego de rede recebido na cadeia especificada. - 5. O que acontece se um pacote corresponder a uma regra na cadeia?
Se um pacote corresponde a uma regra na cadeia, uma ação especificada pela regra (como aceitar ou soltar) será tomada para esse pacote. - 6. Qual é a política padrão da cadeia de entrada?
A política padrão da cadeia de entrada pode ser configurada para aceitar ou soltar. Geralmente, é recomendável configurá -lo para cair e permitir explicitamente conexões confiáveis. - 7. Qual é a política padrão da cadeia de saída?
A política padrão da cadeia de saída geralmente é definida para aceitar, pois as conexões de saída são geralmente confiáveis. - 8. Quais são as duas possibilidades para organizar um firewall usando políticas padrão?
As duas possibilidades estão definindo uma política padrão para abandonar e permitir conexões confiáveis específicas (opção 1) ou definir uma política padrão para aceitar e bloquear conexões indesejadas específicas (opção 2). - 9. Qual é a opção recomendada para a cadeia de entrada?
A opção recomendada para a cadeia de entrada é definir uma política padrão para abandonar e permitir explicitamente conexões confiáveis. - 10. Como você verifica se iptables está instalado no seu sistema?
Você pode verificar se o iptables está instalado executando o comando:rpm -q iptables
- 11. Como você verifica se iptables está funcionando?
Você pode verificar se os iptables estão em execução verificando se os módulos iptables forem carregados e usando o comando:iptables -l
- 12. Como você pode ativar iptables se não estiver funcionando?
Você pode habilitar iptables executando o comando:System-Config-SecurityLevel
- 13. Qual é o objetivo de um firewall de inspeção de pacotes com estado (SPI)?
Um firewall de inspeção de pacotes com estado (SPI) permite conexões de saída, mas bloqueia conexões de entrada indesejadas com base no estado e nas características dos pacotes. - 14. Que conexões são permitidas pela regra simples definida no exemplo?
A regra simples definida no exemplo permite todas as conexões de saída. - 15. Quais conexões são bloqueadas pela regra simples definida no exemplo?
O conjunto de regras simples bloqueia todas as conexões de entrada indesejadas.
Como desativar ou desativar o firewalld no CentOS 7
Agora você pode usar este serviço em suas zonas como normalmente faria.
Iptables
O CentOS tem um firewall extremamente poderoso construído, comumente referido como iptables, mas com mais precisão é iptables/netfilter. Iptables é o módulo de espaço de usuários, a parte com que você, o usuário, interage na linha de comando para inserir regras de firewall em tabelas predefinidas. Netfilter é um módulo de kernel, embutido no kernel, que realmente faz a filtragem. Existem muitas extremidades da GUI para iptables que permitem aos usuários adicionar ou definir regras com base em um ponto e clicar na interface do usuário, mas muitas vezes não têm a flexibilidade de usar a interface da linha de comando e limitar o entendimento dos usuários do que realmente está acontecendo. Vamos aprender a interface da linha de comando de iptables.
Antes que possamos realmente entender os iptables, precisamos ter pelo menos uma compreensão básica da maneira como funciona. Iptables usa o conceito de endereços IP, protocolos (TCP, UDP, ICMP) e portas. Não precisamos ser especialistas nesses para começar (como podemos procurar qualquer uma das informações de que precisamos), mas ajuda a ter um entendimento geral.
O iptables coloca regras em cadeias predefinidas (entrada, saída e avanço) que são verificadas em relação a qualquer tráfego de rede (pacotes IP) relevantes para essas cadeias e é tomada uma decisão sobre o que fazer com cada pacote com base no resultado dessas regras, eu.e. aceitar ou soltar o pacote. Essas ações são chamadas de metas, das quais os dois alvos predefinidos mais comuns são soltados para soltar um pacote ou aceitar para aceitar um pacote.
Correntes
- Entrada – todos os pacotes destinados ao computador host.
- Saída – todos os pacotes originários do computador host.
- EMBRIENT – Todos os pacotes não destinados nem originários do computador host, mas passando por (roteado por) o computador host. Esta cadeia é usada se você estiver usando seu computador como roteador.
Na maioria das vezes, vamos lidar com a cadeia de entrada para filtrar pacotes que entram em nossa máquina – ou seja, mantendo os bandidos fora.
Regras são adicionadas em uma lista a cada cadeia. Um pacote é verificado em relação a cada regra, começando na parte superior e, se corresponder a essa regra, é tomada uma ação como aceitar (aceitar) ou soltar (soltar) o pacote. Depois que uma regra é correspondente e uma ação tomada, o pacote é processado de acordo com o resultado dessa regra e não é processado por outras regras da cadeia. Se um pacote passar por todas as regras da corrente e atingir o fundo sem ser correspondido a qualquer regra, a ação padrão para essa cadeia é tomada. Isso é chamado de política padrão e pode ser definido para aceitar ou soltar o pacote.
O conceito de políticas padrão nas correntes levanta duas possibilidades fundamentais que devemos considerar primeiro antes de decidirmos como vamos organizar nosso firewall.
1. Podemos definir uma política padrão para soltar todos os pacotes e adicionar regras para permitir especificamente (aceitar) pacotes que podem ser de endereços IP confiáveis ou para determinadas portas nas quais temos serviços em execução, como BitTorrent, FTP Server, Web Server, Samba File Server etc.
2. Podemos definir uma política padrão para aceitar todos os pacotes e, em seguida, adicionar regras para bloquear especificamente os pacotes (drop) que podem ser de endereços ou intervalos IP específicos de incômodo, ou para determinadas portas nas quais temos serviços privados ou nenhum serviço em execução em execução em execução em execução em execução em execução em execução.
Geralmente, a opção 1 acima é usada para a cadeia de entrada, onde queremos controlar o que tem permissão para acessar nossa máquina e a opção 2 seria usada para a cadeia de saída, onde geralmente confiamos no tráfego que está saindo (de origem) de nossa máquina.
2. Começando
Trabalhar com iptables da linha de comando requer privilégios de raiz, então você precisará se enraizar pela maioria das coisas que faremos.
Iptables devem ser instalados por padrão em todos os centos 5.X e 6.X Instalações. Você pode verificar se iptables está instalado no seu sistema:
$ rpm -q iptables iptables -1.4.7-5.1.EL6_2.x86_64
E para ver se os iptables estão realmente em execução, podemos verificar se os módulos iptables estão carregados e usar o switch -l para inspecionar as regras atualmente carregadas:
# lsmod | Grep ip_tables ip_tables 29288 1 iptable_filter x_tables 29192 6 ip6t_reject, ip6_tables, ipt_reject, xt_state, xt_tcpudp, ip_tables
# iptables -l Corrente entrada (política aceita) O destino da fonte do prot opt de meta de alvo aceita tudo-em qualquer lugar em qualquer lugar relacionado ao estado, estabelecida aceita icmp-em qualquer lugar em qualquer lugar aceita tudo-em qualquer lugar em qualquer lugar aceita tcp-em qualquer lugar em qualquer lugar estate novo tcp dpt dpt: ssh rejeite tudo-em qualquer lugar em qualquer lugar em qualquer lugar rejeito with iCMP-host-host-lucited cadeia (política) alvo prot-shot opt-sheret ot-shret-host-host-host-lucitited-aceitar a política). (Política Aceitar) Destino de fonte de opt de meta
Acima, vemos o conjunto padrão de regras em um sistema CentOS 6. Observe que o serviço SSH é permitido por padrão.
Se iptables não estiver em execução, você pode ativá -lo executando:
# System-Config-SecurityLevel
3. Escrevendo um conjunto de regras simples
Usaremos uma abordagem baseada em exemplo para examinar os vários comandos iptables. Neste primeiro exemplo, criaremos um conjunto de regras muito simples para configurar um firewall de inspeção de pacotes com estado (SPI) que permitirá todas as conexões de saída, mas bloquear todas as conexões de entrada indesejadas:
# iptables -p entrada aceita # iptables -f # iptables -a input -i lo -j Aceitar # iptables -a input -m state -estatal estabelecido, relacionado -j aceita # iptables -a input -p tcp -dport 22 -j aceita # iptables -p entrada # iptables -p advert # iptables -tables -ptables 22 -J aceita # iptables -p input # i i i i i i ipward Drop slow
que deve fornecer a seguinte saída:
Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- lo any anywhere anywhere 0 0 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
- Iptables -P Entrada aceita Se conectar remotamente, devemos primeiro definir temporariamente a política padrão na cadeia de entrada para aceitar de outra forma assim que lavarmos as regras atuais, estaremos travados do nosso servidor.
- iptables -f Usamos a chave -f para liberar todas as regras existentes, então começamos com um estado limpo para adicionar novas regras.
- iptables -a input -i lo -j aceita Agora é hora de começar a adicionar algumas regras. Usamos o switch -a para anexar (ou adicionar) uma regra a uma cadeia específica, a cadeia de entrada neste caso. Em seguida, usamos o switch -i (para interface) para especificar pacotes correspondentes ou destinados ao LO (localhost, 127.0.0.1) Interface e finalmente -j (salto) para a ação de destino para pacotes que correspondem à regra – neste caso aceitar. Portanto, esta regra permitirá que todos os pacotes de entrada destinados à interface localhost sejam aceitos. Isso geralmente é necessário, pois muitos aplicativos de software esperam poder se comunicar com o adaptador de localhost.
- iptables -um estado de entrada -m -Estado estabelecido, relacionado -j aceita Esta é a regra que faz a maior parte do trabalho e, novamente, estamos adicionando (-a) à cadeia de entrada. Aqui estamos usando o switch -m para carregar um módulo (estado). O módulo de estado é capaz de examinar o estado de um pacote e determinar se é novo, estabelecido ou relacionado. Novo refere -se a pacotes de entrada que são novas conexões recebidas que não foram iniciadas pelo sistema host. Estabelecido e relacionado refere -se a pacotes de entrada que fazem parte de uma conexão já estabelecida ou relacionada e já estabelecida conexão.
- iptables -a input -p tcp – -dport 22 -j aceita Aqui adicionamos uma regra que permite conexões SSH sobre a porta TCP 22. Isso é para evitar bloqueios acidentais ao trabalhar em sistemas remotos em uma conexão SSH. Vamos explicar esta regra com mais detalhes mais tarde.
- IPTABLES -P DROP O interruptor -P define a política padrão na cadeia especificada. Então agora podemos definir a política padrão na cadeia de entrada para cair. Isso significa que, se um pacote de entrada não corresponder a uma das seguintes regras, ele será descartado. Se estivéssemos conectando remotamente via SSH e não tivessem adicionado a regra acima, teríamos acabado de nos trancar do sistema neste momento.
- iptables -p forward grow Da mesma forma, aqui definimos a política padrão na cadeia para a frente para cair, pois não estamos usando nosso computador como roteador, para que não haja pacotes passando pelo nosso computador.
- IPTILLES -P Saída aceita E, finalmente, definimos a política padrão na cadeia de saída para aceitar, pois queremos permitir todo o tráfego de saída (à medida que confiamos em nossos usuários).
- iptables -l -v Por fim, podemos listar (-l) as regras que acabamos de adicionar para verificar elas foram carregadas corretamente.
Finalmente, a última coisa que precisamos fazer é salvar nossas regras para que da próxima vez que reinicie nosso computador nossas regras sejam automaticamente recarregadas:
# /sbin /serviço iptables salvam
Isso executa o script IPT IPTABLES, que executa/sbin/iptables-save e escreve a configuração atual iptables para/etc/sysconfig/iptables. Após a reinicialização, o script IPTABLES Init reaplica as regras salvas em/etc/sysconfig/iptables usando o comando/sbin/iptables-Restore.
Obviamente, digitar todos esses comandos na concha pode se tornar entediante, então, de longe, a maneira mais fácil de trabalhar com iptables é criar um script simples para fazer tudo para você. Os comandos acima podem ser inseridos em seu editor de texto favorito e salvos como MyFirewall, por exemplo:
# # iptables example configuration script # # Flush all current rules from iptables # iptables -F # # Allow SSH connections on tcp port 22 # This is essential when working on remote servers via SSH to prevent locking yourself out of the system # iptables -A INPUT -p tcp --dport 22 -j ACCEPT # # Set default policies for INPUT, FORWARD and OUTPUT chains # iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # # Set access for localhost # iptables -A INPUT -i lo -j ACCEPT # # Accept packets belonging to established and related connections # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # # Save settings # /sbin/service iptables save # # List rules # iptables -L -v
Observação: Também podemos comentar nosso script para nos lembrar o que estava fazendo.
Agora faça do script executável:
# chmod +x myfirewall
Agora podemos simplesmente editar nosso script e executá -lo do shell com o seguinte comando:
# ./myfirewall
4. Interfaces
Em nosso exemplo anterior, vimos como poderíamos aceitar todos os pacotes recebidos em uma interface específica, neste caso a interface da localhost:
iptables -a input -i lo -j aceita
Suponha que tenhamos 2 interfaces separadas, eth0, que é o nosso modem interno da LAN e PPP0 Dialup (ou talvez Eth1 para uma NIC), que é a nossa conexão externa à Internet. Podemos querer permitir todos os pacotes de entrada em nossa LAN interna, mas ainda filtrar pacotes de entrada em nossa conexão externa à Internet. Poderíamos fazer isso da seguinte forma:
iptables -a input -i lo -j Aceitar iptables -a input -i eth0 -j aceitar
Mas tenha muito cuidado – Se permitirmos todos os pacotes para nossa interface externa na Internet (por exemplo, modem dialup ppp0):
iptables -a entrada -i ppp0 -j aceita
teríamos efetivamente desativado nosso firewall!
5. Endereços IP
Abrir uma interface inteira para os pacotes de entrada pode não ser restritiva o suficiente e você pode querer mais controle sobre o que permitir e o que rejeitar. Vamos supor que temos uma pequena rede de computadores que usam os 192.168.0.x Subnet privado. Podemos abrir nosso firewall para pacotes de entrada de um único endereço IP confiável (por exemplo, 192.168.0.4):
# Aceite pacotes de endereços IP confiáveis iptables -a entrada -s 192.168.0.4 -J Aceite # Altere o endereço IP conforme apropriado
Quebrando esse comando, primeiro anexamos (-a) uma regra à cadeia de entrada para o endereço IP da fonte (-s) 192.168.0.4 Para aceitar todos os pacotes (observe também como podemos usar o símbolo # para adicionar comentários alinhados para documentar nosso script com qualquer coisa após o # ser ignorado e tratado como um comentário).
Obviamente, se quisermos permitir pacotes de entrada de uma variedade de endereços IP, poderíamos simplesmente adicionar uma regra para cada endereço IP confiável e isso funcionaria bem. Mas se tivermos muitos deles, pode ser mais fácil adicionar uma variedade de endereços IP de uma só vez. Para fazer isso, podemos usar uma máscara de rede ou notação de barra padrão para especificar uma variedade de endereço IP. Por exemplo, se quiséssemos abrir nosso firewall para todos os pacotes de entrada dos 192 completos.168.0.x (onde x = 1 a 254) Faixa, poderíamos usar um dos seguintes métodos:
# Aceite pacotes de endereços IP confiáveis iptables -a entrada -s 192.168.0.0/24 -J Aceitar # usando a notação de barra padrão iptables -a entrada -s 192.168.0.0/255.255.255.0 -J Aceite # usando uma máscara de sub -rede
Finalmente, além de filtrar contra um único endereço IP, também podemos corresponder ao endereço MAC para o dispositivo fornecido. Para fazer isso, precisamos carregar um módulo (o módulo MAC) que permite a filtragem contra endereços MAC. Anteriormente, vimos outro exemplo de uso de módulos para estender a funcionalidade dos iptables quando usamos o módulo de estado para corresponder a pacotes estabelecidos e relacionados. Aqui usamos o módulo MAC para verificar o endereço MAC da fonte do pacote, além do endereço IP:
# Aceite pacotes de endereços IP confiáveis iptables -a entrada -s 192.168.0.4 -M Mac - -Mac -Source 00: 50: 8D: FD: E6: 32 -J Aceitar
Primeiro usamos -M mac Para carregar o módulo Mac e depois usamos --MAC-SOURCE Para especificar o endereço MAC do endereço IP de origem (192.168.0.4). Você precisará descobrir o endereço MAC de cada dispositivo Ethernet que você deseja filtrar. Correndo ifconfig (ou iwconfig para dispositivos sem fio) como root fornecerá o endereço MAC.
Isso pode ser útil para impedir a falsificação do endereço IP de origem, pois permitirá que quaisquer pacotes que genuinamente se originem de 192.168.0.4 (tendo o endereço MAC 00: 50: 8d: FD: E6: 32), mas bloqueará os pacotes que sejam falsificados para ter vindo desse endereço. Observe que a filtragem de endereços MAC não funcionará na Internet, mas certamente funciona bem em uma LAN.
6. Portas e protocolos
Acima, vimos como podemos adicionar regras ao nosso firewall para filtrar contra pacotes que correspondem a uma interface específica ou um endereço IP de origem. Isso permite acesso total através do nosso firewall a certas fontes confiáveis (PCs host). Agora, veremos como podemos filtrar contra protocolos e portas para refinar ainda mais quais pacotes de entrada permitimos e o que bloqueamos.
Antes de começarmos, precisamos saber qual protocolo e número da porta um determinado serviço usa. Para um exemplo simples, vamos olhar para o BitTorrent. O BitTorrent usa o protocolo TCP na porta 6881, por isso precisaríamos permitir todos os pacotes TCP na porta de destino (a porta em que eles chegam à nossa máquina) 6881:
# Aceite pacotes TCP na porta de destino 6881 (bittorrent) iptables -a input -p tcp - -dport 6881 -j aceita
Aqui anexamos (-a) uma regra à cadeia de entrada para pacotes que correspondem ao protocolo TCP (-p tcp) e entrar em nossa máquina na porta de destino 6881 (--Dport 6881).
Observação: Para usar correspondências como portas de destino ou origem (--Dport ou --esporte), você deve Primeiro especifique o protocolo (TCP, UDP, ICMP, tudo).
Também podemos estender o acima para incluir um intervalo de portas, por exemplo, permitindo que todos os pacotes TCP na faixa 6881 a 6890:
# Aceite pacotes TCP nas portas de destino 6881-6890 iptables -a input -p tcp - -dport 6881: 6890 -j aceita
7. Juntando tudo
Agora vimos o básico, podemos começar a combinar essas regras.
Um serviço popular UNIX/Linux é o serviço Secure Shell (SSH), permitindo logins remotos. Por padrão, o SSH usa a porta 22 e novamente usa o protocolo TCP. Portanto, se quisermos permitir logins remotos, precisaríamos permitir conexões TCP na porta 22:
# Aceite pacotes TCP na porta de destino 22 (ssh) iptables -a input -p tcp - -dport 22 -j aceita
Isso abrirá a porta 22 (ssh) para todas as conexões TCP que apresentam uma ameaça potencial à segurança, pois os hackers podem tentar forçar a força bruta em contas com senhas fracas. No entanto, se soubermos os endereços IP de máquinas remotas confiáveis que serão usadas para fazer logon usando o SSH, podemos limitar o acesso apenas a esses endereços IP de origem. Por exemplo, se quiséssemos apenas abrir o acesso SSH em nossa LAN particular (192.168.0.x), podemos limitar o acesso apenas a esse intervalo de endereços IP de origem:
# Aceite pacotes TCP na porta de destino 22 (ssh) da private LAN iptables -a input -p tcp -s 192.168.0.0/24 -Dport 22 -j Aceitar
O uso da filtragem IP de origem nos permite abrir o acesso SSH com segurança na porta 22 para apenas endereços IP confiáveis. Por exemplo, poderíamos usar esse método para permitir logins remotos entre máquinas de trabalho e casas. Para todos os outros endereços IP, a porta (e o serviço) pareceria fechada como se o serviço fosse desativado, de modo que os hackers usando métodos de digitalização por porta provavelmente passarão por nós por.
8. Resumo
Mal arranhamos a superfície do que pode ser alcançado com iptables, mas espero que este Howto tenha fornecido uma boa base no básico do qual se pode construir conjuntos de regras mais complicados.
9. Links
http: // ip2location.com/livre/bloqueador de visitantes – para bloquear certos países de acordo com seu endereço IP
Howtos/Network/iptables (поссним и праgl поозз sentido Nedslider 2021-07-27 23:21:13)
- Moinmoin alimentado
- Python alimentado
- GPL licenciado
- HTML válido 4.01
Como desativar ou desativar o firewalld no CentOS 7
O Firewalld é uma solução de firewall gerenciada dinamicamente que suporta zoneamento de rede. Os administradores do sistema o usam para permitir e proibir o tráfego de entrada e saída dinamicamente. Ele suporta configurações de firewall IPv4 e IPv6. A partir do CentOS 7, o Firewalld (Dynamic Firewall Manager) é a ferramenta de firewall padrão nos servidores do CentOS.
Aconselhamos a manter o Firewalld ativo e ativado o tempo todo. No entanto, os administradores podem precisar desativar o firewalld para testar ou mudar para outra ferramenta de firewall, como iptables.
Este tutorial mostrará como desativar e interromper o firewall no CentOS 7.
- Um usuário com privilégios sudo
- Acesso a uma linha de comando (Ctrl-Alt-T)
- Uma máquina do CentOS 7
Verifique o status do firewalld
O firewalld é ativado por padrão em cada máquina CentOS 7.
Para verificar o status do firewalld, execute o seguinte comando da linha de comando:
SUDO SYSTEMCTL STATUS FIREWALLD
Se o firewall estiver em funcionamento, você verá um texto verde brilhante indicando que o firewall está ativo, como visto abaixo.
Desativando o firewall no CentOS
Você pode desativar o firewall temporariamente ou permanentemente. As seções abaixo fornecem instruções para ambas as opções.
Pare temporariamente o firewalld
Para desativar temporariamente o gerente de firewall padrão no CentOS 7, use o seguinte comando:
sudo systemctl stop firewalld
Não haverá mensagem de confirmação.
Para verificar se o firewalld está desativado, digite:
SUDO SYSTEMCTL STATUS FIREWALLD
Você pode esperar ver Ativo: inativo (morto) .
O Systemctl Stop Firewalld comando desativa o serviço até a reinicialização. Após o término da sessão de tempo de execução e as reinicializações do sistema, o serviço de firewalld estará ativo novamente.
Desativar permanentemente o firewalld
Para desativar permanentemente o firewall no CentOS 7, você precisará parar o serviço de firewall e desativá -lo completamente.
Para parar a ferramenta Firewalld, execute:
sudo systemctl stop firewalld
Este também é o mesmo comando que usamos para parar temporariamente o firewalld. Verifique o status do firewall.
SUDO SYSTEMCTL STATUS FIREWALLD
A saída deve afirmar que o serviço está inativo.
Para desativar o serviço de ativar a inicialização do sistema, insira este comando:
sudo systemctl desativar o firewalld
Veja a imagem abaixo para a saída que você pode esperar encontrar:
Agora você parou com sucesso e desativou o serviço de firewall em seu servidor CentOS 7. No entanto, outros serviços ativos podem ativar o firewalld.
Para impedir que outros serviços ativem o Firewalld, mascarar o firewalld de outros serviços no sistema:
SUDO Systemctl Mask -Now Firewalld
Isso cria um link simbólico (Symlink) do serviço de firewalld a /dev/null .
A saída deve aparecer como o seguinte:
Saída criada Symlink de/etc/Systemd/System/Firewalld.serviço para /dev /null.
Ao seguir este tutorial, agora você sabe como parar e desativar o firewall no CentOS 7. Além disso, você aprendeu a mascarar o serviço de firewalld de outros serviços ativos para evitar a reativação.
Boas práticas de segurança proíbem desativar o firewall, especialmente em servidores ao vivo. Sempre seja cauteloso ao fazê -lo, mesmo em ambientes de teste.
Usando o firewalld no CentOS 7
O Firewalld é o Firewall para o CentOS e suporta zonas de rede / firewall, a fim de estabelecer o nível de confiança das conexões / interfaces de rede (consulte o parágrafo das zonas). Além da capacidade de gerenciar especificamente portas, ele também suporta a capacidade de adicionar serviços / aplicativos diretamente.
- Conecte -se ao seu VPS via SSH ou console VPS em seu painel de controle e use sudo ou siga as etapas deste artigo como usuário raiz.
- Você usa um VPS Plesk? A zona padrão nas versões recentes de Plesk não é pública, mas Plesk (-Zone = Plesk).
- Nossas instalações de Plesk, Directadmin e CPanel vêm com o Firewalld pré -instalado.
Instalando o firewalld
O firewalld é facilmente instalado usando os seguintes comandos:
yum -y instalar firewalld systemctl atability firewalld
Verificando o status do firewalld
Antes de continuar com a configuração do firewalld, é aconselhável verificar se realmente funciona corretamente. Você faz isso com o comando:
Systemctl Status Firewalld
Se não houver problemas, a entrada ficará assim:
Se não afirmar que o firewalld está ativo, tente reiniciá -lo com:
SystemCTL Reinicie o firewalld
Firewalld ainda não começa? Verifique se há possíveis mensagens de erro para resolver o problema com:
JournalCtl -xe -u Firewalld
Zonas
Firewalld usa zonas, mas o que isso significa? Com uma zona, você realmente indica em que tipo de ambiente sua conexão com a Internet está localizada e quanto você confia, por exemplo, uma conexão pública, em casa ou trabalho. Isso é especialmente útil se você usar uma rede privada, por exemplo, ou usar o CentOS 7 em um laptop e trabalhar em diferentes locais. Você pode configurar zonas diferentes com antecedência e ajustar sua zona ativa, dependendo de onde você está.
Ao configurar zonas diferentes, você pode distinguir entre quais serviços / portas são acessíveis, dependendo de onde você está e de qual zona você usa. Muitas vezes, você usa apenas uma zona em um VPS porque o VPS não muda de ambiente doméstico / trabalho / público.
Exceto a caixa, o Firewalld vem com as seguintes zonas:
- derrubar: Todas as conexões recebidas são rejeitadas. As conexões de saída são possíveis.
- bloquear: Todas as conexões recebidas são negadas com uma mensagem padrão para a fonte da conexão recebida. Para o IPv4, isso é proibido no ICMP-host e para IPv6 ICMP6-ADM-Proibido (o ICMP é um padrão para enviar informações e mensagens de erro no tráfego IP). As conexões de saída são possíveis.
- público: Use esta zona para ambientes públicos nos quais você não confia em outros computadores na rede. Apenas conexões predefinidas (i.e. portos / serviços) são aceitos.
- externo: Isso se concentra principalmente se o seu firewall funcionar como um gateway e nat misfarrem ser usados. Você não confia em outros computadores na rede e apenas as conexões pré -configuradas são aceitas.
- DMZ: A zona desmilitarizada, onde o computador / servidor é isolado na rede e não tem acesso a outros computadores / servidores. Apenas conexões específicas são aceitas.
- trabalhar: Para ambientes de trabalho. Geralmente, outros computadores são confiáveis na mesma rede. Novamente, apenas conexões predefinidas são aceitas.
- lar: Para uso doméstico. O mesmo se aplica à zona de ‘trabalho’. Observe que as conexões no trabalho geralmente são mais seguras do que em uma rede doméstica.
- interno: Para uso com redes privadas. Os computadores nesta rede geralmente são confiáveis. Apenas conexões predefinidas são aceitas.
- confiável: Todas as conexões são aceitas.
Gerenciamento de zonas
O firewalld vem com uma variedade de comandos úteis para gerenciar suas zonas. Nesta seção, explicamos o mais importante.
Verificando a zona padrão
Por padrão, o ‘público‘Zone é a zona padrão. Você verifica a zona padrão com o comando:
Firewall-CMD-Get-Default-Zone
Verificando a zona ativa
Pode acontecer que você mude a zona ativa, mas não a zona padrão. Você verifica a zona ativa e as interfaces de rede para as quais elas são usadas:
Firewall-CMD-Get-Active-Zones
Verifique as zonas disponíveis
Você verifica as zonas disponíveis com o comando:
Firewall-CMD-Get-Zones
Isso é especialmente útil se você quiser mudar de zonas e primeiro deseja ver suas opções.
Informações detalhadas da zona
Informações detalhadas, como serviços autorizados e porção, mas também encaminhamento de portas etc. pode ser visto com:
Firewall-CMD-Zone = Public-List-All
Mudar ‘público‘para a zona desejada ou veja a saída para todas as zonas com:
Firewall-CMD-List-All-Zones | menos
Alterando a zona padrão
Para alterar a zona padrão, você tem duas opções: altere a zona para todas as interfaces ou por interface. Suponha que você use uma interface de rede (e não também uma rede privada), o uso de uma zona é suficiente e você também pode ajustar a zona padrão ao alterar as zonas.
Ajuste a zona para todas as interfaces:
Firewall-CMD--SET-default-zone = público
firewall-cmd-zone = public --change-interface = eth0
Substituir público com o nome da zona desejada e eth0 com o nome da interface de rede desejada. Dessa forma, você também pode alterar as zonas por interface para redes privadas, por exemplo:
firewall-cmd-zone = public --change-interface = eth0 firewall-cmd-zone = interno --change-interface = eth1
Portas de abertura
Você pode abrir portas no firewalld ou adicionar serviços para dar acesso à rede a aplicativos. Nem todo aplicativo vem com um serviço, ou talvez você tenha alterado a porta padrão do serviço (e.g. para ssh). Nesse caso, você abre uma ou mais portas específicas.
Toda mudança nesta parte está ativa apenas após uma reinicialização do seu VPS ou recarregando sua configuração com:
Firewall-CMD--Reload
Abrindo uma única porta
Você abre uma porta com o comando:
firewall-cmd-zone = public --permanent --add-port = 1234/tcp
- Substituir público com a zona desejada
- –permanente garante que a mudança permaneça intacta mesmo após uma reinicialização
- Substituir 1234/TCP com a porta desejada e o protocolo desejado (TCP ou UDP)
Intervalos de abertura
Você prefere abrir um intervalo? Então você usa o comando:
firewall-cmd-zone = public --permanent --add-port = 1234-1345/tcp
Substitua 1234-1345 pela faixa de porta real que você deseja abrir
Acesso por IP
Em vez de abrir uma porta para todo o mundo, você também pode abri -lo para um IP específico usando apenas os comandos:
firewall-cmd --permanent-zone = public --Add-rich-rule = '
regra família = "ipv4" endereço de origem = "123.123.123.123 "PORT protocolo =" tcp "porta =" 123 "aceita '
Substituir 123.123.123.123 pelo endereço IP real do cliente e 123 pela porta que você gostaria de abrir. Repita essas etapas para a lista de permissões múltiplas e recarregue sua configuração posteriormente (Firewall-CMD–Reload). Não se esqueça de remover a regra geral se a porta correspondente já foi aberta.
Verificando portas abertas
Com o tempo, você pode esquecer quais portas estão abertas. Você os verifica com o comando:
Firewall-CMD-Zone = Public --permanent-List-Ports
Portas de fechamento
O fechamento das portas funciona quase o mesmo que abrir uma porta e você faz isso com o comando:
firewall-cmd-zone = public --permanent--remove-port = 1234/tcp firewall-cmd--reload
- substituir 1234 com o número da porta desejado ou use 1234-1345/tcp como sintaxe para excluir um intervalo de porta
- Firewall-CMD–Reload Atualiza imediatamente sua mudança de configuração
Ajustando a configuração diretamente
Além dos comandos acima, você também pode ajustar diretamente o arquivo de configuração de uma zona específica. Você pode encontrar os arquivos de configuração das zonas com:
ls/etc/firewalld/zonas
Em uma nova instalação, apenas público.XML e público.xml.O antigo será listado aqui. Você pode abrir e editá -lo com o comando:
nano/etc/firewalld/zonas/público.xml
Você pode abrir serviços ou portas colocando respectivamente as seguintes adições no arquivo:
- Substitua o nome do serviço pelo nome real do serviço, por exemplo, SSH.
- Substitua 1234 pelo número desejado e TCP por UDP, se tiver certeza de que deseja abrir a porta UDP.
Deseja criar um novo arquivo de configuração para outra zona, por exemplo, casa? Então o público.xml.Old é um ótimo ponto de partida. Você muda de público.xml.antigo para um arquivo para outra zona copiando -a com:
cp/etc/firewalld/zonas/público.xml.antigo/etc/firewalld/zonas/casa.xml
- Substitua a casa pelo nome da zona desejada.
Adicionando serviços
Além da abertura de portos, você também pode abrir serviços específicos no firewalld. Em seguida, você adiciona o serviço no firewalld e uma ou mais portas são abertas. Há uma nota lateral aqui:
O Firewalld usa arquivos de configuração (consulte os serviços disponíveis) nos quais as portas de diferentes serviços são definidas. Essas portas são abertas quando o serviço é adicionado. Por exemplo, se você alterar sua porta SSH, se você adicionou o serviço SSH, a nova porta não será aberta automaticamente, a menos que você abra a porta manualmente ou ajuste a configuração do serviço no firewalld.
Você abre serviços no Firewalld com o seguinte comando, onde substitui o SSH pelo nome do serviço relevante:
firewall-cmd-zone = public --permanent --add-service = ssh firewall-cmd--reload
Existem duas maneiras de ver quais serviços estão disponíveis para uso no Firewalld:
Com um comando direto:
Firewall-CMD-Get-Services
LS/usr/lib/firewalld/serviços
O conteúdo dos arquivos disponíveis pode ser visualizado com:
gato/usr/lib/firewalld/Services/Servicenaam.xml
Remoção de serviços
Você pode remover um serviço com a mesma facilidade que o adiciona no firewalld:
firewall-cmd-zone = public --permanent--remove-service = ssh firewall-cmd--reload
Bloqueando IPS
Pode acontecer que seu VPS seja bombardeado com ataques de força bruta por bots. Aconselhamos que você resolva isso usando Fail2ban, mas você também pode bloquear manualmente o IPS. Você faz isso com os comandos:
firewall-cmd --permanent --Add-rich-rule = "regra família = 'ipv4' endereço de origem = '123.123.123.0/24 'Rejeitar "Firewall-CMD--Reload
Substitua 123.123.123.0/24 com o intervalo IP específico que você deseja bloquear ou com um endereço IP específico se desejar bloquear um IP.
Como alternativa, você também pode mudar esse princípio e bloquear o acesso a uma porta para todos e permitir apenas IPs específicos. Você primeiro remove a porta relevante:
firewall-cmd-zone = public --permanent--remove-port = 1234/tcp
Substitua o público pela zona relevante, 1234 e TCP pela porta / protocolo desejado. Em seguida, você pode acessar IPS específicos com os comandos:
firewall-cmd --permanent-zone = public --Add-rich-rule = '
regra família = "ipv4" endereço de origem = "1.2.3.4 "PORT protocolo =" tcp "porta =" 1234 "aceitar 'firewall-cmd--reload
Se necessário, substitua o público pela zona desejada, 1.2.3.4. com o IP correto e 1234 e TCP com o número / protocolo correto da porta.
Verificação de portas bloqueadas
Suponha que um endereço IP tenha problemas para alcançar um serviço em seu VPS, é útil excluir se estiver bloqueado no seu VPS. Você faz isso com o comando:
Firewall-CMD-List-All
IPS desbloqueado
Para desbloquear os IPs bloqueados no firewalld, pode de certa forma que você reverta os comandos da seção anterior. Suponha que você tenha bloqueado um intervalo IP / IP, você usa a sintaxe:
firewall-cmd --permanent-removOve-rich-rule = "regra família = 'ipv4' endereço de origem = '123.123.123.0/24 'Rejeitar "Firewall-CMD--Reload
Não se esqueça de ajustar o IP aqui. Você deu um acesso específico para o endereço IP a uma porta e deseja desfazer? Em seguida, use:
firewall-cmd --permanent-zone = público--remove-rico-rule = '
regra família = "ipv4" endereço de origem = "1.2.3.4 "PORT protocolo =" tcp "porta =" 1234 "aceitar 'firewall-cmd--reload
Você quer saber ainda mais sobre o firewalld? Informe -nos e também dê uma olhada na própria documentação do Firewalld.
Se você tiver alguma dúvida sobre este artigo, não hesite em entrar em contato com nosso departamento de apoio. Você pode alcançá -los através do ‘Contate-nos’ botão na parte inferior desta página.
Se você quiser discutir este artigo com outros usuários, deixe uma mensagem em ‘Comentários‘.
- Neste artigo:
- Instalando o firewalld
- Verificando o status do firewalld
- Zonas
- Gerenciamento de zonas
- Portas de abertura
- Portas de fechamento
- Adicionando serviços
- Remoção de serviços
- Bloqueando IPS
- IPS desbloqueado
Como configurar um firewall usando o firewalld no CentOS 7
Firewalld é uma solução de gerenciamento de firewall disponível para muitas distribuições Linux, que atuam como um front -end para o sistema de filtragem de pacotes iptables fornecido pelo kernel Linux. Neste guia, abordaremos como configurar um firewall para o seu servidor e mostrar o básico de gerenciar o firewall com a ferramenta administrativa do Firewall-CMD (se você’D prefiro usar iptables com o CentOS, siga este guia).
Observação: Há uma chance de você estar trabalhando com uma versão mais recente do Firewalld do que estava disponível no momento da redação deste artigo, ou que seu servidor foi configurado um pouco diferente do que o servidor de exemplo usado ao longo deste guia. O comportamento de alguns dos comandos explicados neste guia pode variar dependendo da sua configuração específica.
Conceitos básicos em firewalld
Antes de começarmos a falar sobre como realmente usar o utilitário firewall-cmd para gerenciar sua configuração de firewall, devemos nos familiarizar com alguns conceitos básicos que a ferramenta apresenta.
Zonas
O Firewalld Daemon gerencia grupos de regras usando entidades chamadas “zonas”. As zonas são basicamente conjuntos de regras que ditam o que o tráfego deve ser permitido, dependendo do nível de confiança que você possui nas redes a que seu computador está conectado. As interfaces de rede recebem uma zona para ditar o comportamento que o firewall deve permitir.
Para computadores que podem se mover entre redes com frequência (como laptops), esse tipo de flexibilidade fornece um bom método para alterar suas regras, dependendo do seu ambiente. Você pode ter regras estritas em vigor que proíbem a maior parte do tráfego ao operar em uma rede de wifi pública, enquanto permite restrições mais relaxadas quando conectado à sua rede doméstica. Para um servidor, essas zonas não são tão imediatamente importantes porque o ambiente de rede raramente, se é que alguma vez, muda.
Independentemente de quão dinâmico seja o seu ambiente de rede, ainda é útil estar familiarizado com a idéia geral por trás de cada uma das zonas predefinidas para firewalld . Em ordem de menos confiável para mais confiável, As zonas predefinidas no firewalld são:
- derrubar: O nível mais baixo de confiança. Todas as conexões recebidas são descartadas sem resposta e apenas as conexões de saída são possíveis.
- bloquear: Semelhante ao exposto, mas em vez de simplesmente soltar conexões, as solicitações recebidas são rejeitadas com uma mensagem ICMP-HOST-HOST ou ICMP6-ADM-Proiby.
- público: Representa redes públicas e não confiáveis. Você não’t confie em outros computadores, mas pode permitir conexões de entrada selecionadas caso a caso.
- externo: Redes externas no caso de você estar usando o firewall como seu gateway. Ele está configurado para Nat, disfarçado, para que sua rede interna permaneça privada, mas acessível.
- interno: O outro lado da zona externa, usada para a parte interna de um gateway. Os computadores são bastante confiáveis e alguns serviços adicionais estão disponíveis.
- DMZ: Usado para computadores localizados em um DMZ (computadores isolados que não terão acesso ao restante da sua rede). Apenas certas conexões recebidas são permitidas.
- trabalhar: Usado para máquinas de trabalho. Confie na maioria dos computadores na rede. Mais alguns serviços podem ser permitidos.
- lar: Um ambiente doméstico. Geralmente implica que você confia na maioria dos outros computadores e que mais alguns serviços serão aceitos.
- confiável: Confie em todas as máquinas da rede. O mais aberto das opções disponíveis e deve ser usado com moderação.
Para usar o firewall, podemos criar regras e alterar as propriedades de nossas zonas e depois atribuir nossas interfaces de rede a qualquer zonas que sejam mais apropriadas.
Permanência de regra
No firewalld, as regras podem ser designadas como permanentes ou imediatas. Se uma regra for adicionada ou modificada, por padrão, o comportamento do firewall atualmente em execução será modificado. Na próxima bota, as modificações serão expulsas e as regras antigas serão aplicadas.
A maioria das operações do Firewall-CMD pode levar a bandeira-permanente para indicar que o firewall não forelemal deve ser alvo. Isso afetará o conjunto de regras que é recarregado na inicialização. Essa separação significa que você pode testar as regras em sua instância ativa do firewall e depois recarregar se houver problemas. Você também pode usar a bandeira -permanente para criar um conjunto inteiro de regras ao longo do tempo que serão aplicadas de uma só vez quando o comando de recarga for emitido.
Instale e habilite seu firewall para começar na inicialização
O firewalld é instalado por padrão em algumas distribuições Linux, incluindo muitas imagens do CentOS 7. No entanto, pode ser necessário instalar o firewalld:
Depois de instalar o firewalld, você pode ativar o serviço e reiniciar seu servidor. Lembre. É prática melhor criar suas regras de firewall e aproveitar a oportunidade para testá -las antes de configurar esse comportamento para evitar possíveis problemas.
Quando o servidor reiniciar, seu firewall deve ser criado, suas interfaces de rede devem ser colocadas nas zonas que você configurou (ou volta à zona padrão configurada), e quaisquer regras associadas à (s) zona (s) serão aplicadas às interfaces associadas associadas.
Podemos verificar se o serviço está em execução e acessível digitando:
Saídacorrendo
Isso indica que nosso firewall está em funcionamento com a configuração padrão.
Familiarizando -se com as regras atuais do firewall
Antes de começarmos a fazer modificações, devemos nos familiarizar com o ambiente padrão e as regras fornecidas pelo daemon.
Explorando os padrões
Podemos ver qual zona está atualmente selecionada como o padrão digitando:
Saídapúblico
Desde que nós’t, dado o firewalld qualquer comando para desviar -se da zona padrão, e nenhuma de nossas interfaces é configurada para se ligar a outra zona, essa zona também será a única “ativo” Zona (a zona que está controlando o tráfego para nossas interfaces). Podemos verificar isso digitando:
SaídaInterfaces públicas: eth0 eth1
Aqui, podemos ver que nosso exemplo de servidor tem duas interfaces de rede sendo controladas pelo firewall (eth0 e eth1). Ambos estão sendo gerenciados de acordo com as regras definidas para a zona pública.
Como sabemos quais regras estão associadas à zona pública? Podemos imprimir a zona padrão’S configuração digitando:
SaídaPublic (padrão, ativo) alvo: Inversão padrão do ICMP-bloco: sem interfaces: ETH0 ETH1 Fontes: Serviços: SSH DHCPV6-CLIENT PORTS: Protocolos: Masquerade: sem portos avançados: Fonte-ports: ICMP-Blocks: Rich Regras:
Podemos dizer pela saída que essa zona é o padrão e o ativo e que as interfaces ETH0 e ETH1 estão associadas a essa zona (já sabíamos tudo isso de nossas perguntas anteriores). No entanto, também podemos ver que essa zona permite as operações normais associadas a um cliente DHCP (para atribuição de endereço IP) e SSH (para administração remota).
Explorando zonas alternativas
Agora temos uma boa idéia sobre a configuração para a zona padrão e ativa. Podemos descobrir informações sobre outras zonas também.
Para obter uma lista das zonas disponíveis, digite:
SaídaBloco DMZ Drop Home Externo Casa Interna Trabalho Confiável
Podemos ver a configuração específica associada a uma zona, incluindo o-Zone = Parâmetro em nosso comando–List-All:
SaídaAlvo doméstico: ICMP-Block-Inversão padrão: Sem interfaces: Fontes: Serviços: DHCPV6-Client MDNS SSH SSH SSH portas: Protocolos: Masquerade: sem portos avançados: Fonte-ports: ICMP-Blocks: Rich Regras:
Você pode gerar todas as definições de zona usando a opção–List-All-Zones. Você provavelmente desejará colocar a saída em um pager para facilitar a visualização:
Selecionando zonas para suas interfaces
A menos que você tenha configurado suas interfaces de rede, caso contrário, cada interface será colocada na zona padrão quando o firewall for inicializado.
Alterando a zona de uma interface
Você pode fazer a transição de uma interface entre as zonas durante uma sessão usando o –Zone = Parâmetro em combinação com o-interface = parâmetro. Como em todos os comandos que modificam o firewall, você precisará usar sudo .
Por exemplo, podemos fazer a transição de nossa interface ETH0 para o “lar” zona digitando isto:
Saídasucesso
Observação: Sempre que você estiver em transição de uma interface para uma nova zona, esteja ciente de que provavelmente está modificando os serviços que estarão operacionais. Por exemplo, aqui estamos nos mudando para o “lar” Zona, que tem SSH disponível. Isso significa que nossa conexão não deve’T gota. Algumas outras zonas não têm SSH ativado por padrão e se sua conexão for descartada ao usar uma dessas zonas, você poderá se encontrar incapaz de fazer login de volta.
Podemos verificar se isso foi bem -sucedido pedindo as zonas ativas novamente:
SaídaInterfaces domésticas: ETH0 Interfaces públicas: Eth1
Ajustando a zona padrão
Se todas as suas interfaces puderem ser melhor tratadas por uma única zona, ele’provavelmente é mais fácil selecionar a melhor zona padrão e depois usá -la para sua configuração.
Você pode alterar a zona padrão com o parâmetro–default-zone =. Isso mudará imediatamente qualquer interface que recuou no padrão para a nova zona:
Saídasucesso
Definindo regras para seus aplicativos
A maneira básica de definir exceções de firewall para os serviços que você deseja disponibilizar é bastante direta. Nós’Eu passará pela ideia básica aqui.
Adicionando um serviço às suas zonas
O método mais simples é adicionar os serviços ou portas necessários às zonas que você está usando. Novamente, você pode obter uma lista dos serviços disponíveis com a opção –get-Services:
SaídaRH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-Cliente Tincor-Socks-CLIENTE VDSM VNC-SERVER WBEM-HTTPS XMPP-BOSH XMPP-CLIENT XMPP-LOCAL XMPP-SERVER
Observação: Você pode obter mais detalhes sobre cada um desses serviços observando seus associados .Arquivo XML dentro do diretório/usr/lib/firewalld/serviços. Por exemplo, o serviço SSH é definido assim:
/usr/lib/firewalld/Services/ssh.xml
serviço> curto>Sshcurto> descrição>Secure Shell (SSH) é um protocolo para fazer login e executar comandos em máquinas remotas. Ele fornece comunicações criptografadas seguras. Se você planeja acessar sua máquina remotamente via SSH em uma interface de firewall, ative esta opção. Você precisa do pacote OpenSsh-Server instalado para que esta opção seja útil.descrição> porta protocolo="TCP" porta="22"/> serviço>
Você pode ativar um serviço para uma zona usando o –Add-Service = Parâmetro. A operação terá como alvo a zona padrão ou qualquer zona especificada pelo parâmetro –zone =. Por padrão, isso ajustará apenas a sessão de firewall atual. Você pode ajustar a configuração permanente do firewall, incluindo a bandeira -permanente.
Por exemplo, se estamos executando um servidor da web que serve o tráfego HTTP convencional, podemos permitir esse tráfego para interfaces em nosso “público” Zona para esta sessão digitando:
Você pode deixar de fora o -Zone = se deseja modificar a zona padrão. Podemos verificar se a operação foi bem-sucedida usando as operações–List-All ou–List-Services:
SaídaDHCPV6-Client http ssh
Depois de testar que tudo está funcionando como deveria, você provavelmente desejará modificar as regras permanentes do firewall para que seu serviço ainda esteja disponível após uma reinicialização. Nós podemos fazer nosso “público” Mudança de zona permanente digitando:
Saídasucesso
Você pode verificar se isso foi bem-sucedido adicionando a bandeira-permanente à operação-List-Services. Você precisa usar o sudo para qualquer operações permanentes:
SaídaDHCPV6-Client http ssh
Seu “público” Zone agora permitirá o tráfego da Web HTTP na porta 80. Se o seu servidor da web estiver configurado para usar SSL/TLS, você’também quero adicionar o serviço https. Podemos adicionar isso à sessão atual e ao conjunto de regras permanente digitando:
E se nenhum serviço apropriado estiver disponível?
Os serviços de firewall incluídos na instalação do firewalld representam muitos dos requisitos mais comuns para aplicativos que você pode permitir o acesso a. No entanto, provavelmente haverá cenários em que esses serviços não atendem aos seus requisitos.
Nesta situação, você tem duas opções.
Abrindo uma porta para suas zonas
Uma maneira de adicionar suporte ao seu aplicativo específico é abrir as portas que ele usa na (s) zona (s) apropriada (s). Isso é feito especificando o intervalo de portas ou portas e o protocolo associado para as portas que você precisa abrir.
Por exemplo, se nosso aplicativo é executado na porta 5000 e usar TCP, poderíamos adicionar isso ao “público” zona para esta sessão usando o –add-port = parâmetro. Os protocolos podem ser TCP ou UDP:
Saídasucesso
Podemos verificar se isso foi bem-sucedido usando a operação–List-Ports:
Saída5000/TCP
Também é possível especificar uma faixa seqüencial de portas, separando a porta inicial e final no intervalo com um painel. Por exemplo, se nosso aplicativo usar portas UDP 4990 a 4999, poderíamos abri -los “público” digitando:
Após o teste, provavelmente gostaríamos de adicioná -los ao firewall permanente. Você pode fazer isso digitando:
SaídaSucesso Sucesso 5000/TCP 4990-4999/UDP
Definindo um serviço
A abertura de portas para suas zonas é fácil, mas pode ser difícil acompanhar o que cada uma delas é. Se você descomissionou um serviço no seu servidor, pode ter dificuldade em lembrar quais portas abertas ainda são necessárias. Para evitar essa situação, é possível definir um serviço.
Serviços são coleções de portas com um nome e descrição associados. O uso de serviços é mais fácil de administrar do que as portas, mas requer um pouco de trabalho inicial. Uma boa maneira de começar é copiar um script existente (encontrado em/usr/lib/firewalld/serviços) para o diretório/etc/firewalld/serviços em que o firewall procura definições não padrão.
Por exemplo, poderíamos copiar a definição de serviço ssh para usar para o nosso “exemplo” Definição de serviço como esta. O nome do arquivo menos o .O sufixo XML determinará o nome do serviço na lista de serviços de firewall:
Agora, você pode ajustar a definição encontrada no arquivo que copiou:
Para começar, o arquivo conterá a definição SSH que você copiou:
/etc/firewalld/serviços/exemplo.xml
serviço> curto>Sshcurto> descrição>Secure Shell (SSH) é um protocolo para fazer login e executar comandos em máquinas remotas. Ele fornece comunicações criptografadas seguras. Se você planeja acessar sua máquina remotamente via SSH em uma interface de firewall, ative esta opção. Você precisa do pacote OpenSsh-Server instalado para que esta opção seja útil.descrição> porta protocolo="TCP" porta="22"/> serviço>
A maioria desta definição é na verdade metadados. Você vai querer alterar o nome curto do serviço dentro das tags. Este é um nome legível pelo homem para o seu serviço. Você também deve adicionar uma descrição para ter mais informações se precisar auditar o serviço. A única configuração que você precisa fazer isso realmente afeta a funcionalidade do serviço provavelmente será a definição da porta em que você identificará o número e o protocolo que você deseja abrir. Isso pode ser especificado várias vezes.
Para nós “exemplo” Serviço, imagine que precisamos abrir a porta 7777 para TCP e 8888 para UDP. Ao inserir o modo de inserção pressionando I, podemos modificar a definição existente com algo assim:
/etc/firewalld/serviços/exemplo.xml
serviço> curto>Exemplo de serviçocurto> descrição>Este é apenas um exemplo de serviço. Provavelmente não deve ser usado em um sistema real.descrição> porta protocolo="TCP" porta="7777"/> porta protocolo="UDP" porta="8888"/> serviço>
Pressione ESC, depois digite: X para salvar e fechar o arquivo.
Recarregue seu firewall para obter acesso ao seu novo serviço:
Você pode ver que agora está entre a lista de serviços disponíveis:
SaídaRh-Satellite-6 Amanda-Client Amanda-K5-Client Bitcoin Bitcoin-RPC-Testnet-Testnet-Testnet-Testnet-Testnet-Testnet-RPC CEPH-MON CFENGINE-CLIGETRO-CLIGETRO CTDB DHCP DHCPV6 DHCPV6-CLIGEM DNS DNS DNS exemplo freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
Agora você pode usar este serviço em suas zonas como normalmente faria.
Criando suas próprias zonas
Embora as zonas predefinidas provavelmente sejam mais do que suficientes para a maioria dos usuários, pode ser útil definir suas próprias zonas que são mais descritivas de sua função.
Por exemplo, você pode querer criar uma zona para o seu servidor da web, chamado “PublicWeb”. No entanto, você pode querer ter outra zona configurada para o serviço DNS que você fornece em sua rede privada. Você pode querer uma zona chamada “privado” por isso.
Ao adicionar uma zona, você deve adicioná -la à configuração permanente do firewall. Você pode então recarregar para trazer a configuração para sua sessão de corrida. Por exemplo, poderíamos criar as duas zonas que discutimos acima digitando:
Você pode verificar se eles estão presentes em sua configuração permanente digitando:
Saídabloco dmz soltar casa externa interna privado público PublicWeb trabalho confiável
Como afirmado antes, eles venceram’ainda não estará disponível na instância atual do firewall:
SaídaBloco DMZ Drop Home Externo Casa Interna Trabalho Confiável
Recarregue o firewall para trazer essas novas zonas para a configuração ativa:
Saídabloco dmz soltar casa externa interna privado público PublicWeb trabalho confiável
Agora, você pode começar a atribuir os serviços e portas apropriados às suas zonas. Isto’é geralmente uma boa ideia para ajustar a instância ativa e depois transferir essas alterações para a configuração permanente após o teste. Por exemplo, para o “PublicWeb” Zona, você pode querer adicionar os serviços SSH, HTTP e HTTPS:
SaídaPublicWeb Alvo: ICMP-Block-Inversão Padrão: Sem Interfaces: Fontes: Serviços: SSH HTTP HTTPS PORTS: Protocolos: Masquerade: sem portões: Fonte-ports: ICMP-Blocks: Rich Regras:
Da mesma forma, podemos adicionar o serviço DNS ao nosso “privado” zona:
SaídaInterfaces privadas: Fontes: Serviços: DNS Portas: Masquerade: Sem portas para a frente: ICMP-Blocks: Rich Regras:
Poderíamos mudar nossas interfaces para essas novas zonas para testá -las:
Neste ponto, você tem a oportunidade de testar sua configuração. Se esses valores funcionarem para você, você desejará adicionar as mesmas regras à configuração permanente. Você pode fazer isso reaplicando as regras com a bandeira-permanente:
Depois de aplicar permanentemente suas regras, você pode reiniciar sua rede e recarregar seu serviço de firewall:
Validar que as zonas corretas foram atribuídas:
SaídaInterfaces privadas: Eth1 PublicWeb Interfaces: eth0
E validar que os serviços apropriados estão disponíveis para as duas zonas:
Saídahttp https ssh
Saídadns
Você configurou com sucesso suas próprias zonas! Se você deseja fazer de uma dessas zonas o padrão para outras interfaces, lembre-se de configurar esse comportamento com o parâmetro–SE-default-zone =
SUDO Firewall-CMD--SET-Default-Zone = PublicWeb
Conclusão
Agora você deve ter um entendimento bastante bom de como administrar o serviço de firewalld em seu sistema CentOS para uso diário.
O serviço Firewalld permite configurar regras e conjuntos de regras sustentáveis que levam em consideração o seu ambiente de rede. Ele permite que você faça a transição perfeita entre diferentes políticas de firewall através do uso de zonas e oferece aos administradores a capacidade de abstrair o gerenciamento de portas em definições de serviço mais amigáveis. A aquisição de um conhecimento prático deste sistema permitirá que você aproveite a flexibilidade e o poder que esta ferramenta fornece.
Proteja facilmente sua infraestrutura e defina quais serviços são visíveis em seus servidores usando firewalls em nuvem digitalocean. Nossos firewalls em nuvem são gratuitos e perfeitos para estadiamento e implantações de produção.
Como configurar um firewall usando o firewalld no CentOS 8
Firewalld é um software de gerenciamento de firewall disponível para muitas distribuições Linux, que atuam como um front -end para o Linux’s.
Neste guia, mostraremos como configurar um firewall do Firewalld para o seu servidor CentOS 8 e cobrir o básico de gerenciar o firewall com a ferramenta administrativa do Firewall-CMD.
Pré -requisitos
Para concluir este tutorial, você precisará de um servidor executando o CentOS 8. Vamos assumir que você está conectado a este servidor como um não-raiz, Usuário habilitado para sudo. Para configurar isso, consulte nossa configuração inicial do servidor para o CentOS 8 Guide.
Conceitos básicos em firewalld
Antes de começarmos a falar sobre como realmente usar o utilitário firewall-cmd para gerenciar sua configuração de firewall, devemos nos familiarizar com alguns conceitos que a ferramenta apresenta.
Zonas
O Firewalld Daemon gerencia grupos de regras usando entidades chamadas zonas. Zonas são conjuntos de regras que ditam qual tráfego deve ser permitido, dependendo do nível de confiança que você tem na rede. As interfaces de rede são atribuídas a uma zona para ditar o comportamento que o firewall deve permitir.
Para computadores que podem se mover entre redes com frequência (como laptops), esse tipo de flexibilidade fornece um bom método para alterar suas regras, dependendo do seu ambiente. Você pode ter regras estritas em vigor que proíbem a maior parte do tráfego ao operar em uma rede de wifi pública, enquanto permite restrições mais relaxadas quando conectado à sua rede doméstica. Para um servidor, essas zonas geralmente não são tão importantes porque o ambiente de rede raramente, se é que alguma vez, muda.
Independentemente de quão dinâmico seja o seu ambiente de rede, ainda é útil estar familiarizado com a idéia geral por trás de cada uma das zonas predefinidas para firewalld . As zonas predefinidas no firewalld são, em ordem menos confiável para mais confiável:
- derrubar: O nível mais baixo de confiança. Todas as conexões recebidas são descartadas sem resposta e apenas as conexões de saída são possíveis.
- bloquear: Semelhante ao exposto, mas em vez de simplesmente soltar conexões, as solicitações recebidas são rejeitadas com uma mensagem ICMP-HOST-HOST ou ICMP6-ADM-Proiby.
- público: Representa redes públicas e não confiáveis. Você não’t confie em outros computadores, mas pode permitir conexões de entrada selecionadas caso a caso.
- externo: Redes externas no caso de você estar usando o firewall como seu gateway. Ele está configurado para Nat, disfarçado, para que sua rede interna permaneça privada, mas acessível.
- interno: O outro lado da zona externa, usada para a parte interna de um gateway. Os computadores são bastante confiáveis e alguns serviços adicionais estão disponíveis.
- DMZ: Usado para computadores localizados em um DMZ (computadores isolados que não terão acesso ao restante da sua rede). Apenas certas conexões recebidas são permitidas.
- trabalhar: Usado para máquinas de trabalho. Confie na maioria dos computadores na rede. Mais alguns serviços podem ser permitidos.
- lar: Um ambiente doméstico. Geralmente implica que você confia na maioria dos outros computadores e que mais alguns serviços serão aceitos.
- confiável: Confie em todas as máquinas da rede. O mais aberto das opções disponíveis e deve ser usado com moderação.
Para usar o firewall, podemos criar regras e alterar as propriedades de nossas zonas e depois atribuir nossas interfaces de rede a qualquer zonas que sejam mais apropriadas.
Permanência de regra
No firewalld, as regras podem ser aplicadas ao atual tempo de execução REGRASTENT, ou seja feito permanente. Quando uma regra é adicionada ou modificada, Por padrão, apenas o firewall atualmente em execução é modificado. Após a próxima reinicialização – ou recarregar o serviço de firewalld – apenas as regras permanentes permanecerão.
A maioria das operações do Firewall-CMD pode levar uma bandeira-permanente para indicar que as alterações devem ser aplicadas à configuração Permenent. Além disso, o firewall atualmente em execução pode ser salvo na configuração permanente com o comando Firewall-CMD-Runtime-to-Permanent.
Essa separação do tempo de execução versus configuração permanente significa que você pode testar as regras com segurança em seu firewall ativo e depois recarregar para começar de novo se houver problemas.
Instalando e ativando o firewalld
O firewalld é instalado por padrão em algumas distribuições Linux, incluindo muitas imagens do CentOS 8. No entanto, pode ser necessário instalar o firewalld:
Depois de instalar o firewalld, você pode ativar o serviço e reiniciar seu servidor. Lembre. É prática melhor criar suas regras de firewall e aproveitar a oportunidade para testá -las antes de configurar esse comportamento para evitar possíveis problemas.
Quando o servidor reiniciar, seu firewall deve ser criado, suas interfaces de rede devem ser colocadas nas zonas que você configurou (ou volta à zona padrão configurada), e quaisquer regras associadas à (s) zona (s) serão aplicadas às interfaces associadas associadas.
Podemos verificar se o serviço está em execução e acessível digitando:
Saídacorrendo
Isso indica que nosso firewall está em funcionamento com a configuração padrão.
Familiarizando -se com as regras atuais do firewall
Antes de começarmos a fazer modificações, devemos nos familiarizar com o ambiente e as regras padrão fornecidas pela Firewalld.
Explorando os padrões
Podemos ver qual zona está atualmente selecionada como o padrão digitando:
Saídapúblico
Desde que nós’t, dado o firewalld qualquer comando para desviar -se da zona padrão, e nenhuma de nossas interfaces é configurada para se ligar a outra zona, essa zona também será a única ativo Zona (a zona que está controlando o tráfego para nossas interfaces). Podemos verificar isso digitando:
SaídaInterfaces públicas: eth0 eth1
Aqui, podemos ver que nosso exemplo de servidor tem duas interfaces de rede sendo controladas pelo firewall (eth0 e eth1). Ambos estão sendo gerenciados atualmente de acordo com as regras definidas para o público zona.
Como sabemos quais regras estão associadas ao público zona embora? Podemos imprimir a zona padrão’S configuração digitando:
SaídaPublic (ativo) Alvo: ICMP-Inversão ICMP padrão: Sem interfaces: ETH0 ETH1 Fontes: Serviços: Cockpit DHCPV6-Client ssh Portas: Protocolos: Masquerade: Sem portas para a frente: Fonte-portas: ICMP-Blocks: Rich Regras:
Podemos dizer pela saída que essa zona é o padrão e o ativo e que as interfaces ETH0 e ETH1 estão associadas a essa zona (já sabíamos tudo isso de nossas perguntas anteriores). No entanto, também podemos ver que essa zona permite o tráfego para um cliente DHCP (para atribuição de endereço IP), SSH (para administração remota) e Cockpit (um console baseado na Web).
Explorando zonas alternativas
Agora temos uma boa idéia sobre a configuração para a zona padrão e ativa. Podemos descobrir informações sobre outras zonas também.
Para obter uma lista das zonas disponíveis, digite:
SaídaBloco DMZ Drop Home Externo Casa Interna Trabalho Confiável
Podemos ver a configuração específica associada a uma zona, incluindo o-Zone = Parâmetro em nosso comando–List-All:
SaídaAlvo doméstico: ICMP-Block-Inversão padrão: Sem interfaces: Fontes: Serviços: Cockpit DHCPV6-Client MDNS MDNS SHIG-CLIENT SSH PORTS: Protocols: Masquerade: sem portos avançados: portões de origem: ICMP-Blocks: Rich Regras:
Você pode gerar todas as definições de zona usando a opção–List-All-Zones. Você provavelmente desejará colocar a saída em um pager para facilitar a visualização:
Em seguida, aprenderemos sobre as zonas de manutenção para interfaces de rede.
Selecionando zonas para suas interfaces
A menos que você tenha configurado suas interfaces de rede, caso contrário, cada interface será colocada na zona padrão quando o firewall for iniciado.
Alterando a zona de uma interface
Você pode mover uma interface entre as zonas durante uma sessão usando o –Zone = Parâmetro em combinação com o-interface = parâmetro. Como em todos os comandos que modificam o firewall, você precisará usar sudo .
Por exemplo, podemos mover nossa interface ETH0 para o lar zona digitando isto:
Saídasucesso
Observação: Sempre que você estiver movendo uma interface para uma nova zona, esteja ciente de que provavelmente está modificando quais serviços estarão operacionais. Por exemplo, aqui estamos nos mudando para o lar Zona, que tem SSH disponível. Isso significa que nossa conexão não deve’T gota. Algumas outras zonas não têm SSH ativado por padrão, e a mudança para uma dessas zonas pode fazer com que sua conexão caia, impedindo que você faça login novamente no seu servidor.
Podemos verificar se isso foi bem -sucedido pedindo as zonas ativas novamente:
SaídaInterfaces domésticas: ETH0 Interfaces públicas: Eth1
Ajustando a zona padrão
Se todas as suas interfaces puderem ser bem tratadas por uma única zona, ele’provavelmente é mais fácil de designar a melhor zona como padrão e depois usá -la para sua configuração.
Você pode alterar a zona padrão com o parâmetro–default-zone =. Isso mudará imediatamente qualquer interface usando a zona padrão:
Saídasucesso
Definindo regras para seus aplicativos
Deixar’s percorrer a maneira básica de definir exceções de firewall para os serviços que você deseja disponibilizar.
Adicionando um serviço às suas zonas
O método mais reto é adicionar os serviços ou portas necessários às zonas que você está usando. Você pode obter uma lista das definições de serviço disponíveis com a opção –get-Services:
SaídaRH-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
Observação: Você pode obter mais detalhes sobre cada um desses serviços observando seus associados .Arquivo XML dentro do diretório/usr/lib/firewalld/serviços. Por exemplo, o serviço SSH é definido assim:
/usr/lib/firewalld/Services/ssh.xml
serviço> curto>Sshcurto> descrição>Secure Shell (SSH) é um protocolo para fazer login e executar comandos em máquinas remotas. Ele fornece comunicações criptografadas seguras. Se você planeja acessar sua máquina remotamente via SSH em uma interface de firewall, ative esta opção. Você precisa do pacote OpenSsh-Server instalado para que esta opção seja útil.descrição> porta protocolo="TCP" porta="22"/> serviço>
Você pode ativar um serviço para uma zona usando o –Add-Service = Parâmetro. A operação terá como alvo a zona padrão ou qualquer zona especificada pelo parâmetro –zone =. Por padrão, isso ajustará apenas a sessão de firewall atual. Você pode ajustar a configuração permanente do firewall, incluindo a bandeira -permanente.
Por exemplo, se estamos executando um servidor da web que serve o tráfego HTTP convencional, podemos permitir temporariamente esse tráfego para interfaces em nosso público zona digitando:
Você pode deixar de fora o -Zone = Flag se desejar modificar a zona padrão. Podemos verificar se a operação foi bem-sucedida usando as operações–List-All ou–List-Services:
SaídaCockpit dhcpv6-client http ssh
Depois de testar que tudo está funcionando como deveria, você provavelmente desejará modificar as regras permanentes do firewall para que seu serviço ainda esteja disponível após uma reinicialização. Podemos tornar nossa alteração anterior permanente, retipando -a e adicionando a bandeira -permanente:
Saídasucesso
Como alternativa, você pode usar a bandeira-Runtime-to-Permanente para salvar a configuração do firewall atualmente em execução na configuração permanente:
Tenha cuidado com isso, como todos Alterações feitas no firewall em execução serão comprometidas com perleenos.
Qualquer que seja o método que você escolher, você pode verificar se foi bem-sucedido adicionando a bandeira-permanente à operação-List-Services. Você precisa usar o sudo para qualquer operações permanentes:
SaídaCockpit dhcpv6-client http ssh
Seu público Zone agora permitirá o tráfego da Web HTTP na porta 80. Se o seu servidor da web estiver configurado para usar SSL/TLS, você’também quero adicionar o serviço https. Podemos adicionar isso à sessão atual e ao conjunto de regras permanente digitando:
E se nenhum serviço apropriado estiver disponível?
Os serviços incluídos na instalação do Firewalld representam muitos dos aplicativos mais comuns que você deseja permitir o acesso a. No entanto, provavelmente haverá cenários em que esses serviços não atendem aos seus requisitos.
Nesta situação, você tem duas opções.
Abrindo uma porta para suas zonas
A maneira mais fácil de adicionar suporte ao seu aplicativo específico é abrir as portas que ele usa na (s) zona (s) apropriada (s). Isso é feito especificando o intervalo de porta ou porta e o protocolo associado (TCP ou UDP) para as portas.
Por exemplo, se nosso aplicativo for executado na porta 5000 e usar TCP, poderíamos adicionar temporariamente isso ao público zona usando o parâmetro –add-port =. Os protocolos podem ser designados como TCP ou UDP:
Saídasucesso
Podemos verificar se isso foi bem-sucedido usando a operação–List-Ports:
Saída5000/TCP
Também é possível especificar uma faixa seqüencial de portas, separando a porta inicial e final no intervalo com um painel. Por exemplo, se nosso aplicativo usar portas UDP 4990 a 4999, poderíamos abri -los público digitando:
Após o teste, provavelmente gostaríamos de adicioná -los ao firewall permanente. Use Sudo Firewall-CMD-Runtime-to-Permanente para fazer isso, ou execute os comandos com a bandeira –permanente:
SaídaSucesso Sucesso 5000/TCP 4990-4999/UDP
Definindo um serviço
A abertura de portas para suas zonas é uma solução direta, mas pode ser difícil acompanhar o que cada uma delas é. Se você descomissionou um serviço no seu servidor, pode ter dificuldade em lembrar quais portas abertas ainda são necessárias. Para evitar essa situação, é possível definir um novo serviço.
Serviços são coleções de portas com um nome e descrição associados. O uso de serviços é mais fácil de administrar do que as portas, mas requer um pouco de trabalho inicial. A maneira mais fácil de começar é copiar um script existente (encontrado em/usr/lib/firewalld/Services) para o diretório/etc/firewalld/serviços, onde o firewall procura definições não padrão.
Por exemplo, poderíamos copiar a definição de serviço ssh para usar para o nosso exemplo Definição de serviço como esta. O nome do arquivo menos o .O sufixo XML determinará o nome do serviço na lista de serviços de firewall:
Agora, você pode ajustar a definição encontrada no arquivo que você copiou. Primeiro abra -o em seu editor de texto favorito. Nós’Eu usarei VI aqui:
Para começar, o arquivo conterá a definição SSH que você copiou:
/etc/firewalld/serviços/exemplo.xml
serviço> curto>Sshcurto> descrição>Secure Shell (SSH) é um protocolo para fazer login e executar comandos em máquinas remotas. Ele fornece comunicações criptografadas seguras. Se você planeja acessar sua máquina remotamente via SSH em uma interface de firewall, ative esta opção. Você precisa do pacote OpenSsh-Server instalado para que esta opção seja útil.descrição> porta protocolo="TCP" porta="22"/> serviço>
A maioria desta definição é na verdade metadados. Você vai querer alterar o nome curto do serviço dentro das tags. Este é um nome legível pelo homem para o seu serviço. Você também deve adicionar uma descrição para ter mais informações se precisar auditar o serviço. A única configuração que você precisa fazer isso realmente afeta a funcionalidade do serviço provavelmente será a definição da porta em que você identificará o número e o protocolo que você deseja abrir. Várias tags podem ser especificadas.
Para nós exemplo Serviço, imagine que precisamos abrir a porta 7777 para TCP e 8888 para UDP. Podemos modificar a definição existente com algo assim:
/etc/firewalld/serviços/exemplo.xml
serviço> curto>Exemplo de serviçocurto> descrição>Este é apenas um exemplo de serviço. Provavelmente não deve ser usado em um sistema real.descrição> porta protocolo="TCP" porta="7777"/> porta protocolo="UDP" porta="8888"/> serviço>
Salve e feche o arquivo.
Recarregue seu firewall para obter acesso ao seu novo serviço:
Você pode ver que agora está entre a lista de serviços disponíveis:
SaídaRH-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 exemplo 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
Agora você pode usar este serviço em suas zonas como normalmente faria.
Criando suas próprias zonas
Embora as zonas predefinidas provavelmente sejam mais do que suficientes para a maioria dos usuários, pode ser útil definir suas próprias zonas que são mais descritivas de sua função.
Por exemplo, você pode querer criar uma zona para o seu servidor da web, chamado PublicWeb. No entanto, você pode querer ter outra zona configurada para o serviço DNS que você fornece em sua rede privada. Você pode querer uma zona chamada “privado” por isso.
Ao adicionar uma zona, você deve Adicione -o à configuração permanente do firewall. Você pode então recarregar para trazer a configuração para sua sessão de corrida. Por exemplo, poderíamos criar as duas zonas que discutimos acima digitando:
Você pode verificar se eles estão presentes em sua configuração permanente digitando:
Saídabloco dmz soltar casa externa interna privado público PublicWeb trabalho confiável
Como afirmado antes, eles venceram’ainda não estará disponível no firewall de tempo de execução:
SaídaBloco DMZ Drop Home Externo Casa Interna Trabalho Confiável
Recarregue o firewall para trazer essas novas zonas para a configuração de tempo de execução ativa:
Saídabloco dmz soltar casa externa interna privado público PublicWeb trabalho confiável
Agora, você pode começar a atribuir os serviços e portas apropriados às suas zonas. Isto’é geralmente uma boa idéia para ajustar o firewall do tempo de execução e, em seguida, salvar essas alterações na configuração permanente após o teste. Por exemplo, para o PublicWeb Zona, você pode querer adicionar os serviços SSH, HTTP e HTTPS:
SaídaPublicWeb Alvo: ICMP-Block-Inversão padrão: Sem interfaces: Fontes: Serviços: HTTP HTTPS SSH PORTS: Protocolos: Masquerade: Sem portões: Fonte-ports: ICMP-Blocks: Rich Regras:
Da mesma forma, podemos adicionar o serviço DNS ao nosso privado zona:
SaídaIncivateNS Alvo: ICMP-Block-Inversão Padrão: Sem Interfaces: Fontes: Serviços: DNS Portas: Protocolos: Masquerade: Sem portas para a frente: Fonte-PORTS: ICMP-Blocks: Rich Regras:
Poderíamos mudar nossas interfaces para essas novas zonas para testá -las:
Neste ponto, você tem a oportunidade de testar sua configuração. Se esses valores funcionarem para você, você desejará adicionar essas regras à configuração permanente. Você poderia Faça isso executando todos os comandos novamente com a bandeira -permanente anexada, mas neste caso nós’Eu usarei a bandeira-Runtime-to-Permanente para salvar toda a nossa configuração de tempo de execução permanentemente:
Depois de aplicar permanentemente essas regras, recarregue o firewall para testar que as mudanças permanecem:
Validar que as zonas corretas foram atribuídas:
SaídaInterfaces privadas: Eth1 PublicWeb Interfaces: eth0
E validar que os serviços apropriados estão disponíveis para as duas zonas:
Saídahttp https ssh
Saídadns
Você configurou com sucesso suas próprias zonas! Se você deseja fazer de uma dessas zonas o padrão para outras interfaces, lembre-se de configurar esse comportamento com o parâmetro–SE-default-zone =
Conclusão
Agora você deve ter um entendimento bastante completo de como administrar o serviço Firewalld em seu sistema CentOS para uso diário.
O serviço Firewalld permite configurar regras e conjuntos de regras sustentáveis que levam em consideração o seu ambiente de rede. Ele permite que você faça a transição perfeita entre diferentes políticas de firewall através do uso de zonas e oferece aos administradores a capacidade de abstrair o gerenciamento de portas em definições de serviço mais amigáveis. A aquisição de um conhecimento prático deste sistema permitirá que você aproveite a flexibilidade e o poder que esta ferramenta fornece.
Para mais informações sobre o Firewalld, consulte a documentação oficial do Firewalld.
Obrigado por aprender com a comunidade digital. Confira nossas ofertas de bancos de dados de computação, armazenamento, rede e gerenciamento.