Du bist nicht eingeloggt.

Willkommen, Besucher
Bitte anmelden oder registrieren.    Passwort vergessen?

minimale sicherung durch firewall
(1 Leser) (1) Besucher
Zum Ende gehenSeite: 1
THEMA: minimale sicherung durch firewall
#8227
Thomas
Admin
Beiträge: 745
graphgraph
Benutzer online Hier klicken, um das Profil dieses Benutzers zu sehen
Geschlecht: männlich MeeGo.de Ort: Offenbach am Main Geburtstag: 13.03
minimale sicherung durch firewall vor 1 Monat Karma: 35
Das Nokia N900 ist ja eigentlich von Haus aus schon sicher, dennoch kann man sicher noch sicherer machen
Um nun eine minimale Sicherheit durch eine Firewall zu bekommen, braucht man eigentlich nur ein neues File anlegen und einige Zeilen hineinschreiben.
Ich weiss nicht genau, in welches Verzeichnis man diese Datei am besten schreibt, aber ich denke im /usr/bin ordner könnte sie gut aufgehoben sein.
Korrigiert mich bitte, falls es nicht so ist.
Also hier mal Schritt für Schritt:
Code:

cd /usr/bin
mk iptables.sh


In die nun erstellte Datei schreiben wir entweder anhand des mc oder des vi nun folgende Zeilen:
Code:


#!/bin/sh
iptables -F
iptables -A INPUT -p all -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP


Für diejenigen, die SSH nutzen wollen, die sollten vielleicht noch diese Zeile ergänzen:
Code:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Wobei --dport 22 der Port für ssh ist, wer einen anderen nutzt hier einfach die portnummer tauschen.
Danach speichern wir die Datei und machen sie ausführbar anhand von
Code:

chmod +x iptables.sh

Nun sollte durch aufruf von ./iptables.sh eine kleine Firewall auf dem N900 laufen.
 
Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren!
#8294
Duffman
Moderator
Beiträge: 613
graphgraph
Benutzer offline Hier klicken, um das Profil dieses Benutzers zu sehen
Geschlecht: männlich
Aw: minimale sicherung durch firewall vor 1 Monat Karma: 14
Oder vielleicht als Start/Stop-Skript in /etc/init.d erstellen und noch eine case-Anweisung mit start, stop einbauen.
 
D'OH
Duffman
Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren!
#8303
Duffman
Moderator
Beiträge: 613
graphgraph
Benutzer offline Hier klicken, um das Profil dieses Benutzers zu sehen
Geschlecht: männlich
Aw: minimale sicherung durch firewall vor 1 Monat Karma: 14
Habe das Skript ein wenig erweitert und noch ein Logging eingebaut (1. Version).

Dazu muss allerdings das Paket sysklogd installiert sein, damit das Skript nach /var/log/syslog loggen kann.


Das firewall Skript:
Code:


#!/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)

# 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
function flush_chains {
  $IPTABLES -F
  $IPTABLES -X  # benutzerdefinierte Ketten loeschen
}

# Startet die gesamte Firewall 
function 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_IFACE -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

  # 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

  # 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

  # 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
}

# Deaktiviere alle IPTABLES-Regeln (Firewall ausschalten)
function 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    



Man könnte nun eventuell noch ein app für die Firewall erstellen, damit man diese einfacher manuell ein und ausschalten kann.

Bei Problemen sollte man auf jeden Fall immer mal ins syslog schauen!
 
Letzte Änderung: 02.08.2010 20:44 von Duffman.
D'OH
Duffman
Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren!
Zum Anfang gehenSeite: 1
Moderation: Duffman, Marzl85
die neusten Beiträge direkt auf deinem Desktop erhalten
JoomlaWatch Stats 1.2.9 by Matej Koval