Gestió de serveis
Gestió portuària
Habilitant FirewallD
Conclusió
FirewallD és un tallafoc gestionat dinàmicament que proporciona suport per a les regles del tallafoc IPv4 i IPv6 i les zones del tallafoc que està disponible als servidors basats en RHEL 7. És un reemplaçament directe iptablesi funciona amb el codi del nucli netfilter.
En aquest article farem un breu cop d'ull a la gestió del tallafoc a CentOS 7 mitjançant l' firewall-cmdordre.
Comprovant si FirewallD s'està executant
El primer pas és comprovar si FirewallD està instal·lat i en funcionament. Això es pot fer mitjançant l' systemdexecució del següent:
$ 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 2016-03-10 15:07:00 UTC; 1min 30s ago
...
Alternativament, podeu comprovar amb l' firewall-cmdeina:
$ firewall-cmd --state
running
Gestió de zones
FirewallD funciona utilitzant el concepte d' zoneson una zona defineix el nivell de confiança utilitzat per a una connexió. Podeu dividir diferents interfícies de xarxa en diferents zones per tal d'aplicar regles de tallafoc específiques per interfície o podeu utilitzar una zona per a totes les interfícies.
Fora de la caixa, tot es fa a la publiczona predeterminada , però hi ha altres zones preconfigurades que també es poden aplicar.
Llista de totes les zones disponibles
És possible que hàgiu d'obtenir una llista de totes les zones disponibles, de les quals n'hi ha diverses fora de la caixa. De nou, això es pot fer amb firewall-cmd:
$ firewall-cmd --get-zones
block dmz drop external home internal public trusted work
Comprovació de la zona per defecte
Podeu descobrir la zona per defecte que està configurada actualment mitjançant firewall-cmd:
$ firewall-cmd --get-default-zone
public
Si voleu canviar la zona per defecte (per exemple, a home), això es pot fer executant:
$ firewall-cmd --set-default-zone=home
success
Aquesta informació es reflectirà al fitxer de configuració principal, /etc/firewalld/firewalld.conf. Tanmateix, es recomana que no modifiqueu aquest fitxer manualment i que utilitzeu firewall-cmd.
Comprovació de les zones assignades actualment
Podeu obtenir una llista de les zones a les quals teniu les interfícies assignades executant:
$ firewall-cmd --get-active-zones
public
interfaces: eth0
També podeu comprovar la zona d'una única interfície ( eth0en aquest cas) executant:
$ firewall-cmd --get-zone-of-interface=eth0
public
Creació de zones
Si les zones preconfigurades per defecte no s'adapten del tot a les vostres necessitats, la manera més senzilla de crear una zona nova ( zone1) és de nou mitjançant firewall-cmd:
$ firewall-cmd --permanent --new-zone=zone1
success
Després de la creació, heu de tornar a carregar:
$ firewall-cmd --reload
success
Aplicació d'una zona a una interfície
Per assignar permanentment una interfície de xarxa a una zona, podeu utilitzar, firewall-cmdperò recordeu incloure el --permanentsenyalador per mantenir el canvi. Si feu servir NetworkManager, també hauríeu d'assegurar-vos d'utilitzar nmcliper configurar la zona de connexió.
$ firewall-cmd --permanent --zone=internal --change-interface=eth1`
success
Aconseguint la configuració permanent d'una zona
Per comprovar la configuració permanent d'una zona ( publicen aquest cas), incloses les interfícies assignades, els serveis permesos, la configuració del port i més, executeu:
$ firewall-cmd --permanent --zone=public --list-all
public (default)
interfaces:
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
Gestió de serveis
Un cop hàgiu assignat i configurat les vostres zones necessàries, podeu començar a afegir serveis a les zones. Els serveis descriuen els protocols i els ports als quals es pot accedir per a una zona.
Llistat dels serveis existents
Una sèrie de serveis comuns estan preconfigurats dins de firewalld. Aquests es poden enumerar:
$ firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https
També podeu obtenir una llista dels serveis habilitats per a la zona predeterminada:
$ firewall-cmd --list-services
dhcpv6-client ssh
Afegir un servei a una zona
Podeu habilitar un servei determinat per a una zona ( public) permanentment utilitzant la --add-servicebandera:
$ firewall-cmd --permanent --zone=public --add-service=http
success
A continuació, torneu a carregar la sessió actual del tallafoc:
$ firewall-cmd --reload
success
Aleshores, per verificar-ho, s'ha afegit:
$ firewall-cmd --zone=public --list-services
dhcpv6-client http ssh
Eliminació d'un servei d'una zona
Podeu eliminar un servei determinat per a una zona ( public) permanentment utilitzant la --remove-servicebandera:
$ firewall-cmd --permanent --zone=public --remove-service=http
success
A continuació, torneu a carregar la sessió actual del tallafoc:
$ firewall-cmd --reload
success
Aleshores, per verificar-ho, s'ha afegit:
$ firewall-cmd --zone=public --list-services
dhcpv6-client ssh
Afegir/eliminar diversos serveis d'una zona
Podeu afegir o eliminar diversos serveis (per exemple, httpi https) d'una zona, d'un en un o tots alhora, embolicant els noms dels serveis desitjats entre claus ( {, }):
$ firewall-cmd --permanent --zone=public --add-service=
success
$ firewall-cmd --permanent --zone=public --list-services
dhcpv6-client http https ssh
Creació de nous serveis
De vegades és possible que hàgiu d'afegir nous serveis personalitzats, per exemple, si heu canviat el port del dimoni SSH. Els serveis es defineixen mitjançant fitxers XML trivials, els fitxers predeterminats es troben a /usr/lib/firewalld/services:
$ tree /usr/lib/firewalld/services
/usr/lib/firewalld/services
├── amanda-client.xml
├── bacula-client.xml
├── bacula.xml
├── dhcpv6-client.xml
├── dhcpv6.xml
├── dhcp.xml
├── dns.xml
├── freeipa-ldaps.xml
├── freeipa-ldap.xml
├── freeipa-replication.xml
├── ftp.xml
├── high-availability.xml
├── https.xml
├── http.xml
...
La manera més senzilla de crear un servei nou és copiar un d'aquests fitxers de servei existents i modificar-lo. Els serveis personalitzats haurien de residir a /etc/firewalld/services. Per exemple, per personalitzar el servei SSH:
$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-custom.xml
El contingut d'aquest fitxer copiat hauria de semblar:
$ cat /etc/firewalld/services/ssh-custom.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" port="22"/>
</service>
Per canviar el port, hauríeu de canviar el nom curt del servei i el port. També podeu canviar la descripció si ho desitgeu, però només són metadades addicionals que poden utilitzar una interfície d'usuari o una altra aplicació. En aquest exemple, estic canviant el port a 1234:
$ nano /etc/firewalld/services/ssh-custom.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH-Custom</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" port="1234"/>
</service>
Un cop desat, hauràs de tornar a carregar el tallafoc i després podràs aplicar la teva regla a la teva zona:
$ firewall-cmd --reload
success
$ firewall-cmd --permanent --zone=public --add-service=ssh-custom
success
Gestió portuària
A més d'utilitzar serveis, també podeu permetre manualment els ports per protocol. Per permetre el port TCP 7777per a la publiczona:
$ firewall-cmd --permanent --zone=public --add-port=7777/tcp
success
També podeu afegir un interval de ports:
$ firewall-cmd --permanent --zone=public --add-port=7000-8000/tcp
success
Per eliminar (i, per tant, denegar) el port TCP 7777de la publiczona:
$ firewall-cmd --permanent --zone=public --remove-port=7777/tcp
success
També podeu llistar els ports permesos actualment per a una zona determinada ( public) després de tornar a carregar la sessió del tallafoc actual:
$ firewall-cmd --zone=public --list-ports
7000-8000/tcp
Habilitant FirewallD
Un cop hàgiu configurat el tallafoc al vostre gust, haureu d'assegurar-vos d'activar-lo mitjançant systemd per assegurar-vos que s'iniciï a l'inici:
$ systemctl enable firewalld
Conclusió
Hi ha moltes més configuracions i opcions dins de FirewallD, com ara el reenviament de ports, l'emmascarament i la comunicació amb el tallafoc mitjançant D-Bus. Esperem que aquesta guia us hagi ajudat a entendre els conceptes bàsics i us hagi donat les eines per començar amb el tallafocs des del vostre servidor. Algunes lectures addicionals a continuació us ajudaran a treure el màxim profit del vostre tallafoc.