O firewall en Linux xoga un papel vital na protección dun sistema informático. Actúa como barreira, controlando e filtrando o tráfico da rede para protexer o sistema de accesos non autorizados, ataques e outras ameazas. Sen un Firewall debidamente configurado, o servidor podería ser vulnerable a varios tipos de ciberataques, o que levaría a graves consecuencias para a seguridade e confidencialidade dos datos.
Neste artigo, analizaremos dúas ferramentas principais para configurar o Firewall de Linux: firewalld e iptables. Realizaremos unha análise comparativa das súas características, funcionalidades e vantaxes. Ademais, proporcionaremos instrucións detalladas para configurar e usar cada unha destas ferramentas, así como discutiremos as mellores prácticas para protexer o teu sistema cun Firewall na plataforma Linux. Todas as accións demostraranse nun servidor virtual con acceso root.
Configurando firewalld en Linux
Firewalld (Firewall Daemon) é un programa para xestionar o cortafuegos nos sistemas operativos Linux. Proporciona unha interface de usuario para configurar regras de cortafuegos, permitir ou bloquear conexións de aplicacións de rede. Está preinstalado por defecto na maioría das distribucións de servidor. Se Firewalld non está preinstalado, pódese instalar independentemente dos repositorios oficiais da distribución.
Para sistemas Red Hat (como RHEL, CentOS, Fedora) a instalación realízase co comando:
yum install firewalld
Para Debian/Ubuntu:
apt-get install firewalld
Despois da instalación, pódese iniciar e activar inmediatamente co comando:
systemctl start firewalld
A continuación, cómpre engadir o servizo ao inicio:
systemctl enable firewalld
Neste punto, recomendamos desactivar ufw, xa que non se recomenda o uso simultáneo desta ferramenta con firewalld ou iptables. Comproba o estado:
systemctl status ufw
Para detelo, introduza o comando:
systemctl stop ufw
Para a desactivación completa:
ufw disable
Despois destas accións, pode proceder a configurar o firewalld.
En primeiro lugar, é necesario definir zonas de confianza. Firewalld usa o concepto de zonas para determinar o nivel de confianza das interfaces de rede. A cada interface asígnaselle unha zona e as regras de firewall aplícanse en función da zona. A lista de todas as zonas dispoñibles ábrese co comando:
firewall-cmd --get-zones
Normalmente utilízanse 4 zonas principais:
- público: Esta zona é para redes que considere inseguras;
- Privado: Aplícase a redes domésticas ou outras conexións de rede de confianza;
- interior: Úsase para redes internas, como as dentro dunha organización ou rede corporativa;
- DMZ: Esta zona é onde adoitan colocarse servidores que deberían ser accesibles desde internet.
Non obstante, este é só un exemplo. Podes engadir a túa propia zona usando o comando:
firewall-cmd --permanent --new-zone=nameyourzone
Despois de engadir, é necesaria unha recarga:
firewall-cmd --reload
Para eliminar unha zona, úsase un método similar
firewall-cmd --permanent --delete-zone=nameyourzone
Despois de definir as zonas, é necesario permitir o tráfico para os servizos e portos necesarios. Para permitir un determinado servizo, use o comando:
firewall-cmd --zone=public --add-service=name
Onde nome é o nome do servizo. Por exemplo, para permitir o tráfico para Apache:
firewall-cmd --zone=public --add-service=http
Para definir portos permitidos, use o comando:
firewall-cmd --zone=public --add-port=number/protocol
Por exemplo, o porto estándar 22 para SSH sería así:
firewall-cmd --zone=public --add-port=22/tcp
Nesta fase, as regras principais xa están creadas. A continuación, determine como se procesará o tráfico dependendo da orixe, o destino, o porto e outros criterios. Para engadir unha regra (usando a zona pública como exemplo):
firewall-cmd --zone=public rule
Por exemplo, para permitir o tráfico entrante desde calquera fonte ao porto 80 (HTTP):
firewall-cmd --zone=public --add-port=80/tcp --permanent
Para eliminar unha regra:
firewall-cmd --permanent --remove-rule=rule_specification
Onde regra é o tipo de regra (por exemplo, porto, servizo, regra enriquecida, etc.) e especificación_regra é a especificación da propia regra.
Despois de facer cambios na configuración de Firewalld, é necesario gardalos e aplicalos. Para gardar os cambios, use o comando:
firewall-cmd --runtime-to-permanent
Para aplicar os cambios:
firewall-cmd --reload
Ao completar a configuración, pode verificar os parámetros seleccionados abrindo a lista de todas as regras:
firewall-cmd --list-all
Se aparece algún problema, comprobe os rexistros de Firewalld co comando:
journalctl -u firewalld
Nota: Só explicamos o algoritmo xeral para configurar a conexión. A ferramenta ten unha ampla funcionalidade. Para obter información completa sobre todas as opcións dispoñibles, podes usar a documentación oficial ou abrir a axuda:
firewall-cmd --help
Configurando iptables en Linux
A diferenza de Firewalld, iptables é unha ferramenta máis antiga pero aínda moi utilizada en Linux para xestionar o firewall. Ofrece un enfoque máis directo e flexible para as regras de filtrado de paquetes a nivel do núcleo de Linux. Non obstante, iptables require coñecementos e experiencia máis avanzados en comparación con Firewalld, polo que é menos accesible para os principiantes. Comprobe a versión preinstalada da ferramenta co comando:
iptables -V
Se a ferramenta non está instalada, terá que ser instalada. O comando para a instalación en Ubuntu, Debian:
apt install iptables
Para sistemas Red Hat (por exemplo, CentOS, Fedora):
yum install iptables
O comando para activar despois da instalación:
systemctl start iptables
Para engadir ao inicio, executa:
systemctl enable iptables
Antes de comezar a configuración de iptables, é importante entender como funciona. Isto é axudado pola sintaxe do programa. Ten o seguinte aspecto:
iptables -t table action chain additional_parameters
Afondemos en cada elemento.
Iptables ten catro táboas principais: filter, nat, mangle e raw . Cada unha delas está deseñada para procesar certos tipos de paquetes e ten as súas propias cadeas de regras:
- filtrar: Esta é a táboa de uso máis frecuente, que contén regras de filtrado de paquetes. Úsase para tomar decisións sobre se permitir ou denegar paquetes.
- nat: Esta táboa úsase para modificar enderezos de rede e portos en paquetes. Adoita usarse para configurar o enmascarado (NAT).
- mangle: Nesta táboa, pode modificar as cabeceiras dos paquetes. Utilízase para operacións especializadas de paquetes, como marcar.
- cru: Esta táboa úsase para configurar as regras que se aplican antes de pasar polo sistema de seguimento de conexións. Normalmente úsase para configurar regras que non deberían ser modificadas polo sistema de seguimento, como eliminar paquetes de certos enderezos.
Cada táboa contén un conxunto de cadeas. As cadeas son unha secuencia de regras que se verifican secuencialmente. Hai tres cadeas predefinidas:
- ENTRADA (entrada). As regras desta cadea determinan que facer cos paquetes entrantes.
- OUTPUT (saínte). Esta cadea aplícase a todos os paquetes que o teu ordenador envía a outros dispositivos ou ordenadores da rede.
- FORWARD (reenvío). As regras desta cadea especifican que facer cos paquetes reenviados.
Finalmente, cada cadea posúe algunha acción (obxectivo). Na práctica, utilízanse 5 accións principais:
- ACEPTAR: Permitir que o paquete pase polo firewall.
- GOTAR: Rexeita o paquete e bótao sen resposta.
- REXECTAR: Rexeita o paquete e envía ao remitente unha mensaxe de erro ICMP.
- LOG: rexistre o paquete no rexistro do sistema e realice outra acción (por exemplo, ACEPTAR ou SOLTAR).
- RETORNO: Deixa de comprobar as regras da cadea actual e volve á cadea de chamada (se é o caso).
Para iniciar a configuración, abra a lista de regras existentes co comando:
iptables -L
Como guía para configurar Iptables, vexamos exemplos prácticos dos comandos máis utilizados. Para maior comodidade, dividiremos os exemplos en 3 grupos, dependendo da cadea específica.
ENTRADA DA CADEA :
- Permitir o tráfico entrante a través do protocolo TCP no porto 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. Permitir o tráfico entrante a través do protocolo UDP no porto 22:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Bloquea o tráfico entrante dun enderezo IP específico:
iptables -A INPUT -s 192.168.1.100 -j DROP
Saída da cadea :
- Permitir o tráfico de saída a través do protocolo TCP no porto 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. Permitir o tráfico de saída a través do protocolo UDP no porto 80:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Bloquee o tráfico de saída a un porto específico (por exemplo, 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
Cadea cara adiante :
- Bloquear o tráfico reenviado desde un rango específico de enderezos IP:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. Bloquee o reenvío de paquetes desde unha interface de rede específica:
iptables -A FORWARD -i eth1 -j DROP
3. Limite o número de conexións simultáneas para un porto específico (neste exemplo, 10 conexións por minuto no porto 80):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
Como podes ver, en cada caso, úsase un argumento adicional (comando). Para obter unha lista completa de posibles argumentos e soporte xeral para a funcionalidade da ferramenta, introduza:
iptables -h
Para asegurarse de que a configuración é correcta, introduza de novo o comando para ver a lista de regras:
iptables -L
Para eliminar unha regra específica, use o comando:
iptables -D chain rule_number
Por exemplo, se queres eliminar a regra número 1 da cadea INPUT, o comando terá este aspecto:
iptables -D INPUT 1
Para eliminar todas as regras cun só comando:
iptables -F
Nota importante : as regras de iptables non se gardan automaticamente despois de reiniciar o sistema ou o servizo. Para gardar as regras, é necesario engadilas a un ficheiro de configuración e restauralas despois de reiniciar. As utilidades iptables-save e iptables-restore poden axudar con isto. Para gardar as regras, introduce o comando:
iptables-save > /etc/iptables/rules.v4
Isto gárdase as regras de iptables actuais no ficheiro rules.v4. Para restaurar despois do reinicio, introduza:
iptables-restore < /etc/iptables/rules.v4
Este comando restaura as regras do ficheiro rules.v4.
Conclusión
Configurar o firewall en Linux usando firewalld ou iptables é un aspecto importante para garantir a seguridade do servidor. Ambas ferramentas ofrecen medios fiables para xestionar o tráfico da rede e protexer o sistema de accesos non autorizados e ciberataques. A elección entre firewalld e iptables depende das necesidades e preferencias específicas do usuario, tendo en conta as súas diferentes funcionalidades e puntos fortes.