Thread
:
n900 eats my money
View Single Post
gerdich
2010-09-22 , 15:27
Posts: 323 | Thanked: 116 times | Joined on Jul 2010
#
11
For the moment I've adapted the firewall of this site:
http://meego.de/forum/netzwerk/8227-...-firewall.html
to this text:
#!/bin/bash
################################################## #################################################
## NAME
## firewall - n900 firewall
##
## SYNTAX
## firewall [-?] <start|stop|restart>
##
## ARGUMENTS
## -? ................. Show this help
## start .............. Start the firewall on all interfaces
## stop ............... Stop the firewall on all interfaces
## restart ............ Restart the firewall on all interfaces (stop & start)
##
## DESCRIPTION
## This script activates the whole firewall of the n900 (by default).
##
## AUTHOR
## Duffman, Germany
##
################################################## #################################################
#--------------------------------------------------------------------------------------------------
# Statische Variablen festlegen
#--------------------------------------------------------------------------------------------------
# Interfaces zuweisen
INET_IFACE=wlan0 # Internet-Interface (extern)
INET_GPRS=gprs0
# Definiere einige Befehle
ECHO=$(which echo)
IPTABLES=$(which iptables)
MODPROBE=$(which modprobe)
RMMOD=$(which rmmod)
#--------------------------------------------------------------------------------------------------
# Funktionen
#--------------------------------------------------------------------------------------------------
# Automatisches Logging aktivieren
#function logging {
# Logging der eingehenden Pakete
# $IPTABLES -A INPUT -i $INET_IFACE -j LOG --log-prefix "INPUT($INET_IFACE): "
# Logging der durchgereichten Pakete
# $IPTABLES -A FORWARD -i $INET_IFACE -j LOG --log-prefix "FORWARD($INET_IFACE): "
# Logging der ausgehenden Pakete
# $IPTABLES -A OUTPUT -o $INET_IFACE -j LOG --log-prefix "OUTPUT($INET_IFACE): "
#}
# Leere die Ketten
flush_chains ()
{
$IPTABLES -F
$IPTABLES -X # benutzerdefinierte Ketten loeschen
}
# Startet die gesamte Firewall
start_firewall ()
{
# Module laden
$MODPROBE xt_state # wird fuer -m state beim Verbindungszustand benoetigt
$MODPROBE nf_conntrack_ipv4 # gehoert zum Modul nf_conntrack bzw. ip_conntrack (alter Name)
$MODPROBE ip_conntrack # die Anzahl an Bytes fuer Verbindungen kann in /proc/net/ip_conntrack nachgeschaut werden
$MODPROBE ipt_LOG # fuer das Logging und deren Ausgabe im Logfile
#$MODPROBE ipt_recent # speichert Informationen in /proc/net/ipt_recent/*
# Verwerfe erstmal alles
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
# Kernelparameter fuer das IP-Forwarding setzen
$ECHO "1" > /proc/sys/net/ipv4/ip_forward
# Akzeptiere alle Pakete, die Teil einer aufgebauten Verbindung sind
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Loopback erlauben
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
# SSH-Verbindungen auf Port 22 erlauben
$IPTABLES -A INPUT -i $INET_IFACE -p tcp --dport 22 -m hashlimit --hashlimit 1/min --hashlimit-mode srcip \
--hashlimit-name SSH -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -i $INET_GPRS -p tcp --dport 22 -m hashlimit --hashlimit 1/min --hashlimit-mode srcip \
--hashlimit-name SSH -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -i $INET_IFACE -p tcp --dport 22 -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -i $INET_GPRS -p tcp --dport 22 -m state --state NEW -j ACCEPT
# Abgehende TCP-Verbindungen erlauben
$IPTABLES -A OUTPUT -o $INET_IFACE -p tcp -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -o $INET_GPRS -p tcp -m state --state NEW -j ACCEPT
# Ping-Befehl auf dem Interface $INT_IFACE (Internet) erlauben (eingehenden ping erlauben)
$IPTABLES -A INPUT -i $INET_IFACE -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -i $INET_GPRS -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT
# Ping-Befehl vom Interface $INET_IFACE (Internet) erlauben (ausgehenden ping erlauben)
$IPTABLES -A OUTPUT -o $INET_IFACE -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -o $INET_GPRS -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT
# Updates ueber die source.list per http erlauben
$IPTABLES -A OUTPUT -o $INET_IFACE -p tcp --dport 80 -m state --state NEW -j ACCEPT
# Erlaube neue DNS-Anfragen
$IPTABLES -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
# ICMP destination-unreachable Meldungen erlauben
$IPTABLES -A INPUT -i $INET_IFACE -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT
$IPTABLES -A INPUT -i $INET_GPRS -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT
}
# Deaktiviere alle IPTABLES-Regeln (Firewall ausschalten)
stop_firewall ()
{
# Alle vorhandenen Regeln loeschen (Funktion flush_chains aufrufen)
flush_chains
# Default-Policy herstellen und alle Pakete erlauben
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
# Forwarding deaktivieren
$ECHO "0" > /proc/sys/net/ipv4/ip_forward
}
#-------------------------------------------------------------------------------}
#-------------------------------------------------------------------------------
# Hauptteil
#-------------------------------------------------------------------------------
case "$1" in
start)
start_firewall
# logging
;;
stop)
stop_firewall
;;
restart)
$0 stop
$0 start
;;
*)
# Gibt die Usage (siehe Skriptanfang) aus
awk '/^##($|[^#])+/ {print substr($0,4)}' $0
exit 0
;;
esac
If somebody is interested I can tell the result in one week.
I'don't know much about iptables.
Perhaps some expert can tell us if that makes sense?
Quote & Reply
|
gerdich
View Public Profile
Send a private message to gerdich
Find all posts by gerdich