Willkommen bei Network & Security     remoteshell-security.com
Partnerseiten
login.php?sid=2f58b008dc95bbf9116cd46b4756920a profile.php?mode=register&sid=2f58b008dc95bbf9116cd46b4756920a faq.php?sid=2f58b008dc95bbf9116cd46b4756920a memberlist.php?sid=2f58b008dc95bbf9116cd46b4756920a search.php?sid=2f58b008dc95bbf9116cd46b4756920a index.php?sid=2f58b008dc95bbf9116cd46b4756920a

Foren-Übersicht » Netzwerksicherheit » iptables Script Gehe zu Seite Zurück  1, 2
Neues Thema eröffnen  Neue Antwort erstellen Vorheriges Thema anzeigen :: Nächstes Thema anzeigen 
BeitragVerfasst am: 21.07.2007 13:34 Antworten mit Zitat
duddits
Anmeldedatum: 03.01.2006
Beiträge: 569
Wohnort: /proc




und was ist daran so schlimm, das man alle Pakete die zu einer Verbindung gehören erlaubt?
Damit ist es halt möglich die Antwortpakete sowie Pakete mit Fehlermeldungen zu erlauben, die zuvor mit NEW erlaubt wurden.
Ich muss gestehen das ich das Problem daran nicht erkennen kann.
Wenn du nur für FTP den Zugang erlaubt hast wirst du natürlich auch nur Pakete die zum FTP-Verkehr gehören, erhalten.
Wenn du z.b. eine HTTP-Verbindung aufbaust wirst du doch auch Antwortpakte erlauben müssen, da es ja eine TCP-Verbindung ist und du eine 3-Way.Handshake durchführst.

Wenn du einen FTP-Server auf dem selben Rechner wie dem Paketfilter laufen hast, kannst du diesen wie oben bereits gezeigt mit
Code:

IPT=/sbin/iptables
MODPROBE=/sbin/modprobe

$MODPROBE ip_conntrack_ftp

$IPT -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


schützen, ohne unötiger weise Ports zu öffenen, die auch dann offen sein werden, wenn keine FTP-Verbindung besteht.
Vll. sollte ich das ganze ein wenig genauer erläutern:
Also mit $MODPROBE ip_conntrack_ftp wird das Staeful Inspection für das FTP-Protokoll aktivert, diese funktioniert so:
(Sofern das entsprechende Modul geladen wurde) Sobald der Linux-Kernel erkennt, dass eine FTP-Steuerungsverbindung durch die Firewall erlaubt wurde ($IPT -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT), betrachtet der Kernel jedes Paket, welches zu dieser Verbindung gehört.
Dabei achtet er speziell auf das PORT- und PASV-Kommando. Sobald nun einer dieser Kommandos erkannt werden, wird die resultierende Verbindung (die man ja als Ersteller des Firewall-Skriptes nicht voraussehen kann) selbständig und automatisch in der Zustandstabelle (Connection Tracking Table, kann man unter /proc/net/ip_conntrack oder mit dem Befehl iptstate betrachten). Daher ist natürlich auch der Einsatz der Connection Tracking unbedingt erforderlich. Diese Verbindung und alle ihr zugehörigen Pakete erhalten nun den Zustand RELATED, da sie mit einer anderen Verbindung (der Steuerungsverbindung) verwandt sind, auch bekannt als Expectations.
Die Erkennung erfolgt standardmäßig über den Port 21.

Wie gesagt, da man ja bei TCP eingehende und ausgehende Pakete hat, muss man halt die zugehörigen Pakte die zu dieser Verbindung gehören erlauben.
Siehe hierzu auch folgende beiden Seiten die evtl. noch ein wenig mehr Licht ins dunkel bringen:
http://www.kalamazoolinux.org/presentations/20010417/conntrack.html
http://www.sns.ias.edu/~jns/wp/2006/01/24/iptables-how-does-it-work/

Die Lösung die ich hier vorgeschlagen ist unabhängig ob nun aktives oder passives FTP verwende. Wenn man allerdings weiß womit man es hier zu tun, so sollte man machen wie im zweiten Link gezeigt.

Natürlich können im LAN Features wie Connection Tracking mit TCP/IP-Session-Hijacking ausgehebelt werden:

*links zensiert*


Gruß
Daniel

_________________
Quidquid agis, prudenter agas et respice finem!

Jabber ID: duddits@amessage.info
Webseite: http://www.remoteshell-security.com
Weblog: http://blog.remoteshell-security.com
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Jabber ID
BeitragVerfasst am: 21.07.2007 14:02 Antworten mit Zitat
Cerox
Anmeldedatum: 31.12.2005
Beiträge: 782
Wohnort: Engelskirchen




Ok, ich werde mir das nochmal anschauen, ob ich wirklich die passiven Ports separat freigeben muss.

Bitte keine Links zu "Hacking-Software" oder Anleitungen zur Kompromittierung von Netzen posten.
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
BeitragVerfasst am: 22.07.2007 20:57 Antworten mit Zitat
Cerox
Anmeldedatum: 31.12.2005
Beiträge: 782
Wohnort: Engelskirchen




So, hab mir mal nen Skript für ne normale Workstation im LAN geschrieben:

Code:
#!/bin/bash

#iptables-Script; letzte Aenderung: 22.07.07
#Einsatz: Auf einer Workstation; nicht fuer Server ausgelegt

IPT=$(which iptables)
MODPROBE=$(which modprobe)

#Module laden
$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp

#Alle Regeln loeschen
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F DROPKETTE
$IPT -X DROPKETTE

#Policies setzen
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

#Logging-Kette; Pakete loggen und verwerfen
$IPT -N DROPKETTE
$IPT -A DROPKETTE -j LOG -m limit --limit 5/s --log-prefix "Blockiert:"
$IPT -A DROPKETTE -j DROP

#Loopback-Kommunikation immer erlauben
$IPT -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
$IPT -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

#SYN-Flooding Schutz
$IPT -A INPUT -p tcp --syn -m limit --limit 5/s -j ACCEPT

#----------------------------------------------------------------------------------------------------#
#Kommunikation im lokalen Netzwerk (192.168.5.0/24)

#SMB im lokalen Netzwerk erlauben
$IPT -A OUTPUT -d 192.168.5.0/24 -p tcp -m multiport --dport 137,139,445 -j ACCEPT

#Zum Server SSH, Teamspeak Webinterface erlauben
$IPT -A OUTPUT -s 192.168.5.3 -d 192.168.5.2 -p tcp -m multiport --dport 1899,14534 -j ACCEPT

#----------------------------------------------------------------------------------------------------#
#Kommunikation allgemein

#Ausgehende Services zulassen
$IPT -A OUTPUT -p tcp -m multiport --dport 20,21,22,25,80,110,443,1863,5190,5223 -j ACCEPT
#1863 -> MSN, 5190 -> ICQ, 5223 -> Jabber

#DNS-Abfragen erlauben
$IPT -A OUTPUT -p udp --dport 53 -j ACCEPT

#----------------------------------------------------------------------------------------------------#
#ICMP

#ICMP eingehend
$IPT -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type timestamp-reply -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type timestamp-request -j ACCEPT

#ICMP ausgehend
$IPT -A OUTPUT -p icmp -j ACCEPT

#----------------------------------------------------------------------------------------------------#
#Rueckantworten hergestellter oder verwandter Verbindungen
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#Verworfene Pakete loggen
$IPT -A INPUT -j DROPKETTE
$IPT -A FORWARD -j DROPKETTE
$IPT -A OUTPUT -j DROPKETTE


Man kann das beim ICMP-Teil vermutlich ähnlich wie mit der "multiport"-Option abkürzen; das Abkürzen hat aber auch Nachteile. Wenn man sich mal die Tabellen mit "iptables -L" anschaut, ist das ganze meiner Meinung nach unübersichtlicher.

Wenn man eh nur mit dem Skript arbeitet und nicht oft in die Tabellen schaut, kann man das allerdings verkraften. Für das Arbeiten im Skript ist diese Kürzung schon ganz vorteilhaft.

Die Netzwerkeinstellungen/Kernelparameter habe ich wie schon beschrieben in der sysctl.conf definiert.

Passives FTP habe ich noch nicht getestet; muss die ich Tage mal auf dem Server machen. Ausgehend kann ich mit diesem Skript passive FTP-Sessions aufbauen.
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
iptables Script
Foren-Übersicht » Netzwerksicherheit
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Alle Zeiten sind GMT + 1 Stunde  
Seite 2 von 2  
Gehe zu Seite Zurück  1, 2
  
  
 Neues Thema eröffnen  Neue Antwort erstellen  


Forensicherheit

Powered by phpBB © 2001-2004 phpBB Group
phpBB Style by Vjacheslav Trushkin
Deutsche Übersetzung von phpBB.de


remoteshell-security.com | Partner | Boardregeln | Impressum