Previous Up

6.2.3  Hoe deel ik een internetverbinding en stel ik een firewall op onder GNU/Linux?

Als het een GNU/Linux-computer is die is aangesloten op het internet, en wiens verbinding je wilt delen met andere computers in een lokaal netwerk, dan is het ‘IP Masquerading’, ook gekend als ‘Network Adress Translation’ wat je zoekt.

Vele beginners-distributies leveren een eenvoudige configuratie-tool om je NAT alsook firewall te configureren, en wij raden dan ook aan deze te gebruiken (e.g. ipmasq van Debian).

Voor andere distro’s kan je best de howtos http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO/index.html en http://www.linuxguruz.org/iptables/howto/iptables-HOWTO.html lezen. Een andere interessante site (Nederlandstalig!) is http://www.nedlinux.nl/ bart/index.php?page=3.

Toch een korte uitleg om je op weg te zetten...

De meest algemene manier om je internetverbinding te delen is d.m.v. iptables. Open een console, wordt root en type het volgende in (verondersteld is dat je intern netwerk het IP-nummer 192.168.0.XXX gebruikt):

/bin/echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables --flush
/sbin/iptables -A POSTROUTING -t nat -o $external_interface -j MASQUERADE
/sbin/iptables -A FORWARD -i $internal_interface -o $external_interface -s 192.168.0.0/24 -d ! 192.168.0.0/24 -j ACCEPT
/sbin/iptables -A FORWARD -o $internal_interface -i $external_interface -d 192.168.0.0/24 -s ! 192.168.0.0/24 -j ACCEPT

Hierin is $internal_interface de interface van je netwerk (e.g. eth1).

Hiermee heb je geen firewalling, terwijl dat vaak ook gewenst is. Een rudimentaire firewall zet je als volgt op:

~# iptables -A INPUT -i $external_interface -m state --state INVALID -j DROP       
~# iptables -A INPUT -i $external_interface -m state --state RELATED,ESTABLISHED -j ACCEPT

Hierin is $external_interface de interface die de verbinding met het internet maakt (e.g. eth0).

Nu moet je wel nog de poorten die je wel wil gebruiken (bv ssh, maar ook deze die gebruikt worden om bv via DHCP je ip te verkrijgen) open zetten. Als voorbeeld deze voor DHCP (poort 68):

~# iptables -A INPUT -i $external_interface -p tcp --dport 68 -j ACCEPT
~# iptables -A INPUT -i $external_interface -p udp --dport 68 -j ACCEPT

en dan ten slotte (het werkelijk negeren van alle andere verbindingen)

~# iptables -A INPUT -i $external_interface -m state --state NEW -j DROP

Het beveiligen tegen IP spoofing doe je als volgt:

~# echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

Best voeg je nog ondersteuning toe voor passive ftp in de firewall:

~# modprobe ip_conntrack_ftp

Om dit automatisch te laten uitvoeren zet je de commando’s in rc.local of maak je een eigen initscript aan (bv /etc/init.d/firewall) die de nodige acties verricht.

Veel distributies hebben /etc/sysctl.conf waarin je de nodige parameters zet zodat je al die echo 1 > ... niet meer hoeft uit te voeren.

Er bestaan ook programma’s waarmee je (al dan niet) snel een internetconnectie kan delen of een firewall kan instellen.


BCOL-FAQ : De Belgische Linux nieuwsgroep vragen
Previous Up