PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TOR-Server kann nicht nach außen connecten



nobody0
10.06.06, 09:37
Mit einem TOR-Server habe ich das Problem, dass er angeblich nicht nach außen connecten kann. Auszug aus der tor.log:

Jun 10 09:05:09.755 [warn] Your server (77.171.163.11:9092) has not managed to confirm that its ORPort is reachable. Please check your firewalls, ports, address, etc.

Die Ports sind aber alle offen, wie ich auch im Firewall-Log sehe.
Stattdessen habe ich aber merkwürdige Einträge dort (in messages):

Jun 10 09:29:34 bier kernel: DROP-ICMP9 IN=dsl0 OUT= MAC= SRC=62.43.72.9 DST=77.171.163.11 LEN=56 TOS=0x04 PREC=0x00 TTL=240 ID=50004 DF PROTO=ICMP TYPE=3 CODE=3 [SRC=83.171.183.51 DST=62.43.72.9 LEN=57 TOS=0x00 PREC=0x00 TTL=56 ID=0 FRAG:64 PROTO=UDP ]

Merkwürdig ist ja, dass Quelle und Ziel doppel und nicht konsistent angegeben sind. Nachvollziehbar ist das nicht, da ich Ping explizit enabled habe und es von außen funktioniert.
Irgendwelche Vorschläge? :confused:

r00t043
10.06.06, 11:14
Obwohl ICMP eine Ebene über IP angeordnet ist (im OSI-Modell die so genannte Vermittlungsschicht (Network Layer)), ist es in IP integriert. Es wird von jedem Router und PC erwartet, ICM-Protokoll sprechen zu können. Die meisten ICMP-Pakete enthalten Diagnose-Informationen, sie werden vom Router zur Quelle zurückgeschickt, wenn der Router Pakete verwirft, z. B. weil das Ziel nicht erreichbar ist, die TTL abgelaufen ist, usw.


Occasionally a
gateway or destination host will communicate with a source host, for
example, to report an error in datagram processing. For such
purposes this protocol, the Internet Control Message Protocol (ICMP),
is used. ICMP, uses the basic support of IP as if it were a higher
level protocol, however, ICMP is actually an integral part of IP, and
must be implemented by every IP module.

Es ist mir wirklich unverstaendlich wie Leute auf die Idee kommen koennen ICMP zu sperren. Haetten sie die Dokumentation gelesen, haetten sie gemerkt, das ICMP ein Bestandteil des IP ist. ICMP ist ja nicht nur der echo request, sondern ICMP enthaelt ja auch so schoene Diagnosemoeglichkeiten wie bei dir Type 3 (Destination Unreachable) mit Code 3 (Port Unreachable)[2].

Diese Information haette dein Server auch bekommen und dann haette (sollte) er dir diese Information in seine Logdatei schreiben, oder entsprechend darauf reagieren (anderen Host oder Port) koennen.

Es ist wirklich schade das Menschen auf diese Diagnosemoeglichkeit verzichten, die fuer die Nutzung des internet protocols auch noch obligatorisch ist. Und die dann vor Fehlern stehen, die auf die nicht Standardkomforme Nutzung zurueckzufuehren sind.

[0] http://de.wikipedia.org/wiki/ICMP
[1] http://www.ietf.org/rfc/rfc792.txt
[2] http://www.iana.org/assignments/icmp-parameters

eule
10.06.06, 11:33
Es ist mir wirklich unverstaendlich wie Leute auf die Idee kommen koennen ICMP zu sperren.


Weil sie dann "Stealth" sind.
Und damit sind sie voll krass sicher:rolleyes: Da must du nur Steve Gibson fragen, der kann dir das schoen erklaeren:D

nobody0
10.06.06, 22:50
Ich hatte nur Pings von Außen gesperrt, weil die kostbare Bandbreite belegen und den Upstream, der ja der Flaschenhals ist, auch belasten.
Und was soll ich jetzt machen? :confused:

r00t043
11.06.06, 16:56
Ich hatte nur Pings von Außen gesperrt, weil die kostbare Bandbreite belegen und den Upstream, der ja der Flaschenhals ist, auch belasten.
Und was soll ich jetzt machen? :confused:
Seit dem letzten mal iptables flushen hat mein Router 27GB Daten uebertragen und dabei ist folgende Menge an ICMP Paketen angefallen:
FORWARD:

25 2260 ACCEPT icmp -- any ppp0 anywhere anywhere
647 349K ACCEPT icmp -- ppp0 eth0 anywhere anywhere

INPUT:

54 8935 ACCEPT icmp -- any any anywhere anywhere

OUTPUT:

227 66024 ACCEPT icmp -- any any anywhere anywhere

Die Menge der Daten die per ICMP verschickt wird ist aeusserst gering wie man sehen kann. Und Pings von aussen sind 54 Pakete (8kb) oder weniger wie man sieht (die landen in der INPUT chain, da ich aber ab und zu auch intern den Router anpinge sind, koennen nur weniger als 54 echo requests von aussen kommen)

Das was du machen solltest ist ICMP weiter zu leiten. Echo request kannst du ja weitehin filtern. Wenn du mit iptables ICMP filterst kannst du imho auch nach type und code filtern.

Du filterst ja ICMP ganz raus, analog koennte man sagen du sperrst nicht einen tcp Port sondern das ganze tcp Protokol.

nobody0
11.06.06, 18:17
Damit ist TOR aber ziemlich aufwendig; Apache2 und Proftpd sowie weitere Server kommen mit den restriktiven Firewall-Einstellunge problemlos zurecht, während TOR nicht einmal richtig startet.

Roger Wilco
11.06.06, 19:31
Damit ist TOR aber ziemlich aufwendig; Apache2 und Proftpd sowie weitere Server kommen mit den restriktiven Firewall-Einstellunge problemlos zurecht, während TOR nicht einmal richtig startet.
Apache und ProFTPd mit TOR zu vergleichen, ist in etwa wie der Vergleich zwischen Äpfeln und Zwiebeln. ;)

Dem Apache und dem ProFTPd ist es egal, ob sie von außen erreichbar sind. Der Daemon läuft und fertig. Was du an Datenverkehr blockierst, juckt die beiden nicht.
Bei Tor wirst du aber Teil eines Netzwerks, dass sicherstellen muß, dass die einzelnen Knoten erreichbar sind. Was nützt dir denn eine einzelne, abgekapselte Tor-Node? Richtig. Gar nichts. Dann kannst du es gleich bleiben lassen.

r00t043
11.06.06, 19:37
Ich habe dir extra den fuer dich hier wichtigen Teil des RFC792 rauskopiert. icmp ist Bestandteil des ip. Dort steht auch ausdruecklich das jedes Geraet welches das internet protocol nutzen will icmp koennen muss.

Du unterstuezt also nur einen Teil des ip und brauchst dich nicht wundern wenn eine Applikation die das ip nutzt nicht funktioniert. Sie oeffnet einen tcp/ip oder udp/ip socket und wenn das ein Standard komformes System ist, hat die Applikation anspruch auf volle Unterstuetzung des Standards.

Sind deine Dienste so unsicher konfiguriert, das du mit solch fragwuerdigen Dingen vor Eindringlingen schuetzen musst? Ist dir bewusst, das Scanner wie nmap neben dem icmp echo request, auch tcp Ports zum Pingen benutzen kann, und sogar per default macht (allerdings nur Port 80)?

Des weiteren scheint dein TOR Server das udp zu benutzen und scheitert bei dem Versuch ein Verbing zu einem bestimmten Port aufzubauen (wie schonmal erwaehnt hatte: port unreachable), da es bei udp, nicht die Moeglichkeit gibt wie bei tcp mit dem setzen des reset flag, zu sagen das auf dem Port kein Dienst lauscht, muss/kann der Server mit einem icmp Paket antworten, die du aus unerklaerlichen Gruenden rausfilterst.

Schonmal versucht (falls es die Moeglichkeit gibt) deinem Server zu sagen das es zu einem anderen Port connecten soll? Port unreachable ist ja ein eindeutiger Hinweis. Damit koenntest du versuchen die Probleme deiner gewollt nicht Standard komformen Installation in diesem Punkt zumindest umschiffen.

nobody0
19.06.06, 00:54
Ok, ICMP wird nun defaultmäßig accepted und nun sind auch explizit alle ausgehenden Verbindungen erlaubt sowie alle dazu relateten von außen, aber trotzdem funktioniert TOR meistens nicht. Es gibt Tage, an denen läuft Tor und Tage, an denen TOR nicht will, obwohl in den log-Files nichts erkennbar ist und die TOR-Ports frei sind.
Irgendwelche Vorschläge? :confused:

r00t043
19.06.06, 20:23
Wenn der TOR Server mal nicht will, seinen Verbindungsversuch mit tcpdump, oder ethereal mitsniffen.

nobody0
21.06.06, 08:42
Tja, im Notfall bleibt wohl nix anderes, denn seit gestern Nachmittag funktioniert TOR, während es vorher zwei Tage lang nicht funktionierte, obwohl nichts geändert wurde (auch kein reboot).
Ich werde nochmal auf der TOR-Homepage nachsehen und die neueste Version installieren.