iptables chain erstellen und kontinuierlich erneuern

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
Gunah
Beiträge: 366
Registriert: 24.04.2005 17:00:42
Lizenz eigener Beiträge: GNU Free Documentation License

iptables chain erstellen und kontinuierlich erneuern

Beitrag von Gunah » 02.03.2016 10:13:29

Moin,

bin gerade dabei mich in die IPTables Chain rein zu lesen und leider gibt es viele Anleitung, aber meist fehlen dort meines Erachtens Info,
oder aber das Wording ist nicht korrekt, was zu Verwirrung bei mir führt. :)

Folgendes Szenario möchte ich ab decken:
Um den Server extra ab zu sichern sollen die FTP Ports (20/21/Passiv Ports) in einer Chain zusammen gefasst werden und nur für bestimmte IP geöffnet werden.
Leider habe nicht alle beteiligten eine Feste IP weshalb ich dieses per Chain lösen möchte, so wird nur der Bereich für FTP angepasst, nicht aber der rest.
Da auch Tools wie Fail2Ban am laufen sind, und würde man immer die kompletten Rules flush't und wieder neu rein haut, werden ja die Fail2Ban eigenschaften mit getilgt.

Habt Ihr da Beispiele oder eine Anleitung wo darauf genau eingegangen wird?

Danke
Gunah

Benutzeravatar
GregorS
Beiträge: 3304
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: iptables chain erstellen und kontinuierlich erneuern

Beitrag von GregorS » 02.03.2016 14:15:14

Gunah hat geschrieben: ... Habt Ihr da Beispiele oder eine Anleitung wo darauf genau eingegangen wird? ...
Du sagst leider nicht, ob es die FTP-Server sind, die sich ändernde Adressen haben.

Ich kann gerade nur auf mein Geschreibsel zu virtuellen Rechnern hinweisen. Vielleicht findest Du dort eine Antwort: http://html.szaktilla.de/qemu

Gruß

Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi und sog. Maker)

Gunah
Beiträge: 366
Registriert: 24.04.2005 17:00:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: iptables chain erstellen und kontinuierlich erneuern

Beitrag von Gunah » 02.03.2016 14:16:18

Danke der Antwort.

der Server hat immer die Selbe IP.
Aber die Clients nicht.

Benutzeravatar
GregorS
Beiträge: 3304
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: iptables chain erstellen und kontinuierlich erneuern

Beitrag von GregorS » 02.03.2016 14:31:13

Gunah hat geschrieben:... der Server hat immer die Selbe IP.
Aber die Clients nicht.
Dann sollte das Vorhaben kein Problem sein. Du brauchst eine Regel, die einen Bereich von IP-Adressen (oder z. B. alles, was auf einem bestimmten Interface eintrifft) zu einem bestimmten Zielrechner „umleitet“.

Auf meinem Firewall-Pi habe ich eine Regel, die alles, was auf eth1 ankommt und nach port 80 will, zu einer VM umleitet. Die Zeile, mit der diese Regel eingerichtet wird, lautet

Code: Alles auswählen

iptables -t nat -A PREROUTING -i eth1 -p tcp -d 192.168.0.2 --dport 80 -j DNAT --to-destination 192.168.214.2:80
192.168.0.2 ist der Rechner, auf dem die fraglichen Pakete reinkommen, 192.168.214.2 ist die VM. Wer bei 192.168.0.2 anklopft, um Webseiten zu bekommen, wird zu 192.168.214.2 weitergereicht.

HTH

Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi und sog. Maker)

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: iptables chain erstellen und kontinuierlich erneuern

Beitrag von ThorstenS » 02.03.2016 14:33:49

Du solltest alle FTP-Regeln in eine eigene chain leiten.
chains können über -F [chain-name] einzeln geflusht und dann wieder bestückt werden ( iptables -I inet-dmzfwd -s ${CLIENT_IPV4_EXT} -d ${FTP_SERVER} -p tcp --dport 21 -j ACCEPT.)

Über -R kannst du eine einzelne Regel auch ersetzen oder über -D löschen und -I einfügen. Wenn du die Zeile (rulenum) eingibst, kannst du auch den genauen Ort definieren…

Die exakten Zeilennummern pro chain kannst du dir ausgeben lassen: iptables -nL --line-numbers.

Ich würde allerdings darauf drängen, dass überhaupt kein FTP mehr benutzt wird. Ich habe _alles_ auf sftp/scp umgestellt (ich meine hiermit ssh als Dienst).

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: iptables chain erstellen und kontinuierlich erneuern

Beitrag von eggy » 02.03.2016 17:41:43

Gunah hat geschrieben:Habt Ihr da Beispiele oder eine Anleitung wo darauf genau eingegangen wird?
Hast Du Dir mal die Mühe gemacht die Manpage zu lesen? Da ist zum Beispiel die Rede von "replace"

Gunah
Beiträge: 366
Registriert: 24.04.2005 17:00:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: iptables chain erstellen und kontinuierlich erneuern

Beitrag von Gunah » 03.03.2016 14:26:29

Danke für eure Antworten hätte vermultich dazu schreiben sollen, dass ich per Default alles dicht gemacht habe, und das was von außen erreichbar ist Freigebe.

Benutzeravatar
MSfree
Beiträge: 11831
Registriert: 25.09.2007 19:59:30

Re: iptables chain erstellen und kontinuierlich erneuern

Beitrag von MSfree » 03.03.2016 14:48:38

Umfangreiche Dokumentation und Beispiele gibt es bei http://www.netfilter.org. Die Sache mit den Chains ist in diesem Abschnitt ganz gut erklärt:
http://www.netfilter.org/documentation/ ... html#ss7.5

Aber das, was du vorhast, wird durch iptables leider nicht direkt abgedeckt. Das Problem, Clients mit wechselnden IP-Adressen gezielt Zugang zu gewähren, hatte ich auch schon und ich habe es mit einem selbstprogrammierten Stück Software gelöst. Die Netfilter können nur auf feste IP-Adressen filtern und leider nicht auf Hostnamen.

Zwar kann man mit iptables -A INPUT -dport 80 -s irgend.ein.host.de -j ACCEPT erreichen, daß irgend.ein.host.de auf deinen Webserver zugreifen darf. Aber, die IP-Adresse für irgend.ein.host.de wird nur beim Aufruf von iptables aufgelöst, Danach wird nur noch auf die IP-Adresse von irgend.ein.host.de gefiltert. Ändert sich die IP-Adresse, stimmt die Regel nicht mehr, muß gelöscht werden und eine neue eingeführt werden. Der Server, bekommt aber von der IP-Adresseänderung zunächst nichts mit, und alle paar Minuten nachschauen, ob sich die IP geändert hat, ist ineffizient, vor allem, wenn die Anzahl der dynamischen Clients ein paar Duzend überschreitet.

Die Software, die ich dazu geschrieben habe, hat eine Liste von Hostnamen, denen Zugang gestattet wird, die z.B. bei einem DynDNS eingetragen sind. Kontaktiert nun einer dieser Clients meinen Server, besorge ich mir die IP-Adressen der erlaubten Hosts und vergleiche die reinkommende IP-Adresse mir der Liste der erlaubten und entscheide dann, ob der Client Zutritt bekommt. Dazu kann ich das QUEUE-Feature von iptables nutzen und die iptables-Regeln selbst statisch halten. Ein kleiner Daemon kümmert sich dann um die Zugangsentscheidung. libnetfiler-queue ist deine Freund, der alle dazu nötigen Funktionen zur Vefügung stellt.

Antworten