# !/bin/sh
#
# Konfigurer sikkert netvaerk for Linux 7.x
#
# Ved f.eks. brug af Linux til deling af Internet på netwaerk.
#
# chkconfig: - 06 90
# Beskrivelse: Setup firewall og netvaerk sikkerhed
# Dette forudsaetter at dit Internet er på eth0 forbindelse
# og den lokale (trovaerdige) LAN er eth1

#
# Aktiver eller deaktiver regel, ved at fjerne eller indsætte "#"
#
# For at installere dette på et Fedora Core system,
# gem dette script som:
# /etc/rc.d/init.d/securenet
# koer derefter kommandoerne herunder i terminalvinduet:
#
# chmod 755 /etc/rc.d/init.d/securenet
# /sbin/chkconfig --add securenet
# /sbin/chkconfig --level 2345 securenet on
#
# Resten klarer scriptet selv, bortset fra at skrive
# et 1-tal i en fil til allersidst:
#
# Denne "iptables" kommando er tilgaengelig fra
# http://netfilter.kernelnotes.org/
# Og rpm-pakken er tilgaengelig fra Fedora Core's
# contrib-section
#
# Henrik Størner, henrik@storner.dk
# Redigeret 08.02 niveaa.dk

PATH=/bin:/sbin:/usr/bin:/usr/sbin

#########################################
# Foerst setup nogle kernel features
#########################################

# Deaktiver forwarding - dette er for systemer der ikke
# indgaar i netvaerk.
# (For masquerading, (netvaerk) se senere).
# echo "0" >/proc/sys/net/ipv4/ip_forward

# Aktiver syn-cookies (syn-flooding "angreb")
echo "1" >/proc/sys/net/ipv4/tcp_syncookies

# Deaktiver ICMP echo-request til broadcast addresser
# (Smurf amplifier)
echo "1" >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Deaktiver source-routing og aktiver IP spoof detection
# Det ser ud til at dette maa goeres for alle netvaerk interfaces
for f in /proc/sys/net/ipv4/conf/*; do
# Drop alle source-routed pakker
echo "0" >$f/accept_source_route

# Aktiver source-address verification (anti spoofing).
# Vaerdien 2 betyder brug adgangs filtrering som per RFC 1812.
# Det ovenover er lidt mere end et simpelt routing tjek
# (aktiver med 1) men det er uden betydning for de
# fleste hjemme brugere.
echo "2" >$f/rp_filter
done

# Indlaes ftp "aktive transfere" moduler.
# hvis din hjemmeside filer ikke kan overfoeres til en
# ftp-fjernadresse via passive transfere
# (med dit ftp-program fra en anden enhed
# paa netvaerket)
#      /sbin/modprobe ip_conntrack_ftp
#      /sbin/modprobe ip_nat_ftp

######################
# Setup IP firewalling
######################

# Standard regler
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT

# Lav en faelles kaede for INPUT og FORWARD handlinger
# kaedenavn "block"
iptables -N block
iptables -F block

# Tillad trafik paa etablerede forbindelser
iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
# Tillad nye forbindelser, hvis det ikke er udefra.
iptables -A block -m state --state NEW -i ! eth0 -j ACCEPT

# Drop hjemmesider som mine boern ikke maa se - skriv ip-nummeret
# iptables -A block --destination 80.198.x.x -j DROP
# Husk at koer "service securenet restart" naar du har
# tilfoejet ip-adresser.

# Drop foelgende ip-numre som generer min webserver med
# ulovlige forespoergsler i laengere tid
# iptables -A block --source 80.198.29.171 -j DROP
# iptables -A block --source 80.198.29.173 -j DROP
# Husk at koer "service securenet restart" naar du har
# tilfoejet ip-adresser.

# Kun for webserver (httpd service).
# Tillad ny forbindelse til vor offentlige http service
# For hjemme brugere er der normalt ingen webserver.
# Hvordan du goer dette, afhaenger af, om servicen koerer paa
# firewall serveren, eller paa et andet system "bag"
# firewall'en (brandmuren)
# (paa den interne LAN, eller paa en separat netvaerks
# enhed - kaldet DMZ).
# Den foelgende kommando behoeves i begge tilfaelde:

# Her Aabnes for din httpd (www) webserver.
iptables -A block -m state --protocol tcp --state NEW --destination-port http -j ACCEPT

# Nedenstaaende kun hvis httpd (webserveren) befinder sig
# paa en anden enhed i netvaerket. (her: 192.168.1.2), saa maa du
# lave "port forwarding" som her (ingen brug for ipmasqadm mere):
# iptables -t nat -A PREROUTING --protocol tcp --destination-port http -j DNAT --to
# 192.168.1.2

# Bloker alt andet
iptables -A block -j LOG

# Aktiver den nye kaede
iptables -A INPUT -j block
iptables -A FORWARD -j block

######################################
# Setup Masquerading (deling af Internet f.eks.)
######################################

# Setup NAT for udgaaende forbindelser fra det lokale netwaerk
# Hvis du har netvaerk bag linux serveren, og maskinerne
# bagved skal på
# Internettet, og du skal bruge ftp til fjernadresser osv.
### NB: Dette er slaaet fra som default. Hvis du oensker at bruge ###
### masquerading, fjern "###" kommentar maerkerne ###
### fra linierne her under ###

iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


# NB: På et Fedora Core system, er forwarding
# kontrolleret i /etc/sysctl.conf !
# Du skal derfor saette net.ipv4.ip_forward=1 (til 1)
# i denne fil, ellers vil
# kommandoen herunder ikke have nogen effekt.
# Filen findes i stien som vist i kommandoen herover

echo "1" >/proc/sys/net/ipv4/ip_forward

#Slut