www.fabiankeil.de/blog-surrogat/2006/06/25/tor-server-gestartet.html

Tor-Server gestartet

Wie bereits erwähnt plane ich seit einiger Zeit, meine Website auf einen eigenen Server zu verschieben. Die Server-Angebote von Alturo hielt ich anfangs für attraktiv, mittlerweile sind sie aber ausverkauft und ich musste mich wo anders umsehen.

Das war auch gut so, für unwesentlich mehr Geld habe ich nun deutlich mehr Inklusiv-Traffic zur Verfügung. Für monatliche 19.99 Euro bot Alturo einen Celeron 2000 mit 400 Giga Byte Frei-Traffic an, für fünf Euro mehr habe ich einen Strato PowerServer S (Celeron 2400) mit 2 Terra Byte Inklusiv-Traffic bekommen.

Für meine jetzige Website käme ich locker mit drei Giga Byte aus, für den ebenfalls eingeplanten Tor-Server ist jedoch kein Limit zu hoch. Ich hoffe Strato hat sich bei seiner Kalkulation nicht zu weit aus dem Fenster gelehnt, 15 Cent pro Giga Byte hört sich für mich recht günstig an, die Kosten für den Server selbst sind dabei noch nichtmal berücksichtigt.

Nicht mein Problem. Den Server habe ich Donnerstag bestellt und erstmal das vorinstallierte GNU/Linux von der Festplatte getreten und mit dem Betriebssystem meiner Wahl ersetzt; Freitag wurde das Tor-Jail eingerichtet und gestartet.

Mit der Einrichtung von Mail- und Webserver werde ich noch einige Wochen warten. Meinen Domainfactory-Vertrag überlege ich für den Notfall zu behalten. Eine Beschlagnahmung des Tor-Servers wäre zwar rechtswidrig und vor allem sinnlos, in Zeiten der Anti-Terror-Hysterie ist das aber leider nur noch begrenzt relevant.

Von Tor-Server-Beschlagnahmungen in Deutschland habe ich zwar noch nichts gehört, in Frankreich gab es aber bereits mindestens eine. Da ich den Server nicht im Keller betreibe, rechne ich nicht mit Hausbesuch, ein vorübergehender Verlust von Mail- und Web-Server wäre aber ärgerlich genug – schneller Ersatz scheint sinnvoll.

Statistiken

Auch wenn Tor erst seit Freitag-Abend läuft, wurde bereits das ein oder andere Byte verarbeitet.

Bunte Bilder

[Grafik: Traffic-Statistik der vergangenen 7 Tage. Die ersten Tage kein Traffic, Donnerstag bis mitte Freitag wenig, Freitag Abend bis Samstag Nacht bits zu 10 MBit/s, zwei Stunden nichts, Sonntag wieder volle Leistung] Die Grafiken kommen aus Stratos Webinterface, daher auch der kompetente Hostname.

Für die Außenwelt läuft der Server als tor.fabiankeil.de, der Tor-Nickname ist Zwiebelsuppe.

[Grafik: Gleiche Traffic-Statistik, diesmal aber nur der vergangen 24 Stunden.] Auf der nach Traffic sortierten Tor-Server-Liste ist Zwiebelsuppe über Nacht auf Platz 25 (von 634) geklettert, mal sehen wie lange die Position gehalten werden kann. Update: mir spucken Instabilitäten in die Suppe, auf der Rangliste geht es daher auf und ab.

Momentan läuft Zwiebelsuppe mit einem Tages-Limit von 50 Giga Byte, daher auch die Pause in der ersten Nacht:

[fk@fabiankeil ~]$ tail -n 8 /usr/jails/tor-server/usr/local/var/log/tor/notices.log 
Jun 24 12:00:00.250 [notice] accounting_set_wakeup_time(): Configured hibernation.  This interval began at 2006-06-24 12:00:00; the scheduled wake-up time was 2006-06-24 12:00:00; we expect to exhaust our quota for this interval around 2006-06-25 12:00:00; the next interval begins at 2006-06-25 12:00:00 (all times local)
Jun 25 04:24:13.564 [notice] consider_hibernation(): Bandwidth soft limit reached; commencing hibernation.
Jun 25 05:57:02.061 [notice] hibernate_go_dormant(): Going dormant. Blowing away remaining connections.
Jun 25 12:00:00.079 [notice] accounting_set_wakeup_time(): Configured hibernation.  This interval began at 2006-06-25 12:00:00; the scheduled wake-up time is 2006-06-25 12:00:32; we expect to exhaust our quota for this interval around 2006-06-26 11:59:32; the next interval begins at 2006-06-26 12:00:00 (all times local)
Jun 25 12:00:00.079 [notice] hibernate_end_time_elapsed(): Accounting period ended. This period, we will hibernate until 2006-06-25 10:00:32 GMT
Jun 25 12:00:32.289 [notice] hibernate_end(): Hibernation period ended. Resuming normal activity.
Jun 25 12:00:32.289 [notice] connection_create_listener(): Opening OR listener on 10.0.0.1:9001
Jun 25 12:00:32.289 [notice] connection_create_listener(): Opening Directory listener on 10.0.0.1:9030

[Grafik: Monats-Statistik als simples Balken-Diagram, Auflösung ein Tag. Bis zum 23 kein Traffic, am 22. und 23 ist der Balken kaum über der Null-Linie, am 24 wird die 90-Giga-Byte-Marke ereicht] Das Tor-Limit werde ich nächsten Monat deutlich senken müssen: es bezieht sich lediglich auf den ausgehenden Verkehr, Stratos Monats-Limit gilt aber offensichtlich auch für den eingehenden Verkehr.

Ich hatte gehofft, es würde nur für den ausgehenden Verkehr gelten, durch den verspäteten Start wird das Limit aber diesen Monat auch so reichen.

Auslastung

Der Server ist momentan zu etwa 50 Prozent ausgelastet, für Mail und Web sind noch genug Reserven übrig:

last pid: 13463;  load averages:  0.54,  0.55,  0.51         up 1+19:23:31  15:36:52
84 processes:  2 running, 67 sleeping, 15 waiting
CPU states: 25.7% user,  0.0% nice, 15.2% system, 10.9% interrupt, 48.2% idle
Mem: 115M Active, 166M Inact, 105M Wired, 60M Buf, 108M Free
Swap: 1024M Total, 1024M Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
   11 root        1 171   52     0K     8K RUN     31.2H 52.39% idle
   12 root        1 -44 -163     0K     8K WAIT   130:55  7.03% swi1: net
   23 root        1 -68 -187     0K     8K WAIT    41:33  2.10% irq12: fxp0 fxp1
   35 root        1  20    0     0K     8K syncer   3:18  0.20% syncer
   13 root        1 -32 -151     0K     8K WAIT    15:01  0.05% swi4: clock sio
 1337    256     14  20    0   114M   111M kserel 529:56  0.00% tor
   15 root        1 -16    0     0K     8K -        2:48  0.00% yarrow
  642 root        1  -8    0     0K     8K geli:w   1:29  0.00% g_eli[0] md0
    4 root        1  -8    0     0K     8K -        0:39  0.00% g_down
    3 root        1  -8    0     0K     8K -        0:27  0.00% g_up
  638 root        1  -8    0     0K     8K mdwait   0:25  0.00% md0
    2 root        1  -8    0     0K     8K -        0:16  0.00% g_event
   24 root        1 -64 -183     0K     8K WAIT     0:13  0.00% irq14: ata0
   42 root        1 -16    0     0K     8K -        0:13  0.00% schedcpu
  251 _pflogd     1 -58    0  1548K  1248K bpf      0:12  0.00% pflogd
  450 root        1  96    0  2920K  1748K select   0:11  0.00% ntpd
   37 root        1 -16    0     0K     8K sdflus   0:03  0.00% softdepflush
   33 root        1 171   52     0K     8K pgzero   0:03  0.00% pagezero
   26 root        1   0    0     0K     8K tzpoll   0:02  0.00% acpi_thermal
   36 root        1  -4    0     0K     8K vlruwt   0:02  0.00% vnlru
   34 root        1 -16    0     0K     8K psleep   0:01  0.00% bufdaemon
  489 root        1   8    0  1312K  1044K nanslp   0:01  0.00% cron
  820 root        1   8    0  1312K  1040K nanslp   0:01  0.00% cron
  363 root        1  96    0  1300K   948K select   0:01  0.00% syslogd
  762 root        1  96    0  1300K   956K select   0:00  0.00% syslogd
12967 fk          1  96    0  6080K  3148K select   0:00  0.00% sshd
   31 root        1 -16    0     0K     8K psleep   0:00  0.00% pagedaemon
   27 root        1   0    0     0K     8K coolin   0:00  0.00% acpi_cooling0
  472 root        1  96    0  3356K  2560K select   0:00  0.00% sshd
13368 fk          1   8    0  3112K  1984K wait     0:00  0.00% bash
12964 root        1   4    0  6104K  3136K sbwait   0:00  0.00% sshd
12968 fk          1   8    0  1696K  1380K wait     0:00  0.00% sh

Die WCPU-Angabe für Tor ist unsinnig da Tor mit mehreren Threads läuft und top deren Auslastung nicht erfassen kann. Tor läuft wie erwähnt in einem eigenen Jail, die Auflösung von UID zu Benutzername ist top im Host-System unmöglich, der Nutzer _tor ist nur im Jail bekannt.

Tors Jail läuft von einem verschlüsselten Image. Falls ein prinzipienfreier Scherge den Server vom Strom trennen und einkassieren sollte, wird das gesamte Jail unzugänglich. Nicht das Tor irgendwelche personenbezogenen Daten protokollieren würde, aber ein bisschen Spass muss sein.

PF

Obwohl die Paket-Filter-Konfiguration noch sehr locker ist, bleibt bereits haufenweise Müll hängen:

[fk@fabiankeil ~]$ sudo pfctl -si
Status: Enabled for 1 days 19:27:18           Debug: Urgent

Hostid: 0x9f9c7694

Interface Stats for fxp0              IPv4             IPv6
  Bytes In                     74450188872                0
  Bytes Out                    79786579915                0
  Packets In
    Passed                       103555546                0
    Blocked                         358300                0
  Packets Out
    Passed                       105250564                0
    Blocked                          11517                0

State Table                          Total             Rate
  current entries                     5290               
  searches                       210203114         1343.7/s
  inserts                          1192004            7.6/s
  removals                         1186714            7.6/s
Counters
  match                            1843599           11.8/s
  bad-offset                             0            0.0/s
  fragment                              34            0.0/s
  short                                  0            0.0/s
  normalize                             15            0.0/s
  memory                               332            0.0/s
  bad-timestamp                          0            0.0/s
  congestion                             0            0.0/s
  ip-option                              0            0.0/s
  proto-cksum                            0            0.0/s
  state-mismatch                     23769            0.2/s
  state-insert                           0            0.0/s
  state-limit                            0            0.0/s
  src-limit                              2            0.0/s
  synproxy                              36            0.0/s

dmesg

Die dmesg-Ausgabe darf natürlich nicht fehlen:

Copyright (c) 1992-2006 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD 6.1-RELEASE-p2 #0: Fri Jun 23 20:06:57 CEST 2006
    fk@fabiankeil.de:/usr/obj/usr/src/sys/BIGSLEEP
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel(R) Celeron(R) CPU 2.40GHz (2399.74-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0xf29  Stepping = 9
  Features=0xbfebf9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0x4400<CNTX-ID,<b14>>
real memory  = 536805376 (511 MB)
avail memory = 515952640 (492 MB)
kbd1 at kbdmux0
acpi0: <IntelR AWRDACPI> on motherboard
acpi0: Power Button (fixed)
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0
cpu0: <ACPI CPU> on acpi0
acpi_throttle0: <ACPI CPU Throttling> on cpu0
acpi_button0: <Power Button> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff,0x400-0x4bf on acpi0
pci0: <ACPI PCI bus> on pcib0
agp0: <Intel 82845 host to AGP bridge> mem 0xe3000000-0xe33fffff at device 0.0 on pci0
pcib1: <PCI-PCI bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pcib2: <ACPI PCI-PCI bridge> at device 30.0 on pci0
pci2: <ACPI PCI bus> on pcib2
fxp0: <Intel 82559 Pro/100 Ethernet> port 0xc000-0xc03f mem 0xe2200000-0xe2200fff,0xe2100000-0xe21fffff irq 12 at device 6.0 on pci2
miibus0: <MII bus> on fxp0
inphy0: <i82555 10/100 media interface> on miibus0
inphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
fxp0: Ethernet address: 00:30:48:52:d2:0a
fxp1: <Intel 82559 Pro/100 Ethernet> port 0xc400-0xc43f mem 0xe2201000-0xe2201fff,0xe2000000-0xe20fffff irq 12 at device 7.0 on pci2
miibus1: <MII bus> on fxp1
inphy1: <i82555 10/100 media interface> on miibus1
inphy1:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
fxp1: Ethernet address: 00:30:48:52:d2:0b
pci2: <display, VGA> at device 8.0 (no driver attached)
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel ICH2 UDMA100 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xf000-0xf00f at device 31.1 on pci0
ata0: <ATA channel 0> on atapci0
ata1: <ATA channel 1> on atapci0
pci0: <serial bus, SMBus> at device 31.3 (no driver attached)
acpi_tz0: <Thermal Zone> on acpi0
sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
sio0: type 16550A
sio1: <16550A-compatible COM port> port 0x2f8-0x2ff irq 3 on acpi0
sio1: type 16550A
ppc0: <ECP parallel printer port> port 0x378-0x37f,0x778-0x77b irq 7 drq 3 on acpi0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/9 bytes threshold
ppbus0: <Parallel port bus> on ppc0
plip0: <PLIP network interface> on ppbus0
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <Parallel I/O> on ppbus0
pmtimer0 on isa0
orm0: <ISA Option ROMs> at iomem 0xc0000-0xc7fff,0xc8000-0xc8fff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
Timecounter "TSC" frequency 2399737412 Hz quality 800
Timecounters tick every 3.333 msec
Fast IPsec: Initialized Security Association Processing.
ad0: 58644MB <ExcelStor Technology J360 V22OA63A> at ata0-master UDMA100
WARNING: Expected rawoffset 112455, found 4032
Trying to mount root from ufs:/dev/ad0s2a
GEOM_ELI: Device ad0s3f.eli created.
GEOM_ELI:     Cipher: AES
GEOM_ELI: Key length: 256
GEOM_ELI:     Crypto: software
GEOM_ELI: Device md0.eli created.
GEOM_ELI:     Cipher: AES
GEOM_ELI: Key length: 128
GEOM_ELI:     Crypto: software
Limiting icmp unreach response from 201 to 200 packets/sec
Limiting icmp unreach response from 215 to 200 packets/sec
Limiting icmp unreach response from 201 to 200 packets/sec
Limiting closed port RST response from 222 to 200 packets/sec

md0.eli ist das Image des Tor-Jails, ad0s3f.eli das verschlüsselte Swap-Slice. Wie die letzten vier Zeilen zeigen wurden auch die ersten Skript-Kinder bereits auf den Server aufmerksam.

Perspektiven

Nächste Woche werde ich ein Jail für den Privoxy-Filter-Test einrichten, die Konfigurations-Hürden scheinen einige abzuschrecken. Die erste Zeit wird es nur als Hidden Service über Tor erreichbar sein, beim Umzug meiner Website werde ich es dann integrieren und für den unverschlüsselten Verkehr freischalten.

Auf tor.fabiankeil.de werde ich noch einen Webserver einrichten, der Funktion und Rechtslage erläutert, auch wenn der Hostname eigentlich offensichtlich genug sein sollte.