www.fabiankeil.de/blog-surrogat/2006/06/25/tor-server-gestartet.html
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.
Auch wenn Tor erst seit Freitag-Abend läuft, wurde bereits das ein oder andere Byte verarbeitet.
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.
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
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.
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.
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
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.
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.