Linuxkurs Wintersemester 09/10 ASICT09 Hannes Kasparick hannes @ kasparick . com 1 Über mich ■ ■ ■ 2003 bis 2006: Computer- und Mediensicherheit 2006 bis 2008: Sichere Informationssysteme Diplomarbeit: Data Leakage Prevention (DLP) Seit September 2008: Leiter IT-Services Abteilung Firma Count IT Group / WURM und Partner ■ ■ Leidenschaft: 2 Agenda ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ Geschichtliches Basics Installation von Debian Linux Remotemangement - SSH Grundlagen Paketmanagement Umgang mit der Konsole – Bash Grundlegende Rechteverwaltung vi – ein Editor Wichtige Tools Netzwerkkonfiguration 3 Buchempfehlung ■ Michael Kofler: Ubuntu Server ■ O'Reilly - LPI Linux Certification in a Nutshell 2nd Edition ■ O'Reilly – Linux System Administration ■ http://www.galileocomputing.de/openbook/linux/ OpenBook frei verfügbar 4 Was ist Linux? ■ ■ Linux ist nur der Kernel = Betriebssystem Außen herum GNU Tools ■ Viele kleine Tools die wenige Aufgaben beherrschen „eierlegende Wollmilchsau“ eher selten Distributionen traditionell: RedHat ➔ SUSE (Novell) ➔ Slackware ➔ Debian – mit diesem System werden wir arbeiten ➔ jünger: Gentoo ➔ Ubuntu ➔ 5 Distributionen – Was ist das? ■ GNU / Linux kann komplett frei aus dem Internet bezogen werden ■ mühsames kompilieren der Programme „Linux from Scratch“ Distributionen stellen lauffähiges System zur Verfügung reduzieren Aufwand stellen Konfigurationstools bereit (z.B. YAST) bringen große Menge Programme mit 6 Warum Linux? ■ ■ ■ Weite Verbreitung – große Community Bester Hardwaresupport der freien Systeme Frei im Sinne von Freiheit – nicht von Freibier Quelltexte verfügbar Support kostet natürlich auch hier (Enterprise Distributionen) Benutzerfreundlich im Vergleich zu traditionellen Unixen ■ Stabil, performant ■ Kostengünstig ■ Keine Virenproblematik ■ 7 Warum Linux nicht? ■ ■ ■ ■ Linux ist nicht besser als... TCO nicht unbedingt geringer als bei... Linux ist nicht sicherer als... Linux hat nicht das „coolste“ Maskottchen ;-) ■ es gibt einige Gründe gegen Linux, aber das soll nicht Thema dieser Lehrveranstaltung sein 8 Geschichte von Linux 1983: GNU Projekt Richard Stallman mit Ziel eines Unix ähnlichem Posix Kompatiblen OS ■ Anfang 1990er noch nicht vollständig ■ 1991: Linus Torvalds beginnt mit Entwicklung von Linux ■ 1993: Linux wird von Torvalds unter GPL Lizenz gestellt ■ 1994: Version 1.0 frei gegeben ■ 1996: Pinguin als Maskottchen ■ 2001: 2.4er Kernel ■ 2003: 2.6er Kernel ■ ■ Heute: 2.6.30 (www.kernel.org) Richard Stallman Linus Torwalds http://nixedblog.thenixedreport.com/__oneclick_uploads/2007/11/gldt76.png 9 Weitere freie Unix Systeme ■ BSD Derivate FreeBSD OpenBSD NetBSD Dragonfly, PC BSD usw. ■ BSD Lizenz freier als GPL ■ GNU / Hurd ■ Kernel des GNU-Projekts Wird zusammen mit „Duke-Nukem forever“ erscheinen Open Solaris Mit starkem Einfluss von Sun Microsystems 10 Fragen 11 Basics / Grundlegendes 12 Dateiorganisation ■ ■ ■ Hierarchisch (wie jedes Moderne OS) keine Laufwerksbuchstaben „everything is a file“ ■ gemeinsames Wurzelverzeichnis / ■ ■ Dateien & Ordner Hardware-Geräte (/dev/...) engl: „Rootverzeichnis“ Groß- / Kleinschreibung ist relevant! Character Set wichtig, da nicht durchgehend UTF8 verwendet wird (Gegensatz zu Windows) 13 Demo „Everything is a file“ ■ Festplatten lassen sich z.B. direkt mit einem Hexeditor öffnen und bearbeiten: 14 Verzeichnisse / Wurzelverzeichnis, Root /bin /boot /dev /etc /home /lib /proc /root /sbin /tmp /usr Systemprogramme zum Booten Benötigtes (z.B. Kernel) Gerätedateien Konfigurationsdateien Daten der Benutzer System- / Programmbibliotheken Informationen von / für Kernel Daten des Superusers root Programme temporäre Daten Unified System Ressources /var veränderliche Daten /share/doc /src /log /spool Anleitungen, Hilfedateien Ablage für Quellcode Logfiles Druckaufträge, Mails... 15 Dateinamen ■ ■ Länge von Dateinamen: 255 Zeichen Erlaubte Zeichen: alle außer „/“ Vermeide Sonderzeichen! ■ Unterschied zwischen Groß/Kleinschreibung ■ Bedeutung eines Punkt im Namen: am Anfang: „versteckte“ Datei ➔ Teil des Namens für bessere Lesbarkeit ➔ .htaccess praesentation.asict.2009 zeigt Dateityp an, Dateiendung wie in Windows ➔ .txt .pdf usw. 16 Dateinamen ■ ■ Programme enden nicht auf .exe Endungen prinzipiell nebensächlich Verknüpfung zu Anwendung wird anhand der ersten Bytes bestimmt (magic number) z.B: jgp-Bilder: 0xFFD8FF 17 Das /proc Pseudodateisystem ■ Informationen über laufende Prozesse ■ Informationen über den Kernel ■ - Versionsnummer /proc/cpuinfo /proc/meminfo Einstellungen für den Kernel ■ /proc/version Informationen über das System ■ /proc/PID/cmdline - Kommandozeile /proc/sys/net/ipv4/tcp_syncookies - Syncookies Vergleich Anzahl Prozesse aus /proc mit „ps“ ls -d /proc/* | grep [0-9] | wc -l; ps ax | wc -l 18 mounten ■ ■ Einhängen von Devices in den Dateibaum mount /quelle /ziel ■ Hardlink, mounten eines Verzeichnisses an mehreren Stellen ■ mount --bind /mnt/ftp_public /home/ftp/public Windows Freigabe mounten ■ mount /dev/sda1 /mnt/sda1 mount -t cifs -o username=abc,password=abc //ip.adresse/freigabe /ziel/pfad unmounten umount /mountpoint umount -l /mountpoint (für in Verwendung befindliche MPs) 19 Linux ist ein Mehrbenutzersystem Mehrere Benutzer können gleichzeitig angemeldet sein ■ Rechteverwaltung ■ Strenge Trennung zwischen Benutzern und Gruppen Ein Superuser root ➔ Hat alle Rechte (wie „system“ unter Windows) ➔ ■ Unterstützt Access Control Lists (ACLs) 20 Wissenswertes Linux / Unix ursprünglich für Entwickler gedacht, Endbenutzer erst seit kurzem Ziel ■ Keine Rückmeldung ist meist positiv ■ Fehlermeldungen lesen – oft ergeben sie Sinn ■ Wenn nicht, Suchmaschinen helfen weiter Kaum „Selbstschutz“ des Betriebssystem vor falscher Bedienung ■ Programme fragen selten ■ ■ erwarten Parameter Extreme Konfigurierbarkeit „Gefrickel“ 21 Wissenswertes ■ Keine Registry ■ Konfiguration in Textdateien (oft /etc) Dadurch diverse Vor- und Nachteile GUI nicht bestandteil des OS GUIs sind normale Programme Windows 2008 Core Server am ehesten vergleichbar, aber auch hier mehr grafische Elemente 22 Wissensquellen ■ ■ ■ http://www.debiananwenderhandbuch.de http://wiki.debian.org http://wiki.debianforum.de ■ http://www.tldp.org 23 Abkürzungen ■ ■ ■ ■ ■ ■ ~/ [optional] * | & ^ Homeverzeichnis Optionale Parameter beliebig viele Zeichen oder und Strg-Taste In diesen Folien grün = Konsolenbefehl z.B. date 24 Fragen 25 Kurzeinfühung VMware VMware Bedienung zeigen 26 Installation ■ ■ ■ Freies System seit 15 Jahren Gute Dokumentation Wird in kritischen Infrastrukturen verwendet ■ ■ ■ ■ Große Verbreitung, große Community Lange Historie Keine Firma im Hintergrund Textbasierte & grafische Installation Warum genau Debian? Paketmanagement Ich habe die meiste Erfahrung mit Debian http://www.debian.org 27 Installation Debian installation_debian.pdf 28 Fragen 29 Debian Grundlagen 30 Neue Programme installieren Paketverwaltung ■ ■ ■ aptitude – wichtigstes Tool dpkg – antik, aber unverzichtbar apt-get – ähnlich wie aptitude, keine gui ■ veraltet, Einstatz nicht mehr empfohlen! http://www.debiananwenderhandbuch.de/paketmanagement.html 31 Aptitude Grafische Oberfläche: einfach aptitude in der Konsole eingeben ■ Bedienung praktisch selbsterklärend, auf Hinweise im oberen Bildschimbereich achten ■ aptitude install packetname ■ aptitude remove packetname ■ aptitude reinstall packetname ■ Spezialbefehl zum reinstall inkl. Configs: ■ aptitude -oDPkg::Options::="--force-confmiss" reinstall PAKETNAME ■ Paketübersicht: http://packages.debian.org 32 Aptitude Oberfläche 33 Verwendung des Paketmanagers ■ ■ Konfiguration passiert in /etc/apt/sources.list Beispiel: deb http://ftp.debian.de/debian/ etch main contrib non-free deb http://security.debian.org/ etch/updates main contrib non-free Paketliste aktualisieren: aptitude update ■ Pakete updaten (wenn updates vorhanden) aptitude safe-upgrade veraltet: aptitude upgrade ■ 34 Remotelogin ■ Arbeiten in VMware Konsole unkomfortabel ■ Lösung: ■ Langsam Kein Copy & Paste Mausbewegungen eingeschränkt Remotezugriff per SSH (Secure Shell) Womit unter Windows? Putty Alternativen: gibt’s sicher auch... 35 Putty ■ Putty original ■ http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Portaputty http://socialistsushi.com/2005/11/17/portaputty 36 Putty 37 Fragen 38 Übung 2 putty.pdf 39 Crashkurs Konsole – Die Bash ■ Die wichtigsten Kürzel ■ Befehl / Pfad vervollständigen: Tab letzte Befehle: Pfeiltasten (auf / ab) „hängende“ Konsole wieder holen: STRG+c An den Anfang springen: Pos1 oder STRG+a An das Ende springen: ENDE oder STRG+e Erweiterte Features Befehlshistory durchsuchen: STRG+r <befehl> !$ : nimmt Parameter des letzen Befehls ls -al /etc/network/interfaces ➔ vi !$ ➔ öffnet /etc/network/interfaces Programm in den Hintergrund schicken: Strg+z ➔ Mit fg wieder in den Vordergrund holen 40 Wichtige Befehle ■ ls zeigt Verzeichnisinhalt an (wie „dir“ in Windows) nützliche Optionen -l ➔ -a ➔ -h ➔ ■ detaillierte Ausgabe auch versteckte Dateien anzeigen human readable, Größen in Mbyte usw. cd – Verzeichnis Wechseln cd .. cd /home/thorben cd thorben cd cd cd ../../var/log Überverzeichnis absoluter Pfad relativer Pfad zurück zum letzen Verz. ins Homeverzeichnis zwei Ebenen hoch... 41 ■ ■ ■ ■ ■ ■ pwd mkdir rmdir cp mv rm ■ ■ ■ ■ ■ ■ ■ ■ rm -rf cat ln -s whoami df -h who passwd exit touch Wichtige Befehle gegenwärtiges Verzeichnis Verzeichnis erstellen (leeres) Verzeichnis löschen kopieren verschieben / umbenennen löschen (es gibt keinen Papierkorb!) bei Verzeichnissen Datei ausgeben symbolischen Link erstellen wer bin ich? freien Speicherplatz anzeigen wer ist gerade eingeloggt - Passwort setzen verlassen / logout (STRG+d) Datei anlegen / Zeitstempel setzen 42 Befehls- und Ausgabeumleitung ■ manchmal will man die Ausgabe eines Befehls in eine Datei oder wo anders hin umleiten ■ manchmal will man die Eingabe eines Befehls aus einer Datei lesen ■ manchmal will man die Ausgabe eines Befehls an einen Anderen füttern ■ Mit Linux geht das ganz leicht... (mehr oder weniger auch in Windows...) 43 Ein paar Unix-Internals ■ 3 Standard-Filedescriptoren Standardeingabe: stdin ➔ Standardausgabe: stdout ➔ meist Tastatur meist Bildschirm Standardfehlerausgabe: stderr meist ebenfalls Bildschirm ➔ Trennung im Hinblick auf Umleitung sinnvoll ➔ ■ sind durchnummeriert STDIN 0 STDOUT 1 STDERR 2 44 Standardfiledescriptoren sind automatisch offen / vorhanden viele Funktionen greifen automatisch auf diese zu ■ Filedescriptoren können fast beliebig umgeleitet werden ■ ■ in Dateien an andere Programme Vorteil: ➔ Kommandos potentiell einfacher, da sie nur von stdin lesen können müssen und nur an stdout ausgeben müssen 45 Ausgabeumleitung Ergebnis wird in Datei geschrieben, nicht auf Terminal ■ Umleitung erfolgt durch „>“ bzw. „>>“ ■ ■ „>“ fängt neue Datei an „>>“ hängt an Bestehendes an kommando > dateiname cat /etc/fstab > /tmp/fstab.kopie 46 Eingabeumleitung ■ ■ ■ Programm liest aus Datei, nicht von der Tastatur Umleitung erfolgt durch „<“ kommando < dateiname more < /etc/fstab 47 Umleitung der Fehlerausgabe ■ ■ ■ Fehlermeldungen in Datei schreiben Umleitung erfolgt durch „2>“ kommando 2> dateiname ■ Kombinationen kommando < eingabedatei > ausgabedatei 2> fehlerdatei kommando > datei 2>&1 ➔ Standard- und Standardfehlerausgabe in datei 48 Spezialziele ■ ■ Wiederholung: Everything is a File Spezialziele: ■ /dev/null - schwarzes Loch für arme Bits /dev/zero /dev/random /dev/urandom - lauter Null-Bytes (0x00) - Zufallsbytes - weniger zufällig diverse andere Gerätedateien Umleitung direkt auf Geräte möglich ➔ cat /dev/zero > /dev/sdb1 49 Pipes ■ Pipes verbinden Ausgabe eines Programms mit Eingabe eines anderen Programms über temporären Puffer ■ mehrere Befehle können so hintereinander geschaltet werden ■ befehl | befehl2 | befehl3 ls -la /etc/ | more 50 Beispiel echo kitten > meow echo "feline" >> meow cat >> meow tomcat ^D (bedeutet STRG+D) cat < meow kitten feline tomcat grep cat < meow > cats cat cats tomcat cat < meow |grep feline >> cats grep kitten meow >> cats < meow cat quelle nostromo: kitten http://nostromo.joeh.org/content/fhs/kwm06/cor3/cor3_lin feline ux_003__flowcontrol_and_redirects.pdf 51 tomcat Manpages ■ Dokumentation zu Programmen ■ ■ Aufruf: man begriff Unterteilt in Sektionen ■ Linux Programme im Vergleich zu *BSD Programmen oft schlecht dokumentiert man man man sektion begriff (z.B. man 7 man) Meist sinnvoller im Internet zu suchen als Manpage zu lesen 52 Programme ausführen ■ Einfach Programmnamen eintippen Dazu muss Verzeichnis, in dem das Programm liegt in $PATH sein Spezielle Umgebungsvariable ➔ Analog zu Windows ➔ lässt sich mit mit „echo $PATH“ anzeigen ➔ ■ Gegensatz Windows: es werden keine Programme im aktuellen Pfad einfach ausgeführt (Security Feature!) Programm mit vollständiger Pfadangabe starten /usr/bin/less – absoluter Pfad bin/less – relativer Pfad (man muss sich in /usr befinden) ./programmname - Programm im aktuellen Pfad ausführen 53 Fragen 54 Übung 3 navigieren.pdf 55 vi / vim ■ ■ ■ ■ ■ Texteditor aus den 70ern ist überall vorhanden Nach wie vor populär – emacs vs. vi vs. nano Gewöhnungsbedürftig (Problemsituationen...) Zwei Hauptmodi ■ Kommandomodus Editiermodus Wichtigste Befehle: ESC (in den Kommandomodus wechseln) :q! (ohne Änderungen verlassen) i (in den Eingabemodus wechseln) :w (Datei speichern) :wq (speichern und verlassen) – alternativ :x 56 vi – nützliche Kommandos ■ ■ ■ ■ x yy – x zeilen kopieren x dd – x zeilen ausschneiden p – unter aktueller Zeile einfügen /begriff – nach begriff suchen n – zum nächsten Ergebnis springen ■ ■ ■ ■ u – rückgängig (undo) STRG+r – letzen undo rückgängig (redo) SHIFT+g - ans Ende der Datei springen :x,y s/suchmuster/ersetze/g – ab Zeile x bis Zeile y suchmuster durch ersetzen (%Zeichen anstelle x,y = ganze Datei) ■ http://linuxwiki.de/Vim 57 vimrc ■ nette Parameter für /etc/vimrc bzw. ~/.vimrc (auch direkt im vim anwendbar) set ignore case ➔ im vi mit :set ic nützlich bei Suche set backup erstellt Backupdatei mit Tilde (~) am Ende syntax on Syntax Highlighting colorscheme evening gut lesbares Syntax Highlighting für Putty set number Zeilennummern anzeigen 58 Fragen 59 Übung 3 vi.pdf 60 Zugriffsrechte Schutz privater Dateien vor Zugriff anderer Systembenutzer ■ Durchsetzung der Rechte wird vom Betriebssystem garantiert ■ sind wirkungslos, wenn von extern (z.B. Live-CD) zugegriffen wird (hier würde Verschlüsselung helfen) ■ ■ Standardmäßig sehr einfach, aber auch ACLs (vergleichbar mit denen bei NTFS) möglich 61 Benutzer – Gruppenzuordnung Jeder Benutzer gehört mindestens einer Gruppe an ■ Kann mehreren Nebengruppen zugeordnet werden ■ Eigentümer kann Rechte für eine Gruppe oder für andere vergeben ■ „id“ – zeigt Gruppenzugehörigkeit ■ ■ id benutzer1 id „Benutzerdatenbank“ aus: /etc/passwd /etc/shadow /etc/groups 62 Granularität der Rechte ■ Granularität der Rechte ■ Eigentümer Benutzergruppe Andere (user) (group) (others) Reihenfolge Auswertung der Rechte 1. Prüfen der Eigentümerschaft 2. Prüfen der Gruppenzugehörigkeit 3. sonst Zugehörigkeit zu anderen Anwendern 63 Benutzerrestriktionen / Limits ■ /etc/security/limits.conf ■ Einschränkung von: ■ Datei ist selbsterklärend Zuordnung einer Ressource zu Benutzer max. geöffnete Dateien max. CPU Zeit max. Anzahl an Prozessen max. gleichzeitige Logins standard Priorität mit der Prozesse ausgeführt werden ... anzeigen mit „ulimit -a“ in der bash zsh und tcsh bieten intern den „limit“ 64 nice ■ ■ ■ ■ ■ ■ Priorität für CPU Zeit -20 bis 19 je weniger "nice" desto höher die priorität Anzeige mit „top“ nice --10 vi /etc/apt/sources.list nice -n -10 vi /etc/apt/sources.list ■ htop: grafisches einstellen des nice-Wert 65 Fragen 66 Übung 4 benutzer.pdf 67 Rechteübersicht Recht Datei Verzeichnis Verzeichnisinhalt Datei kann kann angezeigt r (read) gelesen werden werden Verzeichniseintrag Datei kann kann erstellt und w (write) geschrieben werden gelöscht werden Datei kann In Verzeichnis kann x (execute) ausgeführt werden gewechselt werden 68 Rechte anzeigen ■ ls -la 69 Dateirechte Quelle: http://nostromo.joeh.org/content/fhs/kwm06/cor3/cor3_linux_003__flowcontrol_and_redirects.pdf 70 Rechtevergabe symbolisch ■ chmod [Bereich] Operand Berechtigung datei Bereich u Eigentümer (user) g Gruppe (group) o Übrige Benutzer (others) Keine Angabe = ugo Operand + Recht hinzufügen - Recht wegnehmen = Recht absolut setzen Berechtigung r Read w Write x eXecute 71 Rechtevergabe symbolisch chmod +x datei Execute-Recht für Benutzer, Gruppe, Andere chmod go-w datei Gruppe und Anderen Schreibrecht entziehen chmod g+rwx d Alle Rechte für die Gruppe chmod ugo-rwx d Alle Rechte für alle entziehen chmod u-r,g+x d Benutzer Schreibrecht entziehen und Gruppe Execute-Recht zuweisen chmod u=rw d Schreib- und Leserecht für Benutzer 72 Rechtevergabe direkt ■ ■ chmod Modus Dateiname Modus sind 3 Oktalzahlen jede steht für Bereich 1. User 2. Group 3. Others ● Zahl 4 write 2 execute 1 zugeteiltes Recht ergibt sich aus Summe der Einzelrechte ● ● Recht read rwx = read + write + execute => 4+2+1=7 chmod 750 dateiname 73 Rechtevergabe direkt ■ Zugriffstabelle ■ ■ 0 = 0+0+0 1 = 0+0+1 2 = 0+2+0 3 = 0+2+1 4 = 4+0+0 5 = 4+0+1 6 = 4+2+0 7 = 4+2+1 = --= --x = -w= -wx = r-= r-x = rw= rwx chmod 742 file1 ; chmod a=rw,u+x,g-w,o-rx file2 ls -la file* -rwxr---w- 1 thorben -rwxr---w- 1 thorben thorben thorben 0 Nov 11 10:18 file1 0 Nov 11 10:18 file2 74 Besitzrechte ■ Eigentümer ■ Benutzer wird neuer Eigentümer, alter Eigentümer verliert Rechte an Datei chown username Datei Befehl kann nur von root ausgeführt werden Gruppenzugehörigkeit chgrp gruppenname Datei Befehl kann nur von root oder vom Eigentümer ausgeführt werden, sofern dieser auch Mitglied der neuen Gruppe ist 75 Erweitertes Rechtemanagement ■ umask default Rechte einer Datei sind 666 default Rechte eines Verzeichnisses sind 777 thorben@karl:~$ umask 0022 Einstellung in /etc/profile ➔ ■ umask 022 durch Subtraktion des umask Wertes von den default Rechten ergibt sich für Dateien 644 und Verzeichnisse 755 Hinweis: Änderungen an /etc/profile können mit „source /etc/profile“ übernommen werden 76 Erweiteres Rechtemanagement ■ ■ „lsattr“ zeigt zusätzlich Attribute Immutable Bit Datei wird unveränderbar (auch für root!) chattr +i datei *BSD kennen hier mehr und bessere Optionen Z.B. Datei darf nur größer werden (gut für Logfiles) ➔ Änderungen mit „chattr“ auch für root nicht möglich wenn kern.securitylevel hoch genug ➔ schützt effektiv vor übereifrigem root Benutzer ;-) 77 Erweitertes Rechtemangement ■ Sticky Bit - 1 Verzeichnis: nur Besitzer einer Datei darf sie löschen ➔ ■ SGID Bit - 2 ■ Verzeichnis: alle neu erstellten Dateien gehören nicht der Gruppe des Erstellers, sondern der Gruppe, die das Verzeichnis besitzt SUID Bit - 4 Dateien: Prozess läuft unter Identität der besitzenden Gruppe ➔ ■ drwxrwxrwt 5 root root 4096 Sep 24 21:05 tmp rwsr-xr-x 1 root root 27132 /usr/bin/passwd chmod 1755 verzeichnis 78 Fragen 79 Übung 5 rechte-umgang.pdf 80 Thema Netzwerk... 81 Netzwerkkonfiguration ■ ifconfig ■ ifconfig eth0 10.17.1.36 netmask 255.255.255.0 ■ setzt Standard Gateway route Routingtabelle anzeigen DNS-Server festlegen, eintragen in ■ setzt IP und mit gewünschter Netzmaske route add default gw 10.17.1.1 ■ gibt Auskunft über aktuelle Netzwerkeinstellungen ifconfig -a alle Netzwerkkarten, auch inaktive /etc/resolv.conf Netzwerkkonfiguration auch über den Befehl „ip“ 82 möglich Netzwerkkonfiguration ■ /etc/network/interfaces auto eth1 iface eth1 inet static address 10.17.1.36 netmask 255.255.255.0 network 10.17.1.0 broadcast 10.17.1.255 gateway 10.17.1.1 diese Datei gibt es vermutlich nur bei Debianderivaten! ■ /etc/init.d/networking restart – Netzwerk neu starten ■ dhclient ethX DHCP-Adresse an ethX beziehen ■ 83 Fragen 84 netzwerk.pdf 85 Wichtige Tools Kleine und große Helferlein... 86 Admintools ■ top ■ ■ ■ ■ ■ ■ ■ - zeigt Prozesse (ps aux) - zeigt uptime und load an - belegter Speicherplatz (df -h) - Befehl alle x Sekunden - listet Hardware - ls open files lsof -Pni |grep LISTEN kill PID ■ htop: mehr features, sehr empfehlenswert! ps uptime du / df watch Befehl lspci / lsusb lsof - zeigt Auslastung / Prozesse an - Netzwerkprogramme - Prozesse beenden killall Prozessname - beendet alle Prozesse kill -9 PID - hartnäckigen Prozess beenden netstat - belegte Ports (netstat -tanup) 87 Admintools passwd - Passwort setzen shutdown - herunterfahren / neustarten nc - Netcat Netzwerktool nc -l -p 1337 ■ telnet - TCP Ports prüfen ■ ■ ■ ■ ■ telnet ip-address 1337 ncftp wget - FTP Konsolenclient - Dateidownload 88 Wichtige Befehle ■ ■ ■ head Anfang einer Datei anzeigen tail -f Ende Datei anzeigen (-f = autoscroll) tools zum (Ent)packen tar tar -xfvz datei.tar.gz tar.gz Archiv mit Ausgabe entpacken ➔ tar -xfj datei.bzip2 bzip2 Archiv ohne Ausgabe entpacken ➔ tar -jcf archiv.bzip2 datei1 datei2 erstellt bzip2 aus datei1&2 ➔ ■ ■ ■ bzip2 unzip gunzip file stat grep gibt Dateityp aus gibt Dateistatusinformationen aus suchen nach Begriffen in Dateien grep -ir suchbegriff /etc/ Case-insensitive Suche in /etc 89 Suchen ■ find sucht nach Dateien / Verzeichnissen find /root -name "unterlagen.*" find /root | grep unterlagen find /root -size +500k find . ! -name '*.tex' http://www.galileocomputing.de/openbook/linux/linux_kap05_005.htm#t2t31 ■ locate ■ sucht in locate-Datenbank (schnell) Indizierung des Dateisystems vorher nötig -> updatedb slocate sichere Variante von locate updatedb indiziert Komplettes Dateisystem Achtung: hohe I/O-Last zu erwarten! oft cronjobs! 90 Fragen 91 SSH – Secure Shell ■ ■ verbreitetste Remote Shell baut Verbindung verschlüsselt auf ■ SSH Suite sehr mächtig ■ sehr sicher ausschließlich Version 2 verwenden! tunneling „Fenster“ eines entfernten Rechners darstellen seit SSH 4.3 vollständige VPN Funktionalität ssh benutzername@zielrechner [befehl] führt Befehl auf Zielrechner aus 92 SSH – Secure Shell ■ Schlüsselbasierte Authentisierung ■ ssh-keygen -t rsa – erzeugt RSA Schlüssel ■ basiert auf Public Key Verfahren (bekannt?) ist bequemer, erspart ständige Passworteingabe privater Schlüssel muss geschützt sein wer bequem ist, vergibt hier kein Passwort Public Key muss in ~/.ssh/authorized_keys auf Zielrechner kopiert werden 93 Public Key Verschlüsselung 94 SSH – Secure Shell ■ X ist netzwerkfähig ■ SSH ermöglicht sichere Weiterleitung der GUI Ausgabe ■ Programme auf entfernten Rechner leiten Ausgabe auf lokalem Schirm benötigt X-Server auf Empfängerseite Verbindung ungesichert Authentisierung Verschlüsselung ssh -X benutzer@zielrechner programm 95 SCP – Secure Copy ■ ■ ■ scp - Teil des SSH Pakets ermöglicht sichere Dateitransfers funktioniert bidirektional ■ scp [user@quelle:]/pfad [user@ziel:]/pfad alternativ wenn Berechtigungen wichtig sind: ■ tar cpf – quellpfad/ | ssh root@rechner “(cd /zielpfad; tar xpf - )“ der „p“ Parameter ist für Berechtigungen 96 Fragen 97 Übung 6 ssh.pdf 98 Kompilieren von Programmen in Binärdistributionen eher selten nötig Sourcecodebasierende Distributionen (Gentoo...) meist automatisch ■ vermeide Kompilierorgien ■ ■ ■ Sicherheitsupdates? Wartung? Versionskonflikte? Deinstallation? hin und wieder braucht man es einfach :-( 99 Dreisatz ■ ■ In Debian: das Paket „build-essential“ installieren Saubere Lösung: Paket bauen ■ Quick & Dirty: ■ ./configure --prefix=/installations/pfad make make install make uninstall INSTALL bzw. README lesen – oft wichtige Hinweise 100 Dreisatz ■ configure ■ make ■ eigentlicher Kompiliervorgang sollte nach fehlerlosem configure gehen make install ■ zur Konfiguration von Einstellungen configure --help / configure -h immer mit „--prefix“ damit Dateien nicht über Dateisystem verstreut werden Fehler die angezeigt werden möglichst beheben kopiert kompilierte Daten in „--prefix“ Pfad make uninstall – selbsterklärend 101 Fragen 102 Übung 7 kompilieren.pdf 103 Wichtige Dienste 104 Syslog ■ /var/log messages generelles Log, erste Anlaufstelle syslog Systemlog, sollte aufgeräumt sein auth.log Authentisierung mail.log Mail kern.log Kernel apache / samba / mysql usw. : ➔ ■ tail -f logfile ■ Logdateien der Dienste Logfile live mitlesen auf Größe der Logfiles achten, sollten rotiert werden (z.B. durch „logrotate“) 105 Syslog ■ ■ ■ Standarddienst auf meisten *nix Systemen syslog-ng als Nachfolger Alternativen bieten Verschlüsselung, SQL...: ■ /etc/syslog.conf ■ rsyslog Modular Syslog relativ selbsterkärend Facility.Level Action „-“ Zeichen am Anfang steht für asynchrones Schreiben auf die Festplatte und trägt zur Performanceverbesserung bei Syslog ist netzwerkfähig hört auf UDP Port 514 zentrales Logging / Logüberwachung möglich 106 Syslog ■ Facilities (Quellen) ■ zeigt wer Log gesendet hat Kategorien authpriv cron daemon kern lpr mail mark news syslog ... 107 Syslog ■ Severity (Log Level / Schweregrad): ■ debug info notice warning (or warn) err (or error) crit alert emerg (or panic) warn, error, und panic sind veraltet, können einem aber begegnen 108 Der Cron Daemon ■ ■ Zeitgesteuertes Ausführen von Programmen verschiedene cron-Dienste anacron, vixie-cron usw. Zeitpunkte der Ausführung in crontabs ■ /etc/crontab ■ ■ crontab für das System nur für root schreibbar cron sollte Änderungen selbsständig bemerken, manchmal muss man „crontab /etc/crontab“ ausführen (zur Not cron restarten) crontabs für jeden Benutzer /var/spool/cron/crontabs crontab -e editieren der eigenen crontab 109 Der Cron Daemon ■ Aufbau relativ sebsterklärend wann soll wer etwas tun [email protected] 04*** root ntpdate ntp1.fau.de ptbtime1.ptb.de */30 * * * * root /usr/bin/webalizer ■ ■ teilweise Leerzeile am Ende nötig /etc/cron* zur besseren Übersicht sind Aufgaben in verschiedenen Verzeichnissen zu finden ■ cron.allow / cron.deny zur Einschränkung möglich ■ Beispiel: # run myprogram at 6:15am and 6:15pm on the 1st and 15th 15 6,18 1,15 * * myprogram 110 ntpd ■ Korrekte Uhrzeit wichtig Nachvollziehbarkeit von Logdaten Timestamps von Dateizugriffen Netzwerkdienste verlangen teilweise synchrone Zeit Zeit darf nie rückwärts laufen „timestamp in future“ prob. Zeit läuft „nie“ korrekt Virtuelle Maschinen weit problemematischer ■ Lösung ■ ■ ■ ntpd (ntp Daemon) ntpdate <server> www.ntp.org Serverpools at.pool.ntp.org europe.pool.ntp.org de.pool.ntp.org 111 ntpd ■ /etc/ntp.conf server de.pool.ntp.org iburst server 2.europe.pool.ntp.org iburst server at.pool.ntp.org iburst server de.pool.ntp.org iburst 112 Fragen 113 Der Bootloader sehr klein, da Bootsektor beschränkte Kapazität hat ■ läd den Kernel ■ kann spezielle Optionen mitgeben Auswahl verschiedener Kernel ■ ■ ■ ■ muss Dateisystem verstehen heutzutage meist grub, lilo eher selten grub liest Informationen von Festplatte lilo speichert alles in MasterBootRecord ■ Security: setzen eines Bootloader-Passworts um booten in den single-Modus zu verhindern 114 115 Der Bootloader ■ zusätzliche Kernelparameter möglich ■ kernel /vmlinuz-2.6.9-1.667 ro root=/dev/hda2 clock=pit ■ Beispiele für Parameter clock=pit (für Uhrzeit in VMWare) nosmp (kein Multiprozessorsupport) noapic (kein APIC) noacpi (kein ACPI Powermanagement) init=/bin/bash (alternativer INIT-Prozess) single (in den Single-Modus booten) 116 Fragen 117 boot.pdf 118 Warum nicht als root arbeiten? ■ ■ ■ Bedienungsfehler kein Logging Sicherheitskritisch z.B.: bugs in tar führen dazu, dass nicht in richtigen Pfad entpackt wird, wodurch beliebige Dateien überschrieben werden können Ausführung unbekannter Programme 119 sudo ■ ■ führt Befehle mit root-Rechten aus Ubuntu nutzt dies sehr konsequent, indem man normal nicht als root arbeiten kann ■ sudo logt alle Aktivitäten in /var/log/auth.log ■ ■ ■ root hat kein Passwort, damit ist keine Anmeldung als root möglich bei anderen Distributionen evtl. anders Nachvollziehbarkeit bei mehreren Admins User braucht kein root-Passwort Definition der Rechte in /etc/sudoers bearbeiten mit visudo (hat Syntaxcheck) normaler Editor tuts auch 120 sudo Ubuntu: alle Mitglieder der Gruppe admin bekommen alle Rechte mittels sudo ■ /etc/sudoers ■ root ALL=(ALL) ALL thorben ALL=(ALL) ALL karl ALL=(ALL) NOPASSWD :/etc/userscripts/create_email.sh,/bin/passwd katrin server1=(ALL) /sbin/cfdisk Cmnd_Alias SHUTDOWN = /sbin/shutdown skx ALL = SHUTDOWN ■ man sudoers ■ sehr ausführliche Anleitung http://www.debian-administration.org/articles/33 121 su ■ ■ ■ su = switch user lässt normalen Benutzer zu root werden root kann als beliebiger User agieren su thorben User muss gültige Shell haben su kann jeder Benutzer ausführen Benutzer muss root-Passwort kennen mit „su -“ werden Umgebungsvariablen des Users übernommen, in den man sich wandelt ■ kein Logging der Aktivitäten ■ ■ ■ ■ Befehle als anderer User ausführen su -c “id“ thorben uid=1003(thorben) gid=1003(thorben) groups=1002(thorben1),1003(thorben) 122 Fragen 123