Re: lpd & net.inet.tcp.blackhole

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Thu, 8 Oct 2009 16:44:02 +0200 (CEST)

Daniel C. Dowse wrote:
> Ich habe mir gestern eine Seite ueber das absichern von FreeBSD
> durchgelesen. Alles gut soweit. Heute als ich meinen Rechner startete
> und mit Opera eine Zugfahrplan aus drucken wollte, hing Opera fuer
> ca. 1:30 min. Erst dachte ich es laege am Drucker Lexmark Optra T630
> doch ich hatte an den Einstellungen vom Drucker, bzw. apsfilter nicht
> rumgebastelt. Deshalb hat es mich einige Zeit gekostet das Problem zu
> lokalisieren nach einigem scroogeln, habe ich dann mal tcpdump -i lo0
> -vv in die Konsole getippt. Dann bin ich drauf gekommen das ich in
> systctl.conf was geaendert habe und zwar hatte ich die option
> net.inet.tcp.blackhole=2 eingefuegt. Und das war der Fehler.
> Diese Option brachte Opera & Firefox ins stocken. Doch Xview druckte
> Problemlos auch XPdf und lpr {file} ging ohne Probleme.
> Deshalb wundere ich mich warum nur die Browser gemuckt haben?

Ich weiß es nicht sicher, aber ich habe eine Vermutung.

Es gibt eine Reihe von unterschiedlichen Druck-Protokollen
auf unterschiedlichen Ports:

$ grep -i print /etc/services

Möglicherweise unterstützen die Browser mehrere dieser
Protokolle und probieren sie der Reihe nach durch.
Dabei ist das LPD-Protokoll (Port 515) nicht das erste,
das probiert wird, sondern irgendein anderes.

Normalerweise wird dann sofort ein "Connection refused"
gemeldet, und der Browser probiert das nächste Protokoll.
Das geht so schnell, dass man keine Verzögerung bemerkt.

Wenn Du dagegen net.inet.tcp.blackhole aktivierst, wird
kein "Connection refused" gemeldet. Die Pakete, mit
denen der Verbindungsaufbau versucht wird, werden einfach
stillschweigend verworfen. Dann wartet die Anwendung so
lange, bis ein Timeout auftritt.

Aufgrund solcher Nebenwirkungen empfehle ich, den sysctl
net.inet.tcp.blackhole auf 0 zu lassen. Mit Paketfilter-
Regeln (egal ob PF, IPF oder IPFW) hat man viel bessere
Möglichkeiten, gezielt bestimmte Pakete zu verwerfen und
Verbindungsaufbauten zu verhindern.

Typisches Beispiel mit IPFW:

   allow ip from any to any via lo0
   # Hier die allow-Regeln für offene Ports, z.B.:
   allow tcp from any to me 22
   # Alle anderen gehen ins "blackhole":
   drop tcp from any to me

Dann funktioniert "Connection refused" lokal, aber alle
Verbindungsversuche von außerhalb werden geblackholed.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart
FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd
Passwords are like underwear.  You don't share them,
you don't hang them on your monitor or under your keyboard,
you don't email them, or put them on a web site,
and you must change them very often.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 08 Oct 2009 - 16:44:23 CEST

search this site