Firewall Skript sauber/sicher?

Dieses Thema: "Firewall Skript sauber/sicher?" im Forum "Firewalls" wurde erstellt von variable, 11.12.2008.

  1. #1 variable, 11.12.2008
    variable

    variable Grünschnabel

    Dabei seit:
    09.12.2008
    Beiträge:
    3
    Zustimmungen:
    0
    Hallo,
    ich versuche grade meine vHost mittels iptables abzusichern. Dazu habe ich folgendes Skript geschrieben:

    Code:
    #!/bin/sh
    # Flush
    iptables -F
    iptables -X
    iptables -t nat -F
    
    # Standard Policies
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    
    # Incoming
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    
    # Loopback
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    
    # DNS
    iptables -A OUTPUT -p tcp --sport 1024: --dport 53 -j ACCEPT
    iptables -A OUTPUT -p udp --sport 1024: --dport 53 -j ACCEPT
    
    # NTP
    iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
    
    # APT-GET
    iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
    
    # SSH
    iptables -A INPUT -p tcp -m iprange --src-range *.*.0.1-*.*.255.255 --dport 22 -j ACCEPT
    iptables -A OUTPUT -p tcp -m iprange --dst-range *.*.0.1-*.*.255.255 --sport 22 -j ACCEPT
    
    # BNC
    iptables -A INPUT -p tcp  -m iprange --src-range *.*.0.1-*.*.255.255 --dport 5873 -j ACCEPT
    iptables -A OUTPUT -p tcp -m iprange --dst-range *.*.0.1-*.*.255.255 --sport 5873 -j ACCEPT
    
    # Connection to IRC
    iptables -A OUTPUT -p tcp --dport 7000 -j ACCEPT
    Die ersten Zeilen sollten selbsterklärend sein. Der SSH und der Bouncer Port sollen nur einer bestimmten (dynamischen) IP zugänglich sein.
    Btw.: Ist es möglich eine Domain als Quelle oder Ziel zu definieren? Also ist es möglich z.B. eine DynDNS dort einzutragen?
    Wird dieses Skript den Rechner gut genug abschotten? Sollten andere Optionen gewählt werden?

    Vielen Dank im Vorraus,
    Variable
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Gast1

    Gast1 Guest

    Vielleicht solltest Du Dir als Alternative zu diesem "IP-Range freigeben" Portknocking ansehen.
     
  4. #3 pitschi5, 11.12.2008
    pitschi5

    pitschi5 ***BOFH

    Dabei seit:
    30.04.2005
    Beiträge:
    81
    Zustimmungen:
    0
    Ort:
    Wasserliesch, Germany
    Hi,

    nur schnell zu deiner Frage, ja ein DynDNS-Alias funktioniert grundsätzlich, allerdings nur solange deine IP nicht ändert, wenn der DynDNS die IP ändert musst du das Firewall-Script neu starten, dann gehts wieder, kann man aber eventuell über einen Cron regeln.

    cheers,
     
  5. hex

    hex Lebende Foren Legende
    Moderator

    Dabei seit:
    10.12.2003
    Beiträge:
    1.775
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Du kannst auch die hosts.allow für SSH mit einem cronjob modifizieren. So hab ich es gemacht. Funktioniert eigentlich recht gut. Einzig wenn die IP umstellt muss ich kurz warten, bis der Server die richtige IP wieder hat. Kam aber bisher nur ein Mal vor. ;)

    mfg
     
  6. #5 variable, 11.12.2008
    variable

    variable Grünschnabel

    Dabei seit:
    09.12.2008
    Beiträge:
    3
    Zustimmungen:
    0
    Hey,
    danke für Eure Antworten.

    Die Sache mit dem Portknocking hört sich extrem interessant an. Habe davon vorher noch nichts gehört, aber ich werde mich nun damit beschäftigen. Danke Rain_Maker!

    Zu der Sache mit der DynDNS:
    Wäre es nicht dann sinnvoll, ein separates Skript für die Regeln von SSH und dem BNC zu erstellen? Ansonsten wird doch die komplette Firewall für einen moment deaktiviert, oder?
    Was würde denn mehr Sinn machen bzw was wäre sicherer? Die IP über die iptables durchzulassen oder das auf Anwendungsebene (vom SSHD) übernehmen zu lassen?

    Ist der Rest der Firewall Konfiguration denn nun sicher?

    Danke,
    variable
     
  7. #6 Tomekk228, 12.12.2008
    Tomekk228

    Tomekk228 Lebende Foren Legende

    Dabei seit:
    14.08.2007
    Beiträge:
    2.417
    Zustimmungen:
    0
    Ort:
    /home/tomekk/
    Ich gehe mal davon aus das du ein anderen Rechner nur den Zugang zur SSH gewähren willst.

    Dieser steht zuhause und hat eine Dynamische IP. Also machst du dir ein Account bei dyndns.org oder no-ip.org (o.ä).

    Für dyndns.org Adressen kannst du ddclient nehmen. Für no-ip.org den eigenen von der Page.

    Das Tool installierst du auf den Rechner der zugang zum Server haben soll (oder du trägst es im Router ein wenn es unterstützt wird). Zuletzt trägst du dann die dyndns Adresse in iptables ein.

    Per host.allow kann man es auch regeln. Es gibt hunderte von wegen dieses "Problem" zu beheben :)
     
  8. #7 Gast1, 12.12.2008
    Zuletzt von einem Moderator bearbeitet: 12.12.2008
    Gast1

    Gast1 Guest

    Zumindest umgeht es das Problem spezieller iptables-Regeln, denn es wird nur der freigegeben, der "richtig anklopft" (für eine von Dir festgelegte Zeit).

    Einziger "Haken" an der Geschichte ist natürlich, daß ohne laufenden Portknocking Demon kein Zugriff möglich wäre, weshalb das zusätzlich "abgesichert" werden muss.

    Mein Setup sieht prinzipiell so aus (ist nur Spielerei um von "draussen" auf meine Kiste zu Hause zu kommen)

    a) Portknocking für Port 22 ist aktiviert, der Port ist natürlich per default vom Paketfilter geblockt

    b) DynDNS-Client auf meiner Maschine, der alle 5 Minuten ein Update fährt. Das sorgt eigentlich "nur" dafür, daß eben auch nach einem 24h-Reconnect (mit IP-Wechsel) Zugriff möglich ist.

    c) Der Portknocking-Demon und der DynDNS-Client werden per "post up"-Script bei jedem ifup $INTERFACENAME gekillt und neu gestartet

    d) Cronjob, der alle 10 Minuten prüft, ob beide Prozesse laufen und ggf. neu startet

    Wenn alles klappt, dann kann man von überall auf die Kiste zugreifen, jedoch ist der SSH-Port für einen "Angreifer" immer zu, da der Portknocking-Demon den SSH-Port nur für die IP öffnet, die anklopft, die "Anklopfsequenz" besteht aus der richtigen Reihenfolge von vier Paketen (TCP/UDP gemischt, man kann auch mehr Pakete nehmen, siehe die Doku), also gäbe es 2*65535^4 Möglichkeiten, was für ein "Erraten" doch etwas lange dauern dürfte.

    Der Angreifer müsste also "Man in the Middle" spielen können, dagegen kann man sich aber nur auf dem Client-System absichern, auf dem Server kann man dagegen nichts unternehmen.

    Und selbst wenn jemand die richtige Sequenz "Erraten" könnte, so muss er immer noch

    a) mit der richtigen User-ID einloggen (die nur für diesen Login existiert, danach wechsle ich mit su -u AndererUser zum normalen Systemuser oder root)

    b) den passenden Key haben (Login per Passwort ist deaktiviert)

    c) die Passphrase zur Freischaltung des Keys haben

    d) Username und Passwort eines Users kennen, welcher auf dem System mehr als nur ein bis auf die notwendigen configs (z.B. SSH) praktisch leeres $HOME hat.

    Das dürfte auf Serverseite genügen, um etwas ruhiger schlafen zu können (wobei das Ganze für mich eher Spielerei war, weil ich sehen wollte, was man mit diesen Tools so alles anstellen kann).

    Gegen kompromittierte Client-Systeme (Keylogger & Co.) kannst Du auf dem Server nichts ausrichten, darum geht es hier aber nicht.

    Greetz,

    RM
     
  9. #8 variable, 14.12.2008
    variable

    variable Grünschnabel

    Dabei seit:
    09.12.2008
    Beiträge:
    3
    Zustimmungen:
    0
    Hey,
    @Tomekk:
    Eine laufende DynDNS habe ich bereits. Das Problem ist jedoch, dass Iptables die Domain nur ein Mal während des Erstellens der Regel auflöst und dann die IP in die Regel schreibt.

    @Rain Maker:
    Portknocking ist erfolgreich auf dem Server installiert worden. Funktioniert alles wunderbar. Der Befehl, der von dem knockd ausgeführt wird enthält die DynDNS Adresse und wird daher wenn die Klopfversuche eingegangen sind ausgeführt und die DNS aufgelöst!

    Vielen Dank für Eure Mühe,
    variable
     
  10. Gast1

    Gast1 Guest

    Halte ich ehrlicherweise für unnötig, da der knockd per default automatisch für die anklopfende IP den Port öffnet.

    Code:
    start_command = /usr/sbin/iptables -I INPUT 1 -s [B]%IP%[/B] -p tcp --dport 22 -j ACCEPT
    Wenn mal "Not am Mann" ist und man von einer anderen Kiste aus draufkommen muss, dann hast Du jedenfalls verloren, der zusätzliche Sicherheitsgewinn, den Zugriff wirklich nur auf die eine Domain zu beschränken, ist IMHO minimal.
     
Thema:

Firewall Skript sauber/sicher?

Die Seite wird geladen...

Firewall Skript sauber/sicher? - Ähnliche Themen

  1. Suche Firewallskript, welches ...

    Suche Firewallskript, welches ...: Paranoide nicht besser schreiben könnten. Kernel 2.6.18-92.1.13.el5 iptables v1.3.5 Evtl. habt Ihr gute und praktische Links zu Hardening?
  2. Firewall-Skript jetzt keine updates mehr

    Firewall-Skript jetzt keine updates mehr: So habe jetzt für mein Debian Server die iptables eingerichtet seit dem kann ich keine updates mehr holen....Habe ich da was übersehen?...
  3. Firewall Skript erstellt und startet nicht

    Firewall Skript erstellt und startet nicht: Hallo! Hab mir ein Firewall Skript für SuSE 9.0 erstellt und unter /etc/init.d/firewall gespeichert mit chmod 755 ausgeführt anschliessend einen...
  4. Firewall pfSense 2.3 erschienen

    Firewall pfSense 2.3 erschienen: Version 2.3 der auf FreeBSD beruhenden Firewall-Distribution pfSense bringt unter anderem eine noch einmal neu geschriebene Weboberfläche und eine...
  5. DNS, DNS-Crypt und Firewall

    DNS, DNS-Crypt und Firewall: Hallo! Ich bin gerade wieder an meiner Hardware-Firewall dran und drehe ein paar Hähne enger zu. Da kam mir die Frage mit dem DNS auf. Ich habe...