Hobby-firewall

From Hobbynet Admin Wiki
Revision as of 13:59, 3 October 2011 by Bas (talk | contribs)
Jump to navigation Jump to search

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