Zoeken


afdrukken pdf

Firewall


Pas op

Deze handleiding is enkel voor mensen met een gedegen kennis hebben van dedicated server administration in linux omgeving. The bewerken van de firewall kan erg gevaarlijk zijn. inderdaad, u kunt uw server blokkeren hetgeen u zal forceren een herstart te maken in HARD mode. Als je een fout maakt in het laatste script en het in de autostartup zet, kun je je eigen server niet eens meer bereiken! Ben zeer voorzichtig en als je niet op je gemak voelt met deze handleiding, installeer dan uw firewall niet!

Wat is de firewall?

Het is software om sommige poorten te sluiten op je eigen server en het kan andere poorten openen. Neem als voorbeeld je huis, je hebt een voor- en een achterdeur. Als je de achterdeur nooit gebruikt kun je deze beter blokkeren, waarom? Het is een potentieel risico voor een dief om binnen te komen. Met een firewall doen we hetzelfde , we blokeren elke poort die we niet nodig hebben.

Welke poorten gebruikt u over het algemeen?
Waarschuwing!

Ten eerste ben erg voorzichtig met hetgeen u nu gaat doen. Inderdaad, u loopt het risico een verkeerde poort te sluiten. Als u bijvoorbeeld de SSH poort sluit dan moet u uw server via TELNET of via webmin opstarten of via een reboot (manager V3.)

Standaard geopende poorten door OVH :

21 - ftp (the FTP server according to your use).
22 - ssh (the crypted shell access according to your use).
23 - telnet (the non-crypted shell access in case of troubleshooting service).
25 - smtp (the SMTP server according to your use).
53 - dns (the DNS server according to your use).
80 - http (the web server according to your use).
110 - pop3 (the mail access according to your use).
143 - imap (the mail access if you don't use Pop3).
443 - http (the crypted web access according to your use).
1000 - webmin (Server configuration panel according to your use).

Dit zijn de poorten die standaard open zijn, maar je hebt mogelijk ook nog andere software met open poorten. Het is aan u om te weten welke poorten open dienen te staan en welke niet. Als u uw keuzes weet bent u klaar om te starten.

Iptables


Iptables is een krachtige firewall, die op alle servers binnen OVH geïnstalleerd staan. Het proces gaat als volgt: we willen enkele poorten open laten en de rest sluiten. Enkel poort 22 en poort 80 laten we open. Dit is enkel een voorbeeld, in de toekomst, passen we het aan naar uw behoeften

Connect you with SSH in root.
Firstly, you must check the iptables version:
$ /sbin/iptables -V
iptables v1.2.4
The version is too old. We'll install the 1.2.9 version:
$ cd /root
$ wget http://www.netfilter.org/files/iptables-1.2.9.tar.bz2
$ tar xvfj iptables-1.2.9.tar.bz2
$ cd iptables-1.2.9
$ make KERNEL_DIR=/usr/src/linux
$ make install KERNEL_DIR=/usr/src/linux
$ cd /sbin
$ mv iptables iptables.old
$ mv iptables-restore iptables-restore.old
$ mv iptables-save iptables-save.old
$ ln -s /usr/local/sbin/iptables iptables
$ ln -s /usr/local/sbin/iptables-restore iptables-restore
$ ln -s /usr/local/sbin/iptables-save iptables-save
$ /sbin/iptables -V
iptables v1.2.9

het is klaar, iptables zijn ge-update, we kunnen verder gaan.

We zien een lijst van de volgende regels:

$ /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

We zien 3 hoofdregels: Input, Forward and Output. Eerstzullen we werken aan de input regel (voor inkomend verkeer). We geven poort 22 en 88 toegang:

$ /sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$ /sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

--A INPUT : we maken een regel voor de input. -i eth0 : hier zijn we enkel geinteresseerd in de netwerk interface. -p tcp : het betreffende protocol is het TCP protocol (we doen nu enkel dit protocol). --dport 22 : te regel zal toegepast worden op de SSH poort (number 22). -j ACCEPT : we accepteren dit verkeer.

We geven alle regels weer::

$ /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp — anywhere anywhere tcp dpt:ssh
ACCEPT tcp — anywhere anywhere tcp dpt:www

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

De input sectie wordt langzaam gevuld, dat is een goed teken ;).

We kunnen zien dat normaal alles geaccepteerd wordt => INPUT CHAIN(policy ACCEPT). We willen al dit verkeer blokkeren, wat we vooraf niet toelieten. Daarom voegen we een nieuwe regel toe om alle andere poorten te blokkeren. Maar we stuiten op een probleem:

Als een connectie gemaakt wordt tussen onze server naar kernel.org server om bijvoorbeeld een nieuwe kernel te downloaden, zal het een verbinding maken en wachten op zijn antwoord. De aanvraag wordt gedaan bij Kernel.org maar hoe zal het terug komen bij de server, we hebben immers alle poorten gesloten?

Gelukkig is Iptables krachtig en kan het packets sorteren op basis van de states. We zullen een regel toevoegen

$ /sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Nu kunnen we de rest blokkeren. (Waarschuwing, hier wordt de firewall volledig actief controleer dat alle regels goed geconfigureerd zijn anders wordt u uit uw server gesloten!):

$ /sbin/iptables -A INPUT -i eth0 -j DROP

Voor deze regel hebben we twee keuzes. De eerste keuze is we gooien alle niet geaccepteerde packets weg. De client zal op een antwoord wachten tot een timeout. De tweede optie in alle packets weigeren (REJECT in plaats van DROP). Als een ongevraagt packet arriveerd, zullen we dit terug sturen en de client krijgt een error en hoeft daarmee niet te wachten.

Packets weigeren is netter, maar weggooien is veiliger. Inderdaad je server hoeft de gestuurde packets op de foutieve poort hoeven niet behandeld te worden en daarom kost het de server geen tijd om te antwoorden

De keuze is aan u ;)

Om de firewall te resetten typt u:

$ /sbin/iptables -F INPUT

TDit commando zal alle regels verwijderen uit het input gedeelte. Om een regel toe te voegen tussen de eerste en de tweede typ dit:

$ /sbin/iptables -I INPUT 2 ... the following of your rule

Om de derde regel te verwijderen typt u dit:

$ /sbin/iptables -D INPUT 3

Om een IP totaal te blokkeren typt u dit:

$ /sbin/iptables -I INPUT 1 -s -j DROP

Nu is de firewall actief. Probeer uw server te scannen u zult enkel poort 22 en poort 80 open staan. De scan is erg traag vanwege de Drop rule.

Een Ip address authoriseren of uitsluiten


Als u het ICMP protocol (Ping aanvragen) wilt blokkeren, dient u minimaal de servers ping.ovh.net, proxy.p19.ovh.net, proxy.rbx.ovh.net and proxy.ovh.net toe te staan dit te doen. Het maakt het voor het OVH Team mogelijk om de status van uw server te controleren

In aditie moet je het IP adres toestaan met het volgend voorbeeld:

Het Ip adres van uw server is aaa.bbb.ccc.ddd dan moet je aaa.bbb.ccc.250 toestaan: Voorbeeld: 213.186.57.153 moet 213.186.57.250 toestaan

IAls u een HG server heeft dient u het IP aaa.bbb.ccc.249 (tijdelijke regel) toe te staan.

Als u alle ping request blokkeren zelfs die van OVH, zullen we uw server niet meer kunnen observeren. Als er een probleem optreedt, wordt u niet meer geïnformeerd. Om Ping aanvragen van onze servers toe te staan typt u de volgende regels:

/sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.p19.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source ping.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source IP.250 -j ACCEPT # IP = aaa.bbb.ccc according to the previous rule
/sbin/iptables -A INPUT -i eth0 -p icmp --source IP.249 -j ACCEPT # temporary, only for HG server

Aangaande SSH, als u enkel toestaat van uw IP, adviseren wij u cache.ovh.net te behoouden. Inderdaad, als er een probleem met uw server optreed kunnen wij optreden het het repareren.Als u poort 22 sluit voor onze technici, kunnen wij u niet meer helpen als de server geblokeerd is.

Om SSH van onze server te authoriseren typr u het volgende:

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 --source cache.ovh.net -j ACCEPT

Als u een Raid systeem heeft moet u niet vergeten om uw NFS connecties te autoriseren. Alles wat komt van het intern netwerk 192.168.0.0/16: kan geautoriseerd worden

/sbin/iptables -A INPUT -i eth0 -p tcp --source 192.168.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p udp --source 192.168.0.0/16 -j ACCEPT

Als je een cluster confirugatie heb, dient u ook poort 79 te autoriseren om OCO te laten communiceren met de verdeler van de belasting van de server.

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 79 -j ACCEPT

Voorbeeld van een volledige configuratie.


Hier is een voorbeeld van een volledig script om je server te beschermen met behulp van IP tables. Het is Here's an example of complete script to protect your server via iptables. Dit voorbeeld is vrijblijvend, omdat alle services op uw systeem aanwezig zijn, en kan worden gebruikt voor uw eigen configuratie:

/sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 21 --source xx.xx.xx.xx -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 --source cache.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 --source xx.xx.xx.xx -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.p19.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source ping.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --source 192.168.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p udp --source 192.168.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 79 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -j REJECT

In deze regels, moet je xx.xx.xx.xx vervangen door het ip van uw server, waar u zich mee kan verbinden in FTP en SSH met uw server.

Automatische firewall


Zodra uw server perfect geconfigureerd is, moet je een script maken dat het automatisch zal starten zodra de server wordt gestart. Hier is een voorbeeld van hetgeen je in een bestand “firewall” in /etc/init.d/ dient te zetten:

#!/bin/sh

1. chkconfig: 3 21 91
2. description: Firewall


IPT=/sbin/iptables

case "$1" in
start)
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 10000 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 21 --source xx.xx.xx.xx -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 --source cache.ovh.net -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 --source xx.xx.xx.xx -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp --source proxy.ovh.net -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp --source proxy.p19.ovh.net -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp --source ping.ovh.net -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --source 192.168.0.0/16 -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --source 192.168.0.0/16 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 79 -j ACCEPT
$IPT -A INPUT -i eth0 -j REJECT
exit 0
;;

stop)
$IPT -F INPUT
exit 0
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
esac

Geeft het 700 rechten en typ "/etc/init.d/firewall start" om het te starten. Om het te stoppen typt u "/etc/init.d/firewall stop". Om het automatisch te starten gedurende de startup:

$ /sbin/chkconfig --level 3 firewall on
$ /sbin/chkconfig --level 06 firewall off

Alvorens het script in autostart te zetten controleer of het script werkt, anders zal uw server compleet geblokkeerd zijn!