Root: defieniert durch die UID (User Identity) = 0; und ist
allm?htig - also kann jegliche Systemadministartionen machen
Dateiberechtigungen gelten nicht fr root; kann alles: runlevel,hostanemen,prozessbesitzer
etc. ?dern;
damit ein logeintrag gemacht wird (wer sich zum root macht) muss man mit su
root vom eigenen Benutzeraccount zum root 'wechseln'
(su=Switch User); wenn man ber Netzwerke einloggt dann am besten ber eine Secure
Shell(ssh); das Rootpasswort (welches sofort bei su root abgefragt wird) sollte
in unregelm?igen und unangekndigten Abst?den ge?dert werden.
::KAPITEL2:: Administrationstolls
gesamte Konfiguration des Systems in Textdateien gespeichert,
also ist der vi Editor besonders wichtig!; Shellscripts sind auch relativ wichtig
weil man so die Konfigurationsarbeit erledigt; sh-Scriptsprache bietet sich
dafr an oda fr umfangreichere Sachen ist Perl gut;
ein Gro?eil der Systemkonfigurationsdateien werden im Verzeichnis /etc/ gespeichert;
z.B: /etc/inittab bestimmt das Verhalten des Initprozesses;
viele Unterschiede zwischen den verschiedenen Unix-Varianten!
Es gibt Administartionsprogramme die das Administrieren vereinfachen, doch es
gibt auch Tools die fr die jeweilgien Distributionen zugeschnitten sind; bestes
Beispiel: YAST(Yet another Setup Tool) fr SuSE
Linuxconf & Webmin = wichtige Progs die distributionsunabh?gig sind (die
Konsole ist auch distributionsunabh?gig und natrlich auch fr die Administartion
verwendbar)
Linuxconf von Jaques Gelinas und sehr flexibel und erweiterbar; besitzt fr jede
Konfigurationsaufgabe ein eigenes Interface das die jeweiligen Tasks bernimmt;
darf nur vom root benutzt werden und kennt 4 Betriebsarten: das Kommandozeileninterface
(fr Scripts konzipiert), das Zeileninterface, das graphische Interface (im X-Window
anwendbar) und das netzwerkbasierte Interface (das machts m?lich Linuxconf mim
Webbrowser zu verbinden; Linuxconf schreibt alle ?derungen in die Datei /var/log/netconf.log;
Linuxconf - Netzwerkinterface ist standardm?ig deaktiviert kann aba aktiviert
werden (dazu muss der Internetdaemon [(x)inetd] laufen) und es ist am Port 98
erreichbar (http://myhost.mydomain:98)
Webmin ein netzwerkbasierendes Tool das im Webbrowser auf dem Port 10000 zu
finden ist
YAST von SuSE erm?licht einfache Installation und Administartion, kann aber
auf keiner anderen Distribution verwendet werden; schreibt das globale Konfigurationsfile
/etc/rc.config und erzeugt mittels Aufrufs von rc.SuSEconfig daraus die entsprechenden
Konfigurationsdateien fr die Dienste
Lisa ist fr Caldera Open Linux und das Control-panel arbeitet auf RedHat-Linux,
Mandrake, Turbo Linux und noch ein paar anderen
::KAPITEL3:: Benutezrverwaltung
Wichtige Information zu den User Accounts findet man in 3 Dateien:
/etc/passwd, /etc/group und /etc/shadow
Die Passwortdatei /etc/passwd:
jede Zeile definiert einen Account; in 7 Feldern , jeweils durch einen doppelpunkt
getrennt, sind Informationen angegeben; das erste Feld ist der benutzername,
das 2te ist das passwortfeld und die weiteren definieren UID,GID,die GECOS-Information,
das Homedirectory und die Loginshell;
Login-Name:
der benutzernamen wird normalerweise in max 8 buchstaben angegeben und alles
klein geschrieben;
Passwort:
das Passwortfeld speichert die verschlsselten passw?ter; oft werden sie in /etc/shadow
gespeichert; UNIX benutzt fr gew?nlich die DES-Verschlsselung die nur 8 Zeichen
erlaubt; viele Linux-Distributionen untersttzen auch die MD5-Verschlsselung;
bei der DES k?nen die passw?ter mittels dem kommando 'passwd' ge?dert werden
und alle ausser root werden nahc dem alten passwort gefragt
UID:
jeder Account ist durch eine eideutige Zahl definiert (32 Bit Integer), Linux
kann 65535 UIDs (User Identity) vergeben; rootaccount besitzt die UID 0 und
hat in der Datei /etc/passwd den ersten Zeileneintrag; Systemdienstprogramme
und Daemonen laufen auch unter eigenen Accounts, meist besitzten sie niedriege
(also unter 100 bei Linux) UIDs;
GID:
Die Accounts werden in Gruppen zusammengefasst damit man bestimmte Retche gleichzeitig
verteilen kann; Informationen ber die Gruppenzugeh?igkeit gibts bei /etc/group;
jede Gruppe hat eine eindeutige Zahl (GID - Group Identity), und jeder Account
muss mindestens einer Gruppe zugeordnet sein
/etc/group:
besteht aus 4 Feldern die durch einen Doppelpunkt getrennt sind; der erste Eintrag
ist der Name der Gruppe; der 2te Eintrag ist das verschlsselte Gruppenpasswort
(das unverschlsslete ist in /etc/gshadow zu finden);im 3ten Feld steht die GID
un dim 4ten eine kommaseparierte Liste von Mitgliedern der Gruppe; 'groups'
zeigt an welchen Gruppen ein Benutzer angeh?t; mit 'newgrp' kann man in Gruppen
einloggen deren man Mitglied ist
GECOS:
(der name ist historisch, die Bell Labs haben das GECOS verwendet um batch Jobs
auf den GECOS Mainframe zu bertragen) mit 'finger' kann man die Eintr?e vom
GECOS Feld sehene und mit 'chfn' kann man die ver?dern
Homedirectory:
hei? meistens /home/username;
Loginshell:
das ist die Shell in der der Benutzer nach dem Login kommt; unter Linux kann
man mit dem Befehl 'chsh' die Loginshell ?dern; es sind alle Shells erlaubt
die in der Datei /etc/shells stehen
Das Passwort wird in der Datei /etc/shadow gespeichert und diese ist nur fr
den root lesbar; in der Passwortdatei steht daher im 2.Feld ein "x";
wie in /etc/passwd gilt auch in /etc/shadow jede Zeile ein Account; diesmal
aber 9 durch Doppelpunkt getrennte Felder;
1.Feld: benutzername
2.Feld: verschlsseltes Passwort
3.Feld: letzter Passwortwechsel (Tage seit 1.1.1970)
4.Feld: min. Tage zwischen Wortwechsel
5.Feld: max. Tage zwischen Passwortwechsel
6.Feld: Anzahl Tage Warnunger vor Passwortablauf
7.Feld: Anzahl Tage Accountablauf nach Passwortablauf
8.Feld: Passwortablauf
9.Feld: Flgas (unbenutzt)
um von einem System ohne Shadowpassw?ter (also die Pasw?ter werden noch in /etc/passwd
gespeichert) zu einem mit Shadowpassw?ter zu wechseln verwendet man das Tool
pwconv, in die umgekehrte Richtung braucht man das Tool pwunconv
fr einen sicheren Aufruf zum ?dern von der Shadowdatei sollte man die Befhele
'vipw' oder 'vigr' benutzten, weil dann die Dateien fr alle anderen Prozesse
gesperrt werden; einfaches Administrieren erfolgt mit 'passwd', 'useradd', 'userdel',
'groupadd', 'groupdel'und mit 'usermod', 'groupmod'; mit 'useradd username'
kann man sich viel Zeit ersparen, dieser Befhel macht einen Eintrag in der Passwort,
- Gruppen, - und Shadowdatei und auch noch ein Homedirectory legt er an, useradd
kopiert alle Dateien aus dem /etc/skel/ ins neue Homedirectory; unter RedHat
ist die GID=UID; jetzt fehlt nurmehr das Anfangspw und das setzt man mit 'passwd
username'
'usermod' und 'groupmod' sind zur ver?derung von Accounts gedacht; die defaultwerte
fr die Usererstellung befinden sich in /etc/login.defs; wie das Passwort genau
ausehen soll legt PAM fest (Plugable Authentication Module)
Accounts sperren kann man auf verschiedene Arten: eine nicht existierende Shell
als Loginshell w?len (/bin/false) oder in /etc/passwd bzw. /etc/shadow einen
* eintragen oder ein Rufzeichen am Anfang des verschlsselten Passwort dazuschreiben;
mit passwd -l kann man das Passwort sperren (-l = lock) und mit passwd -u (unlock)
wieder aufheben; es w?e aber sch?er eine Nachricht zu hinterlassen und das macht
man mit Tailscripts die als Loginshell in /etc/passwd eingetragen werden; man
kann aber auch eine Datei /etc/nologin erzeugen in der eine Erkl?ung steht,
aber nur wenn man mit einem gltigen Loginnamen bzw. Passwort versucht einzuloggen;
um einen user zu l?chen sollte man zuerst den User deaktivieren und dann die
entsprechenden Zeilen in den 3 files l?chen (geht auch mit userdel) dann das
homeverzeichnis l?chen und die mailbox l?chen (befindet sich in /var/spool/mail)
und zuletzt noch die brigen Dateien des User suchen am besten mit 'find / -user
name'
::KAPITEL4:: Software - Installation
Programmpakete mssen installiert werden und am einfachsten geht
das mit einem Tarfile, auch Tarball genannt, mit der Dateiendung: tar.gz.tgz
oder tar.bz2, da ist der Sourcecode selber zu Compilieren; doch am weitesten
verbreitet ist das rpm-Format(RPM RedHat Package Manager), hier sind das "fertige"
Programme; und dann gibts noch das deb-Package-Format;
um Sourcepackages zu installieren ladet man das Paket herunter, entpackt es
mit tar, wechselt ins erzeugte Verzeichnis, lie? die README oder die INSTALL,
fhrt die ./configure Datei aus, dann in der Kommandozeile 'make' (das compilliert
das Prog) eingeben und danach 'make install' (als root eintippen) damit das
erzeugte Prog mitsamt den Manpages installiert wird
die gr?te Open Source Software gibt auf: http://sourceforge.net oder http://www.freshmeat.net;
und im rpm-Format: http://rpmfind.net oder http://at.rpmfind.net;RPM ist ein
Tool zur Verwaltung von Softwarepaketen; ein Paket ist gezippt und enth?t die
Pre- und Post-Installationsscripts, Deinstallationscripts und die Paketabh?gigen
Information; Abh?gigkeitsberprfung wird mit '--nodeps' berprft und ob Konflikte
existieren bzw. um sie zu berschreiben benutzt man '--replacefiles'; Der Dateiname
eines rpm-Paket besteht aus: Paketname,Versionnr.,Releasenr,Architektur und
der Endung rpm (also z.B.: ftp-0.17-7.i386.rpm -> das ist ein FTP-Paket,
Version 0.17, Releasenr. 7, fr einen Intel 80386 Prozessor (und h?ere)); RPM
wird benutzt zum (De)Installieren von Programmen, zum Upgraden und zum Freshen
und zum Abfragen und zum Verifizieren; Bei der Installation wird geprft ob der
Name des Paketes schon Installiert worden ist, wenn ja wird die Installation
verweigert; Beim Upgraden wird die alte Version entfernt und die Konfigurationsfiles
des alten Pakets werden in .rpmsave gespeichert und die neuen Konfigurationsfiles
in .rpmnew gespeichert; Beim Deinstallieren wird geprft ob eine etwaige Abh?gigkeit
verletzt wird und ob sie andere Programme beeinflusst; Das Abfragen gibt Information
ber das Paket und seine Installation aus; Das Verifizieren sagt wann das Paket
seit der Installation ver?dert wurde;
RPM installieren: rpm -i|U|F[hv] Paketdatei [Optionen]
RPM deinstallieren: rpm -e Packetname [Optionen] ACHTUNG: Paketname = joe, Paketdatei:
joe-2.8-40.i386.rpm
RPM abfragen: rpm -q Paketname [Optionen]
RPM verifizieren: rpm -V Paketname [Optionen]
um die Verbreitung von manipulierten rpm-Paketen zu verhindern k?nen Pakete
mit einem PGP/GPG signiert werden, Die Authentizit? dieser Pakete mit
'rpm --checksig rpm-file' getestet werden; es gibt aber auch graphische Interfaces
wie z.B.: GnoRPM (Gnome) oder kpackage (KDE); es gibt auch das automatische
upgraden von Paketen mit dem Tool Red Hat Update Agent: up2date, er hat ein
Kommandozeileninterface und auch ein graphisches, damit kann man nur Pakete
upgraden die RedHat selber herausgegeben hat; ein anderes Tool mit den selben
AUfgabene ist: autorpm; wenn man h?disch ein bestimmtes Paket installieren will
aber die Abh?gigkeiten nicht erfllt werden helfen die Tools: rpmfind und autoget
weiter;
Das Debian Package-Management funktioniert ?nlich wie das rpm, das Tool dazu
hei? dpkg; das up2date Tool fr Debian Linux hei? apt-get(es installiert/updatet
automatisch die Pakete bers Internet); dann gibts noch ein Tool das von einem
Format in ein anderes konvertieren kann und auch zwischen den Distributionen
es hei?: Alien; die Konfiguration findet in /etc/apt statt, die Dateien hei?n
.deb-Dateien
::KAPITEL5:: Speichermanagement
Bei Unix Systemen wird neben dem Hauptspeicher (RAM) auch noch
ein Auslagerungsspeicher (meist in der Form einer Swap-Partition) benutzt; der
gesamte Speicher wird in gleich gro? Einheiten (Pages von 1-8KB, meist 4KB)
unterteilt und die werden vom Kernel verwaltet; Jedem Prozess steht beim Start
ein gewisser Adressbereich bestehend aus einer Anzahl von Pages reserviert;
Das erste MB ist fr den Kernel reserviert der Rest des RAM wird auf die laufenden
Prozesse und den Disk Cache aufgeteilt, der Disk Cache dient zum Zwischenspeichern
von Daten die von Massenspeicherger?en des Systems eingelesen bzw. dorthin geschrieben
werden; Ist das RAM voll belegt beginnt der Kernel Speicherseiten in den Swap-Bereich
auszulagern;
Gesamtspeicher= RAM + Swapspeicher
Swap-Partition kann mit 'fdisk' erstellt werden, der Partitionstyp muss dabei
auf den Hex Code 82 (Linux Swap) gestellt werden; zum Anlegen (formatieren)
eines Swapspeichers verwendet man das Kommando 'mkswap partition'; aktivieren
kann man ihn mit 'swapon partition' und mit 'swapoff partition' kann man ihn
deaktivieren - ohne reboot - aber nur wenn im Hauptspeicher genug Platz ist
und die Daten dorthin geschrieben werden k?nen; die Gr?e des Swapspeichers richtet
sich nach der Gr?e des RAM; minimal 10 Pages (40KB), max. 2GB und max 8 Partitionen
Swapfile ist weniger effizient als die Partition, den Platz dafr muss man mit
'df' suchen, mit mkswap swapfile in eine Swapfile verwandeln und mit swapon
swapfile aktivieren
die laufenden Prozesse werden mit dem 'ps' Befehl angezeigt, 'ps aux' zeigt
alle laufende Prozesse geordnet nach ihrer PID (Prozess Identity) und eine Prozeshirachie
bekommt man mit 'pstree'; mit 'top'bekommt man eine periodisch aktualisierte
Statistik der laufenden Prozesse; mit 'free' sieht man die Belegung von Haupt-
und Swapspeicher und die Gr?e der Festplattencaches; 'vmstat' zeigt Infos ber
das Virtual Memory System an; 'uptime' gibt die Zeit an die vergangen ist seit
dem letzten Systemstart und die Systemlast; 'uptime' gibt 3 Werte gemittelt
ber die letzten 1, 5 und 15 Minuten aus. ist die Systemlast ber 1 dann ist das
System schwer belastet; graphische Tools sind: xosview, xload und xsysinfo alle
geben einen ?erblick ber die Systemnutzung
::KAPITEL6:: Scheduling
Scheduling wird in 2 Gruppen eingeteilt: 1. regelm?ig wiedeholtes
Starten und 2. einmaliges Ausfhren von Programmen (Scripts); zum Starten steht
cron fr Unix zur Verfgung und zum Ausfhren von Progs zu bestimmten Zeitpunkten
wird at benutzt und batch wird benutzt sobald die Systemlast unter 0.8 gefallen
ist; alle 3 werden von Daemonen gesteuert: crond, atd; diese berprfuen jede
Minute ob ein Auftrag erledigt werden muss; at und batch Jobs werden direkt
von der Kommandozeile eingesendet, doch cron bezieht die Infos aus einer Crontab;
da gibts die globale Crontab (/etc/crontab) und die pers?liche die von dem User
eigens erstellt werden kann (/var/spool/cron/$USER); Scripts die stndlich,t?lich,w?hentlich,monatlich
ausgefhrt werden sollen werden in das Verzeichnis
/etc/cron.{hourly,daily,weekly,monthly} gelegt; anacron sorgt dafr das Jobs
auch ausgefhrt werden wenn der Rechner nicht st?dig in Betrieb ist, beim booten
schaut anacron in seiner Konfiguration (/etc/anacrontab) ob unerledigte Jobs
vorhanden sind und startet sie, ist der letzte Job erledigt wird anacron beendet;
Ein Script das 2mal t?lich nachsieht ob der sshd noch l?ft:
#!/bin/sh
#/sbin/check-ssd (restarts sshd if down)
if [ -z "`pidof sshd"]; then
/etc/init.d/sshd restart >/dev/null 2>&1
echo "sshd restarted" | mail -s "`hostname --fqdn"\root@logserver
fi
pidof sshd - ermittelt die PID unter der der sshd l?ft und rennt er nicht muss
das Ergebnis leer(-z) sein; dann wird ein restart gemacht und eine Mail an den
root auf einem zentralen Logserver gesendet;damit man auf die crontab mithilfe
der Kommandozeile was ver?dern kann benutzt man 'crontab -e'; und damit um 11.30
und um 23.30 das Script ausgefhrt wird tippt man das ein:
30 11 * * * /sbin/check-sshd
30 23 * * * /sbin/check-sshd
die 6 leerzeichengetrennten Felder sind: Minute,Stunde,Tag des Monats,Monat,Tag
der Woche, auszufhrendes Programm;ein * bedeutet das das Feld alle Werte annehmen
kann; [*/2 = jede 2te Stunde]; das direkte editieren der Datei in /var/spool/cron
ist nicht klug; es gibt auch einen Taskmanager fr KDE - kcron;
mit 'at -f script zeit' kann man ein Script zu einer bestimmten Zeit aufrufen,
der batch Befehl ist dazu v?lig analog; um die at Queue zu sehen benutzt man
'at -l' und 'atrm' zum L?chen der Auftr?e; um Usern zu verbieten/erlauben Eintr?e/Jobs
anzulegen ver?dert man die /etc/{cron|at}.{allow|deny}; dei Eintr?e bestehen
aus Usernamen;
::KAPITEL7:: Drucker
Druckserver - man schickt die zu druckende Datei nicht an den
Drucker sondern an den Druckerdaemon der mithilfe einer Warteschlange alle Druckerauftr?e
verwaltet und solang arbeitet bis alle Auftr?e erledigt sind und der Queue(warteschlange)
leer ist; der haufigste Daemon hei?: lpd (Line Printer Daemon) bzw ein Paket
das lpr (Line Printer); ein moderners Drucksystem ist Cups (Common Unix Printing
System), das das Internet Printing Protocol (IPP) benutzt und die Kompatibilit?
mit sowohl lpd als auch SMB und AppSocket (auch JetDirect) besitzt;
Wie druckt man:
man teilt lpr die zu druckende Datei mit (entweder von der Kommandozeile aus
oder durch eine Anwendung), lpr berprft in welchen Queue er den Auftrag stellen
soll, dazu sieht er nach ob die Datei dem lpr Kommando bergeben wurde, wenn
nicht wertet er die Umgebungsvariable PRINTER aus, wenn die nicht gesetzt ist
nimmt er den Drucker aus /etc/printcap - der lp hei? bzw wenn nicht vorhanden
den ersten Druckeintrag in dieser Datei; hat er dann mal endlich seinen Weg
gefunden sieht er im Verzeichnis /etc/printcap nach welches Spool-Verzeichnis
der Queue zugeordnet ist (das Directory befindet sich in /var/spool/lpd), dort
legt er eine Kontrolldatei mit Informationen ber den Druckerjob und die zu druckende
Datei ab und benachrichtigt den Druckerdaemon, Wenn der Drucker remote (also
bersd Netzwerk) angestuert wird leitet er den Auftrag an einen entfernten Druckserver
weiter, wenn lokal (also ber die parallele Schnittstelle) gedruckt wird bergibt
er den Auftrag - wenn er dann im Queue an der Reihe ist - direkt oder ber einen
Druckfilter - der vielleicht in ein anderes Dateiformat (z.B: Postscript) konvertiert
- endlichst der Druckhardware; nach erfolgreichem Drucken werden die tempor?en
Dateien in /var/spool/lpd wieder gel?cht;
Der Cups Druckerserver hei? cupsd, die Konfigurationsfiles befinden sich in
/etc/cups und die prim?e Konfigurationsdatei hei? /etc/cups/cupsd.conf; Cups
speichert alle verfgbaren Queues in /etc/cups/printers.conf und in /etc/cups/ppd
wird die Konfiguration fr jeden Queue in einem eigenen File names queue.ppd
verwaltet, es gibt auch ein Webinterface zur Druckerverwaltung das auf Port
631 (http://myhost:631) erreichbar ist; KDE hat ein eigenes Drucker Clientkommando
names kprinter, was aba eigentlich genau wie lpr ist; lpd kann den lokalen Druckerqueue
nicht nur lokalen Benutzern zur Verfgung stellen sondern auch einem Netzwerk,
in /etc/hosts.lpd oder /etc/hosts.equiv und /etc/printcap wird alles dafr geregelt;
in den 2 Files werden die Hostnamen der berechtigten Druckclients angegeben,
wird in der Printcap Datei die Optionen rs verwendet dann ist das Drucken nur
den Benutzern erm?licht die auch einen Account haben; in /etc/hosts.perms werden
die Netzwerk lpd vergeben; Der Netzwerkzugang zu einem Cups Druckerserver wird
in /etc/cups/cupsd.conf gereglt; 'lprm' ist das l?chen eines Druckerjobs, jedoch
kann der normale Benutzer nur seinen eigenen Druckauftrag l?chen, root kann
alles l?chen; die Jobnummer bekommt man mit dem Kommando 'lpq'; Cups besitztein
gutes Kommandozeilentool das zum Konfigurieren und Administrieren der Druckerwarteschlange
gut ist: lpadmin; das einrichten eines Druckers ber /etc/printcap ist mhsam
deswegn gibts fr RedHat ein Tool: printtool; aba manuel gehts so: das erste
Feld ist der Name unter der der Drcuker in der Queue erkannt werden kann und
durch einen | getrennt, die anderen Felder sind durch : getrennt, Jeder Druckeintrag
sollte min diese Felder beinhalten:
:sd=/pfad/zur/queue
:lf=/var/log/lpd-errors
:lp=/dev/partport0
lf steht fr Logfile, lp fr Hardwareschnittstelle, wenn ein nichtlokaler Drucker
anchgeschlossen werden soll dann den lp-Eintrag durch rm=hostname (Remote) und
rp=queue (Remote Printer) zu ersetzten;
::KAPITEL8:: Dateisysteme
Festplatten sind in logische Bereiche unterteilt = Partitionen
und werden wie Festplatten angesprochen; beim Installationsvorgang wird die
Partitionierung erledigt; 'fdisk' ist das Standardwerkzeug zur Partitionierung;
unter RedHat gibts da 'cfdisk'; beim Partitinonieren muss der Typ der Partition
angegeben werden, der Typ entspricht dem einzurichteneden Dateisystem, fr Linux
ext2 oder fr DOS FAT oder fr Windows 9x VFAT; auf einer erstelltren Partition
muss ein (leeres) Dateisystem erzeugt werden auf dem die Daten gespeichert werden
k?nen = Formatieren; mkfs (Make File System); Das Ger? (Device) besitzt eine
Ger?edatei ber die die Hardware angesprochen wird; ist der Filesystemtyp FsType
mal festgelgt dann kann er nicht mehr ge?dert werden; Festaplattenpartitionen
unter Linux werden mit ext2 (2nd extended Filesystem) formatiert; FsOptions
h?gen von FsType ab und es werden die Optionen -v (verbose) fr ausfrhliche Meldungen
und -c (check) fr die Prfung von defekten Bl?ken untersttzt; verschiedene Festplattenpartitionen
k?nen an beliebigen Punkten im Verzeichnisbaum "eingeh?gt" oder "gemountet"
werden; das mounten ist eigentlich nur dem root vorbehalten; 'mount [-t FsType]
Device Mountpoint' das Device bezeichnet die Hardwareger?edatei, der Mountpoint
bezeichnet den Platz im Verzeichnisbaum wohin das "Ding" hin gemountet
werden soll; dabei sollte es sich um ein leeres Directory handeln, ists nicht
leer sieht man die Daten da drinnen nicht solange das "Ding" noch
gemountet ist; fr Medien die nicht beschrieben werden k?nen kann man noch die
Option -r (read only) dazufgen; wenn man das "Ding" nicht mehr braucht
tut man es 'umount'en dann h?gt man das "Ding" wieder aus; weigert
sich das "Ding" ungemountet zu werden muss man zuerst die Programme
schlie?n die mit dem "Ding" zu tun haben, mit 'fuser' oder 'lsof'(List
Open Files) werden diese Programme angezeigt; das mount - Kommando schreibt
eine Zeile in /etc/mtab (nach dem Muster von /etc/fstab), mit 'df' sieht man
alle gemounteten "Dinger" und ihre Verwendung; jeder Datentr?er wird
durch eine Ger?edatei dargestellt ber die man darauf zugreifen kann; es gibt
2 Ger?earten: Random-Access Block Devices (z.B: Festplatten, CD-ROMs) und Character
Devices (z.B: Tastertur, Maus, serielle Schnitstellen); ein langes Listing (ls
-l) zeigt obs ein Block Device (b) oder ein Character Device(c) ist:
crw-rw---- 1 root uucp 5, 65 Aug 30 2001 /dev/cua1
brw-rw---- 1 root disk 3, 1 Aug 30 2001 /dev/hda1
Ger?edateien haben ganz normale Berechtigungen; ein gew?nliches File enth?t
ein Dokument (Text, Graphik, Datenbankfile) oder ein Programm; Files besitzen
keine Satzstruktur, sondern werden als sequentielle Str?e von einzelnen Zeichen
behandelt; die Aufagbe eines Dateisystems ist es die einzelnen Datenbl?ke einer
Datei auf die Festplatte abzulegen; es sagt auch an welcher Stelle sie abgelegt
werden sollen und archiviert diese Infos in den Metadaten in einer Tabelle;
Eine Datei ist ein fortlaufende Anzahl von Bytes; Ein Dateisystem verwaltet
die Dateiene auf einem Speichermedium;
Dateisysteme unter Linux (Seite 145):
ext2 - Standard unter Linux
ext3 - Weiterentwicklung von ext2
ReiserFS - Reiser-Dateisystem
JFS - Journaling Filesystem
XFS - Journaling-Filesystem unter UNIX
iso9660 - Standardformat fr CD-ROms und DVDs
udf - Universial Disk Fomrat CDRWs und DVDs
MS-DOS - Dateisystem fr MSDOS-Partitionen
VFAT - DOS/Windows 9x-Dateisystem
NTFS - WIndows NT/2000 Dateisystem
UMSDOS - unixartiges FS, kann auf einer FAT Partition angelegt werden
minix - verwendet fr Linux Disketten
NCPFS - Neovell FS
HPFS,HFS,AFFS - FS von OS/2, MAC, Amiga
proc - Dateisystem zur Prozessverwaltung
swap - Swap Partition
autofs - automatisches mounten
usbdevfs - verwalten von USB
devpts - fr Pseudoterminals
NFS - Netzwerkdateisystem
SMBFS - Samba
ext2 nimmt den vorhandenen Speicherplatz und teilt in in Bl?ke gleicher Gr?e
(default 1024 Byte) auf und nummeriert diese Bl?ke durch; Dann werden die Bl?ke
in Gruppen eingeteilt die jeweils zur Speicherung unterschiedlicher Datentypen
genutzt werden; die Inodes (informatiosnknoten) besitzten alle relevanten Daten
ber die die gespeicherten Daten n?lich: Benutzer- und Gruppen-ID, Zugriffsrechte,
Gr?e der Datei, Anzahl der (harten) Links, Daten der Erstellung, der letzten
?derung oder des L?chens dieser Datei und Verweise auf die Datenbl?ke wo die
Datei gespeichert ist; Die Dateinamen in sind in den Verzeichnissen gespeichert
und in Zeilen gegliederte Textdateien, jede Zeile beinhaltet den Namen der Datei,
die dazugeh?rige Inode-Nummer; dazu noch einen Verweis auf das Verzeichnis selbst
(.) und einen Verweis zum bergeordneten Verzeichniss (..);'ls -ail'
223244 drwxr-xr-x 4 jj users 1024 Jan 21 17:00 .
die linke Spalte gibt die Inodenr an, die n?hste Spalte die Zugriffsrechte,
und danach die n?hste Spalte die Anzahl harter Links; ein Inode kann mittles
Pointer mayimal 12 Datenbl?ke direkt addressieren; ein ext2 System kann h?hstens
2GB gro?sein; der wichtigste Block ist der Superblock, er enth?t Infos ber das
Layout des Dateisystems und ist der erste Block des FS, wie z.B: die Gr?e der
Bl?ke; beim mounten wird auf die Info im Superblock zurckgegriffen; der Bootblock
enth?t eine Menge von Minimaldaten die benutzt werden falls die entsprechende
Partition gebootet wird; dei Blockgr?e ist die kleinste adressierbare Einheit
in einem Dateisystem; 'fsck' berprft das Dateisystem aus kleinere Fehler und
behebt sie; fsck wir automatisch gestartet beim Booten von /etc/rc.sysinit nach
einem Systemabsturz; wenn Dateien (oder Datenbl?ke) nicht wiederhergestllt werden
k?nen landen sie im /lost+found Verzeichnis der Partition; fsck lauft ber die
ganze Partition und braucht dehalb Zeit; debugfs ist ein Prog das versucht verloren
gegangene Daten noch zu retten; dumpe2fs zeigt Infos ber das Dateisystem, ausgehend
vom Superblock an; Journaling ist ein Verfahren das die Filesystemchecks ersetzt,
ist langsamer als andere Dateisysteme aber die Datenintegrit? wird verbessert
und die Filesystemchecks sind verkrtzt bzw. unn?ig; bevor die ?derungen am Dateisystem
vorgenommen werden wird ein Backup der zu berschreibenden Daten in einem reservierten
Bereich gemacht, dieser Bereich ist das Journal oder Log; nach Erfolg der ?derungen
wird der Journal-Eintrag gel?cht; wenn der Rechner abstrtzt sind die alten Daten
noch vorhanden oder der Log kann sie rekonstruieren; lost+found Verzeichnisse
entfallen, doch der Nachteil davon ist die geringere Geschwindikeit; das ReiserFS
ist ein Filesystem das Journaling nur fr die Metadaten macht, was einen Geschwindikeitsvorteil
bringt aber eine schlechtere Datenintegrit?; das ext3 macht Journaling fr Daten
und Metadaten; wenn man umsteigen will von ext2 auf ext3 benutzt man den Befehl
'tune2fs -j /dev/Ger?', ein neues ext3 Dateisystem einrichten tut man mit 'mke2fs
-j /dev/Ger?', soll das Journal nicht mit dem Dateisystem sondern auf einem
anderen Medium gespeichert werden so gibt man das ein:
'mke2fs -O journal_dev /dev/myLog'
'mke2fs -J device=/dev/myLog /dev/myDisk'
::KAPITEL9:: Backup
die Sicherung von (Benutzer)daten und Konfigurationsdateien
wird Backup genannt; das ist ein guter Schutz vor Datenverlust durch Hardwaredefekte,
Softwarefehler oder Hackereinbrche; Backups dienen zum Archivieren von Daten
ber l?gere Zeitr?me; zuerst muss man sich die Frequenz und Art eines Backups
berlegen, man unterscheidet zwischen Benuterdaten und Systemdaten (Konfiguartionsdateien,
Scripts), die benutzerdaten sind h?figer zu sichern, z.B: t?lich und die Systemdaten
vor und nach Eingriffen z.B: monatlich; dann gibts volle Backups wo der gesamte
Datenbestand gesichert wird und die inkrementellen Backups wo nur die ?derungen
seit des letzten Backups gesichert werden; dann sollte die das Backupmedium
gew?lt werden, Backups auf Festplatten sind ideal aba teuer, Zip- und Jaz-Drives
sind nicht wirklich standrad deshalb ist die klgste Methode Backups auf CDs
zu machen weil sie billig sind und leicht transportf?ig und jeder PC ein CD-Rom
Laufwerk hat; Disketten haben eine zu geringe Speicherkapazit?; jetzt fehlt
nur noch ein Backupprogramm, tar ist nicht ganz ausreichend als wird eine Anwendung
ben?igt; und man sollte auf die Umgebung achten wo man die Backups aufbewahrt;
eine sorgf?ltige Dokumentation ist wichtig damit auch mal wer weitermachen kann
wenn ich mal auf Urlaub bin; Unix-Werkzeuge fr Backups sind: tar,cpio und dump;
tar dient zum Archivieren und Transportieren gr?erer Datenmengen und von ganzen
Verzeichnisb?men, doch ists schwierig mit tar eine komplette Festplattenpartition
zu sichern, mit dump geht das einfach, cpio hat porbleme mit symbolischen Links;
tar:
backup: tar cvf tarfile.tar directory_or_file_to_tar
restore: tar xvf tarfile.tar
listen: tar tvf tarfile.tar
komprimieren: tar xvzf tarfile.tar
komprimieren mit bzip2: tar xvjf tarfile.tar
cpio:
backup: cpio -ov files > device
find /home | cpio -ov > /dev/fd0
restore: cpio -iv [-dum] [files] < device
cpio -ivdum "/home/j*>> /dev/fd0
listen: cpio -itv < device
dump:
backup: dump -0 -a -u -f /dev/fd0 /home
inkrementell: dump -5 -a -u -f /dev/fd0 /home
restore: cd /home; restore -r -f /dev/fd0
::KAPITEL10:: Kernel compilieren
Linux Kernel ist ein 1MB gro?r Code der vom Bootmanager (z.B:
lilo,grub) in den Speicher geladen und augefhrt wird; die wenigen Prozeduren
die stark von CPU,Motherboard, Bus-System etc. abh?gen sind in der Assemblersprache
programmiert, sie sind klein und bernehmen nur elementare Aufgaben (Festplattensektor
lesen) der andere Teil des Quellcodes ist hardwareunabh?gig in C geschrieben
und implementiert die ganze Funktionalit? des Kernlen (Dateisysteme);
'uname -r' und 'dmesg | head -1' zeigen die Versionsnummer des laufenden Kernels
an; 2.4.9-12 bedeutet; Version 2, Patchlevel 4 und Sublevel 9; eine gerade Patchlevelnr
heisst das es ein stabiler Kernel ist, eine ungearde Zahl steht fr einen Entwicklerkernel
die instabil sind; Teile (treiber) des Kernels als Module, Treiber sind nicht
fix in den Kernel hineincompiliert sondern k?nen im laufendem Betrieb geladen
werden, der Vorteil von Modulen ist das der Kernel weniger Speicher ben?igt
dadurch ein schnelleres booten, Module gibt snur fr die Hardware die nicht beim
booten ben?igt wird; lsiten von Modulen mit 'lsmod', laden mit 'insmod' oder
'modprobe' und entfernen mit 'rmmod'; modprobe ist intelligenter den es prft
auf Modulabh?gigkeiten und l?t vorher alle ben?igten Module wobei die Information
aus /etc/modules.conf bezogen wird; hat der Kernel zu wenig oder zu viel Hardwareuntersttzung
muss ein neues Kernel-Release upgegraded werden;der Standardkernel hat Treiber
fix eincompiliert die man blicherweise nicht ben?igt; ein kleinerer Kernel belegt
weniger Speicher und er bootet schneller; damit man nicht den ganzen Quellcode
runterladen muss kann man einfach Patches runterladen, diese enthalten ?derungen
seit der letzten Version und k?nen mit 'zcat patch-2.4.3.gz | patch -p0' eingspielt
werden; zum Kernel compilieren braucht man root Rechte, man sollte vorher umbedingt
Backups machen und zwar von /lib/modules/ und maybe auch von /usr/src/linux,
dann sollte man sich genaustens ber die Harware des PCs informieren, Anhaltspunkte
sind: /proc/cpuinfo, /proc und das BIOS-Men;
Kernel compilieren: man wechselt ins /usr/src/linux Verzeichnis;
dann mit einem der 3 Befhelen die Kernelkonfiguration vornehmen; 'make config',
'make menuconfig', und 'make xconfig'; zum compilieren des Kernels und der Module
mssen der Reihe nach diese Befehle ausgefhrt werden:
make dep
(makeclean)
make bzImage
make modules
make modules_install
dadurch wird der Kernel kompiliert und die neuen Module installiert;Warnungen
und Fehlermeldungen werden in mylogfile gespeichert; um den Kernel zu installieren
muss er nach /boot/ kopiert werden und der Bootloader lilo fr das neue Image
eingerichtet werden; man sollte umbedingt die alte Konfiguration beibehalten
und die neue nur hinzufgen, weil vielleicht der neue Kernel nicht funktioniert;
Um den Bootsektor neu einzurichten ruft man lilo auf; danach nur mehr rebooten
und die Bootmessages beobachten;
::KAPITEL11:: Shell Scripts (Bash)
Im Shell Script sind alle Systemprogs sofort verwendbar; es
gibt nur einen Typ von Variablen und diese mssen nicht initialisiert werden;
Shell Scripts sollte man nicht verwenden wenn: die Geschwindigkeit des Progs
wichtig ist, stark strukturiertes Programmieren n?tig ist, Sicherheitsmechanismen
verwendet werden sollen, viele Daten gelesen und geschrieben werden sollen,
man ein GUI haben will; ein Shell Script ist eigentlich eine Textdatei die Programm-
und Funktionsaufrufe macht und Variablenzuweisung tut;
Shells (Seite 200):
sh - Bourne Shell
bash - Bourne Again Shell
csh - C Shell
esh - Easy Shell
psh - Perl Shell
Beginnt ein Script mit: #! /bin/bash und wird die Datei ausfhrbar gemacht mit
'chmod 755 scriptname' dann kann das script so aufgerufen werden: './scriptname';
Ein Script wird Zeile fr Zeile vom Interpretor in der Bash abgearbeitet, Kommentieren
tut man mit '#'; die Zuweisung eines Wertes schaut so aus: 'VARIABLENNAME=wert'
auf den wert kann man so zugreifen: 'echo $VARIABLENNAME' und mit 'unset VARIABLENNAME'
kann man den Wert wieder l?chen; die Variablen $1-$9 enthalten die an das Script
bergebenen Parameter (Positionsparameter) z.B:
vi parameters
#!/bin/bash
echo "Erster Parameter: $1"
echo "Zweiter Parameter: $2"
- ./parameters foo bar
Erster Parameter: foo
Zweiter Parameter: bar
init ist der "Ahne" aller Prozesse; Eine Subshell ist eine Shell die
aus einer anderen gestartet wurde; './script' oder 'bash script' startet das
Script in einer Subshell, '. script' oder 'source script' da wird das script
in der aktuellen Shell ausgefhrt; Die Zuweisung kann in alle Subshells mit dem
Befehl 'export' exportiert werden; das 'read' Kommando liest interaktiv eine
Variable ein und gibt sie dann wieder aus: z.B:
cat what
#!/bin/bash
echo "What do you want to do next?"
read todo
echo "You said you will to $todo"
- ./what
What do you want to do next?
fall asleep
You said you will fall asleep
einige bulit-in Variablen:
$$...PID
$0...Name des Shellscripts
$n...nter bergebener Parameter
$#...Anzahl der Positionsparameter
$*...alle Positionsparameter
$?...letzter Exit Code
$!..letzte Background PID
Metacharacter:
z.B: rm Mein Lied.mp3 - jetzt sucht Linux nach 2 Dateien, nach Mein und nach
Lied.mp3; man muss dazu Quoten, da gibts 3 Methoden: Backslash \ (escape character)
hebt die spezielle Bedeutung des unmittelbar folgenden Zeichens auf; ''(single
Quotes); ""(double Quotes) heben die spezielle Bedeutung der Zeicher
dazwischen auf; Bei den double Quotes bleibt die spezielle Bedeutung der Zeichen:
$,' und \ erhalten; Befehle werden durch einen Zeilenumbruch (<newline>)
oder ein Semikolon (;) getrennt; Es gibt 2 M?lichkeiten Kommandos zu Gruppieren,
runde Klammern und geschwungene Klammern; in den runden Klammern werden die
Befhele in der Subshell ausgefhrt, in den geschwungenen Klammern in der aktuellen
Shell; beide Klammerntypen mssen gequotet werden;
Wildcards:
* - beliebige Zeichenkette
? - genau ein beliebiges Zeichen
[] - genau eines der genannten Zeichen
[^ ] oder [! ] - genau ein nicht genanntes Zeichen # !und ^ verneinen die Aussagen
{ , } - genau eine der Zeichenketten
Jedes Kommando liefert nach Beendigung seinem Parameterprozess einen Exit Status
zurck; der zwischen 0 und 25 ist; 0 bedeutet den Erfolg und der Rest bezeichnen
verschiedene Ausma? des Scheiterns; der Exit Status des letzten Kommandos wird
in der Variable $? gespeichert; Der Exit STatus kann ber den built-in Befehl'exit'
gesteuert werden;
Bedingung (if):
Bei zutreffen von Bedingung1 wird die Anwendung1 ausgefhrt, trifft Bedingung1
nicht, Bedingung2 aber schon zu, so wird Anweisung2 ausgefhrt, trifft keine
der beiden Bedingungen zu, so wird Anweisung3 ausgefhrt;
if Bedingung1
then
Anweisung1
elif Bedingung2
then
Anweisung2
else
Anweisung3
fi
elif und der else-Block sind optional, Die Bedingung ist ein Kommando das 0
als Exit Status zurckgibt;
S1 & S2 sind Strings, D1 & D2 sind Dateinamen:
S1 = S2 - Strings ident
S1 != S2 - Strings nicht ident
-e D1 - Datei D1 existiert
-d D1 - D1 ist ein Verzeichnis
-x D1 - D1 ist ausfhrbar
D1 -nt D2 - D1 neuer als D2
Variablen A & B stehen fr ganze Zahlen:
$A -lt $B - $A kleiner als $B
$A -gt $B - $A gr?er als $B
$A -le $B - $A kleiner gleich als $B
$A -ge $B - $A gr?er gleich als $B
$A -eq $B - $A gleich $B
$A -ne $B - $A ungleich $B
Operatoren:
+ - Plus
- - Minus
* - Multiplikation
/ - Division
% - Modulo
** - Exponent
Kommando1 && Kommando2 - Kommando2 wird ausgefhrt, wenn Kommando1 Exit
Status 0 hat
Kommando 1 || Kommando2 - Kommando 2 wird ausgefhrt wenn Kommando1 Exit Status
=/ 0 hat
ein ! vor einem Kommando verneint den Exit Status
&& - UND
|| - ODER
! - NICHT
case-Anweisung:
oft in Initscripts, zum Starten und Stoppen von Systemdiensten
case Ausdruck in
Pattern1)
Anwesiungen ;;
Pattern2)
Anweisungen ::
...
esac
benutzt man um Switches zu realisieren;
for-Anweisung:
for Name in Liste
do
Anweisung
done
Inhalt der Variable Name durchl?ft alle Elemente der Liste; z.B:
#!/bin/bash
LISTE="Liese Ingrid Stefanie Frauke"
for FRAU in $LISTE; do
echo "$FRAU ist meine Frau.2
done
while- und until-Anweisung (Seite 233): funktionieren analog nur das die until-Schleife
den Anweisungsblock erst ausfrht wenn die Bedingung nicht erfllt ist; while:
while Bedingung
do
Anweisung
done
ein Script das alle 5 Sekunden prft ob eine Modemverbindung existiert und falls
diese zusammengebrochen ist, eine Funktion namens reconnect() ausfhrt:
while ifconfig | grep ppp0
do
sleep 5
done
reconnect()
Die bliche For I:
#!/bin/bash
START=1; STOP=10; STEP=3
for N in `seq $START $STEP $STOP
do
echo $N
done
$N durchl?ft alle Werte von $START bis $STOP in Abst?den von $STEP; zur Kommandosubstitution
werden Backticks () verwendet
Die bliche For II:
#!/bin/bash
START=1; STOP=10; STEP=3
N=$START
while [ $N -le $STOP ]; do
echo $N
N=$[$N+$STEP]
done
$N durchl?ft alle Werte von $START bis $STOP in de Abst?den von $STEP;
::KAPITEL12:: Grundlagen der Security und Logging
eine spezielle Dateiberechtigung = SUID (Set UID)-Bit; das erlaubt
es ein Kommando nicht mit den Rechten des Benutzers sondern mit den Rechten
des Besitzers der Programmdatei aufzurufen; damit z.B: User ihr Passwort ?dern
k?nen ist auf die Datei /usr/bin/passwd das SUID-Bit gesetzt; analog gibts dazu
das SGID-Bit das es erm?licht ein Programm mit den Gruppenrechten des Gruppenbeseitzers
des Programmfiles auszufhren; dann gibts noch das Sticky-Bit damit kann ein
Benutzer, selbst wenn er Schreibrechte in diesem Directory besitzt nur Dateien
schreiben in deren Besitz er sich befindet; fr das /tmp-Directory ist das Sticky-Bit
gesetzt; SUID,SGID und Sticky-Bits k?nen mit 'ls -l' angezeigt werden und mit
chmod ver?dert werden; mit 'chown' und 'chgrp' kann man den Dateibesitzer und
den Gruppenbesitzer ?dern;
das PAM (Pluggable Authentication Module- System) ist eine Sammlung gesharter
Biblotheken die Authentifizierungsaufgaben bernimmt; muss irgendein Prozess
eine Authentifizierung vornehmen (z.B: Login) so nimmt er dafr PAM in Anspruch;
die Konfiguration erfolgt in /etc/pam.d/; der anfragende Prozess fragt bei PAM
wegen einer Authenifikation an und PAm meldet ob diese positiv erledigt wurde;
fast auf allen Linux-Systemen befinden sich die Logfiles in /var/log/ oder /var/adm/
oder /usr/adm/; die wichtigsten logfile ist /var/log/messages; es ist eine ASCII
Datei und kann mit less gelesen werden; Das Logging passiert mit dem Syslog
Daemon syslogd, konfiguriert wird er in /etc/syslog.conf; er nimmt Meldungen
entgegen und schreibt sie gem? einer Konfiguration in verschiedene ateien bzw.
leitet sie weiter;
wichtige Logfiles:
/var/log/messages - Masterlogfile (ASCII)
/var/log/lastlog - letzter erfolgreicher Login
/var/log/secure - erfolglose Logins (ASCII)
/var/log/wtmp - erfolgreiche Logins
/var/run/utmp - derzeit eingeloggte User
syslogDaemon: Facilities: cron,daemon,mail...; Priorieties: debug, info...
Angriffe:
1. Physikalischer Angriff: erfolgt auf der Hardware, ausbau der Festplatte und
Einbau in einem anderen Rechner
2. Lokaler Angriff: das sind Attacken eines Benutzers der einen Account am System
hat; der User k?nte alle Dateien im System lesen, und zwar denen nicht explizit
die Rechte entzogen wurde, z.B: /etc/passwd und kann sich dadurch die Benutzernamen
anschauen; ein Buffer-Overflow ensteht wenn ein Programm/Dienst Benutzereingaben
akzeptiert und die max. Länge von 255 Zeichen überschritten wird,
ein hacker kann dies so ausnutzen indem er den einzugebenen String verlänger
und hinten dran den Befehl:/bin/sh steht und der HAcker plötzlich eine
root-Shell hat; weil für manche Daemonen interpretieren das 256. Zeichen
für ein Kommando und da viele Dienste mit dem SUID-Bit laufen ist das gefährlich;
3. Angriffe aus dem Netz: was ein BufferOverflow wäre oder Internet Dienste
können sich zunutze gemacht werden;
davor kann man sich natürlich schützen: das BIOS Passwort setzen oder
die Bootreihenfolge so ändern das nurmehr die Festplatten gebootet werden
kann, ein LILO-Passwort setzen (das geht in der Datei /etc/lilo.conf und dessen
Rechte sollten auf 600 sein) das hat zurfolge das man keinen Init-Mode manuell
einstellen kann wenn man das Passwort nicht kennt - das alles ist gegen physische
Attacken;
In /etc/lilo.conf:
'restricted'
'password=<password>'
einfügen und Rechte auf 600 setzten danach nurmehr lilo ausfürhen;
Passwörter von Usern können erraten werden wenn sie nicht klug gesetzt
wurden, nicht als root einloggen sondern nur über 'su' und 'sudo' zu root
wechseln; eine root-Shell niemals unbeaufsichtigt lassen!; einen gehackten Rechner
immer neuinstallieren und alle Passwörter ändern; Pseudobenutzer niemals
cron-Jobs auführen lassen; SUID-Programme(Suizid-Programme) die nicht benötigt
werden sofort deinstallieren - das sind Massnahmen zur lokalen Sicherheit
nicht benötigte Dienste stoppen und per chkconfig aus der Liste der Dienste,
die beim Hochfahren des Rechners gestartet werden entfernen - das hilft bei
Angriffen aus dem Netzwerk;
Passwörter sollten min. 8Zeichen haben, kann man in: 'vi /etc/login.defs'
Zeile auf 'PASS_MIN_LEN 8' ändern; auflisten von SUID Programmen: 'find
/ -perm -4000'; su-Befehl nur für Mitglieder der Gruppe wheel erlauben,
in /etc/pam.d/su folgende Zeile eintragen:
'auth required /lib/security/pam_wheel.so group=wheel use uid'
::KAPITEL13:: TCP/IP Grundlagen
Ein Protokol ist ein Satz von regeln und Kommunikationsstandards;
Host= Rechner in einem TCP/IP-basierten Netzwerk; Internet= Netzwerk von TCP/IP
basierten Natzwerken; Gateway/Router= physikalisch an mehrere Netzwerke angebundener
Host; TCP/IP Features: offene, frei zugängliche Standards, hardwareunabhängig,
softwareunabhängig, globales Adressierungssystem; Aufgaben sind in Schichten
(Layers) unterteilt [OSI-Referenzmodell beinhaltet 7 Schichten, doch meist mit
4 Schichten beschrieben]; Daten die im Netzwerk transportiert werden beginnen
in der höchsten Schicht - Application Layer (AL) - und werden mit einem
Header an die darunterliegende Schicht weitergebene; am Ende des Stapels (Stacks)
befindet sich der Network Access Layer (NAL); die Datenpakete werden durch Netzwerk
bis zum Empfängerhost geleitet und dort vom NAL empfangen und entpackt,
und wanderen dann in die jeweils höhere Schicht bis sie wieder beim AL
sind der sie an die Anwendungen weitergibt; der NAl ist der einzige Layer der
Infos über die Details der Netzwerkhardware und die Art des Netzwerkes
benötigt; Die Datenpakete die vom NAL auf das Netzwerk ausgehen heißen
Fragments; Der Internet Layer (IL) kümmert sich um die Datenpaketzustellung,
das wichtigste Protocol im IL ist das Internet Protocol (IP) das für den
Datentransport zuständig ist; die ersten 5 32Bit Worte des Datagrams bilden
den HEader, danach folgen die Daten; der header enthält alle Infos um die
Daten richtig transportieren zu können; die destination Adress im 5.Wort
ist ein 32Bit Nummer die das Zielnetzwerk un den Zielhost festlegt; mit 'traceroute
host' kann man die Route zum entsprechenden Host abfragen, es wird eine Liste
der dabei verwendeten Gateways und der Laufzeit zwischen ihnen ausgegeben; das
IP definiert Datagram als Standard-Übertagungseinheit; Das Internet Control
Message Protocol (ICMP) definiert die Standards für Flusskontrolle, Fehlermeldungen
und wichtige Infosunktionen von TCP/IP; die Echo Message wird vom 'ping' Kommando
ausgenutzt; Der Transport Layer (TL) benutzt das Transport Control Protocl (TCP)
und das User Datagram Protocol (UDP); TCP stellt eine verlässliche Datenübertragung
mit Fehlererkennung und Korrektur zur Verfügung; UDP bietet eine einfache
nicht verbindungsorientierte nicht verlässliche Paketübertragung;
UDP übernimmt vom AL Daten und verpackt sie, im ersten Wort des Headers
stehen Source und Destination Port; TCP übernimmt Daten aus dem AL in der
Form eines Streams; Die Verlässlichkeit der Datenübertragung wird
mittels eines Positive Acknowledgement with Re-Transmission (PAR) hergestellt;
Der Segment Header enthält eine Prüfsumme die es dem Empfänger
ermöglicht festzustellen od die Übertragung korrekt verlaufen ist,
zurück kommt ein positives Acknowledgement, bleibt dieses aber aus überträgt
der Sender das Segment erneut; der AL ist die oberste Schicht und hier ein paar
wichtige Protokolle:
TELNET - Remote Login über ein Netzwerk
FTP - Interaktiver Filetranfer
SMTP - E-Mail senden und empfnagen
SSH - sicherer remote Login
POP3 - E-mail abholen
PRINTER - Netzwerkdrucker
HTTP - WWW
NFS
NIS
NETBIOS - windows Netzwerk Protokoll
DNS - Auflösen von IPs bzw. Hostnamen
Alle Protokolle werden in AL über die Portnummern angesprochen die in /etc/services
definiert sind; die Ports 1-255 sind reserviert (das sind die well-known services)
die Ports von 256-1023 sind Unix specific services und ab Portnr 1024 heißen
sie unprivilegierte Ports (dynamically assigned ports); Im IP werden die Daten
in Form von Datagrams bearbeitet, Jedes trägt im Header eine Source-(Wort4)
und eine Destination-IP(Wort5), Beide sind 32Bit Wörter und identifizieren
sowhol Netzwerk als auch Host von Source bzw. Destination; Welcher Teil des
32Bit Wortes das Netzwerk resp. den Host spezifiziert ist von der (Sub)Netzmaske
abhängig; Klasse A-Netzwerke ist das erste Bit auf 0 gesetzt, die nächste
7 Bits bilden den Netzwerkteil und die restlichen 24 den Hostteil; in Klasse
B-Netzwerken sind die ersten beiden Bits 1 0 die nächsten 14 Bits für
Netzwerk und die letzten 16 Bits für den Hostteil reserviert; Klasse C
Netzwerke werden durch die ersten Bits 1 1 0 bezeichnet, dann folgen 21 plus
4 Bits für den Netzwerk und Hostteil; IPs in Dezimalzahlen geben 4 Blöcke
(zu jeweils 8Byte) mit Einträgen zwischen 0 und 255; weniger als 128 im
ersten Block bedeutet ein Klasse A Netzwerk, ziwschen 128 und 191 ist ein Klasse
B und zwischen 192 und 223 ist ein Klasse C Netzwerk; Die Netzmasken für
Klasse A,B und C sehen so aus: 255.0.0.0, 255.255.0.0 und 255.255.255.0; Ips
mit allen Hostnr. auf 255 bezeichnet alle Hosts im Netzwerk und wird Broadcastadresse
genannt; Host können mit Fully Qualified Domainnames (FQDN) referenziert
werden; FQDN werden vom Domain Nameservice (DNS) in IPs aufgelöst bzw umgekehrt;
eine IP-Adresse besteht aus 32Bit Wort und hat dezimal vier 3erBlöcke mit
Eintragungen von 0 bis 255;
Klasse Adressen
A 0.0.0.0 - 127.255.255.255
B 128.0.0.0 - 191.255.255.255
C 224.0.0.0 - 223.255.255.255
Jedes Netzwerkdevice verfügt über eine in der Harware kodierte MAC
Adresse (eine 12stellige HEX-Nummer); Dem Host sind mittels ARP-Protokoll alle
Harwareadressen im LAN bekannt und so können Frames direkt zugestellt werden;
Jeder Host muss alle Routen kennen; Die Routen können mit dem 'route' Kommando
angesehen bzw modifiziert werden;
::KAPITEL14:: Netzwerkkonfiguration
der Großteil der TCP/IP Konfiguration wird in /etc/sysconfig/network festgelegt; da wird auch festgelegt ob die Netzwerkfunktion aktiviert wird; weiters wird der Hostname und das Stanardgateway konfiguriert; auch der DNS (Domain Name Services) ist wichtig, ist der nicht da kann der Hostname nicht in die IP-Adresse aufgelöst werden; Der DNS wird in /etc/resolv.conf und in /etc/nsswitch.conf konfiguriert; und die Interfacekonfiguration findet in /etc/sysconfig/network-scripts/ifcfg-device statt; mit der search Direktive kann man sich Schreibarbeit sparen weil dann nicht der ganze Pfad (z.B: sirk.mat.univie.ac.at) sondern einfach eine Abkürzung reicht (ssh sirk) das kann man in /etc/resolv.conf festlegt man muss nur 'search mat.univie.ac.at' reinschreiben; /etc/hosts beinhaltet die wichtigsten IP-Adressen (z.B: localhost, eigene IP, häufig benötigte Server..); Treiber und die Netzwerkhardware müssen richtig funktionieren bevor man ein Netzwerkinterface machen kann; alle Dateien zur Interfacekonfiguration unter RedHat befinden sich in /etc/sysconfig/network-scripts, die Konfiguration für ein Interface des Namens device ist in /etc/sysconfig/network-scripts/ifconfig-device festgelegt, dort wird die IP, die Netzmaske, das Netzwerk und die Broadcastadresse eingestellt; dazu kann man festlegen ob das Interface bereits beim booten oder später händisch gestartet werden soll; bei Ethernetkarten einfach 'ONBOOT' auf 'YES' setzen; bei PPP-Devices 'USERCTL=YES' erlaubt alle Benutzern das Interface zu (de)aktivieren; man kann auch das Netzwerkinterface automatisch mit dem Bootprotokoll konfigurieren, z.B: DHCP (Dynamic Host Configuration Protocol), der client sucht eine DHCP-server im LAN, in der Antwort vom Server sind Daten wie IP, Hostname; bei größeren Netzwerken klug; um ein Interface mittels DHCP zu konfigurieren muss in 'ifcfg-device' der Eintrag 'BOOTPROTO=DHCP' stehen; zum aktivieren eines Interfaces benutzt man 'ifconig'; mit 'ifconfig eth0 up|down oder mit ifup eth0 oder ifdown eth0 lässt sich ein Interface aktivieren; 'ifconfig' ohne Parameter zeigt die aktivierten Interfaces an; Alle (ONBOOT=YES) Interfaces können mit /etc/init.d/network start|stop (de)aktiviert werden; zum Testen der Interfaces benutzt man 'ping'; man pingt IPs an und sieht so ob die Verbindung funktioniert; pingen ist ein Frage-Antwort Spiel^^, man pingt zuerst den localhost, die eigene IP, Gateway, DNS Server und dann einen Webserver; mit 'traceroute' kann man den Weg eines Paketes am Rechner zum Ziel verfolgen; Tools zur Überprüfung der korrekten Funktionsweise sind: host und nslookup (z.B: host www.mat.univie.ac.at bekomme ich die IP zurück = 131.130.14.152);
::KAPITEL15:: Internetdienste & Internetdaemonen
Der Clientprozess (zb ssh) wird vom Benutzer am Clienthost gestartet
und versucht eine Verbindung mit dem entsprechenden Serverprozess am Serverhost
aufzubauen; um nicht eine große anzahl an verschiedenen Servern laufen
zu haben wird ein Internetdaemon (Superserver) benutzt - inetd oder xinetd -
er überwacht eingehende Verbindungsanfragen und startet die zuständigen
Serverdaemonen; Services die über den Internetdaemon gestartet werden sind:
telnetd, ftpd, talkd... es gibt auch standalone betriebene Server: sshd, httpd,
sendmail....; in /etc/inted.conf wird der inetd konfiguriert; der xinetd wir
entweder in /etc/xinetd.conf oder in /etc/xinetd.d konfiguriert; um den Zugang
zu verschiedenen Netzwerkdiensten zu kontrollieren wird der TCP Wrapper verwendet;
ist ein Daemon der einen Dienst mittles TCP Wrapper Unterstützung compiliert
ists gut sonst kann man ihn auch extern implementieren (mit dem tcpd-Daemon);
TCP Wrapper: Zugangsbeschränkung für bestimmte Dienste die mit TCP
Wrapper Support übersetzt wurden (sshd sendmail), Zugangsbeschränkungen
für Dienste ohne interenen TCP Wrapper Support über tcpd, Konfiguration
in /etc/hosts.allow|deny, loggen der Anfragen über syslog : /var/log/messages
oder /var/log/secure;
Einfache Internetdienste:
TELNET: Protokoll im AL dient zum Login auf einem Host über das Netzwerk,
Telnetserver heißt telnetd oder in.telnetd und wir vom Internetdaemon
gestartet; 'telnet hostname';
FTP: auch AL-Protokoll und dient dem Transfer von Daten über ein Netzwerk;
ist man per ftp eingeloggt kann man mit 'get remotefile' Dateien herunterladen
und mit 'put localfile' uploaden;
r-Dienste: Remotelogin rlogin (analog telnet), rsh, Remotecopy rcp (Filetransfer,
Syntax ähnlich cp) und Remote Commandexecution rexec; werden über
internetdaemon gestartet;
bieten alle großes Sicherheitsrisiko weil benutzen Klartextpasswörter
-> können belauscht werden - deshalb Secure Shell (ssh) ALProtokol und
telnet und ftp sehr ähnlich; die gesamte Sesscion wird verschlüsselt
übertragen, konfigurieren in /etc/ssh/sshd_config;
::KAPITEL16:: NFS und NIS
Remote Procedure Call (RPC) besteht aus einer Bibliothek und
ermöglicht Procedure Calls an entfernte Hosts in einem Netzwerk zu senden;
ist ein systemunabhängiges Protokoll für Prozesskommunikation übers
Netz; benötigen einegene Dienst: portmap und rpcbind sollten am System
laufen; 'rpcinfo' welche RPC-Services ein Host anbietet;
Network File System (NFS)
ein Netwzerkdienst der RPC verwendet; NFS ermöglicht mounten von Dateisystemen
über ein Netzwerk; NFS nur Administrator vorbehalten und es gibt eine Automatisierung
des mount Kommandos (automount und amd); NFS ist transparent, kann auf Daten
des Servers genauso zugreifen wie auf lokale Dateien und der Server speichert
keine Zustandsinfos über die angebundenen Clients; Mountprotokol und Mountdaemon
(rpc.mountd) sind wichtig; NFS-Support sollte im Kernel eincompiliert sein,
Überprüfung mit 'cat /proc/filesystems'; am Server muss konfiguriert
werden welche Teile des Verzeichnisbaums freigegeben (exportiert) werden und
auf Client und Server muss portmapDaemon laufen; die Vorteile von NFS sind das
sparen von Speicherplatz und ich hab dann gleiche Homedirectories im ganzen
Netzwerk; NFS Daemon (nfsd - vermittelt Datenzugriff) und Mountdaemon (rpc.mountd
- überprüft Berechtigung) sollen erst nach dem portmapDaemon gestartet
werden; NFS und Mountdaemon werden pber ein Initscript gestartet (/etc/init.d/nfs);
die NFS exports werden in /etc/exports konfiguriert; rpc.mountd entscheidet
ob die einkommenden Mountrequest berechtigt sind oder nicht, es schaut dazu
in den exports nach; ist ein NFS Verzeichnis gemountet kann man auf alle unterliegenden
Dateien zugreifen;
/etc/exports: wichtige Sachen
secure - der Port von dem die Anfrage kommt muss <1024 sein
insecrue - Gegenteil von secure
ro - nur Lesezugriffe auf das Verzeichnis sind möglich
rw - Schreib und lesezugriff
root_squash - übersetzt die UID 0 - also root - auf nobody
NFS Mounts können mit 'showmount' gezeigt werden, die Option -a zeigt alle
Verbindungen im host:verzeichnis Format, -d zeigt alle exportierenden Verzeichnisse
an; 'exportfs' dient zur Wartung der NFS -Exports; gibts Änderungen in
/etc/exports muss man mit 'exportfs -r' diese Änderung an den NFS weitergeben
werden; (Seite 363) rpc.ugidd - übersetzt die UIDs zwischen Server und
den Clients (ist ein Daemon); Will man auf einer lokalen Workstation das Verzeichnis
/nethome vom Server dukana auf den Mountpoint /users zu mounten macht man das
so: mount -t nfs dukana:/nethome /users; Automatisch mounten geht mit den Programmpaketen
automount und amd; die mounten nur solnage es gebraucht wird, auch für
Floppy und CDrom, einfach konfigurierbar und stabil;
Mountoptionen:
rsize=n und wsize=n - Größe der Datenblocks beim Lesen/Schreiben
timeo=n - Timeout in 1/10 Sek angegeben
hard - warten bis Server antwortet
soft - gibt nach timeout einen Fehler zurück
intr - erlaubt es den Verbindungsuafbau wieder abzubrechen
Network Information Service (NIS)
ist ein administartive Datavbase System das es ermöglicht Systemdaten eines
Servers über ein Netzwerk für Clients verfügbar zu machen; Meistens
dazu verwendet die 3 Dateien /etc/shadow /etc/group und /etc/passwd eines Servers
über ein netzwerk zu verteilen und so einheitliche Accounts in einer sogennaten
NIS-Domäne zu definieren; NIS Dateien befinden sich in /var/yp/; Jedes
Mal wenn man Änderungen an den NIS exportiereten Dateien vornimmt muss
man nach /var/yp/ wechseln und 'make' ausführen; am client muss der ypbind
und am Server der ypserv gestartet werden; der ypbind wird in der Datei /etc/yp.conf
konfiguriert die so aussieht: domain meine.nis.domain server mein.nis.server;
alle NIS Server müssen in /etc/hosts eingetragen werden und müssen
eine NIS Domänename gesetzt haben; in RedHat in /etc/sysconfig/network
mit dem Eintrag NISDOMAIN=meine.nis.domain konfigurieren; der YP-Server wird
durch mehrere Dateien konfiguriert, in /ect/yp.conf gibts eine globale Einstellung;
in /var/yp/securenets ist eingetragen welche Hosts berechtigt sind die Maps
zu verwenden; Benutzer können ihre Passwörter mit yppasswd ändern
aber dafür muss am Server der yppasswdd Daemon laufen;
Master Server: /usr/lib/yp/ypinit -m; hier initialiesiert man die Domäne
und erstellt die zur Domäne gehörigen Dateien (Maps) und startet die
Server, Welche Maps installiert werden wird in /etc/ypserv.conf festgelegt;
Dann müssen in der Datei /var/yp/securenets die IPs der Clients eingetragen
werden damit diese vom Server in der Domäne akzeptiert werden, bei einem
NIS Server muss immer der Clientprozess ypbind laufen, dann noch den yppasswdddaemon
starten;
Slave Server: Der einzige unterschied zum Master Server ist die Option -s :
/usr/lib/yp/ypinit -s master_der_domain
Clients: es genügt /etc/yp.conf zu konfigurieren und ypbind zu starten;
NIS verwenden: Dateien in /var/yp, nach änderung dort 'make' aufrufen;
portmap am Client und am Server starten; Client Konf in /etc/yp.conf und fürn
Server in /etc/ypserv.conf und in /var/yp/securenets;
NIS Domäne erstellen: 'nisdomainname' setzten; Master-Server: ypinit -m,
portmap,ypserv,ypclient,yppasswdd starten; Slave-Server:ypinit -s master, Services
wie vorher; in /var/yp/securenets Clients eintragen; Clients: /etc/yp.conf konfigurieren,
portmap und ypbind starten
::KAPITEL17:: FTP-WEB-und Mailserver
FTP erlaubt das Herunterladen bestimmter öffentlicher Daten
z.B: Programmpakete, Dokumente oder Musikdateien; doch ists unsicher da das
Passwort das der User eingibt unverschlüsselt über eine Datenleitung
geht und gelsen oder gesnifft werden kann; sicherer als ftp sindncftpd und proftpd;
proftpd: muss aus dem Internet heruntergeldaen werden; Konfigurationsdatei in
/etc/proftpd.conf; kann als standalone Server laufen oder vom Internetdaemon
gestartet werden; Konfiguration: ServerName - zeigt beim einloggen am Server
den eingestellten Namen, ServerType - gibt an ob er durch (x)inetd oder als
standalone gestartet wurde; Timeouts regeln den automatischen disconnect, LsDefaultOptions
- legt fest dass z.B: immer ein langes Listing bei ls benutzt wird, MaxInstances
- die max Anzahl an Prozessen für den FTP Server, User und Group - legt
fest unter welchem Benutzer der FTP_Daemon laufen sollen;
'ftpwho' zeigt Infos wer gerade üer FTP da ist; 'ftpcount' zählt die
gesamten per FTP eingeloggten User; 'ftpshut' FTP Server deaktivieren;
Apache Webserver:
HTTP-Service wird von Webservern bereitgestellt; ist ein Server für www-Hypertext-Dokumente,
verwendet HTTP-Protokolle, sendet: Text,Grafik, Sound... an Client (Brwoser);
für gängige Platformen: Unix,NT,Mac,OS/2...); erweiterungen: php,Java-Servlets;
ist als rpm erhältlich; Daemon: /sbin/httpd; Initscript: /etc/init.d/httpd;
Konfigurationsdateien: /etc/httpd/conf/; Logfiles: /var/log/httpd/; meistens
wird der Apache als standalone Server betriben und mit /etc/init.d/httpd gestartet;
wichtigsten Einstellungen in der Datei httpd.conf manchmal befindet sie sich
in /etc/; installieren mit: rpm -ihv apache.sowieso.rpm; starten mit: /etc/init.d/httpd
start; wichtige Konfigurationsdirektiven: UserDir - bezeichnet den Namen des
Standard Verzeichnises, in dem die User ihre Homepages ablegen können;
ErrorLog - Fehlerlogfile /var/log/httpd/error_log; Moudule müssen in dynamische
Webseiten eingebunden; Basiskonfiguration: /etc/httpd/conf/httpd.conf;
Mailerdaemon sendmail läuft auf Port 25 und nimmt Daten von einem Netzwerkclient
entgegen die dem Format des SMTP (Simple Mail Transfer Protocol) entsprechen;
Funktionsweise: Verfasser (Alice) schreibt an Empfänger (Bob): Alice öffnet
Email Prog und schreibt Nachricht plus Empfängeradresse, dann drückt
sie versenden, Text wird verpackt mit einem Header versehen und geht auf Reisen;
eine Netzwerkverbindung auf Port 25 des Empfängers wird geöffnet und
die Email wird auf den Zielrechner übertragen, übergibt dann die Message
dem LDA (Local Delivery Agent) der die email in das System-Mailverzeichnis (/var/spool/mail/)
schickt; ein LDA ist z.B: procmail - der überprüft auf Viren oder
SPAM, Bob loggt sich ein und lädt sich die Mail mittles des POP3 oder IMAP-Protokolls
vom Server runter; sendmail Konfiguration in /etc/mail/sendmail.mc; Zugriffsteuerung
in /etc/mail/access; Empfängernamen definiert in /etc/aliases; man auch
mit sendmail von der Kommandozeile emails verschicken: echo "Hallo"
| sendmail martin@mat.univie.ac.at; ein Hilfsprog wäre: mailq;
::KAPITEL18:: Netzwerksicherheit
Angreifer aus dem Netz nutzen bekannte Fehler der Serversoftware
aus; auch Internetwürmer sind gefährlich, das sind autark handelnde
Programme die versuchen mit einprogrammierten Angriffen PCs zu knacken sich
auf diesen einzunisten und von dort aus weiterzuverbreiten; regelmäßige
Updates (täglichen cronJob) schützen; Protokolle/Programme die die
Passwörter im Klartext verschicken: Telnet,FTP,POP,HTTP,SMB; doch man kann
auf ähnliche sichere Protokolle wechseln -> Telnet-Ssh, FTP-SFTP, HTTP-HTTPS;
niemals nicht benötigte Dinste laufen lassen; mit 'netstat' oder 'lsof'
überprüfen; Ein Portscanner versucht im wesentlichen nichts anderes
als sich auf allen möglichen Ports mit seinem Ziel zu verbinden und meldet
dann auf welchen Ports dies möglich war; Portscan nur auf eingenen Rechner
drüberlaufen lassen; verbreitester Portscanner - nmap; Werkzeug zur Untersuchung
von PCs: nesses - erstellt Verbindung zu allen Ports zu öffen und versucht
festzustellen welcher Dienst hinter einem Port zu finden ist;
eine Firewall ist ein Schutz vor unerwünschten Zugriffen und Angriffen
aus dem Netz, 2 Grundtypen von Firewalls: 1.Proxy Server, 2.Paketfilter; Schema:
I...PC innerhalb der Firewall, F...Firewall und A..PC außerhalb der Firewall;
Proxy Server:
Ist ein netz via Proxy Server an das Internet angebunden so besteht für
I keine Möglichkeit eine direkte Verbindung zu A aufzubauen; da gibts dann
2 Verbindungen und zwar von I zu F und von F zu A; wieder in 2 Typen unterteilt:
1.Application Proxy, 2.SOCKS Proxy; Application Proxys (squid) können nur
Web und FTP-Traffic verarbeiten; SOCKS Proxys (dante) arbeiten auf der Schicht
von TCP und UDP, verstehen die Protokolle des Application Layers nicht;
Paketfilter:
Der Paketfilter auf F liest den Datenverkehr auf verschiedenen Protokollschichten
mit und entscheidet ob das Datenpaket weitergeleitet oder verworfen wird; Ein
Paket durchläuft verschiedene Chains von Rules; 3 Chains heißen:
INPUT, OUTPUT und FORWARD Chain; Ein Paket das vom rechner I oder A kommt und
zum Rechner F will durchläuft die INPUT Chain, Ein Paket dass am Weg von
I nach A die Firewall F trifft durchläuft die FORWARD Chain, Ein Paket
dass von F nach I oder A geht durchläuft die OUTPUT Chain; Ein Paket das
versucht diese Chain zu durchlaufen wird der Reihe nach mit diesen Rules verglichen,
entspricht ein Paket in allen Punkten einer Rule so wird das zu dieser Rulegehörige
Target auf das Paket angewendet; Targets können selbstdefinierte Chains
sein; trifft keine RUle zu wird das Paket abgelehnt; zum einfügen einer
neuen Rule: 'iptables -A Chain', 'iptables -I Chain [number]' eine Rule in eine
bestimmte Zeile einfügen, 'iptables -P Chain target' Policy einer Chain
gesetzt; mit der '--state' Option kann man Pakete behandeln die zu einer existierenden
Verbindung gehören; Targets:
Target
ACCEPT - Paket akzeptiert
DROP - Paket verworfen
REJECT - Paket verworfen, doch Meldung an Sender mit "port unrechable"
gesendet
iptables Optionen Seite 437 !
iptables schreibt die Chains direkt in den Kernel rein und bei reboot gehts
verloren; iptables in ein Startscrpt schreiben; ein Shellscript schreiben und
in /etc/sysconfig/iptables.sh speichern; am ende des Scripts sollte die Zeile
stehen: 'iptables-save > /etc/sysconfig/iptables', beim auführen des
Scripts bewirkt diese Zeile dass die aktuellen Regeln in die Datei /etc/sysconfig/iptables
gespeichert werden von wo sie das script /etc/init.d/iptables beim booten einliest;
Masquerading (Source NAT) Seite 441 !
'iptables -t nat -L' Auflistung von 3 bestimmten Chains (PREROUTING, POSTROUTING
und OUTPUT)
Portforwarding: Auf der Firewall laufen keinerlei Dienste ausser SSH, der webserver
läuft auf I im masquierten Netz, F fragt an auf Port 80 so wird diese Anfrage
zu I weitergeleitet, die antwort von I leitet F zurück an A - dieses Verfahren
ist Portforwarding oder DNAT (Destination Network Address Translation) der anfragende
PC A hat dabei den Eindruck mit F zu kommunizieren;
eine Firewall schützt nicht für Viren die über emails oder vom
Web gedownloaded werden, sie schützt vor Zugriffen aus aussen;
su (Switch User) - User wechseln
passwd username - Passwort ?dern
chsh - Loginshell ?dern
chfn - GECOS Feld ?dern
finger - Benutzerinfo abfragen
groups - Gruppenzugeh?igkeit abfragen
newgrp - Gruppenlogin
vipw/vigr - sicherer editier Aufruf fr Shadowdatei
[useradd/userdel/groupadd/groupdel] username - erstellt/l?chen User/Groups
usermod/groupmod - ?dert die Konfiguration eines Accounts
rpm -i|U|F[hv] Paketdatei [Optionen] - -i|U|F = install,upgraden,freshen
Optionen: -v (verbose)
-h (has) - zeigt den Verlauf an mit #
-test,--nodeps,--rpelacefiles,--replacepkgs,
--oldpackage,--force,--noscripts
rpm -e Paketname [Optionen]
ACHTUNG: Paketname = joe, Paketdatei: joe-2.8-40.i386.rpm
Optionen: --allmatches - alle Versionen
rpm -q Paketname [Optionen]
Optionen: -a - alle installieretn Pakete, -i - Paketinformation
-l - alle Daten im Paket, -d - Dokumentationsfiles
vom Paket, -c - Konfiguartionsfiles des Paketes
-f file - zu welchem Paket file geh?t
-p Paketdatei - fr nicht insatllierte Pakete
rpm -V Paketname [Optionen]
Optionen: -f file - verifiziert file
-a - verifiziert alle installierten Pakete
-p package-filename.rpm - verifiziere gegenber
package-filename.rpm statt Datenbank
fdisk - erstellt Partitionen
mkswap /dev/hdxy - legt (formatiert) einen Swapspeicher an
swapon /dev/hdxy - aktiviert den Swapspeicher
swapoff /dev/hdxy - deaktiviert den Swapspeicher
mkswap swapfile - verwandelt es in eine Swapfile
swapon swapfile - aktiviert Swapfile
ps - zeigt laufende Prozesse
ps aux - zeigt sie geordnet nach PID
pstree - Prozesshirachie
top - periodisch akualisierende Statistik der Prozesse
free - Speicherstatisik
vmstat - zeigt Infos zum Virtual Memory System an
uptime - zeigt die Zeit die seit dem letzten Systemstart vergangen ist an
und die Systemlast
crontab -e - editieren der crontab in der Kommandozeile
crontab -l - listet alle Eintr?e
crontab -r - l?cht die gesamte Datei
at -f script zeit - fhrt ein script zu einer bestimmten Zeit aus
at -l - listet den at-Queue auf
atq - listet den at-Queue auf
at -d jobnr - l?cht die Auftr?e
atrm jobnr- l?cht die Auftr?e
lpr -P Queue file - drucken (mit Angaben ber die Queue)
lpr filename - druckt
lpq - listet die Warteschlange auf
lprm jobnr - l?cht die Druckauftr?e
export PRINTER=queue - Stanarddrucker festlegen
lpc - zeigt sau viel an...(Druckerstatus,und etliches weiter...)
lpc [Optionen] [Kommando [Argument]]
Optionen: -P Queue, -a=-P all
Kommando: start, stop, status, redirect, topq, lprm
fdisk - Partinonieren
mkfs [-t FsType] [FsOptions] Device - macht ein Filesystem
mount [-t FsType] Device Mountpoint - mountet
umount Ger? - unmounten
umount Mountpoint - unmounten
fuser, lsof - zeigen Prozesse die Filesystem verwenden
df (Display Filesystem) - ziegt gemountete Medien + Benutzung
less /etc/mtab - gibt Auskunft ber gemountete Medien
ls -ail - zeigt versteckte,Inodenr und eine lange Liste
fsck - prft Dateisystem auf Fehler und behebt sie
du - zeigt Gr?e von Files/Directories
tune2fs -j /dev/Ger? - umsteigen von ext2 auf ext3
mke2fs -j /dev/Ger? - ein neues ext3 Dateisystem einrichten
uname -r, dmesg | head -1 - zeigen Versionsnr des Kernels
lsmod - listet Module
insmod, modprobe - laden von Modulen
rmmod - entfernt Modul
zcat patch-2.4.3.gz | patch -p0 - Patches einspielen
make config,make menuconfig,make xconfig - Kernelkonfiguration
chsh (change shell) - wechselt shell
export VARIABLENNAME - Varibalen exportieren
read VARIABLENNAME - interaktiv einlesen
chmod u=s - setzt SUID-Bit
chmod g=s - setzt SGID-Bit
chmod o=t - setzt das Sticky-Bit
w - wer ist eingeloggt und tut as
who - wer ist eingeloggt
last - wer wann das letzte Mal eingeloggt war
lastlog - Letztes Login aller User
tail -f file - zeigt die letzten 10 Zeilen des Files und neuen Input
find / -perm -4000 - auflisten SUID Progs
ifconfig - zeigt die aktivierten Interfaces an
ping IP-NR - pingt den Rechner an (schickt ein Signal hin und der zurück)
route - setzt Routen zu den Netzwerken
traceroute IP-Nr - verfolgt Weg eines Paktes
host www.xyz.com - gibt IP von ww.xyz.com zurück
arp - zeigt alle Hardware Adressen im LAN an
telnet hostname - telnet Verbindung
ftp radon - verbindet zu radon
[nur wenn schon ftp]get remotefile - downloadn
[nur wenn schon ftp]put localfile - uploadn
ssh user@host - loggt mit ssh ein
ssh -l user host - loggt mit ssh ein
scp user@host:sourcefile destinationfile - Filetransfer
sftp user@host - Filetransfer interaktiv
rpcinfo - welche RPC-Services ein Host anbietet
showmount - zeigt alle NFS mounts
mount -t nfs [optionen] nfs_quelle lokale_verzeichnis - nfs mounten
ftpwho - zeigt Infos wer gerade üer FTP da ist
ftpcount - zählt die gesamten per FTP eingeloggten User
ftpshut - FTP Server deaktivieren
netstat - listet Dienste auf
lsof - listet Dienste auf
iptables -A Chain - einfügen einer neuen Rule
iptables -I Chain [number] - eine Rule in eine bestimmte Zeile einfügen
iptables -P Chain target - Policy einer Chain gesetzt
iptables -t nat -L - Auflistung von 3 bestimmten Chains
/etc/inittab - bestimmt das Verhalten des Initprozesses
/etc/passwd - Passwortdatei
/etc/group - Gruppendatei
/etc/shadow - Shadowdatei (zeigt pw - only for root)
/etc/shells - zeigt alle m?lichen Shells die zur verfgung stehen
/etc/login.defs - legt die Defaultwerte fr die Usererstellung fest
/var/spool/mail - da liegt die mailbox des Benutzers
/etc/crontab - globale cron Konfigurationsdatei
/var/spool/cron - zum direkten editieren der cron Datei - aba nicht klug
/etc/{cron|at}.{allow|deny} - verbietet/erlaubt Eintr?e zu machen
/etc/mtab - dort werden die mount Kommandos dokumentiert
/etc/services - Portnummern sind dort definiert
/etc/ssh/ssh_config - Konfigurations von ssh Client
/etc/ssh/sshd_config - Konfigurations von ssh Server
/proc/filesystems - kann mir sagn ob NFS im Kernel eincompiliert ist
/etc/exports - konfiguriert die NFS Exports