Linux Admin - Configuração do Firewall
firewalld é o controlador front-end padrão para iptables no CentOS. O front-end firewalld tem duas vantagens principais sobre o iptables bruto -
Usa cadeias e regras de abstração de zonas fáceis de configurar e implementar.
Os conjuntos de regras são dinâmicos, o que significa que as conexões com estado não são interrompidas quando as configurações são alteradas e / ou modificadas.
Lembre-se, firewalld é o wrapper para iptables - não um substituto. Embora os comandos iptables personalizados possam ser usados com o firewalld , é recomendado usar o firewalld para não quebrar a funcionalidade do firewall.
Primeiro, vamos ter certeza de que firewalld está iniciado e habilitado.
[[email protected] rdc]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-01-26 21:42:05 MST; 3h 46min ago
Docs: man:firewalld(1)
Main PID: 712 (firewalld)
Memory: 34.7M
CGroup: /system.slice/firewalld.service
└─712 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Podemos ver, firewalld está ativo (para iniciar na inicialização) e atualmente em execução. Se inativo ou não iniciado, podemos usar -
systemctl start firewalld && systemctl enable firewalld
Agora que nosso serviço firewalld está configurado, vamos garantir que ele esteja operacional.
[[email protected]]# firewall-cmd --state
running
[[email protected]]#
Podemos ver que o serviço firewalld está totalmente funcional.
Firewalld trabalha com o conceito de zonas . Uma zona é aplicada às interfaces de rede por meio do Network Manager. Discutiremos isso na configuração da rede . Mas, por enquanto, por padrão, alterar a zona padrão mudará todos os adaptadores de rede deixados no estado padrão de "Zona Padrão".
Vamos dar uma olhada rápida em cada zona que vem fora da caixa com o firewalld .
Sr. Não. | Zona e Descrição |
---|---|
1 | drop Baixo nível de confiança. Todas as conexões de entrada e pacotes são descartados e apenas as conexões de saída são possíveis por meio de statefullness |
2 | block As conexões de entrada são respondidas com uma mensagem icmp informando ao iniciador que a solicitação é proibida |
3 | public Todas as redes são restritas. No entanto, as conexões de entrada selecionadas podem ser explicitamente permitidas |
4 | external Configura firewalld para NAT. A rede interna permanece privada, mas acessível |
5 | dmz Apenas certas conexões de entrada são permitidas. Usado para sistemas em isolamento DMZ |
6 | work Por padrão, confie em mais computadores na rede, assumindo que o sistema está em um ambiente de trabalho seguro |
7 | hone Por padrão, mais serviços não são filtrados. Supondo que um sistema esteja em uma rede doméstica onde serviços como NFS, SAMBA e SSDP serão usados |
8 | trusted Todas as máquinas da rede são confiáveis. A maioria das conexões de entrada são permitidas sem restrições.This is not meant for interfaces exposed to the Internet |
As zonas mais comuns de uso são: pública, queda, trabalho e casa.
Alguns cenários onde cada zona comum seria usada são -
public- É a zona mais comum usada por um administrador. Ele permitirá que você aplique as configurações personalizadas e cumpra as especificações RFC para operações em uma LAN.
drop- Um bom exemplo de quando usar o drop é em uma conferência de segurança, em uma rede WiFi pública ou em uma interface conectada diretamente à Internet. drop assume que todas as solicitações não solicitadas são maliciosas, incluindo probes ICMP. Portanto, qualquer solicitação fora do estado não receberá uma resposta. A desvantagem da queda é que ele pode interromper a funcionalidade de aplicativos em certas situações que exigem conformidade RFC estrita.
work- Você está em uma LAN corporativa semissegura. Onde todo o tráfego pode ser considerado moderadamente seguro. Isso significa que não é WiFi e possivelmente temos IDS, IPS e segurança física ou 802.1x em vigor. Também devemos estar familiarizados com as pessoas que usam a LAN.
home- Você está em uma LAN doméstica. Você é pessoalmente responsável por cada sistema e usuário na LAN. Você conhece todas as máquinas da LAN e sabe que nenhuma foi comprometida. Freqüentemente, novos serviços são apresentados para compartilhamento de mídia entre indivíduos confiáveis e você não precisa perder tempo por questões de segurança.
As zonas e interfaces de rede funcionam de um a vários níveis. Uma interface de rede só pode ter uma única zona aplicada a ela por vez. Enquanto, uma zona pode ser aplicada a várias interfaces simultaneamente.
Vamos ver quais zonas estão disponíveis e quais são as zonas atualmente aplicadas.
[[email protected]]# firewall-cmd --get-zones
work drop internal external trusted home dmz public block
[[email protected]]# firewall-cmd --get-default-zone
public
[[email protected]]#
Pronto para adicionar algumas regras personalizadas no firewalld?
Primeiro, vamos ver como é a nossa caixa, para um scanner de porta de fora.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00046s latency).
Not shown: 1023 filtered ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds
bash-3.2#
Vamos permitir as solicitações de entrada na porta 80.
Primeiro, verifique qual zona é aplicada como padrão.
[[email protected]]# firewall-cmd --get-default-zone
public
[[email protected]]#
Em seguida, defina a regra permitindo a porta 80 para a zona padrão atual.
[[email protected]]# firewall-cmd --zone=public --add-port = 80/tcp
success
[[email protected]]#
Agora, vamos verificar nossa caixa após permitir as conexões da porta 80.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00053s latency).
Not shown: 1022 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http
Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds
bash-3.2#
Agora permite tráfego não solicitado para 80.
Vamos colocar a zona padrão para descartar e ver o que acontece com a varredura de porta.
[[email protected]]# firewall-cmd --set-default-zone=drop
success
[[email protected]]# firewall-cmd --get-default-zone
drop
[[email protected]]#
Agora vamos examinar o host com a interface de rede em uma zona mais segura.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00094s latency).
All 1024 scanned ports on centos.shared (10.211.55.1) are filtered
Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds
bash-3.2#
Agora, tudo é filtrado de fora.
Conforme demonstrado abaixo, o host nem mesmo responderá às solicitações de ping ICMP quando em queda .
bash-3.2# ping 10.211.55.1
PING 10.211.55.1 (10.211.55.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Vamos definir a zona padrão como pública novamente.
[[email protected]]# firewall-cmd --set-default-zone=public
success
[[email protected]]# firewall-cmd --get-default-zone
public
[[email protected]]#
Agora vamos verificar nosso conjunto de regras de filtragem atual em público .
[[email protected]]# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s5
sources:
services: dhcpv6-client ssh
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
[[email protected] rdc]#
Conforme configurado, nossa regra de filtro da porta 80 está apenas dentro do contexto da configuração em execução. Isso significa que assim que o sistema for reinicializado ou o serviço firewalld for reiniciado, nossa regra será descartada.
Estaremos configurando um daemon httpd em breve, então vamos fazer nossas mudanças persistentes -
[[email protected]]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[[email protected]]# systemctl restart firewalld
[[email protected]]#
Agora, nossa regra de porta 80 na zona pública é persistente em reinicializações e reinicializações de serviço.
A seguir estão os comandos firewalld comuns aplicados com firewall-cmd .
Comando | Açao |
---|---|
firewall-cmd --get-zones | Lista todas as zonas que podem ser aplicadas a uma interface |
firewall-cmd —status | Retorna o status atual do serviço firewalld |
firewall-cmd --get-default-zone | Obtém a zona padrão atual |
firewall-cmd --set-default-zone = <zone> | Define a zona padrão no contexto atual |
firewall-cmd --get-active-zone | Obtém as zonas atuais no contexto, conforme aplicado a uma interface |
firewall-cmd --zone = <zone> --list-all | Lista a configuração da zona fornecida |
firewall-cmd --zone = <zone> --addport = <port / transport protocol> | Aplica uma regra de porta ao filtro de zona |
--permanente | Torna as alterações na zona persistentes. Sinalizador é usado em linha com comandos de modificação |
Estes são os conceitos básicos de administração e configuração do firewalld .
Configurar serviços de firewall baseados em host no CentOS pode ser uma tarefa complexa em cenários de rede mais sofisticados. O uso e a configuração avançados de firewalld e iptables no CentOS podem levar a um tutorial inteiro. No entanto, apresentamos o básico que deve ser suficiente para completar a maioria das tarefas diárias.