Shorewall - Eng High-Level Firewall fir Linux Serveren ze konfiguréieren


Eng Firewall op Linux opzestellen kann ganz beängschtegend sinn fir en Newbie, oder fir een net ganz vertraut mat iptables. Glécklecherweis gëtt et eng ganz einfach ze benotzen Léisung an Shorewall.

An dësem Multi-Deel Tutorial ginn ech Iech mat Shorewall unzefänken, a gitt Iech duerch e puer méi fortgeschratt Themen mat dësem fantastesche Firewall System.

Wat ass Shorewall?

Shorewall ass wesentlech e Front-End fir iptables, awer et ass e Kommandozeil-Ëmfeld Front-End deen eng Zuel vun Textdateien fir seng Konfiguratioun benotzt. Wärend Shorewall e robuste Firewall-System ass, deen iwwer ganz grouss Netzwierker zerwéiert ka ginn, déi vill Maschinnen servéieren, fänken mir un mat enger Basiskonfiguratioun vun zwee Interfaces unzefänken an d'Grondlage erofzesetzen.

Eng zwee-Interface Konfiguratioun besteet aus enger Maschinn mat zwee Ethernet Häfen, eent erakommen, an een eraus an d'lokal Reseau.

Installatioun vu Shorewall op Linux

Shorewall kann mat apt-get an yum Package Manager Tools installéiert ginn.

$ sudo apt-get install shorewall6
$ sudo yum install shorewall6

No der Installatioun musse mir eng Probekonfiguratioun aus dem /usr/share/doc/shorewall Verzeichnis an de Standardverzeechnes vum Shorewall /etc/shorewall kopéieren.

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

An dann cd op /etc/shorewall.

$ cd /etc/shorewall

Wa mir e Bléck an dësem Verzeechnes huelen, gesinn mir eng Rëtsch vun Fichieren an shorewall.conf Fichier. Shorewall kuckt d'Netzwierk als eng Grupp vu verschiddenen Zonen, sou datt déi éischt Datei déi mir wëllen kucken ass d'/etc/shorewall/zones Datei.

Hei gesi mir datt et dräi Zonen als Standard definéiert sinn: net, loc, an all. Et ass wichteg ze bemierken datt Shorewall d'Firewall Maschinn selwer als seng eege Zone behandelt a späichert se an enger Variabel genannt $FW. Dir gesitt dës Variabel duerch de Rescht vun de Konfiguratiounsdateien.

D'/etc/shorewall/zones Datei ass zimlech selbstverständlech. Dir hutt d'Netzzone (Internet konfrontéiert Interface), d'Loc Zone (LAN konfrontéiert Interface), an alles, wat alles ass.

Dëse Setup gëtt déi folgend op:

  1. Et erlaabt all Verbindungsufroe vun der Loczone (LAN) an d'Netzzone (Internet).
  2. Feelt all Verbindungsufroen (ignoréiert) vun der Netzzone op d'Firewall an de LAN.
  3. Refuséiert a protokolléiert all aner Ufroen.

De LOG LEVEL Bit soll jidderengem vertraut sinn, deen d'Administratioun mat Apache, MySQL oder all aner Zuel vun anere FOSS Programmer gemaach huet. An dësem Fall soen mir dem Shorewall den Infoniveau vum Logbuch ze benotzen.

Wann Dir Är Firewall zur Verfügung hutt fir Iech vun Ärem LAN ze administréieren, kënnt Dir déi folgend Zeilen op Är /etc/shorewall/policy Datei addéieren.

#SOURCE		DEST	POLICY		LOG		LEVEL		LIMIT:BURST
loc			$FW		ACCEPT
$FW			loc		ACCEPT

Elo datt eis Zonen a Politik agestallt sinn, musse mir eis Interfaces konfiguréieren. Dir maacht dat andeems Dir d'/etc/shorewall/interfaces Datei ännert.

Hei hu mir eis Internet konfrontéiert Interface als eth0 op d'Netzzone gesat. Op eiser LAN Säit hu mir déi aner Interface, eth1, op d'Loc Zone gesat. Passt w.e.g. dës Datei un fir Är Konfiguratioun richteg ze maachen.

Déi verschidden Optiounen, déi Dir fir entweder vun dësen Interfaces placéiere kënnt, sinn extensiv, a sinn am beschten am Detail op der Man-Säit erkläert.

$ man shorewall-interfaces

E séieren Oflaf vun e puer vun hinnen ass wéi follegt:

  1. nosmurfs - Filter Pakete mat Broadcast Adress als Quell.
  2. Logmartians - Log Päck mat onméiglecher Quelladress.
  3. routefilter - Kernelroutefilter fir Anti-Spoofing.

Natierlech, elo datt eise System firewalled ass, brauche mir gewësse Verbindunge fir duerchzeloossen fir ze kréien wat mir maache mussen. Dir definéiert dës an der Regeldatei bei /etc/shorewall/rules.

Dëse Fichier gesäit fir d'éischt duerchernee aus, haaptsächlech well d'Saile sech iwwerlappen, awer d'Header sinn zimlech selbstverständlech. Als éischt hutt Dir d'ACTION Kolonn, déi beschreift wat Dir maache wëllt.

Als nächst hutt Dir e SOURCE Header wou Dir d'Zone definéiert wou de Paket hierkënnt. Dann hutt Dir Är DEST, oder Destinatioun, dat ass d'Zone oder d'IP Adress vun der Destinatioun. Loosst eis e Beispill benotzen.

Ugeholl Dir wëllt en SSH Server hannert Ärer Firewall op der Maschinn mat der IP Adress vun 192.168.1.25 lafen. Net nëmmen musst Dir e Port an Ärer Firewall opmaachen, awer Dir musst der Firewall soen datt all Traffic, deen um Port 22 kënnt, muss op d'Maschinn op 192.168.1.25 geréckelt ginn.

Dëst ass bekannt als Port Forwarding. Et ass eng gemeinsam Feature op de meeschte Firewall/Router. An /etc/shorewall/rules, géift Dir dëst erreechen andeems Dir eng Zeil wéi dës bäidréit:

SSH(DNAT)	net		loc:192.168.1.25

Uewen hu mir all SSH bestëmmt Päckelcher definéiert, déi aus der Netzzone an d'Firewall kommen, musse geréckelt ginn (DNAT) op den Hafen 22 op der Maschinn mat der Adress 192.168.1.25.

Dëst gëtt Network Address Translation oder NAT genannt. Den \D seet einfach Shorewall datt dëst en NAT fir eng Destinatiounsadress ass.

Fir datt dëst funktionnéiert, musst Dir NAT Support an Ärem Kernel aktivéiert hunn. Wann Dir NAT braucht an et net hutt, kuckt w.e.g. mäi Tutorial iwwer Recompiling a Debian Kernel.

Referenz Linken

Shorewall Homepage

Am nächsten Artikel wäerte mir e puer méi fortgeschratt Themen duerchgoën, awer et sollt vill hei sinn fir Iech elo unzefänken. Wéi ëmmer, kuckt w.e.g. op d'Man Säiten fir e méi am-Déift Verständnis.