Administrere tjenester
Havneledelse
Aktiverer FirewallD
Konklusjon
FirewallD er en dynamisk administrert brannmur som gir støtte for IPv4- og IPv6-brannmurregler og brannmursoner som er tilgjengelig på RHEL 7-baserte servere. Det er en direkte erstatning for iptablesog fungerer med kjernens netfilterkode.
I denne artikkelen vil vi ta en kort titt på hvordan du administrerer brannmuren på CentOS 7 ved å bruke firewall-cmdkommandoen.
Sjekker om FirewallD kjører
Det første trinnet er å sjekke om FirewallD er installert og kjører. Dette kan gjøres systemdved å kjøre følgende:
$ 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
...
Alternativt kan du sjekke ved å bruke firewall-cmdverktøyet:
$ firewall-cmd --state
running
Administrere soner
FirewallD opererer ved å bruke konseptet zoneshvor en sone definerte nivået av tillit som brukes for en tilkobling. Du kan dele forskjellige nettverksgrensesnitt i forskjellige soner for å bruke spesifikke brannmurregler per grensesnitt, eller du kan bruke én sone for alle grensesnitt.
Ut av esken gjøres alt på standardsonen public, men det er flere andre forhåndskonfigurerte soner som også kan brukes.
Viser alle tilgjengelige soner
Du må kanskje få en liste over alle tilgjengelige soner, hvorav det er flere ut av esken. Igjen, dette kan gjøres ved å bruke firewall-cmd:
$ firewall-cmd --get-zones
block dmz drop external home internal public trusted work
Kontrollerer standardsonen
Du kan finne standardsonen som for øyeblikket er konfigurert ved å bruke firewall-cmd:
$ firewall-cmd --get-default-zone
public
Hvis du ønsker å endre standardsonen (for eksempel til home), kan dette gjøres ved å kjøre:
$ firewall-cmd --set-default-zone=home
success
Denne informasjonen vil gjenspeiles i hovedkonfigurasjonsfilen, /etc/firewalld/firewalld.conf. Det anbefales imidlertid at du ikke endrer denne filen manuelt og i stedet bruker firewall-cmd.
Kontrollerer gjeldende tildelte soner
Du kan få en liste over sonene du har tildelt grensesnitt til ved å kjøre:
$ firewall-cmd --get-active-zones
public
interfaces: eth0
Du kan også sjekke sonen til et enkelt grensesnitt ( eth0i dette tilfellet) ved å kjøre:
$ firewall-cmd --get-zone-of-interface=eth0
public
Opprette soner
Hvis standard forhåndskonfigurerte soner ikke helt passer dine behov, er den enkleste måten å opprette en ny sone ( zone1) igjen via firewall-cmd:
$ firewall-cmd --permanent --new-zone=zone1
success
Etter opprettelsen må du laste inn på nytt:
$ firewall-cmd --reload
success
Bruke en sone til et grensesnitt
For å permanent tilordne et nettverksgrensesnitt til en sone, kan du bruke firewall-cmdmen husk å inkludere --permanentflagget for å fortsette endringen. Hvis du bruker NetworkManager, bør du også være sikker på å bruke for nmcliå angi tilkoblingssonen.
$ firewall-cmd --permanent --zone=internal --change-interface=eth1`
success
Få den permanente konfigurasjonen av en sone
For å sjekke den permanente konfigurasjonen av en sone ( publici dette tilfellet) inkludert tildelte grensesnitt, tillatte tjenester, portinnstillinger og mer, kjør:
$ firewall-cmd --permanent --zone=public --list-all
public (default)
interfaces:
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
Administrere tjenester
Når du har tildelt og konfigurert de nødvendige sonene dine, kan du begynne å legge til tjenester i sonene. Tjenester beskriver protokollene og portene som kan nås for en sone.
Liste over eksisterende tjenester
En rekke vanlige tjenester er forhåndskonfigurert i brannmuren. Disse kan listes opp:
$ 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
Du kan også få en liste over tjenestene som er aktivert for standardsonen:
$ firewall-cmd --list-services
dhcpv6-client ssh
Legge til en tjeneste i en sone
Du kan aktivere en gitt tjeneste for en sone ( public) permanent ved å bruke --add-serviceflagget:
$ firewall-cmd --permanent --zone=public --add-service=http
success
Og last deretter inn gjeldende brannmurøkt på nytt:
$ firewall-cmd --reload
success
Så, for å bekrefte at det ble lagt til:
$ firewall-cmd --zone=public --list-services
dhcpv6-client http ssh
Fjerne en tjeneste fra en sone
Du kan fjerne en gitt tjeneste for en sone ( public) permanent ved å bruke --remove-serviceflagget:
$ firewall-cmd --permanent --zone=public --remove-service=http
success
Og last deretter inn gjeldende brannmurøkt på nytt:
$ firewall-cmd --reload
success
Så, for å bekrefte at det ble lagt til:
$ firewall-cmd --zone=public --list-services
dhcpv6-client ssh
Legge til/fjerne flere tjenester fra en sone
Du kan legge til eller fjerne flere tjenester (for eksempel httpog https) fra en sone enten én om gangen eller alle samtidig ved å pakke de ønskede tjenestenavnene inn i krøllete klammeparenteser ( {, }):
$ firewall-cmd --permanent --zone=public --add-service=
success
$ firewall-cmd --permanent --zone=public --list-services
dhcpv6-client http https ssh
Opprette nye tjenester
Noen ganger må du kanskje legge til nye tilpassede tjenester - for eksempel hvis du har endret porten for SSH-demonen. Tjenester er definert ved hjelp av trivielle XML-filer, med standardfilene i /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
...
Den enkleste måten å opprette en ny tjeneste på er å kopiere en av disse eksisterende tjenestefilene og endre den. Tilpassede tjenester bør ligge i /etc/firewalld/services. For eksempel, for å tilpasse SSH-tjenesten:
$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-custom.xml
Innholdet i denne kopierte filen skal se slik ut:
$ 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>
For å endre porten, bør du endre kortnavnet for tjenesten og porten. Du kan også endre beskrivelsen hvis du ønsker det, men dette er bare ekstra metadata som kan brukes av et brukergrensesnitt eller en annen applikasjon. I dette eksemplet endrer jeg porten til 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>
Når den er lagret, må du laste inn brannmuren på nytt, og deretter kan du bruke regelen din på sonen din:
$ firewall-cmd --reload
success
$ firewall-cmd --permanent --zone=public --add-service=ssh-custom
success
Havneledelse
I tillegg til å bruke tjenester, kan du også manuelt tillate porter etter protokoll. Slik tillater du TCP-porten 7777for publicsonen:
$ firewall-cmd --permanent --zone=public --add-port=7777/tcp
success
Du kan også legge til et portområde:
$ firewall-cmd --permanent --zone=public --add-port=7000-8000/tcp
success
For å fjerne (og dermed nekte) TCP-port 7777for publicsonen:
$ firewall-cmd --permanent --zone=public --remove-port=7777/tcp
success
Du kan også liste opp gjeldende tillatte porter for en gitt sone ( public) etter å ha lastet inn gjeldende brannmurøkt på nytt:
$ firewall-cmd --zone=public --list-ports
7000-8000/tcp
Aktiverer FirewallD
Når du har konfigurert brannmuren etter din smak, bør du sørge for å aktivere den via systemd for å sikre at den starter ved oppstart:
$ systemctl enable firewalld
Konklusjon
Det er mange flere innstillinger og alternativer i FirewallD, for eksempel portvideresending, maskering og kommunikasjon med brannmuren via D-Bus. Forhåpentligvis har denne veiledningen imidlertid hjulpet deg med å forstå det grunnleggende og har gitt deg verktøyene for å komme i gang med brannmuring utenfor serveren din. Litt ekstra lesing nedenfor vil hjelpe deg å få mest mulig ut av brannmuren din.