Mikä on Linuxin iptables-pohjainen ferm-palomuuri ja miten se määritetään

In Linux-pohjaiset käyttöjärjestelmät, palomuuri par excellence, jota käytät, on iptables, mutta on myös mahdollista, että käytät nftablesia, joka on iptablesin kehitys, paljon tehokkaampaa ja paljon "inhimillisempää" syntaksia, mutta kaikki maailma ei vieläkään käytä nftablesia. Tänään aiomme selittää, miten palomuuri määritetään Linux -palvelimille käyttämällä Fermiä (helppoa sääntöjen luomista varten), joka on iptables -käyttöliittymä, jonka avulla voimme lisätä sääntöjä palomuuriin erittäin helposti, nopeasti ja yksinkertaisesti ilman, että joudumme oppimaan syntaksia iptables.

Mikä on Ferm -palomuuri ja mihin se on tarkoitettu?

Mikä on Linuxin iptables-pohjainen ferm-palomuuri

Ferm (For Easy Rule Making) on ​​iptablesin käyttöliittymä, mikä tarkoittaa, että se käyttää itse asiassa iptablesia liikenteen sallimiseen tai kieltämiseen, mutta sen avulla voimme määrittää palomuurin erittäin kehittyneellä tavalla ilman, että joudumme oppimaan syntaksia iptables tai tehdä erilaisia ​​komentosarjoja iptablesilla, mutta teemme sen suoraan Fermillä. Tämä työkalu pystyy lukemaan säännöt määritystiedostosta, jonka aiomme määritellä, ja myöhemmin se "kutsuu" iptablesia lisäämään eri säännöt yksitellen ja lisäämään ne reaaliajassa ytimeen.

Fermin tavoite on tarjota järjestelmän ja verkon järjestelmänvalvojille helppo tapa lukea ja kirjoittaa kaikki palomuurisäännöt vähentäen sääntöjen kirjoittamista toisensa jälkeen, jotta voimme käyttää enemmän aikaa sääntöjen kehittämiseen ja optimointiin. mahdollisimman tehokkaasti. Ferm käyttää hyvin yksinkertaista mutta melko edistynyttä määrityskieltä, voimme käyttää muuttujia, funktioita, matriiseja ja jopa lohkoja. Muita Fermin erittäin mielenkiintoisia vaihtoehtoja on, että sen avulla voimme sisällyttää muita kokoonpanotiedostoja hakemistoon, ja se huolehtii kaikkien näiden sääntöjen tuonnista ja soveltamisesta automaattisesti.

Ferm on edelleen iptables -käyttöliittymä, joten kun käytämme tätä työkalua, voimme aina muokata ja määrittää palomuurin suoraan käyttämällä iptables -komentoja. Itse asiassa Ferm pystyy tuomaan nykyiset iptables -säännöt ja asettamaan ne automaattisesti asetustiedostoon muokatakseen tai laajentaakseen niitä myöhemmin.

Yksi suosituimmista iptables -käyttöliittymistä on ufw, jota järjestelmä- ja verkonvalvojat käyttävät laajalti palomuuriensa määrittämiseen helposti ja nopeasti.

Fermin asennus ja käyttöönotto

Fermin asennus on todella yksinkertaista, se on tällä hetkellä useimmissa Linux-pohjaisten jakelujen arkistoissa, meidän tapauksessamme olemme käyttäneet Debianin uusinta versiota suorittamaan kaikki testit, joita aiomme opettaa sinulle. Jotta voimme asentaa tämän ohjelman, joka on iptables -käyttöliittymä, meidän on suoritettava seuraava komento:

sudo apt install ferm

Kun suoritamme tämän komennon, meidän pitäisi nähdä jotain tällaista, jossa meille näytetään lisäpaketit, jotka meidän on asennettava, periaatteessa meidän on asennettava Perl voidaksemme suorittaa tämän ohjelman oikein.

Ferm -asennusohjelma kertoo meille, että se lataa palomuurisäännöt käynnistyksen aikana /etc/ferm/ferm.conf -polusta, eli kaikki tässä tiedostossa välitetään automaattisesti iptablesille liikenneverkon sallimiseksi tai estämiseksi. Tämän palomuurin oletusasetukset mahdollistavat sen, että voimme käyttää SSH: ta etäyhteyden kautta portin 22 kautta, jos sinulla ei ole SSH: ta määritetty tälle portille, sinun on muokattava oletusarvoja ja napsautettava "ei", jotta se ei käynnisty , muuten yhteys katkeaa.

Kun olemme valinneet kyllä ​​tai ei, apt lopettaa kaikkien lisäpakettien asentamisen, joita tarvitsemme tämän ohjelman toimimiseksi.

Asennuksen jälkeen voimme siirtyä hakemistoon / etc / ferm / ja näemme sekä määritystiedoston nimeltä ferm.conf että hakemiston nimeltä ferm.d, johon voimme sisällyttää ferm -määritystiedostot tuodaksemme ne. meillä on enemmän modulaarisuutta.

Fermissä on jo oletuksena luettelo säännöistä, jotka voimme poistaa milloin tahansa, mutta tämä auttaa meitä käsittelemään tämän iptables -käyttöliittymän syntaksia, joten siitä on paljon apua. Jos tarkastelemme syntaksia, näemme, että se on samanlainen kuin nftables, mutta se perustuu iptablesiin.

Seuraavassa kuvakaappauksessa näet, kuinka verkkotunnukset, joihin se aiotaan konfiguroida (iptables tai ip6tables), taulukot ja ketjut sekä eri ketjujen säännöt.

Voimme myös nähdä, että meillä on oletuksena useita sääntöjä:

  • INPUT -ketjussa käytäntö on DROP, localhost -liikenne sallittu, ICMP -liikenne ja yhteys sallittu IPsecin ja myös SSH: n kautta oletusporttien kanssa. Yhteyksien tilan osalta virheelliset yhteydet lasketaan, ja vakiintuneet ja niihin liittyvät ovat sallittuja, mutta uudet eivät ole sallittuja, paitsi erikseen määritellyt.

OUTPUT -ketjussa määritellään, että käytäntö on hyväksyä kaikki, ja yhteyden tila sallii vakiintuneet ja liittyvät. FORWARD -ketjussa käytäntö kieltää liikenteen, virheelliset yhteydet estetään erityisesti, mutta muodostetut ja niihin liittyvät yhteydet sallitaan.

Seuraavaksi näet tämän määritystiedoston tekstimuodossa:

# -*- shell-script -*-
#
# Configuration file for ferm(1).
#
domain (ip ip6) {
table filter {
chain INPUT {
policy DROP;

# yhteyden seuranta
modin tila INVALID DROP;
modin tila (PERUSTETTU RELATED) ACCEPT;

# salli paikallinen paketti
rajapinta mitä HYVÄKSY;

# vastaa pingiin
proto icmp HYVÄKSY;

# salli IPsec
proto udp dport 500 HYVÄKSY;
@if @eq ($ DOMAIN, ip) {
proto (esp ah) HYVÄKSY;
} @else {
proto (esp) HYVÄKSY;
}

# salli SSH -yhteydet
proto tcp dport ssh HYVÄKSY;
}
ketju LÄHTÖ {
politiikka HYVÄKSY;

# yhteyden seuranta
#moodin tila INVALID DROP;
modin tila (PERUSTETTU RELATED) ACCEPT;
}
ketju ETEENPÄIN {
politiikka DROP;

# yhteyden seuranta
modin tila INVALID DROP;
modin tila (PERUSTETTU RELATED) ACCEPT;
}
}
}

@Sisällytä ferm.d /;

Mielenkiintoisin osa on viimeisessä osassa oleva "@include ferm.d /", mikä tarkoittaa, että se tuo kaikki kyseisessä hakemistossa olevat kokoonpanotiedostot.

Tämä alla oleva Ferm -palomuuri käyttää iptablesia, joten jos suoritamme seuraavan komennon:

iptables -L

Näemme iptablesin nykyisen tilan ja kaikki säännöt, jotka se on sisällyttänyt palomuuriin:

Kun olemme nähneet Fermin oletuskokoonpanon, näemme erilaisia ​​kokoonpanoesimerkkejä, joita voimme tehdä.

Fermin perusasetukset

Fermin syntaksi on hyvin yksinkertainen ja joustava, mutta meidän on opittava se tekemään oikea kokoonpano. Suosittelemme sinua katso virallista Ferm -ohjekirjaa mistä löydät kaikki yksityiskohdat käytettävästä syntaksista ja siitä, miten eri säännöt on ilmoitettava asetustiedostossa, tämän virallisen oppaan ansiosta voimme määrittää tämän palomuurin ilman suuria ongelmia.

Ensimmäinen asia, joka on pidettävä mielessä, on, että kaikki Fermin säännöt alkavat ja päättyvät aaltosulkeisiin ja säännöt päättyvät puolipisteeseen, joten se on tunnettu syntaksi ohjelmoinnissa. Muita mielenkiintoisia ominaisuuksia ovat, että rivinvaihdot jätetään huomiotta, ja voit lisätä kommentteja minne tahansa kirjoittamalla "#" rivin loppuun.

Mitä tulee iptablesin ja fermin syntaksiin, meillä on joitain eroja:

  • Tuloliitännän määrittäminen: käyttöliittymä (jos)
  • Poistumisrajapinnan määrittäminen: externalface (of)
  • Alkuperän määrittäminen: saddr
  • Kohteen määrittäminen: daddr
  • Protokollan määrittäminen: proto
  • Alkuperäsatama: urheilu
  • Määränpääportti: dport
  • Lataa moduuli: mod
  • Siirry mukautettuun sääntöön: hyppää

Fermissä ei ole komentoja, kuten -A, -I, -C, -R tai -D, koska kaikki on kirjoitettu asetustiedostoon, sama tapahtuu komennoilla lisätä uusi merkkijono, nimetä se uudelleen tai poistaa se, nyt se katoaa kokonaan. Muita ominaisuuksia ovat, että fermin avulla voit periä erilaisia ​​sääntöjä, joita käytetään muissa säännöissä, määritystiedostossa.

Kun tiedämme karkeasti, millainen syntaksi on, aiomme nähdä joitain esimerkkejä vertaamalla sitä iptablesiin, ja kaikissa näissä käsitellään "INPUT" -ketjun "suodatin" -taulukkoa.

iptables -P INPUT ACCEPT
iptables -A INPUT -p tcp -j ACCEPT

Fermissä tämä kirjoitetaan seuraavasti (lisäämällä OUTPUT- ja FORWARD -ketjun käytäntö suodatustaulukosta):

domain ip {
table filter {
chain INPUT {
policy DROP;
proto tcp ACCEPT;
}
chain OUTPUT {
policy ACCEPT;
}
chain FORWARD {
policy DROP;
}
}
}

Ferm antaa meille mahdollisuuden määritellä samat säännöt tuloihin ja lähtöihin helposti ja nopeasti ilman tarvetta toistaa sääntöjä uudestaan ​​ja uudestaan. Kuvitellaan esimerkiksi, että nyt haluamme hyväksyä TCP -protokollan sekä INPUT- että OUTPUT -ketjussa, tämä iptablesissa olisi seuraava:

iptables -A INPUT -p tcp -j ACCEPT
iptables -A OUTPUT -p tcp -j ACCEPT
iptables -A INPUT -p udp -j ACCEPT
iptables -A OUTPUT -p udp -j ACCEPT

Fermin kanssa se on yhtä helppoa kuin seuraavien toimien tekeminen:

domain ip {
table filter {
chain (INPUT OUTPUT) {
proto (udp tcp) ACCEPT;
}
}

Kuten näette, on paljon nopeampaa ja helpompaa soveltaa samaa sääntöä sekä tuloon että lähtöön.

Tämä palomuuri sisältää myös erittäin mielenkiintoisia toimintoja, esimerkiksi voimme tarkistaa, onko muuttuja tai funktio määritetty, voimme tarkistaa, ovatko kaksi arvoa samat tai erilaiset, kieltää Boolen arvon, ratkaista verkkotunnukset suoraan Fermistä, yhdistää parametrit ja pitkän luettelo toiminnoista.

Fermin avulla voit myös "ladata" iptables -moduuleja käyttää niitä ja määrittää palomuurin kehittyneellä tavalla, esimerkiksi meillä on seuraavat:

mod connlimit connlimit-above 4 connlimit-mask 24 REJECT;

Voimme laittaa koko kokoonpanotiedoston.

Jotta voimme soveltaa Fermissä esitettyjä sääntöjä, meidän on suoritettava seuraava komento:

ferm -i -t 10 /etc/ferm/ferm.conf

Tuo iptables -säännöt Fermiin

Fermin avulla voimme helposti ja nopeasti tuoda tällä hetkellä suoritettavat iptables -säännöt Ferm -tiedostoon myöhempää muokkaamista varten. Jotta voimme tehdä tämän, meidän on yksinkertaisesti ladattava iptables -säännöt muistiin (tällä hetkellä käytössä) ja suoritettava tämä komento:

import-ferm > /etc/ferm/ferm.d/reglas-iptables.conf

Kun suoritamme sen, näemme iptables -säännöt suoraan Fermin syntaksissa.

Jos haluat muuttaa tekstitiedostossa olevat iptables -säännöt Fermiksi, voit suorittaa seuraavan komennon:

import-ferm origen de las reglas de iptables > /etc/ferm/ferm.d/reglas-iptables.conf

Kuten olet nähnyt, ferm on loistava iptables -käyttöliittymä, jonka avulla voimme määrittää sen edistyneellä tavalla tarvitsematta oppia iptablesin syntaksia ja järjestää säännöt oikein asetustiedostoon. Mielestämme uskomme kuitenkin, että bash -komentosarjan määrittäminen kaikilla iptables -säännöillä oikein ei vaadi käyttöliittymää tai lisäohjelmistoja, vaikka se voi olla hyödyllistä joillekin ihmisille. Meidän on muistettava, että Nftables sisältää jo mahdollisuuden määrittää säännöt suoraan määritystiedostoon eikä vain vuorovaikutteisesti konsolikomentojen kautta.