Discussion:
IPFW bremst (zB) SSH Login
(zu alt für eine Antwort)
Thomas Wildgruber
2012-09-24 14:46:58 UTC
Permalink
Hi Group,

wir basteln grad an der IPFW Firewall in Lion herum und mussten
feststellen, dass durch eine IPFW Regel, welche SSH (eingehend) erlaubt,
der Login um ca. 30 Sekunden verzögert wird und da mussten wir auch erst
mal drauf kommen, weil wir normalerweise gar nicht solange warten.

Der derzeit aktive Regelsatz schaut so aus:

---snip---
$ sudo ipfw list
00025 allow tcp from any to any established
00031 allow tcp from any to any dst-port 22 in setup
65534 deny ip from any to any in
65535 allow ip from any to any
---snap---

Weis jemand warum da so eine starke Verzögerung eingebaut ist?

Thx & Bye Tom
--
"One good Whiskey a day, keeps the doctor away"
Thomas Kosch
2012-09-24 18:27:11 UTC
Permalink
Post by Thomas Wildgruber
Hi Group,
wir basteln grad an der IPFW Firewall in Lion herum und mussten
feststellen, dass durch eine IPFW Regel, welche SSH (eingehend) erlaubt,
der Login um ca. 30 Sekunden verzögert wird und da mussten wir auch erst
mal drauf kommen, weil wir normalerweise gar nicht solange warten.
---snip---
$ sudo ipfw list
00025 allow tcp from any to any established
00031 allow tcp from any to any dst-port 22 in setup
65534 deny ip from any to any in
65535 allow ip from any to any
---snap---
Weis jemand warum da so eine starke Verzögerung eingebaut ist?
Weil du dir damit die DNS Auflösung abgeklemmt hast.

ttyl8er, t.k.
--
Life is Xerox, and you're just a copy
Juergen P. Meier
2012-09-25 03:57:17 UTC
Permalink
Post by Thomas Wildgruber
Hi Group,
wir basteln grad an der IPFW Firewall in Lion herum und mussten
feststellen, dass durch eine IPFW Regel, welche SSH (eingehend) erlaubt,
der Login um ca. 30 Sekunden verzögert wird und da mussten wir auch erst
mal drauf kommen, weil wir normalerweise gar nicht solange warten.
Kleine (2-5) vielfache von 10 Sekunden stinken ueblicherweise nach DNS
timeouts.
Post by Thomas Wildgruber
---snip---
$ sudo ipfw list
00025 allow tcp from any to any established
00031 allow tcp from any to any dst-port 22 in setup
65534 deny ip from any to any in
65535 allow ip from any to any
---snap---
Weis jemand warum da so eine starke Verzögerung eingebaut ist?
Tja, du verbietest dir selbst, DNS Lookups zu machen.
SSH macht aber DNS um zur IP-Addresse des Clients einen Hostnamen zu
ermitteln. Dies versucht der sshd wohl drei mal mit je 10 sek Timeout.

Du musst auch noch DNS (UDP mit Server-Port 53) erlauben.

z.B. machst du das - soferin dein DNS Recursor die IP Addresse
10.1.1.1 hat so:

00010 allow udp from 10.1.1.1 53 to any in

(oder halt from any wenn du das nicht einschraenken kannst/willst)

Dir fehlen auch noch ein paar essentielle ICMP typen, ohne die du TCP
ziemlich vergessen kannst (in die Tonne treten), insbesondere Typ
3, der fuer PMTUD zwingend notwendig ist. Dringend zu empfehlen ist
folgende Liste:

allow icmp from any to any icmptypes 0,3,4,8,11,12

HTH,
Juergen
--
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)
Thomas Wildgruber
2012-09-25 10:00:34 UTC
Permalink
Post by Juergen P. Meier
Post by Thomas Wildgruber
wir basteln grad an der IPFW Firewall in Lion herum und mussten
feststellen, dass durch eine IPFW Regel, welche SSH (eingehend) erlaubt,
der Login um ca. 30 Sekunden verzögert wird und da mussten wir auch erst
mal drauf kommen, weil wir normalerweise gar nicht solange warten.
Kleine (2-5) vielfache von 10 Sekunden stinken ueblicherweise nach DNS
timeouts.
Da scheint was dran zu sein, wobei ich aber jetzt doch wieder auf dem
Schlauch stehe; aber der Reihe nach.

Wir haben den Traffic mit Wireshark mitgesnifft und die Verzögerung trat in
der Tat auf, während versucht wurde einen DNS PTR aufzulösen. Also haben
wir eine entsprechende DNS Regel hinzugefügt aber es ging immer noch nicht.
ich muss auch dazu sagen, dass ich eh skeptisch gewesen bin, weil wir uns
mit Angabe einer IP Adresse verbinden. Komisch aber war schon, dass
Wireshark da beim Auflösen des DNS PTRs ein Problem aufzeigte.

Anyway, wir haben jetzt noch eine andere Regel hinzugefügt 'allow ip from
any to any out keep-state' und mit der funktioniert es jetzt ruck zuck:

---snip---
prontos-Mac-Pro:tmp pronto$ sudo ./firewall.test.sh
Password:
00025 allow ip from any to any proto tcp established
00026 allow ip from any to any out keep-state
00031 allow tcp from any to any dst-port 22 in setup
65534 deny ip from any to any in
---snap---

Klappt wunderbar, wobei ich noch bei einigen Punkten am Rätseln bin:

1) Warum wird trotz Verwendung einer IP versucht einen DNS PTR aufzulösen?
2) Warum löst die keep-state Regel das Problem auf
3) Habe ich noch nicht ganz den Unterschied zwischen der established-Regel
und der keep-state-Regel verstanden. Mein naiver Sachvesrtand hat mir
signalisiert, dass zumindest die beiden Wörter das gleiche vermuten lassen.

Hier sind die beiden Wireshark Mitschnitte über die ich gerade brüte,
vielleicht hat ja jemand die Möglichkeit da mal reinzuschauen:

http://wiki.prontosystems.org/wireshark/mit_keep-state.cab (~8KB)
http://wiki.prontosystems.org/wireshark/ohne_keep-state.cab (~21KB)

Thx & Bye Tom
--
"Manches Gewissen ist nur rein, weil es nie benutzt wurde" (Robert Lembke)
Thomas Kaiser
2012-09-25 10:35:27 UTC
Permalink
Post by Thomas Wildgruber
Post by Juergen P. Meier
Post by Thomas Wildgruber
wir basteln grad an der IPFW Firewall in Lion herum und mussten
feststellen, dass durch eine IPFW Regel, welche SSH (eingehend)
erlaubt, der Login um ca. 30 Sekunden verzögert wird und da mussten
wir auch erst mal drauf kommen, weil wir normalerweise gar nicht
solange warten.
Kleine (2-5) vielfache von 10 Sekunden stinken ueblicherweise nach
DNS timeouts.
Da scheint was dran zu sein
Da _ist_ was dran, solange Du nicht "UseDNS no" in der sshd_config
setzt.

Gruss,

Thomas
Thomas Wildgruber
2012-09-25 11:45:23 UTC
Permalink
Post by Thomas Kaiser
Post by Thomas Wildgruber
Da scheint was dran zu sein
Da _ist_ was dran, solange Du nicht "UseDNS no" in der sshd_config
setzt.
Aha, diese Einstellung deaktiviert den (ohnehin sinnfreien) Reverse DNS
Lookup. Sehr schön...

...und funktioniert auch. Auch wenn ich jetzt zwar vermuten könnte, dass
die auskommentierte Zeile...

#UseDNS yes

...das Ergebnis eh schon negiert, funktioniert nach dem Auskommentieren und
Ändern in 'UseDNS no' die Verbindung sofort (mit dem ursprünglichen
Regelsatz[1]) und auch die Reverse DNS Querys sind verschwunden.

[1]--snip---
$ sudo ipfw list
00025 allow tcp from any to any established
00031 allow tcp from any to any dst-port 22 in setup
65534 deny ip from any to any in
65535 allow ip from any to any
---snap---

Wir hatten das Verhalten unter Linux und unseren Iptables Tests nicht
feststellen können, da gibt es diese Option in der sshd_config aber auch
nicht (OpenSSH auf Debian Squeeze). Aber ein wenig schlauer bin ich schon
mal, Danke.

Aber warum dann diese dämliche keep-state Regel das Problem dann abfängt
ist mir noch schleierhaft. Ich habe mir den Wireshark Output nochmal
angeschaut und auch da kommt (mit der keep-state Regel) zwar ein verirrtes
DNS (PTR Query) Paket daher aber erst viel später. Naja so ganz steig ich
da jetzt nicht dahinter, was das eine mit dem anderen zu tun hat aber ich
glaube viel fehlt nimmer... ;-)

Thx & Bye Tom
--
"Sie wissen, wir leben im Zeitalter der Abkürzungen. Ehe ist die Kurzform
für lateinische "errare humanum est" ("Irren ist menschlich")." (Robert
Lembke)
Wolfgang Meiners
2012-09-25 15:53:42 UTC
Permalink
Post by Thomas Wildgruber
...und funktioniert auch. Auch wenn ich jetzt zwar vermuten könnte, dass
die auskommentierte Zeile...
#UseDNS yes
...das Ergebnis eh schon negiert, funktioniert nach dem Auskommentieren und
Ändern in 'UseDNS no' die Verbindung sofort (mit dem ursprünglichen
Regelsatz[1]) und auch die Reverse DNS Querys sind verschwunden.
in meiner /etc/ssh/sshd_config steht unter anderem:
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.

Grüße
Wolfgang
Thomas Kaiser
2012-09-25 16:29:49 UTC
Permalink
Post by Wolfgang Meiners
Post by Thomas Wildgruber
...und funktioniert auch. Auch wenn ich jetzt zwar vermuten könnte,
dass die auskommentierte Zeile...
#UseDNS yes
...das Ergebnis eh schon negiert, funktioniert nach dem
Auskommentieren und Ändern in 'UseDNS no' die Verbindung sofort (mit
dem ursprünglichen Regelsatz[1]) und auch die Reverse DNS Querys sind
verschwunden.
# The strategy used for options in the default sshd_config shipped
# with OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.
...by simply uncommenting it without changing the value? Nope.

Vor allem: Was bringt Dir das Wissen um ein angebliches default-
Verhalten von Settings, wenn Du nicht weißt, ob Du eine diesbzgl.
jungfräuliche Konfig-Datei vor Dir hast, also nicht mal klar ist, ob
irgendwer anders (bspw. der Kollege, der Hersteller des OS, irgendeine
Software oder man selbst -- neulich noch nach der Wiesn schnell mal
eben) da nicht schon Hand angelegt haben könnte.

Die Aussagen in Manual-Pages sind auch mit Vorsicht zu genießen (je nach
OpenSource-Projekt mal mehr, mal weniger). Am Ende landet man dann doch
wieder bei Sniffern, strace, truss und Kollegen ;-)

Gruss,

Thomas
Wolfgang Meiners
2012-09-26 07:32:43 UTC
Permalink
Wolfgang Meiners schrieb in
Post by Wolfgang Meiners
Post by Thomas Wildgruber
...und funktioniert auch. Auch wenn ich jetzt zwar vermuten könnte,
dass die auskommentierte Zeile...
#UseDNS yes
...das Ergebnis eh schon negiert, funktioniert nach dem
Auskommentieren und Ändern in 'UseDNS no' die Verbindung sofort (mit
dem ursprünglichen Regelsatz[1]) und auch die Reverse DNS Querys sind
verschwunden.
# The strategy used for options in the default sshd_config shipped
# with OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.
...by simply uncommenting it without changing the value? Nope.
steht da auch nicht. Da steht klar und deutlich "default sshd_config
shipped with OpenSSH"

Wenn ein Admin Defaultverhalten ändert ohne dies entsprechend zu
kommentieren, ist das mindestens ungschickt.
Vor allem: Was bringt Dir das Wissen um ein angebliches default-
Verhalten von Settings,
Das bringt dir
wenn Du nicht weißt, ob Du eine diesbzgl.
jungfräuliche Konfig-Datei vor Dir hast, also nicht mal klar ist, ob
irgendwer anders (bspw. der Kollege, der Hersteller des OS, irgendeine
Software oder man selbst -- neulich noch nach der Wiesn schnell mal
eben) da nicht schon Hand angelegt haben könnte.
selbst solche Probleme zu vermeiden, wenn du eine sshd_config
bearbeitest. Deswegen sollte es einem auch gesagt werden, wenn man es
falsch verstanden hat. Und die Aussage "dass die auskommentierte Zeile
... das Ergebnis eh schon negiert" weist auf genau so ein Mißverständnis
hin. Ein Mißverständnis, dass durchaus möglich ist!
Die Aussagen in Manual-Pages sind auch mit Vorsicht zu genießen (je nach
OpenSource-Projekt mal mehr, mal weniger). Am Ende landet man dann doch
wieder bei Sniffern, strace, truss und Kollegen
Hm, da es hier konkret um ssh geht, würde mich schon interessieren, ob
es diesbezüglich Probleme mit den man-pages von ssh/sshd und den
entsprechenden configs gibt.
Gruss,
Thomas
Grüße
Wolfgang
Thomas Kaiser
2012-09-26 19:38:29 UTC
Permalink
Post by Wolfgang Meiners
Wolfgang Meiners schrieb in
Post by Wolfgang Meiners
Post by Thomas Wildgruber
...und funktioniert auch. Auch wenn ich jetzt zwar vermuten könnte,
dass die auskommentierte Zeile...
#UseDNS yes
...das Ergebnis eh schon negiert, funktioniert nach dem
Auskommentieren und Ändern in 'UseDNS no' die Verbindung sofort
(mit dem ursprünglichen Regelsatz[1]) und auch die Reverse DNS
Querys sind verschwunden.
# The strategy used for options in the default sshd_config shipped
# with OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.
...by simply uncommenting it without changing the value? Nope.
steht da auch nicht. Da steht klar und deutlich "default sshd_config
shipped with OpenSSH"
Vielleicht ist mein Englisch zu schlecht... Da steht für mich:
Auskommentierte Optionen ändern das default-Verhalten. Wenn ich aus

#UseDNS yes

ein

UseDNS yes

mache, dann ist doch anschl. immer noch alles identisch mit dem
default-Verhalten. Oder was verstehe ich da dran nicht richtig?
Post by Wolfgang Meiners
Wenn ein Admin Defaultverhalten ändert ohne dies entsprechend zu
kommentieren, ist das mindestens ungschickt.
Und Standard. Zumindest drängt sich einem dieser Eindruck als
Dienstleister auf, der einen Teil der Zeit nur als "Feuerwehr" zubringt
und dorthin gerufen wird, wo der Admin vor Ort nicht mehr weiterkommt.
Und da ist regelmäßig Staunen angesagt, wie simpel sich manche Leute
*regelmäßig und mit System* ins eigene Knie schießen...
Post by Wolfgang Meiners
Vor allem: Was bringt Dir das Wissen um ein angebliches default-
Verhalten von Settings,
Das bringt dir
wenn Du nicht weißt, ob Du eine diesbzgl. jungfräuliche Konfig-Datei
vor Dir hast, also nicht mal klar ist, ob irgendwer anders (bspw. der
Kollege, der Hersteller des OS, irgendeine Software oder man selbst
-- neulich noch nach der Wiesn schnell mal eben) da nicht schon Hand
angelegt haben könnte.
selbst solche Probleme zu vermeiden, wenn du eine sshd_config
bearbeitest.
Hä? Selbst wenn ich einen Mac frisch aus der Packung reiße und boote und
in die sshd_config schaue, bringt mir der Hinweis, wie das die OpenSSH-
Jungens mal _gemeint_ hatten mit Kommentarverhalten genau gar nix, weil
ich evtl. davon ausgehen sollte, daß Apple aus welchem Grund auch immer
die sshd_config angepaßt ausliefert und die fromme Absicht (die sich als
Kommentar noch in der Datei selbst befindet) nicht mehr gilt.
Post by Wolfgang Meiners
Deswegen sollte es einem auch gesagt werden, wenn man es falsch
verstanden hat.
Ja, grundsätzlich schon richtig, wenn man sein OpenSSH immer selbst aus
den Quellen baut und nur man selbst im Vollbesitz seiner geistigen
Kräfte an der sshd_config herumfuttelt. Also so, wie's in dieser idealen
Welt stattfindet, nach der wir uns ab und an sehnen ;-)
Post by Wolfgang Meiners
Und die Aussage "dass die auskommentierte Zeile ... das Ergebnis eh
schon negiert" weist auf genau so ein Mißverständnis hin. Ein
Mißverständnis, dass durchaus möglich ist!
Und ebenso wurscht -- zumindest nach meiner Erfahrung. Ich trau
inzwischen keinerlei ungeprüften Aussagen mehr, wenn ich irgendwo mit
IT-Problemen konfrontiert werde. Am allerwenigsten Kommentarzeilen in
Konfig-Files, die sich nicht mal gegen Manipulation wehren können. Im
Ernst: Ich hab auf der Basis schon so viel Lebenszeit verloren, daß ich
das heute fast schon reflexartig hinterfrage bzw. eben prüfe anstatt
mich auf sowas zu verlassen.
Post by Wolfgang Meiners
Die Aussagen in Manual-Pages sind auch mit Vorsicht zu genießen (je
nach OpenSource-Projekt mal mehr, mal weniger). Am Ende landet man
dann doch wieder bei Sniffern, strace, truss und Kollegen
Hm, da es hier konkret um ssh geht, würde mich schon interessieren, ob
es diesbezüglich Probleme mit den man-pages von ssh/sshd und den
entsprechenden configs gibt.
Kann mich bzgl. OpenSSH an nix diesbzgl. erinnern... aber daß mir jemand
mal wortreich geschildert hat, daß ihn genau das Stunden gekostet habe.
Aber wie schon geschrieben: Mein Vertrauen in ungeprüfte Aussagen sinkt
von Tag zu Tag. Aber generell gilt: Manual Pages sind Doku und Doku ist
der natürliche Feind des Programmierers.

Gruss,

Thomas, hat 2004/2005 rum vor Release von Netatalk 2.0 ziemlich viel in
dessen Manual-Pages herumkorrigiert und weiß daher aus der Praxis, wie
sehr Doku und Realität auseinanderdriften kann. Bei Interesse:
http://netatalk.sourceforge.net/2.0/htmldocs/man-pages.html und... [find
die alte Doku nimmer -- egal]
Ingo Keck
2012-09-27 08:11:44 UTC
Permalink
Wolfgang Meiners schrieb in
Post by Wolfgang Meiners
Wolfgang Meiners schrieb in
[...]
Post by Wolfgang Meiners
Post by Wolfgang Meiners
# The strategy used for options in the default sshd_config shipped
# with OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.
...by simply uncommenting it without changing the value? Nope.
steht da auch nicht. Da steht klar und deutlich "default sshd_config
shipped with OpenSSH"
Auskommentierte Optionen ändern das default-Verhalten. Wenn ich aus
#UseDNS yes
ein
UseDNS yes
mache, dann ist doch anschl. immer noch alles identisch mit dem
default-Verhalten.
Das schon, aber der voreingestellte Wert "yes" wird mit dem von dir
gewählten Wert "yes" überschrieben. Damit ist er zwar identisch, aber
nicht mehr der selbe. Informatikersichtweise AFAIK, hat ihr Logik, aber
ist nicht unbedingt praktikabel...

Ingo.
--
GeorgeSLO: We all know what happens to evil villans in the end.
Kevin C: They leave their jobs at Goldman Sachs, Haliburton, etc and
take positions in the federal government.
(user comments on Yehuda Moon)
Thomas Kaiser
2012-09-28 11:08:47 UTC
Permalink
Post by Ingo Keck
Wolfgang Meiners schrieb in
Post by Wolfgang Meiners
Wolfgang Meiners schrieb in
[...]
Post by Wolfgang Meiners
Post by Wolfgang Meiners
# The strategy used for options in the default sshd_config
# shipped with OpenSSH is to specify options with their default
# value where possible, but leave them commented. Uncommented
# options change a default value.
...by simply uncommenting it without changing the value? Nope.
steht da auch nicht. Da steht klar und deutlich "default
sshd_config shipped with OpenSSH"
Auskommentierte Optionen ändern das default-Verhalten. Wenn ich aus
#UseDNS yes
ein
UseDNS yes
mache, dann ist doch anschl. immer noch alles identisch mit dem
default-Verhalten.
Das schon, aber der voreingestellte Wert "yes" wird mit dem von dir
gewählten Wert "yes" überschrieben. Damit ist er zwar identisch, aber
nicht mehr der selbe. Informatikersichtweise AFAIK, hat ihr Logik,
aber ist nicht unbedingt praktikabel...
Der Witz kommt ja nicht von ungefähr:

Frau: "Geh in den Supermarkt und bring bitte eine Flasche Milch mit
-- und wenn sie dort Eier haben, dann bring 6 mit."
Entwickler kommt mit 6 Flaschen Milch und ohne Eier zurück.
Frau: "Warum hast du 6 Flaschen Milch gebracht?"
Entwickler: "Nun ja, wie du gesagt hast: Weil sie dort Eier hatten!"

Davon abgesehen ist es -- zumindest nach meiner Erfahrung -- prinzipiell
keine gute Idee, _Absichtserklärungen_, zumal wenn sie in Form von
Kommentaren in irgendwelchen Konfig-Dateien stehen, in irgendeiner Form
Ernst zu nehmen. Das führt in häßlich vielen Fällen einfach nur in den
Wald.

Gruss,

Thomas
Goetz Hoffart
2012-09-28 11:57:37 UTC
Permalink
Post by Thomas Kaiser
Davon abgesehen ist es -- zumindest nach meiner Erfahrung -- prinzipiell
keine gute Idee, _Absichtserklärungen_, zumal wenn sie in Form von
Kommentaren in irgendwelchen Konfig-Dateien stehen, in irgendeiner Form
Ernst zu nehmen.
Full ACK, das deckt sich mit meinen Erfahrungen.

Da kann man auch die Kurzform vom Militär lernen:

Eine Waffe, deren Ladezustand unklar ist, ist immer als
geladen und entsichert anzusehen.

Nur ein »nönö, die ist schon nicht geladen« ist keine gute Idee. Und das
trifft auch auf Sicherheit in der IT und letztlich für alle
Funktionalität zu: was nicht getestet ist, geht nicht. Punkt.

Grüße
Götz
--
http://www.knubbelmac.de/
Başar Alabay
2012-09-28 15:23:41 UTC
Permalink
Post by Goetz Hoffart
Nur ein »nönö, die ist schon nicht geladen« ist keine gute Idee. Und das
trifft auch auf Sicherheit in der IT und letztlich für alle
Funktionalität zu: was nicht getestet ist, geht nicht. Punkt.
Hm, ob Apple Zivildienst geleistet hat?!

B. Alabay
--
લવ ઇસ્તંબુલ
http://www.thetrial.de/
Wolfgang Meiners
2012-09-29 07:02:46 UTC
Permalink
Post by Goetz Hoffart
Eine Waffe, deren Ladezustand unklar ist, ist immer als
geladen und entsichert anzusehen.
Hat dir das Militär nicht beigebracht, dass diese Sichtweise
kontextabhängig ist? Wenn du in einer Gefechtssituation Aufgrund deiner
Kurzform mit einer ungeladenen Waffe dastehst, aber von einer geladenen
und entsicherten ausgehst, kann das böse nach hinten losgehen.
Post by Goetz Hoffart
Nur ein »nönö, die ist schon nicht geladen« ist keine gute Idee. Und das
trifft auch auf Sicherheit in der IT und letztlich für alle
Funktionalität zu: was nicht getestet ist, geht nicht. Punkt.
Ich würde noch einen Punkt hinzufügen: Wenn du als Admin die
Konfiguration eines Programms änderst, halte dich peinlich genau an die
Standards. Sonst vermehrst du im Zweifel das Chaos.
Post by Goetz Hoffart
Grüße
Götz
Grüße
Wolfgang
Goetz Hoffart
2012-09-29 09:36:20 UTC
Permalink
Post by Wolfgang Meiners
Hat dir das Militär nicht beigebracht,
»Vom Militär lernen« != »mir bringt das Militär was bei«
Post by Wolfgang Meiners
dass diese Sichtweise kontextabhängig ist? Wenn du in einer
Gefechtssituation Aufgrund deiner Kurzform mit einer ungeladenen Waffe
dastehst, aber von einer geladenen und entsicherten ausgehst, kann das
böse nach hinten losgehen.
Jo, aber im EDV-Raum schlagen die Granaten, die erzwingen, ich soll
Optionen in Konfigfiles setzen, eher selten ein.
Post by Wolfgang Meiners
Post by Goetz Hoffart
Nur ein »nönö, die ist schon nicht geladen« ist keine gute Idee. Und das
trifft auch auf Sicherheit in der IT und letztlich für alle
Funktionalität zu: was nicht getestet ist, geht nicht. Punkt.
Ich würde noch einen Punkt hinzufügen: Wenn du als Admin die
Konfiguration eines Programms änderst, halte dich peinlich genau an die
Standards. Sonst vermehrst du im Zweifel das Chaos.
Welche Standards?

Grüße
Götz
--
http://www.knubbelmac.de/
Wolfgang Meiners
2012-09-29 15:35:09 UTC
Permalink
Post by Goetz Hoffart
Post by Wolfgang Meiners
Hat dir das Militär nicht beigebracht,
»Vom Militär lernen« != »mir bringt das Militär was bei«
ok. Dann also "kann man vom Militär nicht lernen ..."
Post by Goetz Hoffart
Post by Wolfgang Meiners
dass diese Sichtweise kontextabhängig ist? Wenn du in einer
Gefechtssituation Aufgrund deiner Kurzform mit einer ungeladenen Waffe
dastehst, aber von einer geladenen und entsicherten ausgehst, kann das
böse nach hinten losgehen.
Jo, aber im EDV-Raum schlagen die Granaten, die erzwingen, ich soll
Optionen in Konfigfiles setzen, eher selten ein.
Wenn ich die ganzen Nachfragen in Newsgroups richtig interpretiere, dann
schlagen diese Granaten mit schöner Regelmäßigkeit ein. Wie dem auch
sei: Ich habe den Vergleich nicht erfunden, aber er zeigt doch sehr
schön, dass die Welt (mindestens) zwei Seiten hat.

Eine Seite ist die des (Hobby)admins, der eine Konfiguration ändert und
sich dabei kein vermeidbares Chaos anrichten soll. Die andere Seite ist
die des Fehlersuchers, der weiß, das irgendwas nicht stimmt und der
deshalb nichts ungeprüft glauben darf. Wobei ich da schon nach
steigendem Grad der Professionalität gewichten würde.
Post by Goetz Hoffart
Post by Wolfgang Meiners
Post by Goetz Hoffart
Nur ein »nönö, die ist schon nicht geladen« ist keine gute Idee. Und das
trifft auch auf Sicherheit in der IT und letztlich für alle
Funktionalität zu: was nicht getestet ist, geht nicht. Punkt.
Ich würde noch einen Punkt hinzufügen: Wenn du als Admin die
Konfiguration eines Programms änderst, halte dich peinlich genau an die
Standards. Sonst vermehrst du im Zweifel das Chaos.
Welche Standards?
Bleiben wir bei OpenSSH. Die Standards, die in der Konfigurationsdatei
beschrieben sind. In diesem Fall:

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.

Behalte ich diese Strategie bei, dann kann ich im Zweifelsfall sehr
einfach herausfinden, ob ein Fehler auf eine Fehlkonfiguration
meinerseits zurückzuführen ist (fast immer), oder ob doch der böse
Hersteller oder irgendwer dazwischen den schwarzen Peter kriegt. Es kann
auch nicht schaden, vor dem Ändern einer Konfigurationsdatei das
Original abzuspeichern.

Wer auch immer von dieser Strategie abweicht -ohne eine bessere
Strategie zu beschreiben- erzeugt Chaos. Und eine solche Strategie in
der Konfiguration zu beschreiben, ist eine gar nicht so dumme Idee. Die
muss man sich ja immerhin angucken, wenn man was daran ändern will.
Post by Goetz Hoffart
Grüße
Götz
Grüße
Wolfgang
Thomas Kaiser
2012-09-29 16:41:01 UTC
Permalink
Wie dem auch sei: Ich habe den Vergleich nicht erfunden, aber er zeigt
doch sehr schön, dass die Welt (mindestens) zwei Seiten hat.
Eine Seite ist die des (Hobby)admins, der eine Konfiguration ändert
und sich dabei kein vermeidbares Chaos anrichten soll. Die andere
Seite ist die des Fehlersuchers, der weiß, das irgendwas nicht stimmt
und der deshalb nichts ungeprüft glauben darf. Wobei ich da schon nach
steigendem Grad der Professionalität gewichten würde.
Naja, nicht unbedingt. Das Problem ist ja Ursache und Wirkung. Wenn Du
völlig autark als einziger (Hobby)admin eines Systems irgendwas änderst
und das nicht in einer für Dich später nachvollziehbaren Art und Weise
dokumentierst, dann schießt Du _nur_ Dir selbst in den Fuß.

Sobald auch nur eine einzige weitere Person involviert ist (im
professionellen Umfeld der Regelfall, sei es Kollege, Systemhaus oder
der externe Dienstleister, der wegen Projekt XY mal kurz Zugriff auf das
System bekommt), weißt Du nicht, _ob_ und _wie sehr_ Dir wer anders in
den Fuß geschossen hat. Du darfst einfach nicht mehr davon ausgehen, daß
der dokumentierte Zustand (und seiens nur Absichtserklärungen in Konfig-
Dateien) dem realen entspricht. Im Zweifel musst Du davon ausgehen, daß
Doku und Realität auseinanderklaffen und musst Gewahr sein, daß Dich ein
Vertrauen auf Ersteres ggf. unnötig tief in den Wald führt, weil Du den
Fehler machst, anzunehmen, daß es so ist (realer Systemzustand) wie es
sein sollte (dokumentierter Systemzustand).

Wir haben bspw. von einem Systemhaus die Konvention übernommen, alle
Änderungen an Unix-System in einer Datei /etc/CHANGES zu protokollieren
und versuchen das auch Admins bei Kunden beizubringen. Netter Ansatz,
der aber nur funktioniert, solange alle sich sklavisch dran halten.
Sobald da einer das Schludern anfängt (bei Admins nach anfänglicher
Begeisterung nach ca. 1-n Tagen/Wochen der Fall), ist das nix mehr wert,
d.h. taugt bei allfälliger Fehlersuche nur noch als rudimentäre
Informationsquelle, weil man davon ausgehen muß, daß nur ein Teil der
Änderungen drinsteht. Wenn man Glück hat, findet man 'ne Korrelation
zwischen dem gemeldeten Auftreten eines Problems und dokumentierten
Änderungen und erhält dadurch einen schnellen Ansatz, die Korrelation
hinsichtlich Ursache fürs Problem zu prüfen.

Der Umkehrschluß ist aber tödlich, d.h. davon auszugehen, wenn nix in
/etc/CHANGES steht, daß dann auch nichts geändert wurde. Zumal gerade in
komplexeren Applikationslandschaften die Änderungen auf ganz anderen
Systemen Auswirkungen auf das lokale haben können, auf das man beim
Kunden gestubst wird mit der Ansage "geht nimmer".

Der Ansatz, Konfig-Änderungen sauber zu dokumentieren, ist toll, weil er
im Fehlerfall für Zeitersparnis durch schnelleres Eingrenzen des
Problems führen _kann_. Aber im Fehlerfall drauf zu vertrauen, daß Doku
und Realität kongruent sind, ist naiv.
Post by Goetz Hoffart
Post by Wolfgang Meiners
Ich würde noch einen Punkt hinzufügen: Wenn du als Admin die
Konfiguration eines Programms änderst, halte dich peinlich genau an
die Standards. Sonst vermehrst du im Zweifel das Chaos.
Welche Standards?
Bleiben wir bei OpenSSH. Die Standards, die in der Konfigurationsdatei
# The strategy used for options in the default sshd_config shipped
# with OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override
# the default value.
Behalte ich diese Strategie bei, dann kann ich im Zweifelsfall sehr
einfach herausfinden, ob ein Fehler auf eine Fehlkonfiguration
meinerseits zurückzuführen ist (fast immer), oder ob doch der böse
Hersteller oder irgendwer dazwischen den schwarzen Peter kriegt.
Nö, leider nicht mal das. Dein Ansatz taugt abseits *ein einziger*
(Hobby)admin eh schon nix, weil Du nicht weißt, was die anderen machen
bzw. wie diese schludern oder nicht. Er taugt noch nicht mal, wenn Du
der einzige Admin des Systems bist und während einer Fehlersuche unter
Zeitdruck viel an der Konfig ändern mußt. Denn anschl. steht in der
Konfig-Datei ein kommentierter Wert, den nicht die OpenSSH-Jungs sondern
Du gesetzt hast. Und den Du von nun an falsch als default interpretierst
(Streßsituationen machen ganz interessante Sachen mit Menschen. Speziell
bzgl. Wahrnehmung. Du kannst Dich ab und an noch nicht mal dran
erinnern, dies&das hier&dort geändert zu haben -- spannendes Feld).

Und im speziellen Fall der sshd_config sich drauf zu verlassen, daß die
Policy, die vielleicht für die Original-Version der Datei mal gegolten
hat, als sie bei OpenSSH ausgecheckt wurde, noch gilt, nachdem sie der
Hersteller des OS, der OpenSSH als Teil seines OS verbaut, ggf. angepaßt
hat, ist ehrlich gesagt nur naiv.
Es kann auch nicht schaden, vor dem Ändern einer Konfigurationsdatei
das Original abzuspeichern.
Aber natürlich. Eine noch viel tollere Idee ist, alles Konfig-Relevante
in einem System in ein Versionskontrollsystem zu klatschen, so daß Du
eine lückenlose Dokumentation sämtlicher Änderungen erhälst (machen wir
in einigen Installationen, alles in SVN zu werfen und überall dort, wo
es keine textbasierte Konfig mehr gibt -- weil Datenbank-basiert bspw.
-- das einerseits 1:1 ins SVN zu werfen und andererseits einen Textdump
der Konfig wegen schnellem Prüfen von Änderungen danebenzulegen).

Nur um dann festzustellen, daß die Datenbank-Dumps der Konfiguration
nach kleinen Änderungen in komplett anderer Reihenfolge ausgespuckt
werden (was diffs zwischen alter und neuer Version witzlos macht) und um
festzustellen, daß diverse Softwares defaults aufweisen, die erstens auf
keinem Weg ausgelesen werden können, zweitens vom Hersteller mit einem
kleinen Update stillschweigend geändert werden und drittens nach
irgendeiner anderen -- auf den ersten Blick völlig unabhängigen --
Änderung sonstwo im System *nicht reproduzierbar* Probleme verursachen.
Wer auch immer von dieser Strategie abweicht -ohne eine bessere
Strategie zu beschreiben- erzeugt Chaos. Und eine solche Strategie in
der Konfiguration zu beschreiben, ist eine gar nicht so dumme Idee.
Die muss man sich ja immerhin angucken, wenn man was daran ändern
will.
Stimmt nach meiner Erfahrung so nicht.

Es ist auf der einen Seite natürlich sehr sinnvoll, so viel wie möglich
an Konfig-Änderungen zu dokumentieren, dafür ggf. eigene Standards zu
implementieren und für deren Einhaltung gegenüber Kollegen, Externen,
etc. zu kämpfen.

Genauso sinnvoll ist es aber auch, in Diagnose-Situationen das maximal
als vagen Anhaltspunkt aber nie für bare Münze zu nehmen.

Und irgendwelche Standards, die sich völlig fremde Menschen beim
Erstellen einer Software auf die Fahnen geschrieben haben als _im
konkreten Fall_ gültig anzusehen, halte ich für naiv bzw. alles andere
als zielführend, wenn man ein Problem analysieren soll. Es sind
Absichtserklärungen, die einem nix bringen, weil man nicht weiß, ob sie
(noch) stimmen. Man muss sie überprüfen. Dummerweise bieten häßlich
viele Softwares nur einen unvollständigen Dump ihrer aktuell zur
Laufzeit aktiven Konfiguration an, der besagte "defaults" sehr oft
ausläßt.

Gruss,

Thomas

Thomas Kaiser
2012-09-29 10:43:42 UTC
Permalink
Post by Wolfgang Meiners
Post by Goetz Hoffart
was nicht getestet ist, geht nicht. Punkt.
Ich würde noch einen Punkt hinzufügen: Wenn du als Admin die
Konfiguration eines Programms änderst, halte dich peinlich genau an
die Standards. Sonst vermehrst du im Zweifel das Chaos.
Was für Standards? Die Haus-Standards? Die, die der Hersteller des
Programms vorgibt? Oder die, die er -- ggf. irrigerweise -- als
allgemein gültig ansieht? Die, die in irgendwelchen ISO-Broschürchen
abgelegt sind? Andere? Was tun, wenn Standards (Du nutzt ja bewußt den
Plural) untereinander in Widerspruch stehen? Oder -- auch gerne mal
vorkommend -- schon in sich selbst inkonsistent sind?

Was bringt einem in der Praxis das Festhalten an IT-Theorie oder
Lehrbuchvorgehen, wenn einem die vorgefundene Realität entgegenschreit,
daß die Theorie und die Lehrbuchprozesse auf die konkrete Situation
nicht anwendbar sind, weil es diese ideale Welt, die Grundlage für das
ideale Vorgehen wäre, in der Praxis nicht gibt?

Da hilft einem irgendwann nur noch die Erfahrung (nichts zu glauben, was
_offensichtlich_ erscheint sondern es zu verifizieren. Das gilt noch
mehr für Annahmen, die man aus Absichtserklärungen wie besagten
Kommentaren in Konfig-Dateien ableitet, strukturiert von unten nach oben
vorgehen, nach Ausschlußverfahren Ursachen eingrenzen).

Gruss,

Thomas
Wolfgang Meiners
2012-09-29 16:29:37 UTC
Permalink
Post by Thomas Kaiser
Post by Wolfgang Meiners
Post by Goetz Hoffart
was nicht getestet ist, geht nicht. Punkt.
Ich würde noch einen Punkt hinzufügen: Wenn du als Admin die
Konfiguration eines Programms änderst, halte dich peinlich genau an
die Standards. Sonst vermehrst du im Zweifel das Chaos.
Was für Standards? Die Haus-Standards? Die, die der Hersteller des
Programms vorgibt?
Ja. In der Reihenfolge. Und nachvollziehbar kommentiert.
Wenn ich mich an klar definierte Hausstandards halte, kann jeder dazu
qualifizierte im Haus meine Arbeit nachvollziehen. Wenn ich dem
Hersteller Professionalität unterstelle, gehe ich von sinnvollen
Standards seinerseits aus, und da ich in einem klugen Haus arbeite,
berücksichtigt es das.

In Frage stellen würde ich das erst, wenn Fehler auftreten, die nicht
auf "fremde" Konfigurationen zurückzuführen sind. Woher weiß ich, dass
ich eine "originale" Konfiguration vor mir habe? Das kann ich nur
wissen, wenn sämtliche Änderungen sauber protokolliert sind, denn dann
kann ich sie -zur Fehlersuche- rückgängig machen. Also lautet mein
Ratschlag an alle, die eine Konfiguration bearbeiten: Beschäftige dich
mit den Standards, die für dieses Programm vorgegeben sind, halte dich
daran und protokolliere jede Änderung nachvollziehbar.
Post by Thomas Kaiser
Oder die, die er -- ggf. irrigerweise -- als
warum eigentlich irrigerweise? Weil es Menschen gibt, die diese
Standards einfach ignorieren? Ist da der Standard das Problem, oder die
Ignoranz? Würdest du also jemandem, der eine Konfiguration ändert, eher
standardkonformes Vorgehen empfehlen, oder doch eher die Ignoranz des
Standards - immer Vorausgesetzt, es gibt einen.
Post by Thomas Kaiser
allgemein gültig ansieht? Die, die in irgendwelchen ISO-Broschürchen
abgelegt sind? Andere? Was tun, wenn Standards (Du nutzt ja bewußt den
Plural) untereinander in Widerspruch stehen? Oder -- auch gerne mal
vorkommend -- schon in sich selbst inkonsistent sind?
Und wem nützt es, wenn ich diesem unvermeidbaren Chaos noch vermeidbares
hinzufüge, alles gut durchrühre und dann nur noch laut Hilfe schreien kann?
Post by Thomas Kaiser
Was bringt einem in der Praxis das Festhalten an IT-Theorie oder
Lehrbuchvorgehen,
Minimierung des Chaos.
Post by Thomas Kaiser
wenn einem die vorgefundene Realität entgegenschreit,
daß die Theorie und die Lehrbuchprozesse auf die konkrete Situation
nicht anwendbar sind,
in dem konkreten Fall ist das aber ganz einfach anwendbar. Dazu muss man
allerdings wissen, dass

#UseDNS yes

eben heißt, dass die Option UseDNS standardmäßig auf yes gesezt ist.

Und wenn dann in der sshd_config steht

#UseDNS yes
# geaendert am ... von ... zu
UseDNS no

hat man doch deutlich mehr Anhaltspunkte, als wenn da steht

UseDNS yes

was einen im Zusammenhang mit der oben beschriebenen Strategie doch
deutlich in die Irre führt. Das würde nämlich zu der Annahme veführen,
der eine Wert der Option bringt nichts (der Fehler ist ja da), der
andere auch nicht, weil der Standard ja offensichtlich

#UseDNS no

sein muss und in der Standardkonfiguration trat der Fehler auch nicht auf.
Post by Thomas Kaiser
weil es diese ideale Welt, die Grundlage für das
ideale Vorgehen wäre, in der Praxis nicht gibt?
wenn es genau so einfach ist, etwas richtig zu machen, warum soll ich es
dann falsch machen? Nur um nicht als Weltverbesserer dazustehen?
Post by Thomas Kaiser
Da hilft einem irgendwann nur noch die Erfahrung (nichts zu glauben, was
_offensichtlich_ erscheint sondern es zu verifizieren. Das gilt noch
mehr für Annahmen, die man aus Absichtserklärungen wie besagten
Kommentaren in Konfig-Dateien ableitet, strukturiert von unten nach oben
vorgehen, nach Ausschlußverfahren Ursachen eingrenzen).
Ja. Das glaube ich dir gern. Aber mein Einwand bezog sich eben nicht auf
den Fehlersucher, der die Zeile

#UseDNS yes

so verstanden hat, wie sie gemeint ist und _genau_deshalb_ nicht in der
Lage war, den Fehler zu finden. Sie bezog sich auf den
Konfigurationsdateiänderer, der die Option

#UseDNS yes

genau falsch herum verstanden hat und deshalb glaubte, dass diese Zeile
doch eigentlich

UseDNS no

bedeuten müsse. Ich zitiere noch mal Thomas Wildgruber:

"[...] Auch wenn ich jetzt zwar vermuten könnte, dass
die auskommentierte Zeile...

#UseDNS yes

...das Ergebnis eh schon negiert,[...]"
Post by Thomas Kaiser
Gruss,
Thomas
Grüße
Wolfgang
Thomas Kosch
2012-09-25 10:26:13 UTC
Permalink
Post by Juergen P. Meier
Tja, du verbietest dir selbst, DNS Lookups zu machen.
SSH macht aber DNS um zur IP-Addresse des Clients einen Hostnamen zu
ermitteln. Dies versucht der sshd wohl drei mal mit je 10 sek Timeout.
Du musst auch noch DNS (UDP mit Server-Port 53) erlauben.
z.B. machst du das - soferin dein DNS Recursor die IP Addresse
00010 allow udp from 10.1.1.1 53 to any in
Warum eigentlich "... to any in" und nicht "... to me in"?

ttyl8er, t.k.
--
Life is Xerox, and you're just a copy
Thomas Wildgruber
2012-09-25 11:50:47 UTC
Permalink
Post by Thomas Kosch
Post by Juergen P. Meier
00010 allow udp from 10.1.1.1 53 to any in
Warum eigentlich "... to any in" und nicht "... to me in"?
Das hatten wir ursprünglich sogar so aber da unsere Reglen (vermeintlich)
nicht funktionierten (wir einfach nicht so lange gewartet und den Versuch
sofort wieder abgebrochen) haben wir die Regeln Stück für Stück wieder
allgemeiner geschrieben um uns so an den Fehler heranzutasten.

Thx & Bye Tom
--
"One good Whiskey a day, keeps the doctor away"
Loading...