![[Photo of the Author]](../../common/images/Georges-Tarbouriech.jpg) 
 
    original in en Georges Tarbouriech
en to de Tilmann Preuße
Georges ist seit langer Zeit Unixnutzer. Er ist der Meinung, 
      daß Computersicherheit die Herausforderung des Jahrzehnts ist.
      
    
Psionic Portsentry ist Teil der Abacus Projekt Sammlung von Tools ( neben Portsentry bietet die Sammlung noch logcheck und hostsentry ). Es handelt sich um ein IDS (Intrusion Detection System), zur Feststellung von Portscans und der aktiven Verteidigung. Es arbeitet auf verschiedenen Unix Derivaten, einschließlich Mac OS X. Die Hauptfunktion eines IDS ist es, den Sysadmin über einen Einbruchsversuch zu informieren. Portsentry geht noch weiter, es kann auf einen Angriff aktiv reagieren. Die aktuellste Version (1.1) von diesem großartigem Tool ist unter http://www.psionic.com zu finden. Und nur mal am Rande, Version 1.0 ist mittlerweile bei vielen Linux Distributionen mit dabei (Debian, RedHat ...).
![[illustration]](../../common/images/illustration214.jpg) 
 
    
      In der letzten Dekade nahm die Arbeit mit Netzwerken in einer 
      unvorstellbaren Geschwindigkeit zu. Das Ziel war es, die Kommunikation 
      zwischen Maschinen mit unterschiedlichen BS'en zu ermöglichen.
      Deshalb wurden proprietäre Netzwerksysteme kontinuierlich durch TCP/IP
      ersetzt. Das Internet erledigte dann den Rest ! Heutzutage wird fast
      das gesamte Netzwerk mit TCP/IP betrieben und TCP/IP basiert auf Ports.
      Um es kurz zu machen, Ports sind mit Programmen verbunden (Clients 
      oder Servern). Die Server lauschen, bis ein Client versucht eine 
      Verbindung aufzubauen. Die Dienste (die o.g. Programme) sind mit 
      speziellen Ports verbunden. Auf Unix Systemen findet man das Schema in 
      der Datei /etc/services. Jeder kennt so die Ports und die dazugehörigen 
      Dienste. Wenn jeder das weiß, weiß es der Cracker noch 
      besser ! Wenn ein Port eine Tür wäre und dieser Port offen 
      ist (d.h. er lauscht), ist es wie eine unverschlossene Tür.
      Und wie kommt man in ein Haus ? Normalerweise durch die Tür 
      (oder es wird der Weg durch ein Fenster vorgezogen, es liegt bei Ihnen !). 
      So kommen die grauen Männer in Ihren Computer ...
    
      Das Erste was zu tun ist, um das Risiko zu mindern ist, so viele Ports
      wie möglich zu schließen, also die Dienste zu stoppen. 
      Je weniger, desto besser. Nur nicht jeden einzelnen Port auf einer Netzwerk 
      Maschine schließen : ansonsten kann gar keine Kommunikation 
      stattfinden und das wäre wirklich dumm !
    
      Die Limitierung der aktiven Dienste oder das Schließen der Ports
      ist nicht das Ziel dieses Artikels. Informationen zu diesem Thema kann
      man unter 
      Linux Documentation Project
       finden oder man sucht in den Ausgaben von LinuxFocus (z.B. 
      Bastille Linux 
       oder 
      Security tools
      ). Soweit zum anderem Weg zum Schutz der Maschine oder des Netzwerks. 
      Auf Linux Systemen ist 
      Bastille Linux
      ein absolutes Muß.
    
      An dieser Stelle kommt Portsentry. Portsentry kann die Ports 
      überwachen und kann auch blocken, wenn man es so will. Es 
      verfügt dabei über verschiedene Benutzermodi, wobei einige nur 
      für ein bestimmtes BS verfügbar sind. BS steht an dieser Stelle
      für Linux.
    
      Portsentry ist in der Lage von Packet Filtern, wie ipfwadm, ipchains
      oder iptables je nach Kernel Version, zu profitieren. Für andere
      Unix Derivate kommen andere Tools zum tragen (später mehr dazu).
      Hier wären wir nun: Portsentry's bestes Feature ist
      wahrscheinlich "auto-blocking".
    
      Wie funktioniert das nun ? Legen wir los !
    
      Portsentry kommt als kleines Tar-Packet daher. Nach dem Entpacken des 
      Archivs hat man die Quellen, verschiedene Konfigurationen und README
      Dateien. Natürlich sind es alle Dateien wert gelesen zu werden. Da
      wir schließlich über Sicherheit reden: nicht vergessen die PGP
      Dateien herunterzuladen (Signatur und Schlüssel).
    
      Installation von Portsentry ist klar: make (Ihr System) und make install .
      Jedoch vor der Installation an das Anpassen von Portsentry denken. 
      Als da wären: Das Lesen der Dokumentation, das Anpassen der portsentry.conf
      Datei an die eigene Umgebung und die Makefile Datei wie auch die 
      portsentry_config.h Datei prüfen.
    
      Damit Portsentry effektiv arbeitet, wird mindestens der TCPWrapper 
      benötigt. Mindestens, da es noch besser wäre, es in
      Verbindung mit einem Packet Filter zu nutzen. Wenn man natürlich Linux
      nutzt, ist bereits alles vorhanden. Wie sieht es bei anderen Unixen aus ?
    
      Da wir Portsentry auf verschiedenen Plattformen getestet haben, hier die
      Voraussetzungen.
    
      Auf Mac OS X ist es wie bei Linux: Alles ist vorhanden, es gibt den TCPWrapper 
      und ipfw (Die BSD Version). Also einfach "make osx" und schon geht's los.
    
      Auf Solaris 2.6 (Sparc) gibt es keinen TCPWrapper. Unter 
      
	ftp://ftp.porcupine.org/pub/security
      
      gibt es einen.
      Man kann auch unter 
      
	ftp://coombs.anu.edu.au/pub/net/ip-filter/ip-fil3.4.9.tar.gz
      
      einen IPFilter bekommen (jedoch nur, wenn man den Solaris Compiler hat !!!).
    
      Auf Irix 6.5 Systemen, gibt es ebenfalls keinen TCPWrapper. Man kann es als
      Paket auf
      
	http://freeware.sgi.com/index-by-alpha.html
      
      finden. Zum filtern der IP Pakete gibt es ipfilterd, jedoch ist er nicht als
      standardmäßig installiert.
    
      Und zum Schluß, es sei denn es findet sich ein funktionierendes vsnprintf(),
      ist es nicht möglich Portsentry auf NeXTSTEP zu installieren ...
      und ich habe keins gefunden !
    
 
      Wie auch immer, man sollte zuerst Portsentry konfigurieren bevor
      es installiert wird. Na gut, es liegt an Ihnen, aber es ist besser vor dem 
      Weitermachen erst die Philosophie zu verstehen ... aber das ist nur ein Standpunkt !
    
      Sehr gut, danke !
      
      Noch wichtiger, Portsentry beruht auf Konfigurationsdateien. Die wichtigste
      ist portsentry.conf. Hier wird Portsentry gesagt, wie es auf Widersacher
      reagieren soll.
      
      Bevor wir mit der Datei arbeiten, ist es nötig die Unterschiede der 
      Arbeitsmodi zu kennen und was sie machen.
      
      Portsentry arbeitet mit sechs verschiedenen Modi, abhängig von der beim
      Start gewählten Option.
      
      - Die Erste ist "-tcp" und ist der Basis Modus. Mit dieser Option, verbindet sich
      Portsentry mit den TCP Ports, die in der Konfiguration im Abschnitt 
      "port configuration" stehen. Es kann sich mit bis zu max. 64 Port verbinden.
      
      - Die Zweite ist "-udp" und macht das gleiche wie zuvor, nur für die
      UDP Ports.
      
      - Die Dritte ist "-stcp", das "s" steht für verstecken (stealth). Diese Option
      und die nächsten sind nur unter Linux verfügbar. Mit der "-stcp" Option,
      nutzt Portsentry Sockets um die eingehenden Pakete zu überwachen, d.h.
      die Ports sind mit keinen Diensten verbunden.
      
      - Die Vierte ist "-sudp" und macht das gleiche wie zuvor, nur für die
      UDP Ports.
      
      - Die Fünfte und Sechste sind "-atcp" und "-audp". Dies sind die effektivsten 
      Optionen ("a" steht für erweitert (advanced)). Bei Nutzung dieser Optionen
      erstellt Portsentry eine Liste der lauschenden Ports, TCP und UDP, wenn beides
      gewählt wurde, und blockt kontaktierende Hosts auf den Ports, es sei denn, 
      der Host soll von Portsentry ignoriert werden.
      
      Das ganze ist besser in den README Dateien, welche Portsentry mitbringt, erklärt.
      Dementsprechend wollen wir das Rad nicht neu erfinden und die Dokumentation neu 
      schreiben. Diese README Dateien sind zwingend zu lesen.
    
      Offensichtlich kann Portsentry auch Protokoll führen. Sollten Sie der Typ Sysadmin 
      sein, der keine Protokolle liest (Schmach und Schande), dann kann natürlich auch
      logcheck als Ergänzung zu Portsentry genutzt werden. Bei diesem Weg verschickt
      Portsentry eine Mail zur Information, sobald ein Einbruchsversuch stattgefunden 
      hat.
      
      Es kann dabei den Zielhost in die Datei /etc/hosts.deny schreiben, um sie mit
      dem TCPWrapper weiter zu nutzen.
      
      Der lokale Rechner kann dabei die Netzwerk Pakete an einen "toten Rechner"
      (dead host) weiterleiten.
      
      Und zu guter letzt, der lokale Rechner kann die Pakete mit Hilfe der lokalen
      Paket Filter Tools wegwerfen.
      
      Jetzt ist die Portsentry Philosophie etwas besser bekannt und wir können 
      mit dem Schreiben der portsentry.conf Datei beginnen.
      
      - Der erste Abschnitt der Konfiguration betrifft die Ports. Hier wählt man die 
      zu verbindenden Ports. Nicht vergessen, das wird ignoriert, wenn die erweiterten
      Optionen unter Linux genutzt werden. Obacht beim Verbinden mit den Ports (Nicht den 
      Port 6000 wählen, wenn mit X gearbeitet wird, z.B.).
      
      - Der nächste Abschnitt ist für die erweiterten Erkennungs-Optionen.
      Der Standard ist es, die Ports kleiner 1024 zu überwachen, sowohl TCP als auch 
      UDP. Hier können ebenfalls Ports ausgeschlossen werden. 
      Zur Verhinderung von Fehlalarmen und zu langen Protokollen ist es wichtig die Ports 
      zu schließen, besonders wenn sich Windos Rechner im Netz befinden.
      Als Beispiel, beachtet man Port 111 bei Verwendung von portmap und die Rechner 
      werden nicht in portsentry.conf ignoriert. Sicher, das wäre schon 
      verrückt, da portmap für NFS steht, aber Sie sind gewarnt. D.h. NFS 
      ist nicht das sicherste auf Unix Maschinen, aber reden wir nicht von Windos Rechnern.
      
      Hier nun der typische off-topic Abschnitt: Wenn ich "Windos" schreibe ist es kein
      Tippfehler : es ist nur, daß ich auf dem Fakt, daß Windows ein Desktop 
      Environment auf der Basis von DOS (D für dreckig ?) bestehe ... und es ist 
      auch ein Zeichen weniger zu tippen (ich bin ja so faul !). 
      Sorry für diesen Exkurs.
      
      - Die Abschnitt der Konfigurationsdateien betrifft die Dateien, welche von 
      Portsentry aus historischen Gründen genutzt werden oder um die zu 
      ignorierenden Rechner zu bestimmen. Sollte eine Standardinstallation gemacht
      werden, braucht man nichts zu ändern.
      
      - Der Abschnitt Gemischtes erlaubt das An- / Abschalten von DNS Anfragen.
      
      - Der Abschnitt Reaktionsoptionen ist das Herz der Konfiguration. Hier wird
      definiert, wie Portsentry reagieren soll.
      
      Erstens kommen die Optionen zum Ignorieren. Hier kann gewählt werden zu blocken,
      nicht zu blocken, oder ein externes Kommando zu starten.
      
      Als nächstes kommt der Abschnitt zum Verlieren der Weiterleitungen. Hier 
      wird Portsentry gesagt, wie es Routen wegwerfen soll oder wie es die Paket Filter
      des Systems nutzen soll. Hier stehen viele Beispiele für viele Systeme.
      Einfach ein passendes Beispiel aussuchen (nur eins !).
      
      - Der Abschnitt TCPWrapper zeigt, wie man Einträge in die Datei /etc/hosts.deny 
      schreibt.
      
      - Der Abschnitt externe Kommandos erlaubt es Kommandos zu starten, sobald ein Rechner
      Kontakt aufnimmt.
      
      - Der Abschnitt "scan trigger value" erlaubt die Definition der Reaktionszeit. 
      Der Standardwert ist "0" und der Unmittelbarste, denn er alarmiert beim ersten
      Kontaktversuch.
      
      - Der letzte Abschnitt ist zum Anzeigen einer Nachricht im Falle eines 
      Einbruchsversuches. Das funktioniert jedoch nicht im "stealth" Modus.
      
      Sobald wir hiermit durch sind, haben wir es fast geschafft. Prüfen wir nochmals
      die Datei portsentry.ignore, um Fehlalarme und riesige Protokolle zu vermeiden.
      Hier kann man die lokalen Netzwerkadressen mit Netzwerkmasken eintragen oder die 
      IP-Adressen von ein paar Rechnern.
      
      Das wärs ! Jetzt können wir "make yoursystem" and "make install" starten. 
      Das Installationsskript erledigt den ganzen Job, da es eingeschränkte Rechte 
      für das Verzeichnis und die Dateien erteilt. Gerade ausreichend, damit wir
      Portsentry mit den gewünschten Optionen starten können. Nun die Protokolle 
      prüfen, um zu sehen was passiert ist. Sollte alles gut verlaufen, ist Portsentry
      gestartet und hat das System gesichert.
    
Nutzt man nun Tools wie nmap, kann man einen Portscan auf unserer neues gesichertes System durchführen. (Mehr zu nmap dort ). Und diese Antwort bekommt man :
       
    
      Natürlich NICHT ! Es gibt eine Vielzahl von IDS, frei oder nicht. Die meisten
      von Ihnen sind nicht schlecht. Doch wenden wir uns dem bekannten Snort zu, zu
      bekommen unter 
      http://www.snort.org.
      
      Üblicherweise handelt es sich um Passive, d.h. sie informieren nur über 
      einen Einbruchsversuch. Dafür sind Sie ja auch gemacht. Z.B. Snort ist recht
      kompliziert, da es auf Regel-Skripten basiert, die das Schreiben eigener Regeln 
      erlauben. Die Website von Snort bietet eine Regel-Datenbank. Man kann ja auch beide,
      Snort und Portsentry, zusammen verwenden, wenn man keine Angst vor riesigen 
      Protokollen hat. Das ist kein Quatsch !
      
      Wie auch immer, die Stärke von Portsentry ist, daß es ein aktives IDS ist.
      Die Möglichkeit zu reagieren ist wahrlich atemberaubend. In Kombination mit
      einem Paket Filter macht es das zum Pflichtprogramm. Stellen wir mal eine Frage:
      Ist Portsentry das Gegenstück zum Paket Filter oder ist der Paket Filter das
      Gegenstück zu Portsentry ?
      
      Egal, wir können noch mehr über Portsentry sagen. Wir sollten sehr vorsichtig
      mit UDP Portscans im erweiterten Modus sein. Bitte hierzu die Doku lesen
      (mal wieder !),
      damit wir die Probleme im Zusammenhang mit UDP verstehen. Dieser Artikel ist jedoch
      nur ein Überlick und in keiner Weise eine komplette Übersicht dieses 
      großartigen Stücks Software.
      
      Computersicherheit ein wichtiges Anliegen, nicht nur für den Sysadmin. Das
      unglaubliche Wachstum des Internets macht alles nur schlimmer, d.h. die Gefahr
      eines Einbruchs wird von Tag zu Tag größer. Die Gemeinde freier Software
      versorgt uns gut mit Tools : Portsentry ist nur eins davon. Lassen Sie diese Tools
      nicht beseite. Jedoch sollten Sie sich stets daran erinnern, daß diese Tools 
      nur das Risiko mindern, aber kein 100% sicheres System sind. Ein weiterer
      Grund, die 
      Sicherheits-Tools zu untersuchen.
      
      Und zu guter letzt: bei Psionic wird an einem kommerziellen Produkt gearbeitet 
      "was uns nicht enttäuschen" wird. Warten wir's ab !
      
      In der Zwischenzeit einfach Portsentry 1.1 besorgen, auch hier werden Sie nicht 
      enttäuscht sein. Psionic leistet wirklich gute Arbeit. Nur mal am Rande, 
      Hostsentry ist gleichfalls wert getestet zu werden ... und genutzt zu werden.
      
      Leben wir nicht in einer großartigen Zeit ?
    
      Die folgenden Webseiten sind eine absolute Referenz in Sachen Sicherheit. Darüber
      hinaus verweisen Sie auf weitere Webseiten, die widerum auf weitere
      Webseiten 
      verweisen .... Sie kennen doch die russische Puppe ? Der einzige Nachteil an der 
      Sache ist, das wir nicht lange genug leben, um alles zu lesen  !!!
      
      http://www.linuxsecurity.com 
      
      http://www.sans.org 
      
      http://www.infosyssec.org
      
      http://www.securityfocus.com 
      
      http://www.cs.purdue.edu/coast/hotlist/