Un firewall es una forma de proteger su sistema del tráfico no deseado de redes externas. Las herramientas de firewall comerciales y gratuitas son abundantes; algunos de ellos incluyen Iptables, UFW, Juniper, pfSense, SonicWall y más.
Entre ellos, FirewallD es una herramienta de software de firewall gratuita para el sistema operativo CentOS/RHEL/Fedora. Es un controlador frontend para iptables y proporciona una interfaz de línea de comandos para implementar reglas de firewall. En comparación con Iptables, FirewallD usa zonas y servicios en lugar de cadenas y reglas, y administra los conjuntos de reglas de forma dinámica. FirewallD proporciona la herramienta de línea de comandos firewall-cmd para administrar el tiempo de ejecución y la configuración permanente.
Características
- Admite protocolo IPv4 e IPv6
- Lista de zonas predefinidas
- CLI y configuración gráfica
- API D-Bus completa
- Puente Ethernet
- Registro simple de paquetes denegados
- Lista blanca de aplicaciones
- Integración de marionetas
En este tutorial, aprenderemos cómo configurar un firewall con FirewallD en CentOS 8.
Requisitos
- Un nuevo CentOS 8 VPS en la plataforma en la nube Atlantic.Net
- Una contraseña de root configurada en su servidor
Paso 1:Cree un servidor en la nube de Atlantic.Net
Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo CentOS 8 como sistema operativo con al menos 1 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.
Una vez que haya iniciado sesión en su servidor CentOS 8, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.
dnf update -y
Paso 2:Instale el cortafuegos
dnf install firewalld -y
Una vez instalado, inicie el servicio FirewallD y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:
systemctl start firewalld systemctl enable firewalld
También puede verificar el estado de FirewallD usando el siguiente comando:
firewall-cmd --state
Salida:
running
Paso 3:uso básico de FirewallD
FirewallD administra un conjunto de reglas usando zonas. Cada zona tiene su propia configuración para aceptar o rechazar paquetes según el nivel de confianza que tenga en las redes a las que está conectada su computadora.
Puede listar todas las zonas disponibles usando el siguiente comando:
firewall-cmd --get-zones
Debería ver la siguiente lista:
block dmz drop external home internal public trusted work
Para obtener una lista de todas las zonas activas, ejecute el siguiente comando:
firewall-cmd --get-active-zones
Debería ver la siguiente lista:
public interfaces: eth0 eth1
Puede enumerar la zona predeterminada configurada para conexiones de red usando el siguiente comando:
firewall-cmd --get-default-zone
Salida:
public
Para cambiar la zona predeterminada de pública a hogar usando el siguiente comando:
firewall-cmd --set-default-zone=home --permanent
Para mostrar más información sobre cualquier zona usando el siguiente comando:
firewall-cmd --info-zone public
Deberías obtener el siguiente resultado:
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
También puede enumerar todos los servicios disponibles ejecutando el siguiente comando:
firewall-cmd --get-services
Deberías obtener el siguiente resultado:
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell kube-apiserver 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
Paso 4:permitir y denegar puertos con Firewalld
Firewalld proporciona la herramienta de línea de comandos firewall-cmd para agregar y eliminar puertos en su sistema.
Por ejemplo, para permitir el puerto TCP 80 y 22 en la zona pública, ejecute el siguiente comando:
firewall-cmd --zone=public --permanent --add-port=80/tcp --add-port=22/tcp
A continuación, vuelva a cargar el demonio FirewallD para guardar la configuración:
firewall-cmd --reload
Ahora, enumere el puerto agregado con el siguiente comando:
firewall-cmd --info-zone public
Debería ver el siguiente resultado:
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: 80/tcp 22/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
También puede denegar o quitar el puerto de la zona fácilmente usando la opción –remove-port.
Por ejemplo, para denegar o eliminar el puerto 80 de la zona pública, ejecute el siguiente comando:
firewall-cmd --zone=public --permanent --remove-port=80/tcp
Paso 5:Permitir y denegar servicios con FirewallD
También puede permitir y denegar por nombre de servicio en lugar de usar un puerto con FirewallD.
Por ejemplo, permita el servicio FTP en la zona pública ejecutando el siguiente comando:
firewall-cmd --zone=public --permanent --add-service=ftp firewall-cmd --reload
Puede denegar o eliminar el servicio FTP de la zona pública mediante el siguiente comando:
:
firewall-cmd --zone=public --permanent --remove-service=ftp firewall-cmd --reload
Paso 6:Configure el enmascaramiento de IP con FirewallD
El enmascaramiento de IP es un proceso o método que permite que sus computadoras en una red con direcciones IP privadas se comuniquen con Internet utilizando la dirección de su servidor. Es muy útil cuando desea que otra computadora se comunique con Internet sin comprar IP adicionales de su ISP.
Antes de configurar el enmascaramiento de IP, verifique si el enmascaramiento está activo o no con el siguiente comando:
firewall-cmd --zone=public --query-masquerade
Debería ver que el enmascaramiento de IP está deshabilitado en la zona pública como se muestra a continuación:
no
Ahora, configure el enmascaramiento de IP usando el siguiente comando:
firewall-cmd --zone=public --add-masquerade firewall-cmd --reload
También puede deshabilitar el enmascaramiento de IP usando la opción –remove-masquerade:
firewall-cmd --zone=public --remove-masquerade firewall-cmd --reload
Conclusión
En la guía anterior, aprendió a usar FirewallD para bloquear el tráfico no deseado en su sistema. Ahora debería poder limitar todas las conexiones innecesarias y proteger su servidor de los atacantes. ¡Prueba FirewallD en un VPS de Atlantic.Net!