|
Informatik Grundkurs 12 - 1999/2000 |
Seminarkurs:
Sicherheit im Linuxnetz

Ausarbeitung von Fabian Bago
Verfasst im Schuljahr 99/00 am Salvatorkolleg Bad Wurzach
Unterschwarzach, den 4.7.2000
1. Sicherheit im Linuxnetz
1.1.1 Dual-Homed Gateway
1.1.2 Bastion Host
1.1.3 Demilitarized Zone
1.2.1 Voraussetzungen
1.2.2 Features von IP Chains
1.2.3 Grundsätzliche Arbeitsweise
1.2.4 Firewallrechner einrichten mit IP Chains mit Hilfe von FCT
1.2.4.1 Konfiguration des Netzwerks
1.2.4.2 Konfiguration der Dienste außerhalb der Firewall
1.2.4.3 Konfiguration der Firewall-Dienste
1.2.4.4 Konfiguration der Filterregeln für die einzelnen Dienste
1.2.4.5 Abschließende Arbeiten
2. Angriffe auf Linuxnetze
2.1 Ablauf eines Angriffs
2.1.1 Einbruch – der einfache Weg
2.2.2 Einbruch – der harte Weg
2.2 Backdoors unter Linux
2.2.1 lokal/remote Backdoors
2.2.2 Passwort Backdoor
2.2.3 inetd Backdoor
2.2.4 r-Dienste
2.2.5 Cronjob als Gehilfe
2.2.6 Backdoor via Virus
2.2.7 Der Wolf im Schafspelz
2.2.8 Tarnung der Werkzeuge
2.2.9 Library Backdoors
2.2.10 Kernel Modifikation
2.2.11 Tarnung der Prozesse
2.2.12 Eine neue Gattund
2.2.13 Trojanische Pferde
2.2.14 pingd Backdoor
2.2.15 WWW Backdoor
A Erste Ausarbeitung: Linux Grundbefehle
A.1 Unix Befehle
A.2 Optionen
A.3 Parameter
A.4 Booten und Anhalten des Systems
A.5 Virtuelle Konsolen
A.6 Anlegen von Benutzern
A.7 Arbeiten mit Verzeichnissen
A.8 Arbeiten mit Dateien
A.8.1 Informationen über Dateien
A.8.2 Inhalt von Dateien
A.8.3 Kopieren, Umbennen und Löschen von Dateien
A.8.4 Wildcards
A.8.5 Suchen und Durchsuchen von Dateien
A.8.6 Symbolische Links
A.8.7 Dateien archivieren und sichern
A.9 Befehle um Informationen über den Systemzustand zu erhalten
A.10 Mounten von Dateisystemen
A.11 Konfiguration von LILO
B Wie werde ich Hacker (von Doobee R. Tzeck)
C Danksagung und Quellenangaben
1. Sicherheit im Linuxnetz
1.1 Sicherheitsstrukturen: Firewall* und Proxy
1.1.1 Dual Homed Gateway
Zwischen dem zu schützenden Netz und dem, von dem man potentielle Angriffe vermutet ist ein sog. Dual Homed Gateway geschaltet (Bild 1). Die Filterung des Netzwerkverkehrs erfolgt auf Anwendungsebene, was intelligente Filteralgorithmen erlaubt und umfangreiche Funktionen der Protokollierung und der Reaktion auf bestimmte Ereignisse bereitstellt. Außerdem erfolgt eine bessere Trennung der Netze dadurch, dass kein direktes Weiterleiten auf der IP-Ebene mehr stattfindet, sondern alles über die höheren Schichten des Netzwerks läuft.
Bild 1
Softwaretechnisch funktioniert das Gateway über darauf implementierte Proxy-Server. Dies sind Dämonen (Netzdienste), die die Anforderungen aus dem eigenen LAN oder dem anderen Netz entgegennehmen, analysieren und entsprechend der Zulässigkeit entweder abblocken oder an den eigentlich angesprochenen Dienst im anderen Netz weiterleiten. Ein weiterer großer Vorteil ist das IP-Masquerading*.
Bei der in Fig. 1 gezeigten Sicherheitsstruktur kommunizieren die Benutzer im LAN nur über die Proxies mit der Außenwelt, eine direkte IP-Verbindung zum Internet oder zu anderen Netzen wird nicht hergestellt. Andersherum ist für den Rest der Welt vom lokalen Netz nur der Gateway zu sehen, die anderen Hosts bleiben – zumindest auf der IP-Ebene – vollstaändig verborgen.
1.1.2 Bastion Host
Bild 2
Ein "gehärteter" Gateway wird auch Bastion Host genannt, d.h. dass auf dieser Station keine Benutzer-Accounts eingerichtet werden, nur Netzdienste eingerichtet werden, die als stabil gegen Angriffe gelten und die für die Kommunikation "innen" und "außen" unbedingt erforderlich sind, alle Möglichkeiten einer ständigen Überwachung dieser Dienste genutzt werden und alle überflüssigen Dämonen nicht nur deaktiviert sondern auch deren Binaries gelöscht werden.
Der GAU in einer Sicherheitsstruktur nach Fig. 1 ist die unbemerkte Aktivierung des IP-Forwarding*, also der Router-Funktion des Gateways auf IP-Ebene. Die Gefahr wird umgangen durch die Installation überwachter Bastion Hosts (Bild 2). Diese Variante kombiniert von Screening Router* und Bastion Host und ist entsprechen aufwendiger: man braucht zwei Geräte, und alle Daten müssen diese komplett durchlaufen. Außerdem verdoppelt sich der Verkehr im lokalen Medium. Dementsprechen gut ist aber auch die zu erzielende Schutzwirkung.
In einer solchen Struktur lassen sich mehrere Bastions mit verschiedenen Verwendungszwecken betreiben: einer enthält nur den WWW-Proxy, einer den News-Proxy, einer den FTP-Proxy und so weiter. Damit teilen sich die einzelnen Hosts die Last; überdies ist die Sicherheitsstruktur besser zu überwachen und zu steuern. Der Screening Router schickt die einzelnen Pakete diensteabhängig an die Bastion Hosts, die die weitere Bearbeitung für das ganze Netz übernehemen.
Die Sicherheit in einer solchen Struktur steht und fällt mit der Integrität der Bastion(s). Ein Angreifer, der sich einmal der Bastion bemächtigt hat, kann sich so alles erlauben. Angriffe auf Bastion Hosts sind sowohl aus dem Internet als auch dem LAN zu erwarten. So kann es vorkommen, dass ein lokaler Host dem Router die IP der Bastion als seine eigene vortäuscht (##IP-Spoofing, siehe zweiter Teil), um ohne Proxy die Verbindung zu einem außenliegenden Netz aufzunehmen. Dieser Gefahr wird durch ein Bastion-eigenes Netz begegnet (Bild 3). Für das Bastions-eigene Netz muß der Router mindestens über drei Schnittstellen verfügen. Außerdem durchläuft der Datenverkehr nun den Router komplett zweimal, was dessen Bandbreite halbiert. Deshalb ist diese Struktur in der Praxis eher selten anzutreffen.
Bild 3
1.1.3 Demilitarized Zone
Bei dieser aufwendigen Struktur, auch als überwachtes Grenznetz bezeichnet, liegt der Bastion Host in einem eigenen lokalen Netz, das er sich nur noch mit zwei Routern und eventuellen weiteren Bastionen teilt (Bild 4). Dies ist die Kombination aller Vorteile der bisher vorgestellten Strukturen, fordert aber auch ihren Tribut in Form von Gerätetechnik, Software und Wartungsaufwand. Hier laufen alle Verbindungen zwischen internem und externem Netz über die Proxies auf dem Bastion Host und werden dort kontrolliert.
Der äußere Router lenkt alle von außen kommenden Daten für das LAN auf die Bastion um, wobei er Pakete mit vorgetäuschten IP-Adressen des Grenznetzes beiderseits verwirft. Der innere Router fängt alle anderen unerwünschten Pakete ab und gewährleistet, dass die Hosts im inneren LAN nur über die Bastion mit dem fremdem Netz Kommunizieren.
Auch in dieser Struktur sind die Bastion Hosts besonders zu schützen, doch die Chancen eines erfolgreichen Angreifers sind nicht so gut wie in der vorher genannten Strukturen. So besteht auf der Bastion keine Gelegenheit zum Abhören von LAN-internen Datenströmen, da diese durch den internen Router ausgefiltert werden.
Bild 4
Anmerkungen
*Firewall:
Unter diesem Begriff werden eine Reihe von Konzepten und Einrichtungen zusammengefasst, die dazu dienen, ein Netz vor Angriffen aus einem anderen Netz zu schützen. Häufigster Anwendugsfall ist die Abschirmung eines lokalen Netzes vor dem Internet. Aber auch beliebige andere Netze können durch Firewalls voneinander abgetrennt werden, bis hin zu einzelnen, besonders sicherheitskritischen Hosts, die einen solchen Schutz erhalten. Firewalls gibt es in unterschiedlichen Größen, was die Hard- und Softwareausstattung betrifft. Für kommerzielle Lösungen sind regelmäßig fünfstellige Summen zu zahlen
*IP-Masquerading:
Der Proxy gibt als Absender jeweils seine eigene IP-Adresse an und schirmt somit das dahinterliegende Netz vollständig ab. Unter Linux wird diese Funktion inzwischen komplett von der Kernel realisiert.
*IP-Forwarding
Die Funktion ist in fast allen Kernelversionen schon enthalten und sollte aus Sicherheitsgründen immer deaktiviert werden, außer wenn die Station wirklich als Router eingesetzt wird. Sie beinhaltet die Fähigkeit, IP-Pakete, die auf dem einen Interface empfangen wurden, an ein anderes (meist) unkontrolliert weiterzugeben.
*Screening Router (Paketfilter)
Eine Einrichtung, die nur bestimmte Pakete weiterbefördert und andere zurückhält. Dazu ist in dieser routenden Einrichtung ein Algorithmus implementiert, der die ankommenden Pakete nach bestimmten Kriterien filtert. Solche Kriterien sind die IP-Protollnummer, die Quellen- oder Ziel-IP-Adresse und auch die TCP-Portnummer. Damit es möglich, bestimmte Protokollarten und Dienste ganz vom weiterleiten auszuschließen oder gezielt zu erlauben.
1.2 Firewall mit IP Chains
1.2.1 Voraussetzungen
Als Hardware genügt schon eine Linux-Maschine mit 486er Prozessor und 16 MB RAM. Außerdem benötigt man zwei Netzwerkinterfaces. Zum LAN hin ist dies eine Ethernetkarte, zum Internet entweder der ISDN-Adapter/Modem bzw. eine zweite Ethernetkarte sofern im Grenznetz oder DMZ gearbeitet wird.
Als Kernelversion benötigt IP Chains eine Version 2.2.x. Dieser erfüllt schon die Funktionen, die für IP-Routing, Packet Filtering/Accounting und Masquerading benötigt werden. Die Netzwerkoptionen lassen sich einfach in der X-Oberfläche in der Rubrik Gerneral setup und dann Networking support. Unter Networking options werden die folgenden Optionen eingestellt
Die Einstellungen
können so belassen oder je nach Wunsch verändert werden.
bleibt ausgeschaltet.
Die speziellen IP-Firewall-Optionen werden so wie in Bild 1 eingestellt

Bild 1
Die restlichen Networking Options sind schon bei vorher bei der Netzwerkkonfiguration eingestellt worden.
Sobald alle Konfigurationsschritte vollzogen worden sind, wird ein Kernelübersetzungslauf mit anschließender LILO-Konfiguration gestartet und das System neu gestartet. Danach ist es möglich eine Firewall einzurichten.
1.2.2 Features von IP Chains
Mit ipchains-Aufrufen wird die Firewall-Funktionalität eines Linux-Kernels gesteuert. Jeder Aufruf teilt dem Kernel eine Rule mit, wie mit einer bestimmten Sorte von IP-Paketen zu verfahren ist.
Die Regeln werden intern in speziellen Tabellen des Kernels, den Ketten (chains) untergebracht. Drei dieser Ketten sind fest definiert (input, forward und output), beliebig viele können vom Systemadministrator hinzugefügt werden. Deshalb ist der Aufbau sehr flexibel, bis hin zur Möglichkeit hierarchischer Strukturen.
1.2.3 Grundsätzliche Arbeitsweise
Alle IP-Pakete die am Interface der Firewall eintreffen durchlaufen eine oder mehrere solcher Ketten (Bild 1). Dabei wird es der Reihe nach gegen alle Regeln der Kette geprüft, bis eione entsprechende Regel (policy) gefunden wird. Die zutreffende Regel enthält eine auszuführende Aktion, die in einer der Standartaktion ACCEPT, REJECT besteht oder auch in der Weitergabe an eine benutzerdefinierte Kette. Wird in einer Standartkette keine zutreffende Regel gefunden, tritt die Standartregel (default policy) der jeweiligen Tabelle in Kraft. Benutzerdefinierte Ketten kennen keine solche default policy, bei ihnen erfolgt nach erfolgloser Prüfung ein Rücksprung in die aufrufende Kette, wo mit der nächsten Regel nach der aufrufenden weitergemacht wird.
Das Abarbeiten jeder Kette von oben nach unten bedingt, dass spezielle Regeln stets vor allgemeineren stehen müssen, denn wenn die allgemeine schon zutrifft wird die spezielle nicht mehr erreicht.

Bild 2
1.2.4 Firewall einrichten mit FCT
IP Chains lässt sich nun sehr kompliziert mit ipchains-Kommandoaufrufen steuern (allgemeiner Syntax: ipchains –A <chain> [<predicate>, ...] –j <target> [<port>] ), sehr viel einfacher geht es jedoch mit FCT (Firewall Configuration Tool).
FCT wird komplett über eine Web-Oberfläche verwaltet. Zu diesem Zweck muss auf dem Firewall-Host ein Apache-Dämon vorhanden sein, der mit CGI-Scripten umgehen kann. Das
Beispielnetzwerk ist in Bild 2 dargestellt.

Bild 2
1.2.4.1 Konfiguration des Netzwerks
Als erstes wird die Netzstruktur in die Eingabemaske Network übertragen
|
Hostname: |
flammix |
|
|
Standort: |
Serverraum |
|
|
Domainname: |
paradix.own |
|
|
ippp0: |
dynamisch zugewiesen |
|
|
eth0: |
192.168.10.99/255.255.255.0 |
|
|
eth1: |
192.168.99.10/255.255.255.0 |
|
|
DMZ-Hosts: |
www |
|
|
HTTP: |
www |
auch als Proxy |
|
Admin |
evaix |
Zur Verwaltung des Firewallrechners von evaix |
Die Masquerading-Funktion ist für das Internal Network und das Perimeter Network anzukreuzen, da aus beiden Netzen Pakete ins Internet geschickt werden, die über keine offizielle Absenderadresse verfügen. Die Maskierung erfolgt mit der jeweils vom Provider dynamisch zugewiesenen IP-Adresse von ippp0.
Nachdem alle Werte in die Eingabemaske eingetragen sind, wird das Ergebnis mit dem Button Define zum Server geschickt. Zurück kommt das nachfolgende Listing:
If [ -z `$CONFIG_NET´]; then
CONFIG_NET=defined
ip_cmd=´ipchains´
DOMAIN=´paradix.own´
NETMASK=´255.255.255.0´
FW=´flammix´
OUT_DEV0=´ippp0´
IN_DEV0=´eth0´
IN_DEV1=´eth1´
PERIMETER=´www´
DNS=´adamix´
HTTP=´www´
ADMIN=´evaix´
fi
flammix
1.2.4.2 Konfiguration der Firewall-Dienste
Als nächstes wird die Datei /var/adm/FCT-1.1/etc/fw.cfg bearbeitet, die Angaben über Dienste auf dem Firewall-Rechner selbst enthält. Dazu wird die Eingabemaske Firewall in den Browser geladen und die entsprechenden Dienste aktiviert.
Auf einer Firewall sollten so wenig Dienste wie möglich Angeboten werden um den Firewall-Host so sicher wie möglich zu machen (siehe 1.2.2). Notwendig sind in diesem Fall nur
-die auth-Funktion zur Benutzerauthentisierung (all directions)
-die DNS-Client-Funktion, die der Firewall-Rechner zur Auflösung von Namen aus dem Internet und dem internen Netz braucht (outgoing)
-ping und traceroute (beide outgoing)
-die Secure Shell (all directions)
Als Ergebnis erhält man wieder ein Listing, das etwa so aussehen sollte:
deny host=´Hacker.Net´
fw_service=auth; fw_svc_def=´$internal $ANY´; fw_svc_dir=IN_OUT
fw_service=dns_client; fw_svc_def=´$internal $ANY´; fw_svc_dir=OUT
fw_service=http; fw_svc_def=´$internal $ANY´; fw_svc_dir=NONE
fw_service=ping; fw_svc_def=´$internal $ANY´; fw_svc_dir=OUT
fw_service=pop3; fw_svc_def=´$internal $ANY´; fw_svc_dir=NONE
fw_service=smtp; fw_svc_def=´$internal $ANY´; fw_svc_dir=NONE
fw_service=ssh; fw_svc_def=´$ANY´; fw_svc_dir=OUT
fw_service=ssh; fw_svc_def=´$internal $ADMIN´; fw_svc_dir=IN_OUT
fw_service=telnet; fw_svc_def=´$internal $ANY´; fw_svc_dir=NONE
fw_service=traceroute; fw_svc_def=´$internal $ANY´; fw_svc_dir=OUT
fw_service=z10_ftp_passive; fw_svc_def=´$internal $ANY´; fw_svc_dir=NONE
fw_service=z11_ftp_active; fw_svc_def=´$internal $ANY´; fw_svc_dir=NONE
1.2.4.3 Konfiguration von Diensten außerhalb der Firewall
Nun geht es um die Verfügbarkeit von Diensten im Netz die von anderen Hosts angeboten werden. Dies wird durch die Maske Internet Service Configuration beeinflußt, erreichbar über den Button Configure. Ein Kreuz bei dnsclient verhindert den direkten Zugriff aus beiden internen Netzen durch Maskierung. Nachdem der Button Define gedrückt wurde, wird eine Konfigurationsdatei geschrieben deren Inhalt so aussieht:
if [ -z ´$CONFIG_SERVICES´ ]; then
CONFIG_SERVICES=defined
archie=´BLOCKED´
auth=´FILTERED´
dns_client=´FILTERED´; imq_dns_client=´true´; pmq_dns_client=´true´
dns_server=´BLOCKED´
finger=´BLOCKED´
gopher=´BLOCKED´
http=´FILTERED´; pmq_http=´true´
irc_client=´BLOCKED´
irc_server=´BLOCKED´
lpr=´BLOCKED´
nntp=´BLOCKED´
ntp_client=´BLOCKED´
ntp_server=´BLOCKED´
ping=´FILTERED´
pop3=´BLOCKED´
rexec=´BLOCKED´
rip_client=´BLOCKED´
rip_server=´BLOCKED´
rlogin=´BLOCKED´
rsh=´BLOCKED´
smtp=´BLOCKED´
snmp=´BLOCKED´
snmp_client=´BLOCKED´
snmp_server=´BLOCKED´
squid=´FILTERED´
ssh=´FILTERED´
ssl=´FILTERED´
syslog_client=´BLOCKED´
syslog_server=´BLOCKED´
talk_cliennt=´BLOCKED´
talk_server=´BLOCKED´
telnet=´BLOCKED´
tftp=´BLOCKED´
traceroute=`FILTERED´
uucp=´BLOCKED´
wais=´BLOCKED´
whois=´BLOCKED´
z10_ftp_passive=´BLOCKED´
z11_ftp_active=´BLOCKED´
rpc=´BLOCKED´
fi
Um weitere, nicht vordefinierte Dienste in die Liste aufzunehemen, können sie diese in der Maske Service Definition (erreichbar über Definition) einrichten.
1.2.4.4 Konfiguration der Filterregeln für die einzelnen Dienste
In der Maske Service Screening (Button Screening) werden die eigentlichen Filtervorschriften für die einzelnen Pakete festgelegt. Man muss sich nur um Dienste kümmern die auch genutzt werden da alle andere abgeblockt werden. In der Maske ist für jeden einzelnen umkonfigurierten Dienst der Define-Button zu betätigen, sonst gehen Änderungen mit dem Aufruf der Maske für den nächsten Dienst wieder verloren.
In Bild 3 wird für den Dienst http bestimmt, dass nur Zugriffe aus dem lokalen Netz auf den eigenen Webserver im Grenznetz und von diesem auf einen beliebigen Server im Internet mölich sind.
Bild 3
1.2.4.5 Abschließende Arbeiten
Bisher wurden durch das ausfüllen der Masken nur die internen Konfigurationsvariablen von FCT mit Werten belegt. Um auf der Basis der Werte richtige ipchains-Aufrufe zu erzeugen, sind zwei abschließende Schritte erforderlich.
Für alle geänderten Dienste werden mit Hilfe der Maske Create the IP-filtering Rules, erreichbar über den Button Rules, Dateien mit Regelsätzen erzeugt. Dazu ist jeder einzelne dieser Dienste (dns_client, http, ping, ssh) in der rechts stehenden Auswahlliste einmal anzuklicken.
Für alle Dienste, die auf dem Firewall-Host selbst laufen, genügt hingegen ein einmaliges Anklicken der Auswahl Firewall.
1.1.4.6 Starten und Stoppen der Firewall
Die Firewall-Funktionalität des Kernels wird mit dem Kommando
# /var/adm/FCT-1.1/firewall –s start
…
#
gestartet und durch
# /var/adm/FCT-1.1/firewall stop
…
#
gestoppt.
2. Angriffe auf Linuxnetze
2.1 Ablauf eines Angriffs
Der Angriff und das Eindringen in das System ist ein sehr schwieriger und anspruchsvoller Vorgang. Dafür gibt es keine Patentlösung, da jedes System andere Sicherheitslücken hat, die es zu finden und dann auszunutzen gilt. Im folgenden werden die wichtigsten Stufen zusammengefasst
2.1.1 Der Einbruch – der einfache Weg
Bei einem Einbruch gelingt es einem Angreifer meist, SuperUser-Rechte auf dem jeweiligen System zu erhalten. Mögliche Methoden sind zum Beispiel:
Bei der zweiten Methode erlangt der Angreifer erst nur User-Rechte, was – wenn es dabei bleibt – bei weitem nicht so folgenreich wäre wie ein SuperUser-Remote Angriff. Trotzdem ist es meist nur eine Frage der Zeit, einen lokalen Exploit zu finden, der binnen Sekunden dann auch den begehrten SuperUser-Rechte gibt. Nachdem ein Angreifer diese Rechte hat, kann er die verschiedensten Backdoors installieren. Vorher wird er sehr wahrscheinlich noch die Logfiles modifizieren, um seine Spuren zu verwischen. Sollte er jedoch feststellen, dass die Logfiles zusätzlich auf einen anderen Rechner gesichert werden (was heute immer häufiger der Fall ist), ist es durchaus möglich, dass er diesen Rechner ebenfalls anzugreifen versucht. Das Reinigen der Message Logfiles könnte zum Beispiel so aussehen:
IP-Adresse des Angreifers :A.B.C.D.
grep –v A.B.C.D. messages >messages.new
mv messages.new messages
kill –HUP ‘pidof syslogd’
Somit ist jeder Eintrag, der auf die Herkunft des Angreifers schließen könnte, gelöscht. natürlich gibt es weitere Möglichkeiten, Logfiles zu verwalten/sichern. Die hier dargestellte Methode war die mit Abstand simpelste. Nachdem nun so alle relevanten Logfiles bearbeitet sind, kommt der unter Umständen trickreichste Teil des Einbruchs: Das installieren der Backdoor.
2.1.2 Der Einbruch – der harte Weg
Das oben beschriebene Szenario trifft auf alle Rechner zu, die direkt mit dem Internet verbunden sind und dort auch Dienste anbieten. Besitzt das System jedoch einen Firewall, so gestaltet sich der Angriff meist anders. Hier reicht es nicht einfach einen unsicheren Dienst auf einem Web- oder Mailserver zu finden, da diese meist in der DMZ (demilitarisierte Zone) untergebracht sind, und so nicht direkt Zugang zum internen Netz gewähren. Häufig wird jedoch aus verschiedenen Gründen ein Webserver (oder andere Server) nicht in der DMZ, sondern im internen Netz postiert, womit ein Einbruch in diesen Server auch das interne Netz gefährdet. Eine solche Firewall-Architektur sollte somit möglichst vermieden werden. Grundsätzlich ist zum Firewall-Cracking wesentlich mehr Information über die Struktur eines Netzes notwendig, weshalb diese Art des Cracking auch wesentlich länger dauert und schwieriger ist. Anfangs wird ein Angreifer meist versuchen, möglichst viele Informationen zu sammeln, wobei er folgende Methoden benutzen kann:
Neben diesen sehr allgemeinen Nachforschungen können in einem zweiten Schritt diverse Tools benutzt werden, um das Netz zu inspizieren. Meist weiß der Angreifer dann schon, welches Netz, oder welche IP-Adresse die Organisation benutzt.
Nachdem er ein grobes Bild über die Architektur des Systems hat, können z.B. folgende Fälle eintreten:
Es gibt also Zahlreich Möglichkeiten, selbst in geschützte Systeme einzudringen. Speziell bei Firewallsystemen sind Backdoors sehr gefährlich. Sie werden dort nämlich so gut wie immer auf internen Rechnern eingerichtet.
Diese Rechner werden jedoch meist nicht so stark gewartet, weshalb sie dort nicht leicht zu entdecken sind.
Anmerkungen
*Exploit:
Anleitung zum Ausnutzen eines Sicherheitslochs
*Wardialer:
Programm das alle Telefonnummern einer Organisation anwählt, um z. B. eine Modemleitung zu finden
2.2 Backdoors
Eines der größten Probleme bei Einbrüchen stellt die Installation sogenannter Backdoors dar. Fast immer wird nach erfolgreichen Attacken eine entsprechende Einrichtung installiert. Ihr Ziel besteht darin, dem Angreifer immer wieder unentdeckten Zugriff auf das System zu ermöglichen. Im folgenden Abschnitt werden nun die gebräuchlichsten Backdoors vorgestellt.
2.2.1 Remote/lokale Backdoors
Grundsätzlich unterscheidet man bei Backdoors zwei Arten: lokale und remote Backdoors. Lokale Backdoors sind dazu gedacht, ausgehend von einem User Account SuperUser-Rechte zu erlangen. Auf der anderen Seite existieren remote Backdoors, welche Zugang auch ohne existierenden User Account ermöglichen.Es ist offensichtlich, dass remote Backdoors wesentlich flexibler und mächtiger sind, da sie nicht auf existierende Accounts und ähnliches aufbauen.
2.2.2 Die Passwort Backdoor (lokal/remote)
Die wohl mit Abstand einfachste Backdoor besteht in dem Hinzufügen eines User- oder SuperUser Accounts in die Datei /etc/passwd bzw. /etc/shadow. Jeder Systemadministrator bemerkt so etwas meist recht schnell. Sollte es jedoch ein Rechner mit sehr vielen Accounts sein, so kann auch diese Backdoor recht effektiv sein. Natürlich könnte der Angreifer auch die Passwortdateien stehlen und mit einem Crack-Programm einige User Acounts knacken und so seinen weiteren Zugriff auf das System sichern (oft bei CGI-Exploits). Die Idee der Passwortbackdoor ist grundsätzlich nicht an ein bestimmtes System gebunden, da so gut wie alle Betriebssysteme Benutzer über Passwörter identifizieren.
2.2.3Die inted-Backdoor (remote)
Diese Backdoor benutzt den Internet Super Server (inetd), um den Zugriff auf das System zu sichern. Durch modifikation der Datei /etc/inted.conf kann man sehr leicht eine entsprechende Backdoor installieren. Im Folgenden sind zwei gewöhnliche Einträge der Datei inted.conf abgedruckt:
ftp stream tcp nowait root \
/user/sbin/tcp in.ftpd
telnet stream tcp
nowait root \/usr/sbin/tcpd in.telnetd
In diesem Fall handelt es sich um ein durch den TCP Wrapper (tcpd) geschütztes System, das jedoch bei SuperUser-Rechten leicht deaktiviert werden kann. In der ftp-Zeile ist zu erkennen, dass es sich um den Dienst ftp handelt. Die Portnummer für ftp ist dabei in /etc/services festgelegt. Interessant für die Backdoor ist doch das Wort root, welches inted anzeigt, mit welcher UID der jeweilige Daemon ausgeführt werden soll. Danach folgen die Programme, die den entsprechenden Daemon starten. Eine Möglichkeit, hier eine Backdoor anzulegen, wäre, sich eine root-Shell auf einem noch nicht benutzten Port zu verschaffen. Dazu wird folgender Eintrag in /etc/inted.conf eingefügt:
daytime stream tcp nowait /bin/sh sh –i
Immer wenn der Angreifer versucht, sich via telnet mit dem Daytimeport des entsprechenden Rechners zu verbinden, erhält er sofort eine Root-Shell. Diese Backdoor kann auch in einer anderen Variante vorkommen, indem zusätzlich die Datei /etc/services modifiziert wird, die – wie schon gesagt – die Ports der einzelnen Dienste/Port anlegen und mit diesem dann die Root-Shell in /etc/inetd.conf festlegen. Die inetd-Backdoors sind bei einem flüchtigen Check der Systemdateien leichter zu übersehen als mit Modifikationen in der Passwort-Datei. Führt man jedoch einen Portscan auf dem Rechner durch, so fällt die Root-Shell sofort auf.
2.2.4 r-Dienste als Backdoors (remote)
Die r-Dienste (rsh, rlogin, usw.) sind schon recht alt. Viele Administratoren werden wohl sofort ein ungutes Gefühl bekommen, wenn sie hören, dass einige Sites diese Dienste im Internet anbieten. Backdoor lassen sich bei Vorhandensein dieser Dienste extrem einfach installieren. Es reicht schon, in eine .rhosts Datei die IP-Adresse des Angreifer-Hostes einzutragen; so hat dieser immer wieder ohne Probleme Zugriff. Typisch ist diese Vorgehensweise vor allem bei Spoofing-Atacken*, bei denen zuerst ein trusted Host durch IP_spoofing (tcp-sequence-generating) vorgetäuscht wird und anschließend ein Eintrag in .rhosts entsprechend eingetragen wird. Aber auch andere r-Dienste können so genutzt werden. Für öffentliches Netz (Internet) sind diese Dienste zu unsicher, da sie sehr anfällig für Spoofing-Atacken sind. Sowohl die r-Dienste als auch die inetd-Backdoors faßt man in der Klasse der Network Traffic Backdoors zusammen.
2.2.5 Cronjob als Gehilfe (lokal/remote)
Gerade bei inetd- / Passwort- /r-Dienst-Backdoors (aber auch bei vielen anderen) ist es für einen Angreifer interessant, dass seine Backdoor – falls sie entdeckt wird – wieder aktiviert wird. Da er beim Verlust der Backdoors keinen Zugriff mehr auf das System hat, benötigt er eine Art Sicherheit. Hierzu kann er den cron-Daemon benutzen, der seine Backdoor zu einer regelmäßigen Zeit wieder installiert. Neben dieser Anwendung des cron-Daemons gibt es noch eine, die ähnlich ist, aber wesentlich häufiger wird. Bei diesem zweiten Verfahren wird die Backdoor durch cron erst zu einer gewissen Zeit aktiviert, so dass sie während dieser Zeit nicht aktiv ist und so auch nicht auffallen kann. Dazu könnte der Angreifer zum Beispiel ein Script schreiben, welches zu einer gewissen Tageszeit einen SuperUser-Eintrag in die Passwortdatei schreibt oder /etc/intetd.conf modifiziert. Aus den oben genannten Gründen ist es sehr zu empfehlen, immer auch die Cron-Jobs zu überbrüfen.
2.2.6 Backdoor via Virus (lokal/remote)
Eine weitere Backdoor besteht im Einschleusen eines Virus, der zu gewissen Zeiten durch bestimmte Operationen wieder Zugriff auf das System gibt. Nachdem man lange Zeit glaubte, Viren seien Microsoft Probleme, mit denen Linux/Unix nichts zu tun hätte (wenn man von Würmern absieht), muss man nun feststellen, dass fies nicht mehr ganz zutrifft. Seit geraumer Zeit findet man immer mehr dieser sogenannten "Linux/Unix Viren". Betrachtet man sich die Funktion dieser Programme genauer, so stellt man fest, dass hier das Wort Virus nicht ganz zutrifft. Die Programme reproduzieren sich zwar, können aber nicht ohne weiteres Dateiattribute überspringen. Konkret heißt das, dass ein User Namens Linus denVirus ausführt, dieser aber in diesem Moment nur Dateien infizieren kann, die der User Linus auch beschreiben darf, weshalb ein ausbreiten auf andere nicht-Linus Dateien unmöglich ist. Führt aber zum Beispiel root eine infizierte Linus-Datei aus, so ist es um das System geschehen, denn nun kann sich der Virus nachbelieben über alle Dateien verbreiten.
Die meisten Linux/Unix-Viren arbeiten ungefähr so. Schlecht ist es natürlich, wenn root schon anfangs die infizierte Datei ausführt, dann ist kein Schutz mehr über Dateiattribute gegeben. Eine andere Alternative liegt in Java-Viren, die ebenfalls recht simpel, aber in Zukunft rech effektiv sein könnten, da sie plattform-unabhängig sind. Diese Viren beschränken sich allerdings auf Java-Ampplikationen und stellen Gefahr für die WWW-Benutzung dar, da diese dort ablaufenden Applets innerhalb der Sandbox noch keine Gefahr darstellen (vorausgesetzt, die Sandbox ist dich!). Trotzdem ist es möglich Mittels Java eine mächtige Backdoor zu installieren, die nicht so leicht zu entdecken ist.
2.2.7 Der Wolf im Schafspelz (lokal/remote)
Besonders trickreich sind Backdoors, die sich in täglich benutzten Programmen des jeweiligen Systems verbergen. Gerade Systeme wie Linux, deren Quellcodes frei verfügbar sind, eignen sich hierfür am besten (man kann aber davon ausgehen, dass in der Szene auch die Quellen komerzieller Produkte die Runde machen. Insbesondere von NT und Solaris ist dies im Untergrund laut Cracker-Aussagen hinlänglich bekannt). In den folgenden Abschnitten soll es um die wichtigsten Arten dieser Backdoor-Gattung gehen, die man auch unter dem Begriff trojanische Pferde zusammenfasst.
Der Angreifer hat – wenn er die entsprechende Quelle besitzt – freie Hand bei der Wahl des Programms, in welches er die Backdoor einschleusen will. Interessant sind vor allem Programme wie login, telnetd, sshd, usw. . Man kann z.B. login so modifizieren, dass es einem Angreifer immer Zugriff gibt, da es für die Anmeldung eines Benutzers zuständig ist. Es gibt unentlichviele Möglichkeiten, solche Backdoors zu benutzen, siealle aufzuzählen währe sinnlos und auch unmöglich. Ein effektiver Schutz gegen solche Attacken bieten Tools wie Tripwire, die Checksummen über die Dateien berechnen und so deren integrität garantieren. Hier gibt es aber auch weitere Möglichkeiten wie Kernel-Modifikationen, diesen Schutz zu umgehen. Gerade diese Möglichkeiten, das gesamte System (sprich den Kernel) zu ändern, bieten dem Angreifer unglaubliche Möglichkeiten, die fast nicht zu entdecken sind.
Anmerkung zu Tripwire/MD5: Für Checksummen wird häufiger der MD5-Hash benutzt, bei dem es jedoch zu Kollisionen kommen kann. Ein Ausnutzen dieser Tatsache gestaltet sich in der Praxis jedoch sehr schwierig, weshalb dieser Weg nur selten gewählt wird.
2.2.8 Tarnung der Werkzeuge
Der Angreifer wird wahrscheinlich zahlreiche Programme (wie Sniffer*, Exploits, usw.),die er später nochmals benötigt, auf dem attackierten System ablegen. Aus diesem Grund war es früher für einen häufig Administrator sehr einfach zu erkennen, ob sein System angegriffen wurde. Fand er entsprechende Programme auf seinem Rechner, so konnte er von einem Angriff ausgehen. Leider haben sich sehr schnell Verfahren entwickelt, die dies verhinderten. Angreifern ist es gelungen, Dateisystembefehle wie ls, fsck, df, du, usw. so modifizieren, dass diese die Cracker-Tools nicht mehr anzeigten. Die geschickteste Art solche Programme zu verstecken besteht darin, einige Sektoren der Festplatte so zu verändern, dass der Administrator diese als defekt einstuft, wohingegen der Cracker mit speziellen Tools dort seine Programme unterbringen kann.
2.2.9 Library Backdoors (lokal/remote)
Nahezu jedes Unix System ist auf sogenannte Shared Libraries angewiesen, die gewisse Funktionen bereitstellen (unter Windows sind die Dynamic Link Libraries (DLL) in etwa mit Shared Libraries zu vergleichen). Für einen Angreifer ist es meist recht einfach, diese Dateien nach seinen Wünschen zu modifizieren. Es wurden häufig Fälle beobachtet, in denen es einem Angreifer gelang, die Shared Libraries so zu modifizieren, dass die crypt-Funktion eine Shell erzeugte. Diese Funktion wird zum Beispiel von login ausgeführt (dem Programm, dass für die Anmeldung bei jedem Unix/Linux System zuständig ist). Dadurch war kein Passwort mehr notwendig. Sollte der Administrator die Datei login mit Hilfe eines Checksum-Tools überwacht haben, so konnte ihm die Veränderung nicht auffallen, da diese nur die Shared Library betraf.
In den meisten Fällen jedoch haben Administratoren Checksummen für nahezu alle Dateien eines Systems erstellt, wodurch eine Modifikation einer Shared Library sofort auffällt. Um dieses Problem zu umgehen, modifizierten die Angreifer die Shared Libraries so, dass die Funktion open nicht mehr korrekt arbeitete. Da die Checksum-Tools auf dieser Funktion aufbauen, war es für die Angreifer ein Leichtes, den Tools durch die veränderung der open-Funktion eine heile Welt vorzugaukeln. Die einzige Möglichkeit, sich gegen solche Angriffe zu schützen, besteht darin, entsprechende Programme die zur Systemsicherheit beitragen, statisch zu linken, so dass diese nicht auf eventuell veränderte Shared Libraries zurückgreifen müssen.
2.2.10 Kernel Modifikation
Die raffiniertesten trojanischen Pferde sind diejenigen, die den Kernel modifizieren. Gerade unter Systemen wie Linux (FreeBSD, OpenBSD, usw.) ist es ein leichtes, solche Backdoors einzurichten. Der Grund dafür liegt in der Tatsache begründet, dass dort die Kernelquellen frei verfügbar sind. Eine andere sehr einfache Möglichkeit besteht darin, mit Hilfe von Kernelmodulen (LKMs) den Kernel zu modifizieren. Diese Modifikationen sind vor allem im Fall eines komplett ausgetauschten Kernels so gut wie nicht zu erkennen. Denn alle auf dem Rechner installierten Tools basieren auf Systemcalls, die durch entsprechende Modifikationen ganz normale Programme der Anwendungsschicht, wie z. B. ps, ls, free, usw. völlig andere Ergebnisse ausgeben lassen. Selbst Tools wie Tripwire sind dagegen machtlos, da praktisch das Betriebssystem ausgetauscht wurde. Die einzige Chance, solche Backdoors zu entdecken, besteht in einer kompletten, nicht mit dem Netz verbundenen Kopie des Betriebssystems (Kernel) auf einem anderen Rechner. Die praktische Umsetzung eines solchen Angriffs zeigt Listing 1,welche einen bestimmten Systemcall "umbiegt".
Listing 1: hack_module.c – Module zum Manipulieren von Systemcalls
/*gcc –c module1.c*/
/*Mark Vogelsberger*/
#include <linux/string.h>
#include <linux/version.h>
#include <sys/syscall.h>
static char kernel_version[] = UTS_RELEASE;
extern void *sys_call_table[];
void *orginal_mkdir;
extern int hacked_mkdir() { return 0; }
int init_module(void) {
orginal_mkdir = sys_call_table[SYS_mkdir];
sys_call_table[SYS_mkdir] = hacked_mkdir;
return 0;
}
void cleanup_module(void) {
sys_call_table[SYS_mkdir] = orginal_mkdir;
}
Nachdem Sie dieses Module kompiliert haben und es via insmod module1.o eingebunden haben, werden alle Versuche, ein Verzeichnis mit mkdir zu erzeugen, fehlschlagen. Doch das liegt nicht etwa an dem Programm mkdir, sondern an dem veränderten Systemcall, so dass alle Programme, die diesen Systembefehl benutzen, nicht mehr korrekt arbeiten. Anhand dieses sehr primitiven Beispiels wird einem schnell klar, was ein Kernel-Hacker hier alles anstellen könnte. Wenn sie das oben genannte Modul mit rmmod module1 entfernen, läuft ihr System wieder einwandfrei. Kernelmodule sind noch recht leicht zu entdecken, solange sie nicht getarnt sind, was relativ einfach möglich ist, jedoch wieder stark vom jeweiligen System abhängig ist. Bedenken sie, dass ich ihnen nur ein Beispiel für ein kleines Kernelmodul gab, stellen sie sich vor, wie ein System reagieren könnte, wenn der gesammte Kernel ausgetauscht werden könnte. In diesem Zusammenhang ist noch zu erwähnen, dass auch Fälle bekannt sind, in denen es Angreifern gelang, Backdoors in Bootblocks zu installieren, die gerade unter Unix sehr schwer zu entdecken sind.
2.2.11 Tarnung der Prozesse
Wie schon erwähnt, werden häufig nach einem Einbruch sogenannte Sniffer installiert, die den Netzwerkverkehr analysieren und nach bestimmten informationen durchsuchen (z.B. Passwörter). Die Sniffer schalten dabei die entsprechende Ethernetkarte in den sogenannten promicous mode, womit das Interface alle über das LAN laufende Pakete annimmt. Weniger häufig, aber trotzdem immer wieder zu finden, sind Passwortcracker, die vom Angreifer auf den gecrackten Rechner installiert werden. Interessant kann das nicht nur für das Cracken der lokalen Passwortdatei sein, sondern auch für Passwortdateien anderer Rechner. Normalerweise sind diese Programme mit Hilfe von ps sehr leicht zu erkennen. Schon lange haben jedoch Angreifer auch dieses Problem gelöst. Eine der einfachsten Methoden ist es, dem Snifferprogramm keinen auffälligen Namen wie sniffer zu geben, sondern ihn mit einem Namen belegen, der weniger signifikant ist. Neben dieser eher trivalen Lösung hat der Angreifer auch die Möglichkeit, die argv[ ] Variable zu ändern. Modifikationen sind aber auch am Programm ps selbst (oder einer Shared Library) möglich, so dass dieses das eigene Snifferprogramm nicht mehr anzeigt. Möchte der Angreifer möglichst sicher gehen, so könnte er auch auf eine entsprechende Kernel-Modifikation zurückgreifen.
2.2.12 Eine neue Gattung
Einige der oben genannten und teilweise sehr alten Backdoors haben unter Umständen bei Firewall-Systemen (die heute Standard sein sollten) nur geringe Bedeutung (z.B. inetd-Backdoors). Deshalb sind in diesem Bereich spezielle Backdoors entwickelt, die jede Lücke (aus dem Design resultierend) in Firewall-Systemen ausnutzen. Natürlich kann kein Angreifer davon ausgehen, dass er bei jedem System die gleichen Verfahren nutzen kann, denn es gibt sicher auch Systeme, wofür es noch keine ad hoc Lösung gibt und sich der Angreifer selbst etwas ausdenken muss. Aber da die meisten Firmen und Organisationen nicht all ihre Kraft in Firewallkonstruktionen stecken, gibt es meist schon eine Lösung, die im entsprechenden Fall anwendbar ist. Ich werde hier einige neuere, interessantere Vorschläge diskutieren, die mit Sicherheit schon häufig erfolgreich angewendet wurden.
2.2.13 Trojanische Pferde
Eine der einfachsten (und ältesten) Möglichkeiten, in einem Firewallsystem eine Backdoor zu installieren, liegt im Einschleusen eines trojanische Pferdes. Man könnte zum Beispiel gespoofte E-Mails anwenden, oder das WWW geschickt benutzen (ActiveX; siehe dazu auch den Kasten zu Windows NT), um solche Programme in ein System einzuschleusen. Nicht zuletzt kann in Sharewareprogrammen Ungeahntes vorhanden sein ("T-Online Hack"). Es gibt zwar schon zahlreiche Firewall-Lösungen, die auch den Inhalt von E-Mails usw. inspizieren, doch kommt es hierbei zu erheblichen Performance-Verlusten, die oft nicht hingenommen werden. Selbst administrative Entscheidungen AktiveX/Java und E-Mail Attachements reicht oftmals nicht aus. Es besteht immer noch die Gefahr, dass ein Mitarbeiter ein Programm installiert und so das ganze Netz gefährdet.
2.2.14 pingd-Backdoor
Falls eine Firewall vorliegt, die ICMP-Pakete nicht abfängt – was natürlich einzig und allein von der Konfiguration abhängig ist – kann man diese Lücke ausnützen. In der Phrack nr.51 findet sich eine interessante Implentierung dieser Idee. Das dort vorgestellte Programm namens LOK12 besteht aus einem Server und einem Client. Der Server ist praktisch eine spezielle pingd-Impementierung. Dieser Server reagiert auf bestimmte Nachrichten des Clients in einer Art, die es ermöglicht, Shell-Komandos via ICMP zu Übertragen. Das Geniale an diesem Konzept ist, dass erstens viele Filter-Firewall-Konfigturationen ICMP-Traffic zulassen und zweitens der ICMP-Traffic, mit normalen Netzwerk-Analysern betrachtet, nicht ungewöhnlich aussieht. Die pingd-Backdoor fällt unter die Klasse der ICMP-Backdoors. Es ist ebenfalls möglich, Shell-kommandos über TCP oder UDP zu versenden. Es ist lediglich ein Client und ein Server notwendig, die entsprechend programmiert sind.
2.2.15 WWW-Backdoor
Diese recht neue Backdoor funktioniert unter jeder Firewall Architektur, die es den Benutzern (internes Netz) gestattet, das WWW zu benutzen (was sehr häufig der Fall ist). Die Backdoor besteht aus einem Slave, der auf einem internen Rechner des Systems (also hinter dem Firewall) installiert werden muss. Dieser Slave führt jeden Tag zu einer bestimmten Uhrzeit einen Kindprozess aus, welcher via HTTP mit einem Master in Kontakt tritt, der auf einem beliebigen Server vor der Firewall installiert sein muss (dieser Server muss vorher vom Angreifer gecracked worden sein). Für den Firewall sieht der HTTP-Verkehr zwischen Kindprozess und Master wie ein normaler WWW-Surfer aus, weshalb sie diesen Verkehr ohne Probleme zulässt. In Wirklichkeit öffnet dieser Kindprozess eine Shell auf dem Rechner, auf die der Master-Server (der Cracker) zugreifen kann. Die WWW-Backdoor ist eine Klasse höher angesiedelt als die pingd-Backdoor (auf der Applikationsebene). Sie benutzt das HTTP-Protokoll, um Shell-Komandos zu verschicken. Natürlich wäre es auch möglich, andere Applikations-Protokolle entsprechend zu verwenden. Die HTTP-, UDP-, ICMP- und TCP-Backdoors (...) gehören wie die inetd / r-Dienst Backdoor zur Klasse der Network-Traffic-Backdoors. Gerade diese Backdoors sind meist schwer zu entdecken, da bei der WWW-Backdoor beispielsweise ein simples Verschlüsseln der Shell-Komandos den Datenverkehr nahezu normal erscheinen lässt.
Anmerkungen
*Spoofing-Attacke
Attacke bei der die IP-Adresse des Angreifers manipuliert ist
*Snifferprogramme:
Programme die den Netzwerkverkehr abhören
Anhang A:
Erste Ausarbeitung: Linux Grundbefehle
A.1 Unix-Befehle
Unix-Befehle sind entweder ausführbare Programme, Shell-Skripte, Skripte von Skriptsprachen (z.B. Perl, Tcl) oder Shell-Aliasse (so etwas wie Shell-Makros).
Shells sind die Grundlegenden Schnittstelle zum Betriebssystem (z.B. bash, sh, tcsh) über die Befehle eingegeben werden können.
A.2 Optionen
Es ist oft notwendig, das Verhalten eines Befehls zu beeinflussen. Dies geschieht unter Linux mit sogenannten Optionen (engl. options). Optionen stehen immer direkt nach dem Befehlsnamen und vor den Parametern. Meist werden Optionen durch ein Minus gekennzeichnet.
Bsp.:
[root@localhost /]# ls -a
Wenn mehrere Optionen gesetzt werden sollen, können viele Linuxprogramme diese auch "kumulieren", d.h. dass nicht alle am Anfang nacheinander aufgeführt werden, sondern nur die erste ein Minus erhält, die folgenden direkt an die erste geschrieben werden.
Bsp.:
[root@localhost /]# ls –a –l oder
[root@localhost /]# ls –al oder
[root@localhost /]# ls -la
A.3 Parameter
Parameter sind zusätzliche Argumente zu einem Befehl, die dem Befehl notwendige Daten mitteilen. Die Parameter folgen in der Eingabezeile dem Namen des Befehls, und zwar durch mindestens ein Leerzeichen getrennt.
Bsp.:
[root@localhost /]# shutdown –h now
A.4 Anhalten und Booten des Systems
Zum regulären Anhalten des Rechners dienen die Befehle
shutdown –h now
(hält das System an, es kann nach der Ausgabe "the system is haltet" abgeschaltet werden)
shutdown –r now
(startet das System nach dem Herunterfahren sofort neu)
Dieser Befehl kann nur vom Administrator ("root") ausgeführt werden. Alternativ kann man auch die von DOS gewohnte Tastenkombination STRG + ALT + ENTF zum Neustart verwenden. In der Kommandozeilenebene kann sie von jedem Benutzer ausgeführt werden.
Es auf jeden Fall davon abzuraten während des Betriebs einfach den Strom abzuschalten oder den Resetknopf zu betätigen, da man sonst eine Beschädigung des Dateisystems riskiert, was zum Datenverlust führen kann.
A.5 Virtuelle Konsolen
Linux ist multitasking- und multiuserfähig. Im Textmodus stehen 6 Virtuelle Konsolen zur Verfügung, zwischen denen man durch die Tastenkombinationen ALT + F1 bis ALT + F6 wechseln können.
A.6 Anlegen von Benutzern
Der Befehl useradd dient zum Anlegen neuer Benutzer. Dieser Befehl kann wiederum nur vom Administrator ausgeführt werden.
Bsp.:
[root@localhost /]# useradd –u 300 –d /home/franz franz
Dieser Befehl legt den Benutzer "franz" an, mit Benutzerverzeichnis /home/franz und Benuter-ID 300. Es stehen natürlich weitere Optionen und Parameter zur Verfügung, z.B.
-s /bin/bash
(legt fest, dass "franz" nach dem einloggen die bash-Shell zur Verfügung steht)
-g users
("franz" würde in diesem Fall der Gruppe "users" zugeteilt werden)
A.7 Arbeiten mit Verzeichnissen
Der Pfadtrenner ist unter Unix der "/" (unter DOS "\"). Unix unterscheidet Groß- und Kleinschreibung, d.h. der Dateiname Quake bezeichnet eine andere Datei als quake. Eine Trennung in Name und Extension ist normalerweise nicht erforderlich, es sei denn, bestimmte Programme erwarten dies (z.B. Latex).
Eine angenehme Erleichterung bei der Eingabe von Datei bzw. Verzeichnisnamen ist die Funktion der Tabulatortaste. Wenn man den ersten Buchstaben eingibt und daraufhin die Tabulatortaste drückt ergänzt die Shell den kompletten Dateinamen (solange er durch den oder die ersten Buchstaben eindeutig definiert ist). Zweimaliges Drücken zeigt bei Mehrdeutigkeiten alle Möglichkeiten an.
Nach dem Einloggen befindet man sich im Benutzerverzeichnis. Der Name des aktuellen Verzeichnisses kann man mit dem Befehl pwd (engl. print working directory) ausgegeben werden
[franz@localhost /home/franz]# pwd
/home/franz
Um in ein anderes Verzeichnis zu wechseln, dient wie unter DOS cd (engl. change directory). Wird cd ohne Parameter aufgerufen wechselt man in das Verzeichnis des aktuellen Benutzers, mit cd .. gelangt man ins übergeordnete Verzeichnis. Das Benutzerverzeichnis kann auch mit Hilfe der Tilde ~ gekennzeichnet
werden.
[franz@localhost /]# cd home
[franz@localhost /home]#
Neue Verzeichnisse werden mit dem Befehl mkdir (engl. make directory) angelegt.
[franz@localhost /home/franz]# mkdir texte
[franz@localhost /home/franz]# ls
Desktop texte
Verzeichnisse können mit dem Befehl rmdir (engl. remove directory) gelöscht werden.
[franz@localhost /home/franz]# rmdir texte
[franz@localhost /home/franz]# ls
Desktop
A.8 Arbeiten mit Dateien
A.8.1 Informationen über Dateien
Der Befehl ls zeigt den Inhalt des aktuellen Verzeichnisses an. Verzeichnisnamen werden in der Ausgabe mit einem "/" gekennzeichnet. Ausführbare Programme sind nicht durch Extensionen wie unter DOS (*.exe, *.com) sondern durch einen Asterix "*" (gilt nur für die Ausgabe durch ls). Eine nützliche Option von ls ist –l. Dadurch werden zusätzliche Informationen wie Zugriffsrechte, Eigentümer, Gruppenzugehörigkeit und Größe angegeben.
[franz@localhost /mnt]# ls –l
drwxrwxr-x 2 root root 1024 Oct 9 1998 cdrom
drwxrwxr-x 2 root root 1024 Feb 6 1996 floppy
Eine spezielle Klasse von Dateien sind die versteckten Dateien. Die Dateinamen beginnen mit einem Punkt und werden von der Shell nur angezeigt, wenn ls mit der Option –a aufgerufen wird. Versteckte Dateien sind vor versehentlichen Löschen durch rm * geschützt und müssen durch explizites Löschen mit rm <.dateiname> entfernt werden (der Befehl rm .* löscht alle versteckten Dateien des aktuellen Verzeichnisses).
[franz@localhost /]# ls –a
. .. .Xdefaults .bash_history .bash_logout .bash_profile .bash .rc
Am Beispiel von ls kann man sehr gut die große Optionsvielfalt zeigen:
|
Ls |
|
|
-a |
(all) listet auch Dateien, die mit "." beginnen |
|
-b |
zeigt nichtdruckbare Zeichen und Dateinamen als Backslash-Sequenzen mit alphabetischen oder oktalen Werten wie bei C |
|
-c |
sortiert Listen nach der Zeit der letzten Statusänderung |
|
-d |
zeigt Unterverzeichnisse wie normale Dateien statt ihres Inhalts |
|
-f |
sortiert Liste nach der gespeicherten Reihenfolge auf dem Datenträger |
|
-i |
zeigt die Inode-Nummer zu jeder Datei |
|
-k |
gibt die Dateigröße in KB an |
|
-l |
(long) zeigt auch Typ, Rechte, Anzahl der Hardlings, Besitzer, Gruppe, Größe in Byte und Veränderungsdatum |
|
-m |
listet Dateinamen horizontal, durch Kommata getrennt |
|
-n |
zeigt Benutzer und Gruppe mit ID anstelle der Namen |
|
-p |
hängt ein "/" an jeden Verzeichnisnamen |
|
-q |
zeigt Fragezeichen anstelle von nichtdruckbaren Zeichen |
|
-r |
(reverse) listet in umgekehrter Reihenfolge |
|
-t |
sortiert nach Veränderungsdatum anstelle des Namens |
|
-u |
sortiert nach letzter Zugriffszeit anstelle der Änderungszeit (zusammen mit –t) |
|
-x |
listet in horizontal sortierten Spalten |
|
-A |
listet alle Dateien außer "." und ".." |
|
-B |
(backup) ignoriert Dateien mit der Endung "~" |
|
-C |
listet in vertikal sortierten Spalten |
|
-F |
hängt Typ-Symbol an die Dateinamen |
|
-G |
unterdrückt Anzeige der Gruppe bei "-I" |
|
-L |
listet den Inhalt der symbolisch gelinkten Verzeichnisse anstelle des Link-Files |
|
-N |
listet Dateinamen ohne Anführungszeichen |
|
-Q |
listet Dateinamen in Anführungszeichen |
|
-R |
(recursive) listet den Inhalt aller Unterverzeichnisse rekursiv |
|
-S |
(size) sortiert nach der Dateigröße |
|
-X |
sortiert alphabetisch nach der Dateiendung |
|
-1 |
Ausgabe einspaltig |
|
-I Muster |
ignoriert Dateien mit "Muster" im Namen |
A.8.2 Inhalt von Dateien
Der Inhalt einer Datei kann mit den Befehlen more und less Seitenweise angezeigt werden. Bei more kann nur nach unten geblättert werden. Mit der Leertaste kann nach vorne, mit b zurück geblättert werden.
Ein verwandter Befehl ist cat , der mehrere Dateinamen als Parameter erlaubt und deren Inhalte ohne Unterbrechung ausgibt. Da die meisten Dateien zu groß für eine Bildschirmseite sind, wird cat meist zum Verketten von Dateien mit Hilfe der Umlenkung der Standardausgabe verwendet. Die Eingabe
[franz@localhost /root]# cat eins zwei > einsundzwei
zeigt den Inhalt der Dateien eins und zwei nicht auf dem Bildschirm an, sondern schreibt das Ergebnis in die Datei einsundzwei.
A.8.3 Kopieren, Umbenennen und Löschen von Dateien
Der Befehl, um Dateien zu Kopieren, lautet unter Linux cp.
[franz@localhost /home/franz]# cp /etc/XF86Config ~
In diesem Fall wird die Datei XF86Config aus dem Verzeichnis /etc ins Benutzerverzeichnis kopiert.
Dateien können mit dem Befehl rm (engl. remove) gelöscht werden. Eine nützliche Option ist –r (engl. recursive), wodurch auch alle Unterverzeichnisse gelöscht werden (ähnlich "deltree" unter DOS)
Der Befehl mv verschiebt Dateien oder Verzeichnisse. Das Verschieben eines kompletten Verzeichnisbaumes ist nur innerhalb einer Partition möglich.
[franz@localhost /home/franz]# mv texte TEXTE
Die Datei texte aus dem aktuellen Verzeichnis wird auf die Datei TEXTE im aktuellen Verzeichnis "verschoben", was hier einfachen Umbennenen gleichkommt
A.8.4 Wildcards
Verglichen mit DOS sind die durch die Befehlsinterpreter gegebenen Einsatzmöglichkeiten von Wilcarts enorm. Wilcards beschränken sich unter Linux nicht nur auf den "*" und "?".
Ls *a????l
Dieser Befehl zeigt alle Dateien in einem Verzeichnis deren sechstletztes Zeichen ein "a" und deren letztes Zeichen ein l ist.
A.8.5 Suchen und Durchsuchen von Dateien
Ein weiterer nützlicher Befehl ist find. Um in allen Unterverzeichnissen des aktuellen Verzeichnisses nach der Datei lilo.conf zu suchen, sollte folgendes eingegeben werden:
[franz@localhost /]# find / -name "lilo.conf"
Das erste Argument bezeichnet dabei das Verzeichnis ab dem die Suche gestartet werden soll. Die Option –name verlangt einen zu suchenden String, in dem auch Wildcarts erlaubt sind.
Wenn nicht nach einem bestimmten Dateinamen, sondern nach einer Zeichenkette in einer Datei gesucht werden soll, kann dazu der Befehl grep (engl. get regular expression pattern) verwendet werden. Die folgende Eingabe sucht in der Datei lilo.conf nach der Zeichenkette "linux":
[franz@localhost /boot]# grep "linux" lilo.conf
A.8.6 Symbolische Links
Durch die Verwendung von symbolischen Links kann einer Datei quasi ein zusätzlicher Name gegeben werden. Dieser Name "zeigt" dann auf diese Datei. Symbolische Links verhalten sich wie die Dateien, auf die sie zeigen, sind also auch ausführbar. Die Eingabe
[franz@localhost /home/franz]# ln –s texte2 TEXTE
[franz@localhost /home/franz]# ls –l
lrwxrwxrw 1 franz franz 1024 Nov 26 1999 texte2 => TEXTE
erzeugt den symbolischen Link texte2 der auf die Datei TEXTE zeigt.
A.8.7 Dateien archivieren und sichern
Zum Erzeugen und Auspacken von Archiven dient der tar –Befehl (engl. tape archive). Ein Archiv kann einzelne Dateien und/oder ganze Verzeichnisbäume einschließlich der darin liegenden Dateien enthalten. Dermaßen zusammengepackte Archive kann man auch komprimieren. Üblicherweise gibt man komprimierten Archiven die Endung .tgz oder .tar.gz unkomprimierten .tar
Auspacken von Archiven:
[franz@localhost /home/franz]# tar xvfz archivdatei.tgz
tar enpackt (x) nun das komprimierte (z) Archiv archivdatei.tgz (f) und legt dabei ggf. selbständig Unterverzeichnisse an. Bei jeder Datei die entpackt wird, wird der Name auf dem Bildschirm ausgegeben (v)
Erzeugen von Archiven:
[franz@localhost /home/franz]# tar cvfz archivdatei.tgz datei1 verz1
tar erzeugt (c) das komrimierte (z) Archiv archivdatei.tgz (f), in dem die Datei datei1 und das Verzeichnis verz1 einschließlich seiner Unterverzeichnisse enthalten sind. Bei jeder Datei die verpackt wird, wird der Name auf dem Bildschirm ausgegeben(v).
Ansehen von Archiven:
[franz@localhost /home/franz]# tar tfz archivdatei.tgz
tar dibt ein Inhaltsverzeichnis (t) des komprimierten (z) Archivs archivdatei.tgz (f) aus.
A.9 Befehle um Informationen über den Systemzustand zu erhalten
df
Der Befehl df gibt Auskunft über den verfügbaren und benutzten Plattenplatz.
[root@localhost /]# df
|
Filesystem |
1k-blocks |
Used |
Aviable |
Use |
Mounted on |
|
/dev/hda2 |
862404 |
412918 |
404933 |
50% |
/ |
free
free informiert über die Auslastung des Arbeitsspeichers und des swap-Speichers.
[root@localhost /]# free
|
total |
used |
free |
shared |
buffers |
cached |
|
|
Mem: |
128092 |
25232 |
102860 |
12450 |
1244 |
17528 |
|
+/- buffers/cache |
6460 |
121632 |
||||
|
swap: |
52512 |
0 |
52512 |
w
w zeigt alle momentan angemeldeten Benutzer im System an. Daneben Außerdem erfährt man, wie lange das System schon läuft, wie sehr es ausgelastet ist und was die einzelnen Benutzer so tun.
[root@localhost /]# w
3:08 pm up 1:52, 2 users, load average: 0.00, 0.00, 0.00
|
USER |
TTY |
FROM |
LOCK IN @ |
IDLE |
JCPU |
PCPU |
WHAT |
|
root |
tty1 |
- |
1:25 pm |
0.00s |
0.08s |
0.01s |
w |
|
franz |
tty2 |
- |
1:35 pm |
1:33m |
0.08s |
0.02s |
/bash |
du
du (engl. disk usage) gibt Auskunft über den von Unterverzeichnissen und einzelnen Dateien belegten Speicherplatz.
ps
Der Befehl ps (engl. process status) zeigt die vom Benutzer gestarteten Prozesse an. Mit dem Aufruf ps –a werden auch die laufenden Prozesse der anderen Benutzer auf dem aktuellen aktuellen Rechner angezeigt. Durch die Angabe der Prozeßnummer (PID) ist es möglich, laufende Prozesse gezielt abzubrechen (siehe 4.6).
[root@localhost /]# ps –a
|
PID |
TTY |
TIME |
CMD |
|
509 |
1 |
00:00:00 |
bash |
|
531 |
2 |
00:00:00 |
bash |
|
577 |
1 |
00:00:00 |
ps |
kill
kill sendet ein Abbruchsignal an laufende Prozesse. Er erfordert die Angabe der PID (engl. process id), die mit ps (siehe 4.5) ermittelt werden kann. Der Befehl wird aufgerufen mit
[root@localhost /]# kill <PID>
Sollte der entsprechende Befehl das Abbruchsignal abfangen, so kann er mit dem optionalen Parameter –9 dennoch beendet werden. Der Aufruf
[root@localhost /]# kill –9 <PID>
beendet den Prozess mit der PID <PID> definitiv.
pstree
pstree zeigt den gesamten "Prozessbaum" anschaulich an.
top
top Anzeige aller momentan laufenden Prozesse, der Systemauslastung u. v. m.; die Anzeige wird in zeitlichen Abständen aktualisiert. Beenden der Anzeige mit q.
A.10 Mounten von Dateisystemen
Um die folgenden zwei Kapitel zu verstehen ist es wichtig die Device-Bezeichnungen unter Linux zu kennen. Sämtliche Gerätedateien befinden sich im /dev-Verzeichnis
|
/dev/fd0 |
erstes Floppylaufwerk |
|
/dev/fd1 |
zweites Floppylaufwerk |
|
/dev/hda |
erste AT-Bus Festplatte |
|
/dev/hda1 - /dev/hda15 |
die Partitionen der ersten AT-Bus Platte |
|
/dev/sda |
erste SCSI Festplatte |
|
/dev/sda1 - /dev/sda15 |
die Partitionen der ersten SCSI Platte |
|
/dev/sdb |
zweite SCSI Festplatte |
|
/dev/sdc |
dritte SCSI Festplatte |
Unter Linux stehen viele verschiedene Dateisysteme zur Verfügung (siehe Referat von Johannes Zeller). Mit dem Befehl mount, der normalerweise nur vom Administrator ("root") ausgeführt werden kann, wird ein Datenträger in das Linux-Dateisystem eingebunden. mount benötigt hierzu zwei Argumente:
Die Option –t <dateisystemtyp> gibt den Typ des zu mountenden Dateisystems an. Der Aufruf von
[root@localhost /]# mount –t msdos /dev/fd0 /mnt/floppy
stellt die DOS-Partition fd0 (Diskettenlaufwerk) unter dem Verzeichnis /mnt/floppy zur Verfügung sofern dieses Verzeichnis existiert.
Durch die Option -r (engl. read-only) wird ein Datenträger nur zum lesen gemountet. Dieses Protokoll ist in der Datei /etc/mtab zu finden. Wird mount ohne Argumente aufgerufen, so wird der Inhalt dieser Datei ausgegeben. Dies entspricht der Liste aller gemounteten Dateisysteme.
Durch umount wird ein Datenträger wieder aus dem Linux-Dateisystem entfernt. Als Argument kann entweder der Name der Gerätedatei oder der Name des Verzeichnisses, in welches der Datenträger eingebunden ist, angegeben werden. Um also z. B. /dev/fd0, eingebunden unter /mnt/floppy, zu unmounten, kann man alternativ eingeben:
[root@localhost /]# umount /mnt/floppy
oder
[root@localhost /]# umount /dev/fd0
Bei von Disketten gemounteten Dateisystemen ist es wichtig, vor dem Herausnehmen der Diskette den Befehl umount auszuführen, da es vorkommen kann, dass Daten noch nicht vollständig wieder auf die Diskette geschrieben wurden.
Wenn auf einem gemounteten Datenträger noch geöffnete Dateien existieren, werden beim Aufruf von umount diese Daten zurückgeschrieben bzw., wenn dies nicht möglich ist, eine entsprechende Fehlermeldung ausgegeben.
Will man ein Dateisystem unmounten, darf kein Benutzer mehr in einem Pfad stehen (z. B. mit einer Shell), der unterhalb des zu unmountenden Mountpoints liegt; sonst kann das entsprechende Dateisystem nicht abgehangen werden.
A.11 Konfiguration von LILO
Linux besitzt als Bootmanager LILO, das neben Linux auch OS/2, DOS, NT oder Windows 95/98 booten kann. LILO wird entweder im MBR oder in einer Boot-aktiven Linux-Partition installiert, also automatisch vor jedem Betriebssytem gestartet.
Der Bootmanager konfiguriert sich über die Datei /etc/lilo.conf, die man mit dem Editot vi anpassen kann.
[root@localhost /]# vi /etc/lilo.conf
Daraufhin erscheint folgender Bildschirm:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.5-50
label=linux
root=/dev/hda2
read-only
Das Schlüsselwort "boot" bestimmt, wo sich der Bootsektor installiert. /dev/hda benennt den MBR der ersten DIE-Festplatte, /dev/sda den MBR der ersten SCSI-Festplatte und /dev/hdb1 bezeichnet den Bootsektor auf der ersten Partition der zweiten Festplatte (siehe 5.1)
Um nun als Beispiel Win95 booten zu können, muß man LILO mitteilen, wo sich Windows befindet. Mit der Zeile other=/dev/hda2 erfährt LILO, dass über den Bootblock der zweiten Partition ein weiteres Betriebssystem geladen werden kann. Mit der Zeile label=windows erhält das System einen Namen. Die Reihenfolge der Zeilen mit image und other ist wichtig: Der erste Eintrag ist die Voreinstellung die gebootet wird, wenn keine Tastatureingabe erfolgt. Die Konfiguration sagt ferner, dass LILO 50 Decisekunden warten soll, bis das erste Betriebssystem geladen wird.
Komplette Konfiguration (mit Win95 auf zweiter Partition der ersten DIE-Festplatte):
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.5-50
label=linux
root=/dev/hda2
read-only
other=/dev/hda2
label=windows
Anhang B:
Wie-werde-ich-Hacker – HOWTO
(von Doobee R. Tzeck)
Eine einfache Anleitung, wie man zum Hacker wird
"Wie hacke ich?" "Ich möchte hacken lernen." "Was ist eine FAQ"? "Was bedeutet warez?"? "Schickt mir alle Infos über's Hacken!" "Gibt es ein Tutorial zum Hacken lernen?" "Wo bekomme ich <füge hier jede beliebige Datei ein>?" "Wie komme ich an das Passwort für <was auch immer>?" "Wie knacke ich <was auch immer>?" "Kann mir jemand diese bestimmte Datei schicken?"
Hört sich das nach dir an? Bist du einer von diesen AOL/metronet/Germany-Net/City-Net-Möchtegern-Typen oder -Lamern, die wissen müssen, wie man Hacken lernt? Und niemand sagt dir was, außer dass du dir eine Axt kaufen solltest und vor allem sendet dir niemand irgendwelche
brauchbaren Infos?
Oder schwallen dich die Leute dann zu und reden von Kreativität, Technik Nutzung und Verantwortung, von Mitgestalten und der Kommunikationsgesellschaft? Dabei willst du doch nur wissen, wie man das Internet hackt!
Keine Sorge! Hier gibt es eine Schritt-für-Schritt Anleitung, wie man Hacker wird. Wenn du diesen Anweisungen bis zum Ende folgst und einen Funken Kreativität besitzt, wirst du ein echter Hacker.
Fein, hier kommt also die Schritt-für-Schritt Anleitung. Arbeite sie genau durch und du wirst ein echter Internet-Hacker. Wenn du erstmal mit Internet Hacking zurecht kommst, kannst du dir leicht neue Arbeitsfelder erschließen.
1.Wenn du dies über einen der großen Online-Dienste (z.B. AOL) oder einen Intranet-Provider (z.B. metronet) lesen solltest, ruf' sofort bei denen an und teile ihnen mit, du würdest ihren Service in Zukunft nicht mehr benötigen.
Wenn man in AOL ist (oder irgendeinem ähnlichen Service wie z.B. metronet), wird man automatisch als hoffnungsloser Lamer und Loser eingestuft. Möchtest du etwa, dass dir dieser Ruf für den Rest deines Lebens anhaftet? Also: kündigen, bevor es zu spät ist.
Ganz nebenbei kann man das Internet nicht von AOL oder einem anderen Onlinedienst aus vernünftig hacken.
2.Besorg' dir einen echten IP-Zugang. Wenn du im Internet hacken willst, benötigst du einen direkten Zugang zum Netz. Den bekommst du in der Regel per PPP. SLIP, Raw IP über ISDN oder X.25 würden es auch tun, aber für den Anfang wollen wir dein armes kleines Gehirn nicht mit zu vielen Informationen auf einmal verwirren. Also besorg' dir einen Internet-Provider mit PPP-Zugang.
3.Bekanntlich läuft der Großteil des Netzes auf Unix-ähnlichen Systemen. Folglich brauchst du auch so ein System. Also lauf' direkt zum nächsten Computerladen und kaufe ein Unix-ähnliches Betriebssystem und einige Bücher über Unix.
Am einfachsten (und billigsten) ist es, sich ein Freies System auf CD zu besorgen. Ich empfehle RedHat oder Debian als Linux-Distribution (davon gibt es nämlich mehrere und sie heißen beileibe nicht alle SuSE) bzw. [Open|Free] BSD, wenn es ein "echtes" Unix sein soll. Du hast kein CD-Laufwerk? Nimm gleich eins mit, wenn du schon einmal im Laden bist (echte Hacker haben kein Problem damit, hin und wieder etwas Geld in Hardware zu investieren).
4.Repartitioniere deine Festplatte, um Platz für deine Unix- Partition zu haben. Du benötigst etwa 823 Megabyte. Das sollte für den Anfang reichen.
Falls deine Festplatte nicht groß genug für DOS, Windows und dein neues Unix ist, lösche DOS und Windows komplett. Das Zeug wird 'eh nur von Lamern verwendet. Falls deine Platte dann immer noch nicht ausreicht, schnell zurück in den Laden.
5.Lies die Installationsanleitung komplett. Dann lese sie ein zweites mal, weil du wichtige Sachen im ersten Durchgang übersehen hast. Und zur Sicherheit liest du sie am besten noch ein drittes Mal.
6.Installiere Unix auf deinem System. Folge den Anweisungen, die du eben gelesen hast. Installiere alles, vor allem den Netzwerkskram, alles, was mit Programmierung zu tun hat, die Dokumentation, FAQs, man pages usw.
Wenn alles installiert ist, reboote und logge dich ein.
7.Arbeite dich durch die Kernel-Docs/FAQ/HOWTO. Lese den Kram ein zweites Mal langsamer, weil du nicht alles beim ersten Mal verstanden hast. Nun kompiliere deinen Kernel neu, um einen eigenen Kernel für dein System zu erstellen.
Du weißt immer noch nicht, was ein Kernel ist oder warum du ihn kompilieren sollst? Oder du weißt nicht, wie du das anstellen sollst?
Dann hast du den Kram, den du lesen solltest, nicht gelesen oder nicht verstanden. Du bist immer noch ein Lamer und ein Loser, bitte versuche es erneut.
8.Hast du deinen neuen Kernel übersetzt? Fein, dann installiere ihn. Boote mit deinem selbst gebauten Kernel. Wenn dein System sauber bootet, hast du einen Glückwunsch verdient. Du hast etwa 5% auf dem Weg fort aus Lamerland geschafft!
9.Nun, wo dein schönes, neues System läuft, mußt du dich durch alle man pages, HOWTOs, FAQs etc. durcharbeiten. Natürlich wirst du das meiste nicht auf Anhieb verstehen, aber lese auch das, dann weißt du später, wo du nachschlagen kannst. Alles durchgelesen? Gut, dann lese es alles noch einmal.
10.Jetzt spiele ein bißchen mit deinem schönen, neues System herum. Lerne alles darüber, was du in Erfahrung bringen kannst. Verbringe etwas Zeit damit, das System zu erkunden und Dinge auszuprobieren. Dafür solltest du etwa ein Jahr einkalkulieren. (Wenn du niemals bei AOL warst, geht es wohl möglich wesentlich schneller.)
11.Nun konfiguriere dein System für PPP und den Netzzugang. Als du Linux das erste Mal installiert hast, hast du ein paar Netzwerksinformationen eingegeben, das reicht aber nicht. Es gilt wieder viele manpages/FAQs/HOWTOs mehrfach zu lesen.
12.Jetzt mußt du lernen, mit den essentiellen Netztools wie ftp, telnet, archie, sendmail, usw. umzugehen. Spiele mit den Tools ein bißchen im Netz herum.
Nein, du bist noch kein Hacker (du hast erst 10% des langen Wegs aus dem Lamerland geschafft), aber du solltest nun möglicherweise genug wissen, um in der Lage zu sein, eine halbwegs intelligente Frage im Netz zu stellen.
13.Der Zeitpunkt, programmieren zu lernen, ist jetzt gekommen. Besorg' dir ein paar Bücher über C, C++, Perl, Unix-Programmierung usw. Lese sie. Lese sie weitere Male, weil das meiste, was du im ersten Durchgang gelesen hast, dich verwirrt hat.
Nun spiel' auf deinem System mit Perl, C und C++ herum, bis du programmieren kannst. Übe einige Zeit, bis du zumindest einigermaßen gut bist. Danach übe weitere ein bis zwei Jahre.
14.Als nächstes besorgst du dir alle RfCs und arbeitest sie gewissenhaft durch. Hierin sind die Informationen enthalten, die essentiell sind, wenn du das Netz hacken willst. Wie immer hast du im ersten Anlauf nicht alles verstanden, also nochmal lesen.
15.Subscribe dich jetzt auf einigen Security-Mailinglisten und Newsgroups. Lese sie, wobei du den ganzen Müll ignorieren mußt (Müll von der Sorte, wie du ihn früher gepostet hast). Poste auf keinen Fall irgendetwas, denn was du bisher zu sagen hast, interessiert niemanden.
Schau dir das ganze nur ein bis zwei Jahre an.
16.Erkunde das Netz. Probiere herum. Suche Sicherheitslücken. Lese viel Source Code. Programmier einige Hacker-Tools. Nun bist du ein echter Hacker-Anwärter
Herzlichen Glückwunsch! Der Weg zum Meisterhacker mag noch weit sein, aber den solltest du nun alleine finden.
Dieser ganze Prozeß dauert natürlich einige Zeit, ist aber der schnellste Weg für einen Onlinedienst-Nutzer, um hacken zu lernen. Einige haben
nicht die nötigen geistigen Fähigkeiten, alle der oben angeführten Schritte durchzuführen, aber versucht es trotzalledem.
Zugegebenermaßen, das ganze mag dich einige Jahre kosten, aber es ist es wert.
Anhang C:
Quellenangaben und Danksagung
Quellen
http://www.linux.de
http://www.redhat.com
http://www.suse.de
http://www.pc-welt.de
http://www.ccc.de
http://www.l0pht.com
http://r3wt.base.org
http://www.cert.dnf.de
S. Hetze, D. Hohndel, M. Müller, O. Kirch: Anwender Linux Handbuch, Berlin 1997
Anonymous: Hacker´s Guide, München 1999
Danksagung
Dank an
Rohmers Franz für die Inizierung des Seminarkurses, Johnny, Jan, Christian, Heinzel, Markus, Florian und Thilo für die moralische und technische Unterstützung, Dr. Bernhard Röhrig, dem GameStar Team, Sebastian Hetze, Olaf Kirch, Dirk Hohndel und Martin Müller für ihre hilfreichen Publikationen, AMD, Maxtor, Matrox, Kingston Memory, Belinea, Guillemot und MSI für die hervorragende Hardware, den Webmastern von www.appd.de, www.tazwarez.com, www.visper.net, www.metacrawler.com und www.altavista.com für ihre hervorragenden Webseiten, der Crackergroup Global Hell und MoD (Masters of Downloading), Metallica, Limp Bizkit, Kid Rock, Rage Against The Machine, M2M, Machine Head, Ministry, Silverchair, AC/DC, Böhse Onkelz, Pantera, Sepultura, Creed und The Offspring für die musikalische Inspiration, V.S., Anna Kournikova, Sarah Michelle Gellar, Tyra Banks, Heidi Klum, Mandy Moore, Denise Richards und Victoria Adams für die visuelle Inspiration, Sid Meier für alle seine guten Spiele, Stefan Kretschmar für MTV Sushi, John Woo und Jackie Chun für Action auf der Leinwand, Chris Carter für X-Files, Subcomandante Marcos für seinen heldenhaften Kampf in Chiapas, der Nationalmannschaft, Borussia M´Gladbach, Arsenal London und den Detroit Red Wings, Blizzard für Starcraft, Valve für Half-Life, GT für Unreal Tournament, Linus Torvalds und Alan Cox (*g*)
Kein Dank an
K., D., Bill Gates, Steve Ballmer, John Romero, Bill Clinton und ganz Amerika, den fetten O´Neal, Intel, Microsoft, Energie Cottbus, den CIA, das FBI