www.flickr.com

donderdag 10 augustus 2006

Start en stop TCP connecties monitoren

Als je een netwerk sniffer als tcpdump of ethereal start zonder te filteren, dan zul je overweldigd worden door de grote hoeveelheid berichtjes die opvangt. Een filter is dus ten zeerste aan te raden. Maar hoe kun je het beste filteren? Ik vond een artikeltje van Danilo Lujambio dat ik zelf erg handig vond en 1 op 1 heb overgenomen.

.... We zullen hier enkele expressies geven die als filters kunnen fungeren waardoor de hoeveelheid gegenereerde gegevens behapbaar blijft.

Om deze expressies te kunnen begrijpen laten we hier eerst het formaat van een TCP-pakketje zien.

TCP (RFC793)

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgement Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Offset | Reserved |U|A|P|R|S|F| Window |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


We zien dat het 13de byte de vlaggen bevat die het type pakketje bepaalt (SYN, FIN etc.). Met deze kennis en het gebruik van de AND-operatie (&) kunnen we vervolgens bits maskeren en daarmee expressies opbouwen als:

$ tcpdump ' tcp[13] & 7 != 0 and dst 192.168.255.20 ' >/tmp/out7

Waardoor alleen nog pakketjes worden doorgelaten waarvan het R, S of F-bit actief is (het masker is hier 00000111) en die de machine 192.168.255.20 als bestemming hebben.

Met de volgende expressie:

$ tcpdump ' tcp[13] & 1 != 0 and dst 192.168.255.20 ' >/tmp/out1

detecteren we FIN-pakketten (het masker is 00000001). Dit kan handig zijn om te detecteren of nmap actief is met de optie -sF. En met:

$ tcpdump ' tcp[13] & 2 != 0 and dst 192.168.255.20 ' >/tmp/out2

krijgen we alleen pakketten met het SYN-bit actief, om zo te achterhalen of iemand met de optie - sS aan het snuffelen is.

Voor deze laatste variant (optie -sS) zijn er speciale detectieprogramma's verkrijgbaar.


OmniPeek

Mocht je nu gebruik maken van Omnipeek, dan kun je dezelfde informatie verkrijgen door een expert filter te maken met de volgende criteria:


Protocol Filter
Protocol: TCP

AND

Value Filter
Length : 1 byte
Offset : 47
Mask : 0x07
Signed : not checked
Network byte order : not checked
Operator : !=
Value : 0


Of je kunt natuurlijk ook gewoon even mijn filter importeren. Deze kun je downloaden door deze link te gebruiken.

Dit filter werkt exact hetzelfde als de tcpdump variant. Er wordt namelijk binnen TCP pakketten gekeken naar een bepaalde positie welke door middel van de offset wordt aangegeven. Daarna worden de bits gemaskeerd die interessant zijn. Hierdoor worden alleen de laatste 3 bitjes van de tcp control byte gefilterd. En de waarde hiervan mag niet 0 zijn. Zo bereik je hetzelfde resultaat.

woensdag 2 augustus 2006

Beheer Terminal Server sessies via telnet

Als je een Windows 2000 of 2003 server beheert door middel van terminal services in admin mode, zul je vast wel eens tegen het limiet van de 2 of 3 maximale simultane connecties aangelopen zijn. Het is mogelijk om met de Terminal Services Manager sessies te resetten. Maar in sommige gevallen werkt deze tool niet. Bijvoorbeeld in het geval dat de te beheren machines lid zijn van een ander domein.

Gelukkig is het dan mogelijk om door middel van de command line alsnog deze sessies te resetten. Hiervoor komt een oude tool weer van pas welke (geloof het of niet) recentelijk in Windows besturingssystemen is geïntroduceerd: TELNET.

Je kunt door middel van een Services of Computer Management snap-in remote te verbinden met de te beheren computer om de telnet service te starten. Vervolgens log je in via telnet. Eenmaal ingelogd, zul je een command prompt krijgen op de remote server.

Nu zijn er 2 commando's die je kunt gebruiken om weer te kunnen inloggen via Terminal servives:

QUERY SESSION
toont welke gebruikers aangelogd zijn

QUERY USER [username sessionname sessionid]
toont o.a. de logon- en idle tijden van de ternminal sessie

Gewapend met deze informatie kun je vervolgens het commando LOGOFF gebruiken om ongewenste connecties af te loggen.

Let er wel op dat deze procedure een noodoplossing is. Telnet is een applicatie die clear-text over het netwerk gaat en is dus uit het oogpunt van beveiliging niet echt gewenst. Zet deze service daarom ook weer uit als je ermee klaar bent.

donderdag 9 februari 2006

Installatie VMware Server beta op Debian 3.1 “sarge”

Sinds VMware heeft aangegeven hun server produkt gratis te maken speel ik met de gedachte om een Linux VMware server omgeving op te tuigen en daar mijn FreeBSD en andere OS'en onder te installeren. Vanwege de minimale systeemeisen viel mijn keuze op Debian. Verwacht geen complete howto, dit zijn slechts aantekeningen die ik later kan hergebruiken.

Update: Mijn keuze voor Debian werd nog eens extra ondersteund door een artikel op Linux.com.

Installatie dmv. het standaard setup script uit de tar file (vmware-install.pl). Accepteer alle standaard waarden die het script voorstelt. Dit kan ook met de parameter '-d'. Na het installeren wordt vmware-config.pl gestart en deze geeft een waarschuwing. Na enig uitzoekwerk heb ik de fout gevonden.

Voor de installatie moeten tevens make, gcc en de kernel headers geïnstalleerd zijn. De kernel headers moeten wel overeen komen met de versie van de geïnstalleerde kernel. Typ hiervoor 'uname -u' om de versie te achterhalen.

Extra installeren:
libs/libx11-6
libs/libxtst6
libs/libxt6
libs/libxrender1

eventueel (onduidelijk of dit vereist is):
libxi6

Installatie mui component
Volgens de release notes van VMware server zou eerst de libdb.so.3 library moeten worden geïnstalleerd. Volgens de Debian package searchengine zou deze in het volgende package moeten zitten:

oldlibs/libdb2
libdevel/libxpm-dev

Bij het installatie script van de MUI interface kan de parameter '-d' NIET worden gebruikt om alle default waarden te accepteren. Het script knalt op het accepteren van de licence agreement.


De restultaten liegen er niet om. Na een minimale installatie van Debian en VMware Server Beta is er 28 Mb RAM in gebruik. Dit laat dus nog voldoende over om meer dan 1 guest OS te draaien op mijn HP servertje met 256 MB. Helaas kan er niet meer geheugen bij, dus ik heb het er maar mee te doen.

Zie ook:
Installing VMware Tools in Unsupported Linux Distributions
Installing VMware Products on Unsupported Linux Distributions
GSX Server 3.2.1 Linux host operating system requirements - incomplete

Before running VMware Server for the first time, you need to configure it byinvoking the following command: "/usr/bin/vmware-config.pl". Do you want thisprogram to invoke the command for you now? [yes]

The correct version of one or more libraries needed to run VMware Server may bemissing. This is the output of ldd /usr/bin/vmware:
libm.so.6 => /lib/libm.so.6 (0x4001a000)
libdl.so.2 => /lib/libdl.so.2 (0x4003c000)
libpthread.so.0 => /lib/libpthread.so.0 (0x4003f000)
libX11.so.6 => not found
libXtst.so.6 => not found
libXext.so.6 => not found
libXt.so.6 => not found
libICE.so.6 => not found
libSM.so.6 => not found
libXrender.so.1 => not found
libz.so.1 => /usr/lib/libz.so.1 (0x40092000)
libc.so.6 => /lib/libc.so.6 (0x400a4000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

This program cannot tell for sure, but you may need to upgrade libc5 to glibcbefore you can run VMware Server.