Ero sivun ”FirewallD” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
Ei muokkausyhteenvetoa
p (<syntaxhighlight>)
 
(11 välissä olevaa versiota toisen käyttäjän tekemänä ei näytetä)
Rivi 10: Rivi 10:
[[Tiedosto:Firewalld ja iptables.png|right|thumb|FirewallD- ja iptables-palvelut juttelevat kernelin netfilter-pakettisuodattimelle iptables-työkalun välityksellä]]
[[Tiedosto:Firewalld ja iptables.png|right|thumb|FirewallD- ja iptables-palvelut juttelevat kernelin netfilter-pakettisuodattimelle iptables-työkalun välityksellä]]


'''FirewallD''' ('''Dynamic Firewall''') on [[Red Hat]]in kehittämä dynaaminen [[palomuuri]]. FirewallD on dynaamisena palomuurina monipuolisempi ja tehokkaampi verrattuna perinteiseen staattiseen palomuuriin, kuten [[iptables]]. Vanhan tyylisessä staattisessa palomuurissa uudet asetukset otetaan käyttöön käynnistämällä palomuuri uudelleen, jolloin luetaan uudet asetukset. FirewallD sen sijaan sallii asetusten muuttamisen suoraan lennosta. Kuten iptables, myös FirewallD on vain työkalu joka käyttää linux-kernelin [[netfilter]]iä.
'''FirewallD''' (''Dynamic Firewall'') on [[Red Hat]]in kehittämä dynaaminen [[palomuuri]]. FirewallD on dynaamisena palomuurina monipuolisempi ja tehokkaampi verrattuna perinteiseen staattiseen palomuuriin, kuten [[iptables]]. Vanhan tyylisessä staattisessa palomuurissa uudet asetukset otetaan käyttöön käynnistämällä palomuuri uudelleen, jolloin luetaan uudet asetukset. FirewallD sen sijaan sallii asetusten muuttamisen suoraan lennosta. Kuten iptables, myös FirewallD on vain työkalu joka käyttää linux-kernelin [[netfilter]]iä.


==Asennus==
==Asennus==
Rivi 17: Rivi 17:
==Käyttö==
==Käyttö==
{{Oikeudet}}
{{Oikeudet}}
FirewallD:n asetuksia voidaan säätää graafisella <tt>firewall-config</tt>-ohjelmalla tai tekstipohjaisella <tt>firewall-cmd</tt>-ohjelmalla. [[Systemd]] hallitsee FirewallD:tä <tt>firewalld.service</tt>:n avulla, eli FirewallD voidaan käynnistää komennolla:
FirewallD:n asetuksia voidaan säätää graafisella <tt>firewall-config</tt>-ohjelmalla tai tekstipohjaisella <tt>firewall-cmd</tt>-ohjelmalla. [[Systemd]] hallitsee FirewallD:tä <tt>firewalld.service</tt>:n avulla, eli FirewallD voidaan käynnistää ja asettaa käynnistymään tietokoneen käynnistyessä komennoilla:
  # systemctl start firewalld.service
  # systemctl start firewalld.service
# systemctl enable firewalld.service


Lisätietoa systemd:n käytöstä löytyy [[systemd|systemd:n omasta artikkelista]].
Lisätietoa systemd:n käytöstä löytyy [[systemd|systemd:n omasta artikkelista]].
Rivi 25: Rivi 26:
  $ firewall-cmd --state
  $ firewall-cmd --state


===Asetusten tarkastelu===
===Alueet===
FirewallD käyttää ''alueita'' (''zones'') asetusten hallintaan. Oletusalue saadaan komennolla:
FirewallD käyttää eri ''alueita'' (engl. ''zones''). Oletusalue on määritelty <tt>/etc/firewalld/firewalld.conf</tt> -tiedostossa.
{| class=wikitable
! colspan="2" | Alueet järjestettynä tiukimmasta sallivimpaan
|-
! Alue (''zone'')
! Kuvaus
|-
| '''drop'''
| Alimman luottamustason alue. Kaikki sisääntulevat yhteydet pudotetaan ilman vastausta. Ainoastaan ulospäin menevät yhteydet sallitaan.
|-
| '''block'''
| Samankaltainen kuin '''drop''', mutta sisääntuleviin yhteyksiin vastataan <tt>icmp-host-prohibited</tt> tai <tt>icmp6-adm-prohibited</tt> -viestillä.
|-
| '''public'''
| Tarkoitettu julkisiin epäluotettaviin verkkoihin, kuten avoimiin WLAN-verkkoihin, joissa ei luoteta muihin verkon laitteisiin.
|-
| '''external'''
| Tarkoitettu erityisesti ulkoverkkoihin reitittimiin jotka tekevät osoitteenmuutosta.
|-
| '''dmz'''
| Käytetään laitteissa jotka sijaitsevat [[wikipedia:fi:Demilitarisoitu alue (tietotekniikka)|DMZ-alueella]].
|-
| '''work'''
| Tarkoitettu työpaikan verkkoihin joissa voidaan luottaa pääosin muihin laitteisiin.
|-
| '''home'''
| Tarkoitettu kodin verkkoihin joissa voidaan luottaa pääosin muihin laitteisiin.
|-
| '''internal'''
| Tarkoitettu sisäverkkoihin, joissa voidaan luottaa pääosin muihin laitteisiin.
|-
| '''trusted'''
| Kaikki yhteydet sallitaan.
|}
 
===Alueiden tarkastelu===
Käytössä oleva oletusalue saadaan komennolla:
  $ firewall-cmd --get-default-zone
  $ firewall-cmd --get-default-zone


Rivi 39: Rivi 76:
  $ firewall-cmd --list-all-zones
  $ firewall-cmd --list-all-zones


===Asetusten säätäminen===
===Alueiden hallinta===
Oletuksena kaikki verkkoliitännät lisätään oletusalueen alle, yleensä tämä oletusalue on <tt>public</tt>. Usein kuitenkin halutaan lisätä oma koti- tai työverkko sallivammalle alueelle. Erityisen kätevä ominaisuus tämä on esimerkiksi kannettavien tietokoneiden kanssa, jotka liitetään usein avoimiin WLAN-verkkoihin julkisilla paikoilla. Epäluotettaville verkoille, joissa saattaa olla vihamielisiä laitteita, tulee käyttää tiukempia asetuksia, kuten esimerkiksi <tt>drop</tt> -aluetta, joka pudottaa kaikki sisääntulevat yhteydet suoraan ilman vastausta.
Oletuksena kaikki verkkoliitännät lisätään oletusalueen alle, yleensä tämä oletusalue on <tt>public</tt>. Usein kuitenkin halutaan lisätä oma koti- tai työverkko sallivammalle alueelle. Erityisen kätevä ominaisuus tämä on esimerkiksi kannettavien tietokoneiden kanssa, jotka liitetään usein avoimiin WLAN-verkkoihin julkisilla paikoilla. Epäluotettaville verkoille, joissa saattaa olla vihamielisiä laitteita, tulee käyttää tiukempia asetuksia, kuten esimerkiksi <tt>drop</tt> -aluetta, joka pudottaa kaikki sisääntulevat yhteydet suoraan ilman vastausta.


Rivi 55: Rivi 92:
  # firewall-cmd --set-default-zone=home
  # firewall-cmd --set-default-zone=home


Asetukset voidaan tallentaa kahdella tavalla. Ne voidaan tallentaa pysyviksi, jolloin ne säilyvät vaikka tietokone tai palomuuri käynnistettäisiin uudelleen tai väliaikaisiksi, jolloin asetukset nollautuvat kun tietokone tai palomuuri sammutetaan. Suurin osa <tt>firewall-cmd</tt>:n operaatioista osaa ottaa vastaan <tt>--permanent</tt> parametrin, jolloin asetukset tallentuvat eivätkä katoa uudelleenkäynnistyksen yhteydessä.  
===Palvelut===
Lista käytettävissä olevista palveluista saadaan <tt>--get-services</tt> -parametrilla.
$ firewall-cmd --get-services
 
Enemmän tietoa yksittäisistä palveluista löytyy <tt>/usr/lib/firewalld/services</tt> -hakemistosta, jossa eri palvelut ovat [[XML]]-tiedostoissa. Kun halutaan lisätä jokin palvelu haluttuun alueeseen, voidaan se tehdä <tt>--add-service=PALVELU</tt>-parametrilla. Esimerkiksi oletusalueelle voitaisiin avata portti http-palvelimelle näin:
# firewall-cmd --add-service=http
 
Halutulle alueelle voidaan avata portti <tt>--zone=ALUE</tt> -parametrilla.
# firewall-cmd --zone=public --add-service=http
 
Nyt voidaan tarkistaa <tt>--list-services</tt> -parametrilla että haluttu palvelu löytyy alueelta johon se lisättiin.
$ firewall-cmd --zone=public --list-services
 
Asetukset voidaan tallentaa kahdella tavalla. Ne voidaan tallentaa pysyviksi, jolloin ne säilyvät vaikka tietokone tai palomuuri käynnistettäisiin uudelleen tai väliaikaisiksi, jolloin asetukset nollautuvat kun tietokone tai palomuuri sammutetaan. Suurin osa <tt>firewall-cmd</tt>:n operaatioista osaa ottaa vastaan <tt>--permanent</tt> parametrin, jolloin asetukset tallentuvat eivätkä katoa uudelleenkäynnistyksen yhteydessä. Esimerkiksi edellinen voitaisiin tehdä pysyväksi näin:
# firewall-cmd --zone=public --permanent --add-service=http
 
===Portit===
Joskus tarjolla olevista palveluista ei löydy sopivaa. Tällöin tulee avata halutut portit manuaalisesti itse. Esimerkiksi jos joku oma ohjelma kuuntelisi porttia 5875 ja käyttäisi [[TCP]]-protokollaa, voitaisiin portti avata <tt>--add-port=PORTTI/PROTOKOLLA</tt> -parametrilla.
# firewall-cmd --zone=public --add-port=5875/tcp
 
Tietyltä alueelta voidaan avata kaikki portit määrittelemällä tuon alueen alku- ja loppuportit. Avataan esimerkiksi portit 2000-2100 [[UDP]]-protokollalle.
# firewall-cmd --zone=public --add-port=2000-2100/udp


===Alueet===
Avoimet portit voidaan katsoa <tt>--list-ports</tt> -parametrilla.
FirewallD käyttää eri ''alueita'' (engl. ''zones''). Oletusalue on määritelty <tt>/etc/firewalld/firewalld.conf</tt> -tiedostossa.
$ firewall-cmd --list-ports
{| class=wikitable
5875/tcp 2000-2100/udp
! Alue (''zone'')
 
! Kuvaus
Portteja ei tulisi avata turhaan. Yleisesti hyvä tapa on pitää kaikki portit kiinni ja avata niitä vasta tarpeen vaatiessa.
|-
 
| '''drop'''
===Palveluiden määrittäminen===
| Alimman luottamustason alue. Kaikki sisääntulevat yhteydet pudotetaan ilman vastausta. Ainoastaan ulospäin menevät yhteydet sallitaan.
Yksittäisiä portteja avatessa saattaa unohtua mikä portti liittyy mihinkin ohjelmaan. Tämän takia palvelut on kehitetty helpottamaan eri porttien muistamista. Palvelut ovat periaatteessa vain kokoelmia portteja, joille on annettu joku nimi ja kuvaus. Omat palvelut määritellään <tt>/etc/firewalld/services</tt> -hakemistoon. Luodaan esimerkkinä uusi tiedosto <tt>esimerkki.xml</tt>, joka määrittää uuden palvelun.
|-
# vim /etc/firewalld/services/esimerkki.xml
| '''block'''
 
| Samankaltainen kuin '''drop''', mutta sisääntuleviin yhteyksiin vastataan <tt>icmp-host-prohibited</tt> tai <tt>icmp6-adm-prohibited</tt> -viestillä.
Tiedoston tulee olla XML-muodossa, jotta FirewallD osaa parsia sen oikein.
|-
<syntaxhighlight lang="xml">
| '''public'''
<?xml version="1.0" encoding="utf-8"?>
| Tarkoitettu julkisiin epäluotettaviin verkkoihin, kuten avoimiin WLAN-verkkoihin. Ei luoteta muihin verkon laitteisiin.
<service>
|-
  <short>esimerkki</short>
| '''external'''
  <description>Tämä palvelu on esimerkki jonka tarkoitus on havainnollistaa palveluiden luomista FirewallD-palomuurille.</description>
|
  <port protocol="tcp" port="6666"/>
|-
  <port protocol="udp" port="5555"/>
| '''internal'''
</service>
|
</syntaxhighlight>
|-
 
| '''dmz'''
Jotta palomuuri näkisi uuden palvelun, tulee se ladata uudelleen:
| Käytetään laitteissa jotka sijaitsevat [[wikipedia:fi:Demilitarisoitu alue (tietotekniikka)|DMZ-alueella]].
# firewall-cmd --reload
|-
 
| '''work'''
===Alueiden määrittäminen===
| Tarkoitettu työpaikan verkkoihin joissa voidaan luottaa pääosin muihin laitteisiin
Joissain tapauksissa valmiiksi määritellyt alueet eivät ole riittäviä vaan tarvitaan lisäksi oma alueita. Esimerkiksi omalle aliverkolle voidaan määrittää oma alue. Kun alue määritellään, tehdään se <tt>--new-zone=ALUE</tt> -parametrilla, tähän tarvitaan myös <tt>--permanent</tt> -parametria.
|-
# firewall-cmd --permanent --new-zone=omaverkko
| '''home'''
 
| Tarkoitettu kodin verkkoihin joissa voidaan luottaa pääosin muihin laitteisiin
Nyt uudelle alueelle voidaan lisätä halutut palvelut ja verkkoliitännät. Palomuurin asetukset tulee ladata uudestaan jotta uusi alue näkyisi nykyisessä istunnossa.
|-
# firewall-cmd --reload
| '''trusted'''
| Kaikki yhteydet sallitaan
|}


[[Tiedosto:firewall-config 0.3.9.png|thumb|none|500px|firewall-config on graafinen työkalu FirewallD:n asetusten säätämiseen]]
[[Tiedosto:firewall-config 0.3.9.png|thumb|none|500px|firewall-config on graafinen työkalu FirewallD:n asetusten säätämiseen]]

Nykyinen versio 18. helmikuuta 2022 kello 09.35

FirewallD
Käyttöliittymä teksti, GTK
Lisenssi GPLv2+
Kotisivu fedorahosted.org/firewalld
FirewallD- ja iptables-palvelut juttelevat kernelin netfilter-pakettisuodattimelle iptables-työkalun välityksellä

FirewallD (Dynamic Firewall) on Red Hatin kehittämä dynaaminen palomuuri. FirewallD on dynaamisena palomuurina monipuolisempi ja tehokkaampi verrattuna perinteiseen staattiseen palomuuriin, kuten iptables. Vanhan tyylisessä staattisessa palomuurissa uudet asetukset otetaan käyttöön käynnistämällä palomuuri uudelleen, jolloin luetaan uudet asetukset. FirewallD sen sijaan sallii asetusten muuttamisen suoraan lennosta. Kuten iptables, myös FirewallD on vain työkalu joka käyttää linux-kernelin netfilteriä.

Asennus[muokkaa]

FirewallD löytyy useimpien jakeluiden paketinhallinnasta nimellä firewalld. Lisätietoja ohjelmien asentamisesta löytyy artikkelista Ohjelmien asentaminen.

Käyttö[muokkaa]

Komennot, jotka alkavat $-merkillä suoritetaan tavallisena käyttäjänä ja komennot, jotka alkavat #-merkillä suoritetaan pääkäyttäjänä. Katso myös su, sudo ja doas.

FirewallD:n asetuksia voidaan säätää graafisella firewall-config-ohjelmalla tai tekstipohjaisella firewall-cmd-ohjelmalla. Systemd hallitsee FirewallD:tä firewalld.service:n avulla, eli FirewallD voidaan käynnistää ja asettaa käynnistymään tietokoneen käynnistyessä komennoilla:

# systemctl start firewalld.service
# systemctl enable firewalld.service

Lisätietoa systemd:n käytöstä löytyy systemd:n omasta artikkelista.

Nyt voidaan tarkistaa palomuurin tila komentamalla:

$ firewall-cmd --state

Alueet[muokkaa]

FirewallD käyttää eri alueita (engl. zones). Oletusalue on määritelty /etc/firewalld/firewalld.conf -tiedostossa.

Alueet järjestettynä tiukimmasta sallivimpaan
Alue (zone) Kuvaus
drop Alimman luottamustason alue. Kaikki sisääntulevat yhteydet pudotetaan ilman vastausta. Ainoastaan ulospäin menevät yhteydet sallitaan.
block Samankaltainen kuin drop, mutta sisääntuleviin yhteyksiin vastataan icmp-host-prohibited tai icmp6-adm-prohibited -viestillä.
public Tarkoitettu julkisiin epäluotettaviin verkkoihin, kuten avoimiin WLAN-verkkoihin, joissa ei luoteta muihin verkon laitteisiin.
external Tarkoitettu erityisesti ulkoverkkoihin reitittimiin jotka tekevät osoitteenmuutosta.
dmz Käytetään laitteissa jotka sijaitsevat DMZ-alueella.
work Tarkoitettu työpaikan verkkoihin joissa voidaan luottaa pääosin muihin laitteisiin.
home Tarkoitettu kodin verkkoihin joissa voidaan luottaa pääosin muihin laitteisiin.
internal Tarkoitettu sisäverkkoihin, joissa voidaan luottaa pääosin muihin laitteisiin.
trusted Kaikki yhteydet sallitaan.

Alueiden tarkastelu[muokkaa]

Käytössä oleva oletusalue saadaan komennolla:

$ firewall-cmd --get-default-zone

Jos palomuuria ei ole muokattu mitenkään, pitäisi tämän oletusalueen olla ainoa aktiivinen alue. Aktiiviset alueet ja niiden hallitseman verkkoliitännät saadaan komennolla:

$ firewall-cmd --get-active-zones

Oletusaluetta koskevat säännöt nähdään komennolla:

$ firewall-cmd --list-all

Samalla tavalla voidaan katsoa myös muita alueita koskevat säännöt --zone=ALUE parametrin avulla tai kaikkien alueiden säännöt kerralla --list-all-zones -parametrilla.

$ firewall-cmd --zone=home --list-all
$ firewall-cmd --list-all-zones

Alueiden hallinta[muokkaa]

Oletuksena kaikki verkkoliitännät lisätään oletusalueen alle, yleensä tämä oletusalue on public. Usein kuitenkin halutaan lisätä oma koti- tai työverkko sallivammalle alueelle. Erityisen kätevä ominaisuus tämä on esimerkiksi kannettavien tietokoneiden kanssa, jotka liitetään usein avoimiin WLAN-verkkoihin julkisilla paikoilla. Epäluotettaville verkoille, joissa saattaa olla vihamielisiä laitteita, tulee käyttää tiukempia asetuksia, kuten esimerkiksi drop -aluetta, joka pudottaa kaikki sisääntulevat yhteydet suoraan ilman vastausta.

Kun palomuurin asetuksia muokataan, tarvitaan luonnollisesti pääkäyttäjän oikeudet. Kun verkkoliitäntä halutaan siirtää toisen alueen alle, käytetään --zone=ALUE ja --change-interface=VERKKOLIITÄNTÄ -parametreja. Siirretään esimerkiksi eth0 home-alueelle:

# firewall-cmd --zone=home --change-interface=eth0
success

Jos palomuuri nyt käynnistetään uudelleen, siirtyy eth0 takaisin oletusalueelle. Jos liitäntä halutaan pysyvästi siirtää toiselle alueelle, tulee tämä määritellä verkkoyhteyden käynnistysskriptissä. Skriptien sijainnit vaihtelevat jonkin verran jakeluittain. Esimerkiksi tiedostoon /etc/sysconfig/network-scripts/ifcfg-eth0 voidaan lisätä rivi:

ZONE=home

ja käynnistää sen jälkeen verkkoyhteys ja palomuuri uudelleen, jolloin eth0 on home-alueella.

# systemctl restart network.service
# systemctl restart firewalld.service

Oletusalue voidaan vaihtaa --set-default-zone=ALUE -parametrilla.

# firewall-cmd --set-default-zone=home

Palvelut[muokkaa]

Lista käytettävissä olevista palveluista saadaan --get-services -parametrilla.

$ firewall-cmd --get-services

Enemmän tietoa yksittäisistä palveluista löytyy /usr/lib/firewalld/services -hakemistosta, jossa eri palvelut ovat XML-tiedostoissa. Kun halutaan lisätä jokin palvelu haluttuun alueeseen, voidaan se tehdä --add-service=PALVELU-parametrilla. Esimerkiksi oletusalueelle voitaisiin avata portti http-palvelimelle näin:

# firewall-cmd --add-service=http

Halutulle alueelle voidaan avata portti --zone=ALUE -parametrilla.

# firewall-cmd --zone=public --add-service=http

Nyt voidaan tarkistaa --list-services -parametrilla että haluttu palvelu löytyy alueelta johon se lisättiin.

$ firewall-cmd --zone=public --list-services

Asetukset voidaan tallentaa kahdella tavalla. Ne voidaan tallentaa pysyviksi, jolloin ne säilyvät vaikka tietokone tai palomuuri käynnistettäisiin uudelleen tai väliaikaisiksi, jolloin asetukset nollautuvat kun tietokone tai palomuuri sammutetaan. Suurin osa firewall-cmd:n operaatioista osaa ottaa vastaan --permanent parametrin, jolloin asetukset tallentuvat eivätkä katoa uudelleenkäynnistyksen yhteydessä. Esimerkiksi edellinen voitaisiin tehdä pysyväksi näin:

# firewall-cmd --zone=public --permanent --add-service=http

Portit[muokkaa]

Joskus tarjolla olevista palveluista ei löydy sopivaa. Tällöin tulee avata halutut portit manuaalisesti itse. Esimerkiksi jos joku oma ohjelma kuuntelisi porttia 5875 ja käyttäisi TCP-protokollaa, voitaisiin portti avata --add-port=PORTTI/PROTOKOLLA -parametrilla.

# firewall-cmd --zone=public --add-port=5875/tcp

Tietyltä alueelta voidaan avata kaikki portit määrittelemällä tuon alueen alku- ja loppuportit. Avataan esimerkiksi portit 2000-2100 UDP-protokollalle.

# firewall-cmd --zone=public --add-port=2000-2100/udp

Avoimet portit voidaan katsoa --list-ports -parametrilla.

$ firewall-cmd --list-ports
5875/tcp 2000-2100/udp

Portteja ei tulisi avata turhaan. Yleisesti hyvä tapa on pitää kaikki portit kiinni ja avata niitä vasta tarpeen vaatiessa.

Palveluiden määrittäminen[muokkaa]

Yksittäisiä portteja avatessa saattaa unohtua mikä portti liittyy mihinkin ohjelmaan. Tämän takia palvelut on kehitetty helpottamaan eri porttien muistamista. Palvelut ovat periaatteessa vain kokoelmia portteja, joille on annettu joku nimi ja kuvaus. Omat palvelut määritellään /etc/firewalld/services -hakemistoon. Luodaan esimerkkinä uusi tiedosto esimerkki.xml, joka määrittää uuden palvelun.

# vim /etc/firewalld/services/esimerkki.xml

Tiedoston tulee olla XML-muodossa, jotta FirewallD osaa parsia sen oikein.

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>esimerkki</short>
  <description>Tämä palvelu on esimerkki jonka tarkoitus on havainnollistaa palveluiden luomista FirewallD-palomuurille.</description>
  <port protocol="tcp" port="6666"/>
  <port protocol="udp" port="5555"/>
</service>

Jotta palomuuri näkisi uuden palvelun, tulee se ladata uudelleen:

# firewall-cmd --reload

Alueiden määrittäminen[muokkaa]

Joissain tapauksissa valmiiksi määritellyt alueet eivät ole riittäviä vaan tarvitaan lisäksi oma alueita. Esimerkiksi omalle aliverkolle voidaan määrittää oma alue. Kun alue määritellään, tehdään se --new-zone=ALUE -parametrilla, tähän tarvitaan myös --permanent -parametria.

# firewall-cmd --permanent --new-zone=omaverkko

Nyt uudelle alueelle voidaan lisätä halutut palvelut ja verkkoliitännät. Palomuurin asetukset tulee ladata uudestaan jotta uusi alue näkyisi nykyisessä istunnossa.

# firewall-cmd --reload
firewall-config on graafinen työkalu FirewallD:n asetusten säätämiseen

Aiheesta muualla[muokkaa]

FirewallD-projektin IRC-kanava #firewalld löytyy palvelimelta irc.freenode.net. Voit liittyä kanavalle käyttäen