Introducción
Firewalld incorpora a CentOS la novedad de administrar zonas de seguridad. Para los que no saben qué es esto, les cuento:
Se trata de crear zonas y posteriormente asignarles una o más interfaces a cada una. Por ejemplo, podríamos crear las zonas “DMZ, LAN, INTERNET” y luego asignarles respectivamente las interfaces “eth0, eth1 y eth2”. Como es de suponer, esto nos permitirá mayor granularidad a la hora de filtrar el tráfico entre o hacia ellas.
Además soporta IPv4 e IPv6
Netfilter (La verdad de la milanesa)
Es el framework que hace la magia de packet filtering, stateless & stateful packet filtering, NAT, etc. Y vive en el kernel de Linux (a partir del kernel 2.4.x) Es importante mencionarlo porque en definitiva, antes usábamos por ejemplo system-config-firewall-tui y la cadena era así Firewall-tui–>IPTables Service–>IPTables Command–>Kernel (Netfilter) Y ahora sería así: Firewall-cmd–>Firewalld (daemon)–>IPTables Command–>Kernel(Netfilter)
Firewalld
Si usas CentOS con GUI podes configurar firewalld a través de su interfaz gráfica Firewall-config, el cual se comunica con IPTables Command y luego éste con el kernel (Netfilter).
Entendemos que firewalld es dinámico y no estático porque los cambios son realizables en cualquier momento y no es necesario salvar después de realizar modificaciones en la configuración. Además hacer cambios o reiniciarlo no interrumpe las conexiones existentes.
Firewall-cmd brinda el soporte para línea de comandos, desde el cual podes hacer cambios permanentes o no. Solo pueden ejecutar comandos el usuario root y miembros del grupo “Wheel”.
Firewalld guarda la configuración en varios archivos XML en /usr/lib/firewalld/ y /etc/firewalld/. Esto te permitirá editarlos, backapearlos o usarlos como template para futuras instalaciones.
Che pibe, qué diferencias hay entre firewalld e IPTables?
IPTables guarda su configuración en un solo archivo ubicado en /etc/sysconfig/iptables y firewalld lo hace en varios XML ubicados en /usr/lib/firewalld y /etc/firewall.
Con IPTables cada cambio que haces realiza un flush de todas las reglas viejas y comienza a leer las nuevas desde /etc/sysconfig/iptables. Mientras que al realizar cambios en Firewalld éste los sobrescribe y no crea nuevamente todas las reglas. Además es posible realizar cambios en producción sin perder las conexiones.
Ambos hablan con Netfilter, el cual realiza el filtrado de paquetes.
Zonas
Podemos crear nuestras propias zonas simplemente copiando las predefinidas en /etc/firewalld/zones o vía comandos, existe también la posibilidad de utilizar las que vienen por default:
Listado de zonas por default
DROP: Solo permite conexiones salientes. BLOCK: Solo permite conexiones que se inician desde adentro de la zona hacia afuera.
Las siguientes zonas solo permiten el tráfico IN que nosotros indiquemos: PUBLIC: DMZ: Ya todos sabemos de qué se trata una DMZ. Solo permite cierto tráfico IN. WORK HOME INTERNAL EXTERNAL: Se utiliza para redes externas con masquerade activo. Solo permite cierto tráfico IN. TRUSTED: Completamente abierta, acepta todo.
Comandos!
NOTA: Al realizar configuraciones desde la consola, es necesario
tener en mente lo siguiente:
Los comandos ejecutados sin el parámetro --permanent causan efecto inmediatamente.
Cuando utilizamos el parámetro --permanent será necesario reiniciar el servicio
(systemctl restart firewalld).
Ej: firewall-cmd –-permanent --zone=work --remove-service=smtp
firewall-cmd --reload
Comandos básicos
Lista de servicios por default: ls /usr/lib/firewalld/services/
Lista de servicios creados por usuarios: ls /etc/firewalld/services/ Verificar si firewalld está instalado: yum install firewalld firewall-config Iniciar firewalld systemctl start firewalld Verificar si firewalld está corriendo systemctl status firewalldfirewall-cmd –state
Reiniciar Firewalld systemctl restart firewalld || firewall-cmd –reload Reiniciar Firewalld e interrumpir todas la conexiones firewall-cmd –complete-reload Deshabilitar firewalld: systemctl disable firewalld systemctl stop firewalld Habilitar IPTABLES: systemctl disable firewalld systemctl stop firewalld yum install iptables-services systemctl start iptables systemctl start ip6tables systemctl enable iptables systemctl enable ip6tables
Activar ip forwarding vim /etc/sysctl.conf net.ipv4.ip_forward=1 sysctl -p
Panic Mode (Dropea todas la conexiones IN y OUT) firewall-cmd –panic-on firewall-cmd –panic-off
Mostrar el estado de Panic Mode firewall-cmd –query-panic
Comandos para zonas
Mostrar zonas activas firewall-cmd –get-active-zones
Mostrar todas las zonas disponibles
firewall-cmd –get-zones
Mostrar la zona asociada a una interfaz
firewall-cmd –get-zone-of-interface=em1
Mostrar todas las interfaces asociadas a una zona
firewall-cmd –zone=public –list-interfaces
Mostrar toda la configuracion de una zona
firewall-cmd –zone=public –list-all
Agregar una interfaz a una zona
firewall-cmd –zone=public –add-interface=em1
Mostrar la zona default
firewall-cmd –get-default-zone
Configurar la zona default
firewall-cmd –set-default-zone=public
Crear una nueva zona
firewall-cmd –permanent –new-zone=test
firewall-cmd –reload
Comandos para administrar permisos
Permitir servicio hacia una zona
firewall-cmd –zone=work –add-service=smtp
Eliminar servicio permitido hacia una zona
firewall-cmd –zone=work –remove-service=smtp
Permitir un puerto hacia una zona
firewall-cmd –zone=public –add-port=6556/tcp
Eliminar un puerto permitido hacia una zona
firewall-cmd –zone=public –remove-port=6556/tcp
Filtrar por origen
firewall-cmd –zone=trusted –add-source=10.16.22.0/24
Comandos para NAT y Port Forwarding
Mostrar el estado de masquerade de una zona firewall-cmd –zone=external –query-masquerade Habilitar masquerade a una zona firewall-cmd –zone=external –add-masquerade Deshabilitar masquerade a una zona firewall-cmd –zone=external –remove-masquerade Fowardear el Puerto 3753 al 22 en una zona firewall-cmd –zone=external –add-forward-port=port=22:proto=tcp:toport=3753 Forwardear el Puerto 22 de una zona a una IP interna firewall-cmd –zone=external –add-forward port=port=22:proto=tcp:toaddr=192.0.2.55
Forwardeat el Puerto 2055 a 22 hacia una IP interna firewall-cmd –zone=external –add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.0.2.55
Коментарі