Linuxkurs Wintersemester 09/10 ASICT09

Werbung
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
Zugehörige Unterlagen
Herunterladen