Ett större exempel

/etc/rc.d/init.d/firewall-start

Vi börjar med att skapa filen /etc/rc.d/init.d/firewall-start för att sätta upp standardregler och rensa bort gamla regler och gamla kedjor.

#!/bin/sh

# Firewall rules

# Sätt upp standardregler
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT

# Rensa bort gamla brandväggsregler
/sbin/iptables -F
/sbin/iptables -t nat -F

# Rensa bort gamla kedjor
/sbin/iptables -X

/etc/rc.d/init.d/firewall

Därefter skapar vi filen /etc/rc.d/init.d/firewall som är den som sätter upp brandväggsreglerna.

#!/bin/sh
# Min egna IP-adress
ME=`/sbin/ifconfig eth0 |sed -n '/inet/s/^[ ]*inet addr:\([0-9.]*\).*/\1/p'`
# Min broadcastadress
MYBROADCAST=`/sbin/ifconfig eth0 |sed -n '/inet/s/^.*Bcast:\([0-9.]*\).*/\1/p'`

# Skapa en kedja logdrop för att logga och kasta trafik
/sbin/iptables -N logdrop
/sbin/iptables -A logdrop -j LOG
/sbin/iptables -A logdrop -j DROP


# Logga och kasta nya tcp-paket som inte är SYN-paket.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "NEW NOT SYN  "
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Logga och spärra ut netbus
/sbin/iptables -A INPUT -p tcp --destination-port 12345 -j logdrop
/sbin/iptables -A INPUT -p udp --destination-port 12345 -j logdrop


# Spärra ut näten 10.0.0.0/8, 172.16.0.0/16 och 192.168.0.0/16
/sbin/iptables -A INPUT --source 10.0.0.0/8 -j DROP
/sbin/iptables -A INPUT --source 172.16.0.0/12 -j DROP
/sbin/iptables -A INPUT --source 192.168.0.0/16 -j DROP

# Tillåt att prata med sig själv
/sbin/iptables -A INPUT --in-interface lo --source 127.0.0.0/8 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --in-interface lo --source $ME --destination $ME  -j ACCEPT

# Spärra ut avsändaradress 127.0.0.0/8 från omvärlden (som inte kommer
# från loopback)
/sbin/iptables -A INPUT --in-interface ! lo --source 127.0.0.0/8 -j DROP

# Spärra trafik som kommer till broadcastadressen
/sbin/iptables -A INPUT --destination $MYBROADCAST/32 -j DROP

# Släpp in ICMP-trafik
/sbin/iptables -A INPUT  -p icmp --icmp-type 0 -j ACCEPT
/sbin/iptables -A INPUT  -p icmp --icmp-type 8 -j ACCEPT
/sbin/iptables -A INPUT  -p icmp --icmp-type 3 -j ACCEPT
/sbin/iptables -A INPUT  -p icmp --icmp-type 11 -j ACCEPT

# Släpp in trafik till egna servertjänster
# Släpp in trafik till servertjänster på låga portar
# Tjänst    protokoll     klientportar     serverport
#  ssh         tcp         1-65535          22
/sbin/iptables -A INPUT -m state --state NEW -p tcp --syn --destination-port 22 -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -p tcp --destination-port 22 -j ACCEPT
#  smtp        tcp         1-65535          25
/sbin/iptables -A INPUT -m state --state NEW -p tcp --syn --destination-port 25 -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -p tcp --destination-port 25 -j ACCEPT
#  www         tcp         1-65535          80
/sbin/iptables -A INPUT -m state --state NEW -p tcp --syn --destination-port 80 -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -p tcp --destination-port 80 -j ACCEPT
# Släpp in trafik från ntp-servern 1.2.3.4 port 123 (ändra till din 
# nätleverantörs ntp-server) till port 123
/sbin/iptables -A INPUT -p udp --source 1.2.3.4 --sport 123 --destination-port 123 -j ACCEPT

# Släpp fram svarstrafik
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# För att ESTABLISHED, RELATED ska fungera bra för FTP-trafik ladda
# nedanstående modul. Om den ligger fast i kärnan kommentera bort raden.
modprobe ip_conntrack_ftp

# Logga och spärra resten
/sbin/iptables -A INPUT -j logdrop

Spara de två filerna och gör de exekverbara med:
chmod a+x /etc/rc.d/init.d/firewall-start
chmod a+x /etc/rc.d/init.d/firewall

Starta brandväggsreglerna automatisk vid boot

Nästa steg är att se till att brandväggsreglerna automatiskt sätts upp vid boot.

Om din dator normalt bootar till run level 3 går du till katalogen /etc/rc.d/rc3.d (RedHat och RedHat-liknande system) med kommandot:
cd /etc/rc.d/rc3.d
Om du använder grafisk inloggning, dvs din dator bootar normalt till run level 5 går du istället till katalogen /etc/rc.d/rc5.d (RedHat och RedHat-liknande system) med kommandot:
cd /etc/rc.d/rc5.d

I andra Linuxsystem kan katalogerna rc3.d respektive rc5.d ligga till exempel direkt under /etc och där får du istället göra:
cd /etc/rc3.d respektive
cd /etc/rc5.d

Är du osäker på vilken run level din dator bootar till kan du titta i filen /etc/inittab efter följande rad:
id:3:initdefault:
siffran 3 innebär att datorn normalt bootar till run level 3.

Nästa steg är att sätta upp symboliska länkar för att få brandväggsreglerna att automatiskt sättas upp vid boot. Först sätts standardreglerna upp innan nätverket tas upp och sedan sätts brandväggsregler upp efter att nätverket har kommit upp. Gör:
ln -s ../init.d/firewall-start S01firewall-start
ln -s ../init.d/firewall S12firewall

Mer utförlig beskrivning av vad run levels är och hur de fungerar hittar du här.

Copyright © 2010 Kjell Enblom.
This document is covered by the GNU Free Documentation License, Version 1.1