Shorewall - En brannmur på høyt nivå for Linux-servere


Å sette opp en brannmur i Linux kan være veldig skremmende for en nybegynner, eller noen som ikke er veldig kjent med iptables. Heldigvis er det en veldig brukervennlig løsning i Shorewall.

I denne flerdelte opplæringen skal jeg komme i gang med Shorewall og lede deg gjennom noen mer avanserte emner med dette fantastiske brannmursystemet.

Hva er Shorewall?

Shorewall er i hovedsak et grensesnitt for iptables, men det er et kommandolinjemiljø som bruker flere tekstfiler for konfigurasjonen. Mens Shorewall er et robust brannmursystem som kan skaleres over veldig store nettverk som betjener mange maskiner, skal vi starte med en grunnleggende to-grensesnittkonfigurasjon og finne det grunnleggende.

En to-grensesnittkonfigurasjon består av en maskin med to Ethernet-porter, en kommer inn og en går ut til det lokale nettverket.

Installer Shorewall Firewall i Linux

Shorewall kan installeres ved hjelp av apt og yum pakkebehandlingsverktøy.

sudo apt install shorewall    [On Debian-based Sysems]
sudo yum install shorewall    [On RHEL-based Sysems]

Etter installasjonen må vi kopiere en eksempelkonfigurasjon fra «/usr/share/doc/shorewall»-katalogen til Shorewalls standardkatalog «/etc/shorewall».

sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall
cd /etc/shorewall

Hvis vi tar en titt i denne katalogen, ser vi en haug med filer og shorewall.conf-fil.

Shorewall ser på nettverket som en gruppe av forskjellige soner, så den første filen vi vil ta en titt på er «/etc/shorewall/zones»-filen.

sudo nano /etc/shorewall/zones

Her ser vi at det er tre soner definert som standard: fw, net og loc. Det er viktig å merke seg at Shorewall behandler selve brannmurmaskinen som sin egen sone og lagrer den i en variabel kalt $fw.

«/etc/shorewall/zones»-filen er ganske selvforklarende. Du har nettsonen (internettvendt grensesnitt), loc sonen (LAN-vendt grensesnitt) og fw sterk>, som er alt.

Dette oppsettet gir opp følgende:

  • Den tillater alle tilkoblingsforespørsler fra lokal sonen (LAN) til nettsonen (Internett).
  • Slipper alle tilkoblingsforespørsler (ignorerer) fra nettsonen til brannmuren og LAN.
  • Avviser og logger alle andre forespørsler.

LOGNIVÅ-biten bør være kjent for alle som har administrert med Apache, MySQL eller et hvilket som helst annet antall andre FOSS-programmer. I dette tilfellet ber vi Shorewall bruke infonivået for logging.

Nå som sonene og retningslinjene våre er satt, må vi konfigurere grensesnittene våre. Du gjør dette ved å redigere «/etc/shorewall/interfaces»-filen.

sudo nano /etc/shorewall/interfaces

Her har vi satt vårt internettvendte grensesnitt som eth0 til nettsonen. På LAN-siden vår har vi satt det andre grensesnittet, eth1, til loc-sonen. Juster denne filen slik at den passer til konfigurasjonen din.

De ulike alternativene du kan plassere for begge disse grensesnittene er omfattende og er best forklart i detalj på man-siden.

man shorewall-interfaces

En rask oversikt over noen av dem er som følger:

  • nosmurfer – filtrer pakker med en kringkastingsadresse som kilde.
  • logmartians – loggpakker med den umulige kildeadressen.
  • rutefilter – kjernerutefiltrering for anti-spoofing.

Selvfølgelig, nå som systemet vårt er brannmur, trenger vi visse tilkoblinger for å slippe gjennom for å få det vi trenger å gjøre. Du definerer disse i regelfilen på "/etc/shorewall/rules".

sudo nano /etc/shorewall/rules

Denne filen ser forvirrende ut til å begynne med, hovedsakelig fordi kolonnene overlapper hverandre, men overskriftene er ganske selvforklarende. Først har du HANDLING-kolonnen, som beskriver hva du vil utføre.

Deretter har du en KILDE-overskrift der du definerer sonen der pakken kommer fra. Deretter har du DEST, eller destinasjon, som er sonen eller IP-adressen til destinasjonen. La oss bruke et eksempel.

Anta at du vil kjøre en SSH-server bak brannmuren din på maskinen med IP-adressen 192.168.1.25. Ikke bare må du åpne en port i brannmuren din, men du må fortelle brannmuren at all trafikk som kommer på port 22 må rutes til maskinen på >192.168.1.25.

Dette er kjent som Port Forwarding. Det er en vanlig funksjon på de fleste brannmurer/rutere. I "/etc/shorewall/rules", vil du oppnå dette ved å legge til en linje som dette:

SSH(DNAT)	net		loc:192.168.1.25

Ovenfor har vi definert at alle SSH-destinerte pakker som kommer fra nettsonen til brannmuren må rutes (DNAT) til port 22 på en maskin med adresse 192.168.1.25.

Dette kalles Nettverksadresseoversettelse eller NAT. "D " forteller ganske enkelt Shorewall at dette er en NAT for en destinasjonsadresse.

For at dette skal fungere, må du ha NAT-støtte aktivert i kjernen. Hvis du trenger NAT og ikke har det, se veiledningen min om rekompilere en Debian-kjerne.

I den neste artikkelen vil vi utforske ulike Shorewall-konfigurasjoner og alternativer. Imidlertid bør det være rikelig med informasjon her for å hjelpe deg med å komme i gang for nå. Som alltid, se man-sidene for en mer inngående forståelse.