Hobby-firewall: Difference between revisions

From Hobbynet Admin Wiki
Jump to navigation Jump to search
Line 215: Line 215:
cp /usr/local/hobbynet/firewall/general/rules /etc/hobby-firewall
cp /usr/local/hobbynet/firewall/general/rules /etc/hobby-firewall
cp /usr/local/hobbynet/firewall/general/rules6 /etc/hobby-firewall
cp /usr/local/hobbynet/firewall/general/rules6 /etc/hobby-firewall
chmod 600 /etc/hobby-firewall/*
</pre>
</pre>
pas hier na de rule files nog aan zodat ze geschikt zijn deze server
pas hier na de rule files nog aan zodat ze geschikt zijn deze server

Revision as of 14:15, 3 October 2011

waar staan de files en waar dienen ze voor

lokale files

  • /etc/init.d/hobby-firewall (het init script)
  • /etc/hobby-firewall/rules (de lokale IPv4 rules file)
  • /etc/hobby-firewall/rules6 (de lokale IPv6 rules file)
  • /etc/hobby-firewall/hobby-firewall.local (stuur script voor omzetten van hostnamen van websites en ftp adressen)

symlinks centraal beheerde files voor die server specifiek

Deze staan in /usr/local/hobbynet/firewall/

  • /etc/hobby-firewall/allow_http (symlink naar de file met de websites waarna de server mag connecten)
  • /etc/hobby-firewall/allow_ftp (symlink naar de file met de ftpservers waarna de server mag connecten)
  • /etc/hobby-firewall/allow_http.ip4 (symlink naar de file met IPv4 adressen van websites waarna de server mag connecten)
  • /etc/hobby-firewall/allow_ftp.ip4 (symlink naar de file met IPv4 adressen van ftpservers waarna de server mag connecten)
  • /etc/hobby-firewall/allow_http.ip6 (symlink naar de file met IPv6 adressen van websites waarna de server mag connecten)
  • /etc/hobby-firewall/allow_ftp.ip6 (symlink naar de file met IPv6 adressen van ftpservers waarna de server mag connecten)

Scripts gebruikt door firewall

  • /usr/local/hobbynet/bin/getip-http (dit script zet allow_http files om naar lijst met ip addressen)
  • /usr/local/hobbynet/bin/getip-ftp (dit script zet allow_ftp files om naar lijst met ip addressen)
  • /usr/local/hobbynet/bin/get_ip4 (dit script kopieert de centraal beheerde ipv4 files met extentie .ip4 naar lokale server)
  • /usr/local/hobbynet/bin/get_ip6 (dit script kopieert de centraal beheerde ipv6 files met extentie .ip6 naar lokale server)

centraal beheerde files

  • /usr/local/hobbynet/firewall/general/hobby-firewall ( Het orginele init script van de firewall het staat hier en niet in bin wat hier kunnen alle servers er bij)
  • /usr/local/hobbynet/firewall/general/knownoffenders.ip4 (lijst bekend onverlaten die wij blokken IPv4)
  • /usr/local/hobbynet/firewall/general/knownoffenders.ip6 (lijst bekend onverlaten die wij blokken IPv6)
  • /usr/local/hobbynet/firewall/general/in_up.ip4 ( het bovenste deel van de centraal beheerder incoming firewall rules)
  • /usr/local/hobbynet/firewall/general/in_down.ip4 ( het onderste deel van de centraal beheerder incoming firewall rules)
  • /usr/local/hobbynet/firewall/general/out_up.ip4 ( het bovenste deel van de centraal beheerder outgoing firewall rules)
  • /usr/local/hobbynet/firewall/general/out_down.ip4 ( het onderste deel van de centraal beheerder outgoing firewall rules)

files

/etc/init.d/hobby-firewall

Dit script zorgt er voor de firewall wordt gestart en de rules files worden ingelezen en verwerkt.

/etc/hobby-firewall/rules

In de rules file staan naast de lokaal gelden firewall rules ook de includes van de centraal beheerde bestanden.<anbr> In standaard rules files voor webserver ziet er zo uit :

#! /bin/bash
#

#####
#
# IPv4 rule file voor hobbynet-firewall
#
#####

PUBIF="eth0"
LOCIF="eth1"

# Inbound established and related traffic is ok:
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# include default incoming rules UP
. /etc/hobby-firewall/in_up.ip4

# HTTP/HTTPS are always allowed:
$IPTABLES -A INPUT -p tcp --dport  80  -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 443  -m state --state NEW -j ACCEPT

# include default incoming rules DOWN
. /etc/hobby-firewall/in_down.ip4


## OUTPUT ##

# Outbound established and related traffic is ok:
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# include default outcomming rules UP
. /etc/hobby-firewall/out_up.ip4

# include http_allow.ip4
. /etc/hobby-firewall/http_allow.ip4

# include ftp_allow.ip4
. /etc/hobby-firewall/ftp_allow.ip4

# include default outgoing rules down
. /etc/hobby-firewall/out_down.ip4

/etc/hobby-firewall/rules6

Volgt nog zodra deze ook gestandiseert is

/etc/hobby-firewall/hobby-firewall.local

Wanneer deze file op server bestaat zorgt deze er voor dat de allow_* files worden omgezet naar ip adresseren en worden toegestaan in de uitgaande firewall.

#!/bin/bash
# Vertaal domeinnamen naar IP adressen t.b.v. hobby-firewall

# In de onderliggende scripts wordt $MAPNAME vertaald
# naar /usr/local/hobbynet/firewall/$MAPNAME.
# In die map staan de originele 'allow'-bestanden
# die vertaald gaan worden naar een lijst met IP adressen.

MAPNAME=cacert

/usr/local/hobbynet/bin/getip-http $MAPNAME
/usr/local/hobbynet/bin/getip-ftp  $MAPNAME

$MAPNAME geeft aan in welke directory de allow files staan in /usr/local/hobbynet/firewall

/usr/local/hobbynet/bin/getip-http

Dit script maakt van de allow_http allow_http.ip4 allow_http.ip6 een lijst van toegestane webservers

#!/bin/sh
#
#  dit script zorgt er voor dat ip address zo wel IPv4 als IPv6 worden opgehaald voor dat de firewall wordt gestart of hestart
#
#
HOSTS=/usr/local/hobbynet/firewall/$1/allow_http
HOSTSIP4=/usr/local/hobbynet/firewall/$1/allow_http.ip4
HOSTSIP6=/usr/local/hobbynet/firewall/$1/allow_http.ip6
HOSTSV4RAW=/etc/hobby-firewall/allow_http.v4raw
HOSTSV6RAW=/etc/hobby-firewall/allow_http.v6raw
HOSTSV4=/etc/hobby-firewall/allow_http.v4
HOSTSV6=/etc/hobby-firewall/allow_http.v6

# check if $HOSTS exisists
if [ ! -e $HOSTS ] ; then
   echo "$HOSTS ontbreekt geen nieuwe ip files gemaakt!!"
   exit 1
fi


rm $HOSTSV4 $HOSTSV6

echo generating http IPv4 adres file and IPv6 adres file from $HOSTS


for i in `cat $HOSTS`
do
server_ip=`host $i |grep address | grep -v IPv6|awk '{printf "%s\n",$4}'`
echo $server_ip >> $HOSTSV4RAW
server_ip=`host $i |grep address | grep IPv6|awk '{printf "%s\n",$5}'`
echo $server_ip>> $HOSTSV6RAW

# niet resolve bare namen weer geven
# developers.facebook.com wordt wel gevonden maar geeft ook not found dus exclude van de weergave
host $i| grep "not found:"| grep -v developers.facebook.com


done

# ip addressen lijst toevoegen aan de raw file
cat $HOSTSIP4 >> $HOSTSV4RAW
cat $HOSTSIP6 >> $HOSTSV6RAW

# raw files strippen van lege regels en alle ip addressen op eigen regel zetten
cat $HOSTSV4RAW | tr ' ' '\n'| sed '/^$/d'  > $HOSTSV4
cat $HOSTSV6RAW | tr ' ' '\n'| sed '/^$/d'  > $HOSTSV6

#raw files opruimen
rm $HOSTSV4RAW $HOSTSV6RAW

/usr/local/hobbynet/bin/getip-ftp

Dit script maakt van de allow_ftp allow_ftp.ip4 allow_ftp.ip6 een lijst van toegestane

#!/bin/sh
#
#  dit script zorgt er voor dat ip address zo wel IPv4 als IPv6 worden opgehaald voor dat de firewall wordt gestart of hestart
#
#
HOSTS=/usr/local/hobbynet/firewall/$1/allow_ftp
HOSTSIP4=/usr/local/hobbynet/firewall/$1/allow_ftp.ip4
HOSTSIP6=/usr/local/hobbynet/firewall/$1/allow_ftp.ip6
HOSTSV4RAW=/etc/hobby-firewall/allow_ftp.v4raw
HOSTSV6RAW=/etc/hobby-firewall/allow_ftp.v6raw
HOSTSV4=/etc/hobby-firewall/allow_ftp.v4
HOSTSV6=/etc/hobby-firewall/allow_ftp.v6

# check if $HOSTS exisists
if [ ! -e $HOSTS ] ; then
   echo "$HOSTS ontbreekt geen nieuwe ip files gemaakt!!"
   exit 1
fi


rm $HOSTSV4 $HOSTSV6

echo generating FTP IPv4 adres file and IPv6 adres file from $HOSTS


for i in `cat $HOSTS`
do
server_ip=`host $i |grep address | grep -v IPv6|awk '{printf "%s\n",$4}'`
echo $server_ip >> $HOSTSV4RAW
server_ip=`host $i |grep address | grep IPv6|awk '{printf "%s\n",$5}'`
echo $server_ip>> $HOSTSV6RAW

# niet resolve bare namen weer geven
# developers.facebook.com wordt wel gevonden maar geeft ook not found dus exclude van de weergave
host $i| grep "not found:"| grep -v developers.facebook.com


done

# ip addressen lijst toevoegen aan de raw file
cat $HOSTSIP4 >> $HOSTSV4RAW
cat $HOSTSIP6 >> $HOSTSV6RAW

# raw files strippen van lege regels en alle ip addressen op eigen regel zetten
cat $HOSTSV4RAW | tr ' ' '\n'| sed '/^$/d'  > $HOSTSV4
cat $HOSTSV6RAW | tr ' ' '\n'| sed '/^$/d'  > $HOSTSV6

#raw files opruimen
rm $HOSTSV4RAW $HOSTSV6RAW

instalatie nieuwe firewall

Zorg er voor dat volgende mount points er zijn /usr/local/hobbynet/firewall/general /usr/local/hobbynet/bin
Indien gebruik wordt gemaakt wordt van allow_http en ftp dan moet commentaar uit rules file worden verwijderd en moet er ook mount point zijn /usr/local/hobbynet/firewall/naamserver(groep)
indien er lokale /usr/local/hobbynet/bin directory is moeten daar volgende files naar toe gekopieerd worden getip_http, getip_ftp, get_ip4 en get_ip6

cp /usr/local/hobbynet/firewall/general/hobby-firewall /etc/init.d/hobby-firewall
mkdir /etc/hobby-firewall
cp /usr/local/hobbynet/firewall/general/rules /etc/hobby-firewall
cp /usr/local/hobbynet/firewall/general/rules6 /etc/hobby-firewall
chmod 600 /etc/hobby-firewall/*

pas hier na de rule files nog aan zodat ze geschikt zijn deze server