Product SiteDocumentation Site

Red Hat Enterprise Linux 5

Deployment Guide

Deployment, configuration and administration of Red Hat Enterprise Linux 5

Ausgabe 8

Logo


Rechtlicher Hinweis

Copyright © 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
All other trademarks are the property of their respective owners.


1801 Varsity Drive
 RaleighNC 27606-2072 USA
 Phone: +1 919 754 3700
 Phone: 888 733 4281
 Fax: +1 919 754 3701

Zusammenfassung
The Deployment Guide documents relevant information regarding the deployment, configuration and administration of Red Hat Enterprise Linux 5.

Einführung
1. Document Conventions
2. Senden Sie uns Ihr Feedback
I. Dateisysteme
1. Struktur des Dateisystems
1.1. Warum eine gemeinsame Struktur?
1.2. Übersicht über den Dateisystem-Hierarchiestandard (FHS)
1.2.1. FHS-Organisation
1.3. Spezielle Dateispeicherstellen unter Red Hat Enterprise Linux
2. Using the mount Command
2.1. Listing Currently Mounted File Systems
2.2. Mounting a File System
2.2.1. Specifying the File System Type
2.2.2. Specifying the Mount Options
2.2.3. Sharing Mounts
2.2.4. Moving a Mount Point
2.3. Unmounting a File System
2.4. Additional Resources
2.4.1. Installed Documentation
2.4.2. Useful Websites
3. Das ext3-Dateisystem
3.1. Eigenschaften von ext3
3.2. Erstellen eines ext3-Dateisystems
3.3. Konvertierung in ein ext3-Dateisystem
3.4. Rückkehr zu einem ext2-Dateisystem
4. The proc File System
4.1. Ein virtuelles Dateisystem
4.1.1. Anzeigen virtueller Dateien
4.1.2. Ändern virtueller Dateien
4.2. Top-level Files within the proc File System
4.2.1. /proc/apm
4.2.2. /proc/buddyinfo
4.2.3. /proc/cmdline
4.2.4. /proc/cpuinfo
4.2.5. /proc/crypto
4.2.6. /proc/devices
4.2.7. /proc/dma
4.2.8. /proc/execdomains
4.2.9. /proc/fb
4.2.10. /proc/filesystems
4.2.11. /proc/interrupts
4.2.12. /proc/iomem
4.2.13. /proc/ioports
4.2.14. /proc/kcore
4.2.15. /proc/kmsg
4.2.16. /proc/loadavg
4.2.17. /proc/locks
4.2.18. /proc/mdstat
4.2.19. /proc/meminfo
4.2.20. /proc/misc
4.2.21. /proc/modules
4.2.22. /proc/mounts
4.2.23. /proc/mtrr
4.2.24. /proc/partitions
4.2.25. /proc/pci
4.2.26. /proc/slabinfo
4.2.27. /proc/stat
4.2.28. /proc/swaps
4.2.29. /proc/sysrq-trigger
4.2.30. /proc/uptime
4.2.31. /proc/version
4.3. Directories within /proc/
4.3.1. Prozess-Verzeichnisse
4.3.2. /proc/bus/
4.3.3. /proc/driver/
4.3.4. /proc/fs
4.3.5. /proc/ide/
4.3.6. /proc/irq/
4.3.7. /proc/net/
4.3.8. /proc/scsi/
4.3.9. /proc/sys/
4.3.10. /proc/sysvipc/
4.3.11. /proc/tty/
4.3.12. /proc/<PID>/
4.4. Using the sysctl Command
4.5. Zusätzliche Ressourcen
4.5.1. Installierte Dokumentation
4.5.2. Hilfreiche Websites
5. Redundant Array of Independent Disks (RAID)
5.1. What is RAID?
5.1.1. Who Should Use RAID?
5.1.2. Hardware RAID versus Software RAID
5.1.3. RAID Levels and Linear Support
5.2. Configuring Software RAID
5.2.1. Creating the RAID Partitions
5.2.2. Creating the RAID Devices and Mount Points
5.3. Managing Software RAID
5.3.1. Reviewing RAID Configuration
5.3.2. Creating a New RAID Device
5.3.3. Replacing a Faulty Device
5.3.4. Extending a RAID Device
5.3.5. Removing a RAID Device
5.3.6. Preserving the Configuration
5.4. Additional Resources
5.4.1. Installed Documentation
6. Swap-Space
6.1. Was ist Swap-Space?
6.2. Swap-Space hinzufügen
6.2.1. Extending Swap on an LVM2 Logical Volume
6.2.2. Creating an LVM2 Logical Volume for Swap
6.2.3. Creating a Swap File
6.3. Löschen von Swap-Space
6.3.1. Reducing Swap on an LVM2 Logical Volume
6.3.2. Removing an LVM2 Logical Volume for Swap
6.3.3. Removing a Swap File
6.4. Swap-Space verlagern
7. Verwalten des Festplattenspeichers
7.1. Standard Partitions using parted
7.1.1. Anzeigen der Partitionstabelle
7.1.2. Erstellen von Partitionen
7.1.3. Löschen von Partitionen
7.1.4. Ändern der Partitionsgröße
7.2. LVM Partition Management
8. Festplatten-Quoten implementieren
8.1. Festplatten-Quoten konfigurieren
8.1.1. Quoten aktivieren
8.1.2. Erneutes Mounten des Dateisystems
8.1.3. Creating the Quota Database Files
8.1.4. Quoten pro Benutzer zuweisen
8.1.5. Quoten pro Gruppe zuweisen
8.1.6. Setting the Grace Period for Soft Limits
8.2. Verwalten von Festplatten-Quoten
8.2.1. Aktivieren und Deaktivieren
8.2.2. Berichte über Festplatten-Quoten erstellen
8.2.3. Genauigkeit der Quoten einhalten
8.3. Zusätzliche Ressourcen
8.3.1. Installierte Dokumentation
8.3.2. Bücher zum Thema
9. Access Control Lists
9.1. Dateisysteme mounten
9.1.1. NFS
9.2. Access ACLs einstellen
9.3. Einstellen von Default ACLs
9.4. ACLs abrufen
9.5. Dateisysteme mit ACLs archivieren
9.6. Kompatibilität mit älteren Systemen
9.7. Zusätzliche Ressourcen
9.7.1. Installierte Dokumentation
9.7.2. Nützliche Webseiten
10. LVM (Logical Volume Manager)
10.1. What is LVM?
10.1.1. What is LVM2?
10.2. LVM-Konfiguration
10.3. Automatic Partitioning
10.4. Manual LVM Partitioning
10.4.1. Creating the /boot Partition
10.4.2. Creating the LVM Physical Volumes
10.4.3. Creating the LVM Volume Groups
10.4.4. Creating the LVM Logical Volumes
10.5. Using the LVM utility system-config-lvm
10.5.1. Utilizing uninitialized entities
10.5.2. Adding Unallocated Volumes to a volume group
10.5.3. Migrating extents
10.5.4. Adding a new hard disk using LVM
10.5.5. Adding a new volume group
10.5.6. Extending a volume group
10.5.7. Editing a Logical Volume
10.6. Additional Resources
10.6.1. Installed Documentation
10.6.2. Useful Websites
II. Paketverwaltung
11. Die Paketverwaltung mit RPM
11.1. Ziele des RPM-Designs
11.2. Die Verwendung von RPM
11.2.1. Suche nach RPM-Paketen
11.2.2. Installieren
11.2.3. Deinstallieren
11.2.4. Aktualisieren
11.2.5. Auffrischen
11.2.6. Anfragen
11.2.7. Prüfen
11.3. Checking a Package's Signature
11.3.1. Importieren von Schlüsseln
11.3.2. Überprüfung der Signatur von Paketen
11.4. Praktische und häufige Beispiele für den RPM-Gebrauch
11.5. Zusätzliche Ressourcen
11.5.1. Installierte Dokumentation
11.5.2. Hilfreiche Websites
11.5.3. Zusätzliche Literatur
12. Package Management Tool
12.1. Das Listen und Analysieren von Paketen
12.2. Installation und Entfernung von Paketen
13. YUM (Yellowdog Updater Modified)
13.1. Setting Up a Yum Repository
13.2. yum Commands
13.3. yum Options
13.4. Configuring yum
13.4.1. [main] Options
13.4.2. [repository] Options
13.5. Useful yum Variables
14. Product Subscriptions and Entitlements
14.1. An Overview of Managing Subscriptions and Content
14.1.1. The Purpose of Subscription Management
14.1.2. Defining Subscriptions, Entitlements, and Products
14.1.3. Subscription Management Tools
14.1.4. Subscription and Content Architecture
14.1.5. Advanced Content Management: Extended Update Support
14.1.6. RHN Classic v. Certificate-based Red Hat Network
14.2. Using Red Hat Subscription Manager Tools
14.2.1. Launching Red Hat Subscription Manager
14.2.2. About subscription-manager
14.2.3. Looking at RHN Subscription Management
14.2.4. Looking at Subscription Asset Manager
14.3. Managing Special Deployment Scenarios
14.3.1. Local Subscription Services, Local Content Providers, and Multi-Tenant Organizations
14.3.2. Virtual Guests and Hosts
14.3.3. Domains
14.4. Registering, Unregistering, and Reregistering a System
14.4.1. Registering Consumers in the Hosted Environment
14.4.2. Registering Consumers to a Local Organization
14.4.3. Registering an Offline Consumer
14.4.4. Registering from the Command Line
14.4.5. Unregistering
14.4.6. Restoring a Registration
14.5. Migrating Systems from RHN Classic to Certificate-based Red Hat Network
14.5.1. Installing the Migration Tools
14.5.2. Migrating from RHN Classic to Certificate-based Red Hat Network
14.5.3. Unregistering from RHN Classic Only
14.5.4. Migrating a Disconnected System
14.5.5. Looking at Channel and Certificate Mappings
14.6. Handling Subscriptions
14.6.1. Subscribing and Unsubscribing through the Red Hat Subscription Manager GUI
14.6.2. Handling Subscriptions through the Command Line
14.6.3. Stacking Subscriptions
14.6.4. Manually Adding a New Subscription
14.7. Redeeming Subscriptions on a Machine
14.7.1. Redeeming Subscriptions through the GUI
14.7.2. Redeeming Subscriptions on a Machine through the Command Line
14.8. Viewing Available and Used Subscriptions
14.8.1. Viewing Subscriptions in the GUI
14.8.2. Listing Subscriptions with the Command Line
14.8.3. Viewing Subscriptions Used in Both RHN Classic and Certificate-based Red Hat Network
14.9. Working with Subscription yum Repos
14.10. Responding to Subscription Notifications
14.11. Healing Subscriptions
14.11.1. Enabling Healing
14.11.2. Changing the Healing Check Frequency
14.12. Working with Subscription Asset Manager
14.12.1. Configuring Subscription Manager to Work with Subscription Asset Manager
14.12.2. Viewing Organization Information
14.13. Updating Entitlements Certificates
14.13.1. Updating Entitlement Certificates
14.13.2. Updating Subscription Information
14.14. Configuring the Subscription Service
14.14.1. Red Hat Subscription Manager Configuration Files
14.14.2. Using the config Command
14.14.3. Using an HTTP Proxy
14.14.4. Changing the Subscription Server
14.14.5. Configuring Red Hat Subscription Manager to Use a Local Content Provider
14.14.6. Managing Secure Connections to the Subscription Server
14.14.7. Starting and Stopping the Subscription Service
14.14.8. Checking Logs
14.14.9. Showing and Hiding Incompatible Subscriptions
14.14.10. Checking and Adding System Facts
14.14.11. Regenerating Identity Certificates
14.14.12. Getting the System UUID
14.14.13. Viewing Package Profiles
14.14.14. Retrieving the Consumer ID, Registration Tokens, and Other Information
14.15. About Certificates and Managing Entitlements
14.15.1. The Structure of Identity Certificates
14.15.2. The Structure of Entitlement Certificates
14.15.3. The Structure of Product Certificates
14.15.4. Anatomy of Satellite Certificates
III. Netzwerkbezogene Konfiguration
15. Netzwerk-Schnittstellen
15.1. Netzwerk-Konfigurationsdateien
15.2. Schnittstellen-Konfigurationsdateien
15.2.1. Ethernet-Schnittstellen
15.2.2. IPsec Schnittstellen
15.2.3. Channel-Bonding-Schnittstellen
15.2.4. Alias- und Clone-Dateien
15.2.5. Schnittstellen für den Verbindungsaufbau
15.2.6. Weitere Schnittstellen
15.3. Schnittstellen-Kontrollskripts
15.4. Configuring Static Routes
15.5. Netzwerkfunktionsdateien
15.6. Zusätzliche Ressourcen
15.6.1. Installierte Dokumentation
16. Netzwerkkonfiguration
16.1. Überblick
16.2. Herstellen einer Ethernet-Verbindung
16.3. Herstellen einer ISDN-Verbindung
16.4. Herstellen einer Modem-Verbindung
16.5. Herstellen einer xDSL-Verbindung
16.6. Herstellen einer Token Ring-Verbindung
16.7. Herstellen einer Wireless-Verbindung
16.8. Verwalten von DNS-Einstellungen
16.9. Verwalten von Hosts
16.10. Arbeiten mit Profilen
16.11. Geräte-Aliase
16.12. Sichern und Wiederherstellen der Netzwerkkonfiguration
17. Zugriffskontrolle für Dienste
17.1. Runlevel
17.2. TCP-Wrapper
17.2.1. xinetd
17.3. Services Configuration Tool
17.4. ntsysv
17.5. chkconfig
17.6. Zusätzliche Ressourcen
17.6.1. Installierte Dokumentation
17.6.2. Hilfreiche Websites
18. Berkeley Internet Name Domain (BIND)
18.1. Einführung in den DNS
18.1.1. Nameserver Zonen
18.1.2. Nameserver Arten
18.1.3. BIND as a Nameserver
18.2. /etc/named.conf
18.2.1. Häufig verwendete Typen von Statements
18.2.2. Andere Statement-Typen
18.2.3. Kommentar-Tags
18.3. Zone-Dateien
18.3.1. Zone-Dateien-Direktiven
18.3.2. Resource-Records der Zone-Datei
18.3.3. Beispiele für Zone-Dateien
18.3.4. Zone-Dateien für die umgekehrte Auflösung von Namen
18.4. Using rndc
18.4.1. Configuring /etc/named.conf
18.4.2. Configuring /etc/rndc.conf
18.4.3. Befehlszeilenoptionen
18.5. Erweiterte Funktionen von BIND
18.5.1. DNS-Protokoll-Erweiterungen
18.5.2. Mehrere Ansichten
18.5.3. Sicherheit
18.5.4. IP-Version 6
18.6. Allgemein zu vermeidende Fehler
18.7. Zusätzliche Ressourcen
18.7.1. Installierte Dokumentation
18.7.2. Hilfreiche Webseiten
18.7.3. Bücher zum Thema
19. OpenSSH
19.1. Features von SSH
19.1.1. Wozu dient SSH?
19.2. SSH Protokoll Versionen
19.3. Die Abfolge der Vorgänge einer SSH-Verbindung
19.3.1. Transportschicht
19.3.2. Authentifizierung
19.3.3. Verbindungskanäle
19.4. Konfigurieren eines OpenSSH-Servers
19.4.1. Anfordern von SSH für Fernverbindungen
19.5. OpenSSH-Konfigurationsdateien
19.6. Konfigurieren eines OpenSSH-Clients
19.6.1. Using the ssh Command
19.6.2. Using the scp Command
19.6.3. Using the sftp Command
19.7. Mehr als eine Secure Shell
19.7.1. X11 Forwarding
19.7.2. Port Forwarding
19.7.3. Erstellen eines Schlüsselpaares
19.8. Zusätzliche Ressourcen
19.8.1. Installierte Dokumentation
19.8.2. Hilfreiche Websites
20. Network File System (NFS)
20.1. Wie es funktioniert
20.1.1. Erforderliche Dienste
20.2. NFS Client-Konfiguration
20.2.1. Mounting NFS File Systems using /etc/fstab
20.3. autofs
20.3.1. What's new in autofs version 5?
20.3.2. autofs Configuration
20.3.3. autofs Common Tasks
20.4. Gängige NFS-Einhänge-Optionen
20.5. NFS starten und stoppen
20.6. NFS-Server-Konfiguration
20.6.1. Export oder Freigabe des NFS-Dateisystems
20.6.2. Befehlszeilenkonfiguration
20.6.3. Running NFS Behind a Firewall
20.6.4. Hostnamen-Formate
20.7. The /etc/exports Configuration File
20.7.1. The exportfs Command
20.8. NFS sichern
20.8.1. Host-Zugriff
20.8.2. File Permissions
20.9. NFS and portmap
20.9.1. Troubleshooting NFS and portmap
20.10. Verwendung von NFS vor TCP
20.11. Zusätzliche Ressourcen
20.11.1. Installierte Dokumentation
20.11.2. Nützliche Websites
20.11.3. Zusätzliche Literatur
21. Samba
21.1. Einführung in Samba
21.1.1. Samba Features
21.2. Samba-Deamons und ähnliche Dienste
21.2.1. Samba Daemons
21.3. Verbindung zu einer Samba-Freigabe
21.3.1. Befehlszeile
21.3.2. Einhängen der Freigabe
21.4. Konfiguration eines Samba Servers
21.4.1. Grafische Konfiguration
21.4.2. Konfiguration der Befehlszeile
21.4.3. Verschlüsselte Passwörter
21.5. Starten und Anhalten von Samba
21.6. Samba Server Types and the smb.conf File
21.6.1. Einzel-Server (Stand-Alone)
21.6.2. Domänenmitglieder-Server
21.6.3. Domain Controller
21.7. Samba Sicherheitsmodi
21.7.1. User-Level Security
21.7.2. Share-Level Security
21.8. Samba Account-Datenbanken
21.9. Samba Netzwerk-Browsing
21.9.1. Domain Browsing
21.9.2. WINS (Windows Internetworking Name Server)
21.10. Samba mit CUPS-Druckunterstützung
21.10.1. Simple smb.conf Settings
21.11. Samba-Distribution Programme
21.12. Additional Resources
21.12.1. Installierte Dokumentation
21.12.2. Verwandte Literatur
21.12.3. Nützliche Websites
22. Dynamic Host Configuration Protocol (DHCP)
22.1. Warum sollte man DHCP verwenden?
22.2. Konfigurieren eines DHCP Servers
22.2.1. Konfigurationsdatei
22.2.2. Lease-Datenbank
22.2.3. Starten und Stoppen des Servers
22.2.4. DHCP Relay Agent
22.3. Konfigurieren eines DHCP-Clients
22.4. Configuring a Multihomed DHCP Server
22.4.1. Host Configuration
22.5. Zusätzliche Ressourcen
22.5.1. Installierte Dokumentation
23. Apache HTTP Server
23.1. Apache HTTP Server 2.2
23.1.1. Merkmale von Apache HTTP Server 2.2
23.2. Migration von Apache HTTP Server Konfigurationsdateien
23.2.1. Migration von Apache HTTP Server 2.0 Konfigurationsdateien
23.2.2. Migration von Apache HTTP Server 1.3 Konfigurationsdateien zu 2.0
23.3. Starting and Stopping httpd
23.4. Konfiguration des Apache HTTP Servers
23.4.1. Basic Settings
23.4.2. Standardeinstellungen
23.5. Configuration Directives in httpd.conf
23.5.1. Allgemeine Konfigurationshinweise
23.5.2. SSL-Konfigurationsanweisungen
23.5.3. MPM spezifische Server-Pool-Anweisungen
23.6. Hinzufügen von Modulen zu Ihrem Server
23.7. Virtuelle Hosts verwenden
23.7.1. Einrichten von Virtual Hosts
23.8. Konfiguration des sicheren Apache HTTP Servers
23.8.1. Eine Übersicht über die Sicherheit betreffenden Pakete
23.8.2. Übersicht zu Zertifikaten und Sicherheit
23.8.3. Die Verwendung bereits vorhandener Schlüssel und Zertifikate
23.8.4. Zertifikatstypen
23.8.5. Generierung eines Schlüssels
23.8.6. Konfiguration des Servers zur Verwendung des neuen Schlüssels
23.9. Zusätzliche Ressourcen
23.9.1. Hilfreiche Websites
24. FTP
24.1. The File Transfer Protocol
24.1.1. Multiple Ports, multiple Modi
24.2. FTP-Server
24.2.1. vsftpd
24.3. Files Installed with vsftpd
24.4. Starting and Stopping vsftpd
24.4.1. Starting Multiple Copies of vsftpd
24.5. vsftpd Configuration Options
24.5.1. Daemon-Optionen
24.5.2. Anmeldeoptionen und Zugangskontrollen
24.5.3. Anonyme Benutzer Optionen
24.5.4. Lokale Benutzer Optionen
24.5.5. Verzeichnis-Optionen
24.5.6. Dateiübertragungs-Optionen
24.5.7. Protokollierungs-Optionen
24.5.8. Netzwerk Optionen
24.6. Zusätzliche Resourcen
24.6.1. Installierte Dokumentation
24.6.2. Nützliche Webseiten
25. E-Mail
25.1. E-Mail Protokolle
25.1.1. Mail Transport Protocols
25.1.2. Mail Access Protocols
25.2. E-Mail-Programm-Kategorien
25.2.1. Mail Transport Agent
25.2.2. Mail Delivery Agent
25.2.3. Mail User Agent
25.3. Mail Transport Agents
25.3.1. Sendmail
25.3.2. Postfix
25.3.3. Fetchmail
25.4. Mail Transport Agent (MTA) Konfiguration
25.5. Mail Delivery Agents
25.5.1. Konfiguration von Procmail
25.5.2. Procmail Recipes
25.6. Mail User Agents
25.6.1. Sicherheit bei der Kommunikation
25.7. Zusätzliche Informationsquellen
25.7.1. Installierte Dokumentation
25.7.2. Hilfreiche Webseiten
25.7.3. Literatur zum Thema
26. Lightweight Directory Access Protocol (LDAP)
26.1. Warum LDAP?
26.1.1. OpenLDAP Features
26.2. LDAP Terminologie
26.3. OpenLDAP Daemons and Utilities
26.3.1. NSS, PAM, and LDAP
26.3.2. PHP4, LDAP, and the Apache HTTP Server
26.3.3. LDAP Client-Applikationen
26.4. OpenLDAP Konfigurationsdateien
26.5. The /etc/openldap/schema/ Directory
26.6. Überblick über die OpenLDAP-Einrichtung
26.6.1. Editing /etc/openldap/slapd.conf
26.7. Konfigurieren Ihres Systems für die Authentifizierung mit OpenLDAP
26.7.1. PAM and LDAP
26.7.2. Umwandeln Ihrer alten Authentifizierungsinformationen in das LDAP-Format
26.8. Umwandeln von Verzeichnissen früherer Releases
26.9. Zusätzliche Ressourcen
26.9.1. Installierte Dokumentationen
26.9.2. Hilfreiche Websites
26.9.3. Bücher zum Thema
27. Konfiguration der Authentifizierung
27.1. User Information
27.2. Authentication
27.3. Options
27.4. Befehlszeilen-Version
28. Using and Caching Credentials with SSSD
28.1. About the sssd.conf File
28.2. Starting and Stopping SSSD
28.3. Configuring Services
28.3.1. Configuring the NSS Service
28.3.2. Configuring the PAM Service
28.4. Creating Domains
28.4.1. General Rules and Options for Configuring a Domain
28.4.2. Configuring an LDAP Domain
28.4.3. Configuring Kerberos Authentication with a Domain
28.4.4. Configuring a Proxy Domain
28.5. Configuring Access Control for SSSD Domains
28.5.1. Using the Simple Access Provider
28.5.2. Using the LDAP Access Filter
28.6. Configuring Domain Failover
28.6.1. Configuring Failover
28.6.2. Using SRV Records with Failover
28.7. Deleting Domain Cache Files
28.8. Using NSCD with SSSD
28.9. Troubleshooting SSSD
28.9.1. Using SSSD Log Files
28.9.2. Problems with SSSD Configuration
IV. Systemkonfiguration
29. Konsolenzugriff
29.1. Disabling Shutdown Via Ctrl+Alt+Del
29.2. Deaktivieren des Zugriffs auf das Konsolenprogramm
29.3. Definieren der Konsole
29.4. Den Zugriff auf Dateien von der Konsole ermöglichen
29.5. Aktivieren des Konsolenzugriffs für andere Anwendungen
29.6. The floppy Group
30. The sysconfig Directory
30.1. Files in the /etc/sysconfig/ Directory
30.1.1. /etc/sysconfig/amd
30.1.2. /etc/sysconfig/apmd
30.1.3. /etc/sysconfig/arpwatch
30.1.4. /etc/sysconfig/authconfig
30.1.5. /etc/sysconfig/autofs
30.1.6. /etc/sysconfig/clock
30.1.7. /etc/sysconfig/desktop
30.1.8. /etc/sysconfig/dhcpd
30.1.9. /etc/sysconfig/exim
30.1.10. /etc/sysconfig/firstboot
30.1.11. /etc/sysconfig/gpm
30.1.12. /etc/sysconfig/hwconf
30.1.13. /etc/sysconfig/i18n
30.1.14. /etc/sysconfig/init
30.1.15. /etc/sysconfig/ip6tables-config
30.1.16. /etc/sysconfig/iptables-config
30.1.17. /etc/sysconfig/irda
30.1.18. /etc/sysconfig/keyboard
30.1.19. /etc/sysconfig/kudzu
30.1.20. /etc/sysconfig/named
30.1.21. /etc/sysconfig/network
30.1.22. /etc/sysconfig/nfs
30.1.23. /etc/sysconfig/ntpd
30.1.24. /etc/sysconfig/radvd
30.1.25. /etc/sysconfig/samba
30.1.26. /etc/sysconfig/selinux
30.1.27. /etc/sysconfig/sendmail
30.1.28. /etc/sysconfig/spamassassin
30.1.29. /etc/sysconfig/squid
30.1.30. /etc/sysconfig/system-config-securitylevel
30.1.31. /etc/sysconfig/system-config-selinux
30.1.32. /etc/sysconfig/system-config-users
30.1.33. /etc/sysconfig/system-logviewer
30.1.34. /etc/sysconfig/tux
30.1.35. /etc/sysconfig/vncservers
30.1.36. /etc/sysconfig/xinetd
30.2. Directories in the /etc/sysconfig/ Directory
30.3. Zusätzliche Ressourcen
30.3.1. Installierte Dokumentation
31. Datums- und Zeitkonfiguration
31.1. Time and Date Properties
31.2. Eigenschaften des Netzwerk-Zeitprotokolls (NTP)
31.3. Konfiguration der Zeitzone
32. Tastatur-Konfiguration
33. Das X Window System
33.1. The X11R7.1 Release
33.2. Desktop-Umgebungen und Window Manager
33.2.1. Desktop-Umgebungen
33.2.2. Window Manager
33.3. X-Server-Konfigurationsdateien
33.3.1. xorg.conf
33.4. Fonts
33.4.1. Fontconfig
33.4.2. Core X Font-System
33.5. Runlevels und X
33.5.1. Runlevel 3
33.5.2. Runlevel 5
33.6. Zusätzliche Ressourcen
33.6.1. Installierte Dokumentation
33.6.2. Nützliche Webseiten
34. X Window System Konfiguration
34.1. Display Settings
34.2. Display Hardware Settings
34.3. Dual Head Display Settings
35. Benutzer und Gruppen
35.1. Benutzer- und Gruppenkonfiguration
35.1.1. Einen neuen Benutzer hinzufügen
35.1.2. Benutzereigenschaften ändern
35.1.3. Eine neue Gruppe hinzufügen
35.1.4. Gruppeneigenschaften ändern
35.2. Tools zum Management von Benutzern und Gruppen
35.2.1. Befehlszeilenkonfiguration
35.2.2. Einen Benutzer hinzufügen
35.2.3. Eine Gruppe hinzufügen
35.2.4. Passwörter-Alterung
35.2.5. Erklärung des Vorgangs
35.3. Standardbenutzer
35.4. Standardgruppen
35.5. Benutzereigene Gruppen
35.5.1. Gruppenverzeichnisse
35.6. Shadow-Utilities
35.7. Zusätzliche Informationsquellen
35.7.1. Installierte Dokumentation
36. Druckerkonfiguration
36.1. Einen lokalen Drucker hinzufügen
36.2. Einen IPP-Drucker hinzufügen
36.3. Einen Samba (SMB) Drucker hinzufügen
36.4. Adding a JetDirect Printer
36.5. Auswahl des Druckermodells und Fertigstellung
36.5.1. Bestätigung der Druckerkonfiguration
36.6. Eine Testseite drucken
36.7. Vorhandene Drucker ändern
36.7.1. Das Settings-Tab
36.7.2. Das Policies-Tab
36.7.3. Das Access Control-Tab
36.7.4. Das Printer und Job Options-Tab
36.8. Druckaufträge verwalten
36.9. Zusätzliche Ressourcen
36.9.1. Installierte Dokumentation
36.9.2. Hilfreiche Websites
37. Automated Tasks
37.1. Cron
37.1.1. Konfigurieren von Cron-Tasks
37.1.2. Zugriffskontrolle auf Cron
37.1.3. Starten und Beenden des Dienstes
37.2. At und Batch
37.2.1. Konfigurieren von At-Jobs
37.2.2. Konfigurieren von Batch Jobs
37.2.3. Anzeigen von anstehenden Jobs
37.2.4. Zusätzliche Optionen der Befehlszeile
37.2.5. Zugriffskontrolle für At und Batch
37.2.6. Starten und Beenden des Dienstes
37.3. Zusätzliche Ressourcen
37.3.1. Installierte Dokumentation
38. Protokoll-Dateien
38.1. Lokalisieren von Log-Dateien
38.2. Log-Dateien anzeigen
38.3. Adding a Log File
38.4. Kontrolle von Protokolldateien
V. Systemüberwachung
39. SystemTap
39.1. Introduction
39.2. Implementierung
39.3. Die Verwendung von SystemTap
39.3.1. Tracing
40. Informationen über das System
40.1. Systemprozesse
40.2. Speichernutzung
40.3. Dateisysteme
40.4. Hardware
40.5. Zusätzliche Ressourcen
40.5.1. Installierte Dokumentation
41. OProfile
41.1. Übersicht der Tools
41.2. Konfiguration von OProfile
41.2.1. Bestimmung des Kernels
41.2.2. Einstellung der zu beobachtenden Ereignisse
41.2.3. Trennung von Kernel- und Benutzerspeicher-Profilen
41.3. Starten und Anhalten von OProfile
41.4. Speicherung von Daten
41.5. Datenanalyse
41.5.1. Using opreport
41.5.2. Using opreport on a Single Executable
41.5.3. Getting more detailed output on the modules
41.5.4. Using opannotate
41.6. Understanding /dev/oprofile/
41.7. Beispielsverwendung
41.8. Grafische Schnittstelle
41.9. Zusätzliche Informationsquellen
41.9.1. Installierte Dokumente
41.9.2. Hilfreiche Websites
VI. Kernel- und Treiber-Konfiguration
42. Manuelles Aktualisieren des Kernels
42.1. Überblick über Kernel-Pakete
42.2. Vorbereiten einer Aktualisierung
42.3. Herunterladen des aktualisierten Kernels
42.4. Durchführen einer Aktualisierung
42.5. Bestätigen des Initial RAM Disk Image
42.6. Überprüfen des Bootloader
42.6.1. x86-Systeme
42.6.2. Itanium-Systeme
42.6.3. IBM S/390 und IBM System z Systems
42.6.4. IBM eServer iSeries Systeme
42.6.5. IBM eServer pSeries Systeme
43. Allgemeine Parameter und Module
43.1. Kernel-Modul-Hilfsprogramme
43.2. Persistentes Modul-Laden
43.3. Spezifizieren der Modulparameter
43.4. Speicher-Parameter
43.5. Ethernet-Parameter
43.5.1. Verwendung mehrerer Ethernet-Karten
43.5.2. Die Kanal-Verbindungsmodule
43.6. Weitere Ressourcen
43.6.1. Installierte Dokumentation
43.6.2. Nützliche Websites
44. The kdump Crash Recovery Service
44.1. Configuring the kdump Service
44.1.1. Configuring the kdump at First Boot
44.1.2. Using the Kernel Dump Configuration Utility
44.1.3. Configuring kdump on the Command Line
44.1.4. Testing the Configuration
44.2. Analyzing the Core Dump
44.2.1. Displaying the Message Buffer
44.2.2. Displaying a Backtrace
44.2.3. Displaying a Process Status
44.2.4. Displaying Virtual Memory Information
44.2.5. Displaying Open Files
44.3. Additional Resources
44.3.1. Installed Documentation
44.3.2. Useful Websites
VII. Sicherheit und Authentifizierung
45. Überblick über Sicherheit
45.1. Introduction to Security
45.1.1. What is Computer Security?
45.1.2. Security Controls
45.1.3. Conclusion
45.2. Schwachstellenanalyse
45.2.1. Denken wie der Feind
45.2.2. Definition von Analyse und Test
45.2.3. Auswerten der Tools
45.3. Angreifer und Schwachstellen
45.3.1. Ein kurzer geschichtlicher Überblick über Hacker
45.3.2. Bedrohungen der Netzwerksicherheit
45.3.3. Bedrohungen der Serversicherheit
45.3.4. Bedrohungen der Workstation- und Heim-PC-Sicherheit
45.4. Häufige Schwachstellen und Attacken
45.5. Sicherheits-Updates
45.5.1. Pakete aktualisieren
46. Sichern Ihres Netzwerkes
46.1. Workstation-Sicherheit
46.1.1. Auswertung der Workstation-Sicherheit
46.1.2. BIOS und Bootloader Sicherheit
46.1.3. Passwortsicherheit
46.1.4. Administrative Kontrollen
46.1.5. Verfügbare Netzwerkdienste
46.1.6. Persönliche Firewalls
46.1.7. Kommunikationstools mit erhöhter Sicherheit
46.2. Server-Sicherheit
46.2.1. Sichern von Diensten mit TCP-Wrappern und xinetd
46.2.2. Portmap sichern
46.2.3. Sichern von NIS
46.2.4. Sicherung von NFS
46.2.5. Sicherung des Apache HTTP-Server
46.2.6. Sicherung von FTP
46.2.7. Sicherung von Sendmail
46.2.8. Bestätigen, welche Ports auf Verbindungen abhören
46.3. Single Sign-on (SSO)
46.3.1. Introduction
46.3.2. Getting Started with your new Smart Card
46.3.3. How Smart Card Enrollment Works
46.3.4. How Smart Card Login Works
46.3.5. Configuring Firefox to use Kerberos for SSO
46.4. Pluggable Authentication Modules (PAM)
46.4.1. Vorteile von PAM
46.4.2. PAM-Konfigurationsdateien
46.4.3. Format der PAM Konfigurationsdatei
46.4.4. Beispiele für PAM-Konfigurationsdateien
46.4.5. Module erstellen
46.4.6. PAM und Administrative-Credential-Caching
46.4.7. PAM und Besitzrechte von Geräten
46.4.8. Zusätzliche Ressourcen
46.5. TCP-Wrapper und xinetd
46.5.1. TCP Wrappers
46.5.2. TCP-Wrapper Konfigurationsdateien
46.5.3. xinetd
46.5.4. xinetd-Konfigurationsdateien
46.5.5. Zusätzliche Ressourcen
46.6. Kerberos
46.6.1. Was ist Kerberos?
46.6.2. Kerberos-Terminologie
46.6.3. Funktionsweise von Kerberos
46.6.4. Kerberos und PAM
46.6.5. Konfigurieren eines Kerberos 5-Servers
46.6.6. Konfigurieren eines Kerberos 5-Clients
46.6.7. Domain-to-Realm Mapping
46.6.8. Setting Up Secondary KDCs
46.6.9. Setting Up Cross Realm Authentication
46.6.10. Zusätzliche Ressourcen
46.7. Virtuelle Private Netzwerke (VPNs)
46.7.1. Wie funktioniert ein VPN?
46.7.2. VPNs und Red Hat Enterprise Linux
46.7.3. IPsec
46.7.4. Eine IPsec-Verbindung erstellen
46.7.5. Installation von IPsec
46.7.6. Konfiguration von IPsec Host-zu-Host
46.7.7. IPsec Netzwerk-zu-Netzwerk Konfiguration
46.7.8. Starten und Stoppen einer IPsec-Verbindung
46.8. Firewalls
46.8.1. Netfilter and IPTables
46.8.2. Basic Firewall Configuration
46.8.3. Using IPTables
46.8.4. Common IPTables Filtering
46.8.5. FORWARD and NAT Rules
46.8.6. Malicious Software and Spoofed IP Addresses
46.8.7. IPTables and Connection Tracking
46.8.8. IPv6
46.8.9. Zusätzliche Informationsquellen
46.9. IPTables
46.9.1. Paket-Filterung
46.9.2. Unterschiede zwischen IPTables und IPChains
46.9.3. Befehlszeilenoptionen für IPTables
46.9.4. IPTables-Regeln speichern
46.9.5. IPTables Kontrollskripte
46.9.6. IPTables und IPv6
46.9.7. Zusätzliche Informationsquellen
47. Sicherheit und SELinux
47.1. Access Control Mechanisms (ACMs)
47.1.1. Discretionary Access Control (DAC)
47.1.2. Access Control Lists (ACLs)
47.1.3. Mandatory Access Control (MAC)
47.1.4. Role-based Access Control (RBAC)
47.1.5. Multi-Level Security (MLS)
47.1.6. Multi-Category Security (MCS)
47.2. Einführung in SELinux
47.2.1. SELinux Überblick
47.2.2. Dateien, die mit SELinux zusammenhängen
47.2.3. Zusätzliche Ressourcen
47.3. Kurzer Hintergrund und Geschichte von SELinux
47.4. Multi-Category Security (MCS)
47.4.1. Introduction
47.4.2. Applications for Multi-Category Security
47.4.3. SELinux Security Contexts
47.5. Getting Started with Multi-Category Security (MCS)
47.5.1. Introduction
47.5.2. Comparing SELinux and Standard Linux User Identities
47.5.3. Configuring Categories
47.5.4. Assigning Categories to Users
47.5.5. Assigning Categories to Files
47.6. Multi-Level Security (MLS)
47.6.1. Why Multi-Level?
47.6.2. Security Levels, Objects and Subjects
47.6.3. MLS Policy
47.6.4. LSPP Certification
47.7. SELinux Policy Overview
47.7.1. What is the SELinux Policy?
47.7.2. Where is the Policy?
47.7.3. The Role of Policy in the Boot Process
47.7.4. Object Classes and Permissions
47.8. Targeted Policy Overview
47.8.1. What is the Targeted Policy?
47.8.2. Files and Directories of the Targeted Policy
47.8.3. Understanding the Users and Roles in the Targeted Policy
48. Arbeiten mit SELinux
48.1. End User Control of SELinux
48.1.1. Moving and Copying Files
48.1.2. Checking the Security Context of a Process, User, or File Object
48.1.3. Relabeling a File or Directory
48.1.4. Creating Archives That Retain Security Contexts
48.2. Administrator Control of SELinux
48.2.1. Viewing the Status of SELinux
48.2.2. Relabeling a File System
48.2.3. Managing NFS Home Directories
48.2.4. Granting Access to a Directory or a Tree
48.2.5. Backing Up and Restoring the System
48.2.6. Enabling or Disabling Enforcement
48.2.7. Enable or Disable SELinux
48.2.8. Changing the Policy
48.2.9. Specifying the Security Context of Entire File Systems
48.2.10. Changing the Security Category of a File or User
48.2.11. Running a Command in a Specific Security Context
48.2.12. Useful Commands for Scripts
48.2.13. Changing to a Different Role
48.2.14. When to Reboot
48.3. Analyst Control of SELinux
48.3.1. Enabling Kernel Auditing
48.3.2. Dumping and Viewing Logs
49. Anpassen einer SELinux-Richtlinie (policy)
49.1. Einführung
49.1.1. Modulare Richtlinie (policy)
49.2. Erstellen eines lokalen Richtlinienmoduls
49.2.1. Verwendung von audit2allow zum Erstellen eines lokalen Richtlinienmoduls
49.2.2. Analyse der Datei "Type Enforcement (TE)"
49.2.3. Laden des Pakets mit der Richtlinie
50. References
VIII. Red Hat Training und Zertifizierung
51. Red Hat Training und Zertifizierung
51.1. Drei Möglichkeiten für ein Training
51.2. Microsoft Certified Professional Resource Center
52. Zertifizierungsschienen
52.1. Kostenlose Tests zur vorherigen Einschätzung der Fähigkeiten
53. RH033: Red Hat Linux Grundlagen (Einführung in die Administration)
53.1. Kursbeschreibung
53.1.1. Voraussetzungen
53.1.2. Ziel
53.1.3. Teilnehmerkreis
53.1.4. Lerninhalte
53.1.5. Empfohlene Folgekurse
54. RH035: Red Hat Grundlagen für Windows-Experten
54.1. Kursbeschreibung
54.1.1. Voraussetzungen
54.1.2. Ziel
54.1.3. Teilnehmerkreis
54.1.4. Lerninhalte
54.1.5. Empfohlene Folgekurse
55. RH133: Red Hat Linux Systemadministration und Red Hat Certified Technician (RHCT) Zertifizierung
55.1. Kursbeschreibung
55.1.1. Voraussetzungen
55.1.2. Ziel
55.1.3. Teilnehmerkreis
55.1.4. Lerninhalte
55.1.5. Empfohlene Folgekurse
56. RH202 RHCT EXAM - Die sich am schnellsten ausweitenden Referenzen im Bereich Linux.
56.1. Kursbeschreibung
56.1.1. Voraussetzungen
57. RH253 Red Hat Linux Netzwerk und Sicherheit
57.1. Kursbeschreibung
57.1.1. Voraussetzungen
57.1.2. Ziel
57.1.3. Teilnehmerkreis
57.1.4. Lerninhalte
57.1.5. Empfohlene Folgekurse
58. RH300: RHCE Fast Track Kurs (incl. RHCE Examensprüfung)
58.1. Kursbeschreibung
58.1.1. Voraussetzungen
58.1.2. Ziel
58.1.3. Teilnehmerkreis
58.1.4. Lerninhalte
58.1.5. Empfohlene Folgekurse
59. RH302 RHCE Examensprüfung
59.1. Kursbeschreibung
59.1.1. Voraussetzungen
59.1.2. Inhalt
60. RHS333: Red Hat Enterprise Security: Network Services (Netzwerkdienste)
60.1. Kursbeschreibung
60.1.1. Voraussetzungen
60.1.2. Ziel
60.1.3. Teilnehmerkreis
60.1.4. Lerninhalte
60.1.5. Empfohlene Folgekurse
61. RH401: Red Hat Enterprise Deployment und Systems Management (Einsatz und Systemverwaltung)
61.1. Kursbeschreibung
61.1.1. Voraussetzungen
61.1.2. Ziel
61.1.3. Teilnehmerkreis
61.1.4. Lerninhalte
61.1.5. Empfohlene Folgekurse
62. RH423 Red Hat Enterprise Directory Services and Authentication (Verzeichnisdienste und Authentifizierung)
62.1. Kursbeschreibung
62.1.1. Voraussetzungen
62.1.2. Ziel
62.1.3. Teilnehmerkreis
62.1.4. Lerninhalte
62.1.5. Empfohlene Folgekurse
63. SELinux Courses
63.1. RHS427: Einführung in SELinux und die Red Hat "Targeted" Richtlinie
63.1.1. Teilnehmerkreis
63.1.2. Kurszusammenfassung
63.2. RHS429: Red Hat Enterprise SELinux Policy Administration
64. RH436 Red Hat Enterprise Storage Mgmt. (Speicherverwaltung)
64.1. Kursbeschreibung
64.1.1. Voraussetzungen
64.1.2. Ziel
64.1.3. Teilnehmerkreis
64.1.4. Lerninhalte
64.1.5. Empfohlene Folgekurse
65. RH442 Red Hat Enterprise System Monitoring and Performance Tuning (Systemüberwachung und Leistungsoptimierung)
65.1. Kursbeschreibung
65.1.1. Voraussetzungen
65.1.2. Ziel
65.1.3. Teilnehmerkreis
65.1.4. Lerninhalte
65.1.5. Empfohlene Folgekurse
66. Red Hat Enterprise Linux Developer Courses (Kurse für Entwickler)
66.1. RHD143: Red Hat Linux Programming Essentials (Programmiergrundlagen)
66.2. RHD221 Red Hat Linux Device Drivers (Gerätetreiber)
66.3. RHD236 Red Hat Linux Kernel Internals (Kernel-Internas)
66.4. RHD256 Red Hat Linux Application Development und Porting (Anwendungsentwicklung und Portierung)
67. JBoss-Kurse
67.1. RHD161 JBoss und EJB3 für Java-Entwickler
67.1.1. Voraussetzungen
67.2. RHD163 JBoss für Web-Entwickler
67.2.1. Voraussetzungen
67.3. RHD167: JBOSS - HIBERNATE GRUNDLAGEN
67.3.1. Voraussetzungen
67.3.2. Kurszusammenfassung
67.4. RHD267: JBOSS - ADVANCED HIBERNATE
67.4.1. Voraussetzungen
67.5. RHD261: JBoss für Advanced J2EE-Entwickler
67.5.1. Voraussetzungen
67.6. RH336: JBOSS für Administratoren
67.6.1. Voraussetzungen
67.6.2. Kurszusammenfassung
67.7. RHD439: JBoss Clustering
67.7.1. Voraussetzungen
67.8. RHD449: JBoss jBPM
67.8.1. Beschreibung
67.8.2. Voraussetzungen
67.9. RHD451 JBoss-Rules
67.9.1. Voraussetzungen
A. Revision History
B. Colophon

Einführung

Willkommen beim Red Hat Enterprise Linux Deployment-Handbuch.
Das Red Hat Enterprise Linux Deployment-Handbuch beinhaltet Informationen zur Anpassung Ihres Systems, damit dies Ihren Anforderungen entspricht. Wenn Sie ein umfangreiches, aufgabenorientiertes Handbuch zur Konfiguration und Anpassung Ihres Systems suchen, ist dieses Handbuch genau das Richtige für Sie.
Dieses Handbuch behandelt viele fortgeschrittene Themen, wie beispielsweise die folgenden:
  • Einrichten einer Netzwerkkarte (NIC)
  • Konfiguration eines Virtual Private Network (VPN)
  • Konfiguration von Samba-Freigaben
  • Verwaltung Ihrer Software mit RPM
  • Ermittlung von Informationen Ihres Systems
  • Aktualisierung Ihres Kernels
Dieses Handbuch ist in die folgenden Hauptkategorien untergliedert:
  • Dateisysteme
  • Paketverwaltung
  • Netzwerkbezogene Konfiguration
  • Systemkonfiguration
  • Systemüberwachung
  • Kernel- und Treiberkonfiguration
  • Sicherheit und Authentifizierung
  • Red Hat Training und Zertifizierung
Dieses Handbuch setzt ein grundlegendes Verständnis Ihres Red Hat Enterprise Linux Systems voraus. Falls Sie Hilfe bei der Installation von Red Hat Enterprise Linux benötigen, werfen Sie einen Blick auf das Red Hat Enterprise Linux Installationshandbuch.

1. Document Conventions

In this manual, certain words are represented in different fonts, typefaces, sizes, and weights. This highlighting is systematic; different words are represented in the same style to indicate their inclusion in a specific category. The types of words that are represented this way include the following:
command
Linux commands (and other operating system commands, when used) are represented this way. This style should indicate to you that you can type the word or phrase on the command line and press Enter to invoke a command. Sometimes a command contains words that would be displayed in a different style on their own (such as file names). In these cases, they are considered to be part of the command, so the entire phrase is displayed as a command. For example:
Use the cat testfile command to view the contents of a file, named testfile, in the current working directory.
file name
File names, directory names, paths, and RPM package names are represented this way. This style indicates that a particular file or directory exists with that name on your system. Examples:
The .bashrc file in your home directory contains bash shell definitions and aliases for your own use.
The /etc/fstab file contains information about different system devices and file systems.
Install the webalizer RPM if you want to use a Web server log file analysis program.
application
This style indicates that the program is an end-user application (as opposed to system software). For example:
Use Mozilla to browse the Web.
key
A key on the keyboard is shown in this style. For example:
To use Tab completion to list particular files in a directory, type ls, then a character, and finally the Tab key. Your terminal displays the list of files in the working directory that begin with that character.
key+combination
A combination of keystrokes is represented in this way. For example:
The Ctrl+Alt+Backspace key combination exits your graphical session and returns you to the graphical login screen or the console.
text found on a GUI interface
A title, word, or phrase found on a GUI interface screen or window is shown in this style. Text shown in this style indicates a particular GUI screen or an element on a GUI screen (such as text associated with a checkbox or field). Example:
Select the Require Password checkbox if you would like your screensaver to require a password before stopping.
top level of a menu on a GUI screen or window
A word in this style indicates that the word is the top level of a pulldown menu. If you click on the word on the GUI screen, the rest of the menu should appear. For example:
Under File on a GNOME terminal, the New Tab option allows you to open multiple shell prompts in the same window.
Instructions to type in a sequence of commands from a GUI menu look like the following example:
Go to Applications (the main menu on the panel) > Programming > Emacs Text Editor to start the Emacs text editor.
button on a GUI screen or window
This style indicates that the text can be found on a clickable button on a GUI screen. For example:
Click on the Back button to return to the webpage you last viewed.
computer output
Text in this style indicates text displayed to a shell prompt such as error messages and responses to commands. For example:
The ls command displays the contents of a directory. For example:
Desktop    about.html    logs     paulwesterberg.png
Mail    backupfiles    mail     reports
The output returned in response to the command (in this case, the contents of the directory) is shown in this style.
prompt
A prompt, which is a computer's way of signifying that it is ready for you to input something, is shown in this style. Examples:
$
#
[stephen@maturin stephen]$
leopard login:
user input
Text that the user types, either on the command line or into a text box on a GUI screen, is displayed in this style. In the following example, text is displayed in this style:
To boot your system into the text based installation program, you must type in the text command at the boot: prompt.
<replaceable>
Text used in examples that is meant to be replaced with data provided by the user is displayed in this style. In the following example, <version-number> is displayed in this style:
The directory for the kernel source is /usr/src/kernels/<version-number>/, where <version-number> is the version and type of kernel installed on this system.
Additionally, we use several different strategies to draw your attention to certain pieces of information. In order of urgency, these items are marked as a note, tip, important, caution, or warning. For example:

Note

Remember that Linux is case sensitive. In other words, a rose is not a ROSE is not a rOsE.

Tip

The directory /usr/share/doc/ contains additional documentation for packages installed on your system.

Important

If you modify the DHCP configuration file, the changes do not take effect until you restart the DHCP daemon.

Caution

Do not perform routine tasks as root — use a regular user account unless you need to use the root account for system administration tasks.

Warning

Be careful to remove only the necessary partitions. Removing other partitions could result in data loss or a corrupted system environment.

2. Senden Sie uns Ihr Feedback

If you find an error in the Red Hat Enterprise Linux Deployment Guide, or if you have thought of a way to make this manual better, we would like to hear from you! Submit a report in Bugzilla (http://bugzilla.redhat.com/bugzilla/) against the component Deployment_Guide.
Falls Sie uns einen Vorschlag zur Verbesserung der Dokumentation senden möchten, sollten Sie hierzu möglichst genaue Angaben machen. Wenn Sie einen Fehler gefunden haben, geben Sie bitte die Nummer des Abschnitts und einen Ausschnitt des Textes an, damit wir diesen leicht finden können.

Teil I. Dateisysteme

File system refers to the files and directories stored on a computer. A file system can have different formats called file system types. These formats determine how the information is stored as files and directories. Some file system types store redundant copies of the data, while some file system types make hard drive access faster. This part discusses the ext3, swap, RAID, and LVM file system types. It also discusses the parted utility to manage partitions and access control lists (ACLs) to customize file permissions.

Inhaltsverzeichnis

1. Struktur des Dateisystems
1.1. Warum eine gemeinsame Struktur?
1.2. Übersicht über den Dateisystem-Hierarchiestandard (FHS)
1.2.1. FHS-Organisation
1.3. Spezielle Dateispeicherstellen unter Red Hat Enterprise Linux
2. Using the mount Command
2.1. Listing Currently Mounted File Systems
2.2. Mounting a File System
2.2.1. Specifying the File System Type
2.2.2. Specifying the Mount Options
2.2.3. Sharing Mounts
2.2.4. Moving a Mount Point
2.3. Unmounting a File System
2.4. Additional Resources
2.4.1. Installed Documentation
2.4.2. Useful Websites
3. Das ext3-Dateisystem
3.1. Eigenschaften von ext3
3.2. Erstellen eines ext3-Dateisystems
3.3. Konvertierung in ein ext3-Dateisystem
3.4. Rückkehr zu einem ext2-Dateisystem
4. The proc File System
4.1. Ein virtuelles Dateisystem
4.1.1. Anzeigen virtueller Dateien
4.1.2. Ändern virtueller Dateien
4.2. Top-level Files within the proc File System
4.2.1. /proc/apm
4.2.2. /proc/buddyinfo
4.2.3. /proc/cmdline
4.2.4. /proc/cpuinfo
4.2.5. /proc/crypto
4.2.6. /proc/devices
4.2.7. /proc/dma
4.2.8. /proc/execdomains
4.2.9. /proc/fb
4.2.10. /proc/filesystems
4.2.11. /proc/interrupts
4.2.12. /proc/iomem
4.2.13. /proc/ioports
4.2.14. /proc/kcore
4.2.15. /proc/kmsg
4.2.16. /proc/loadavg
4.2.17. /proc/locks
4.2.18. /proc/mdstat
4.2.19. /proc/meminfo
4.2.20. /proc/misc
4.2.21. /proc/modules
4.2.22. /proc/mounts
4.2.23. /proc/mtrr
4.2.24. /proc/partitions
4.2.25. /proc/pci
4.2.26. /proc/slabinfo
4.2.27. /proc/stat
4.2.28. /proc/swaps
4.2.29. /proc/sysrq-trigger
4.2.30. /proc/uptime
4.2.31. /proc/version
4.3. Directories within /proc/
4.3.1. Prozess-Verzeichnisse
4.3.2. /proc/bus/
4.3.3. /proc/driver/
4.3.4. /proc/fs
4.3.5. /proc/ide/
4.3.6. /proc/irq/
4.3.7. /proc/net/
4.3.8. /proc/scsi/
4.3.9. /proc/sys/
4.3.10. /proc/sysvipc/
4.3.11. /proc/tty/
4.3.12. /proc/<PID>/
4.4. Using the sysctl Command
4.5. Zusätzliche Ressourcen
4.5.1. Installierte Dokumentation
4.5.2. Hilfreiche Websites
5. Redundant Array of Independent Disks (RAID)
5.1. What is RAID?
5.1.1. Who Should Use RAID?
5.1.2. Hardware RAID versus Software RAID
5.1.3. RAID Levels and Linear Support
5.2. Configuring Software RAID
5.2.1. Creating the RAID Partitions
5.2.2. Creating the RAID Devices and Mount Points
5.3. Managing Software RAID
5.3.1. Reviewing RAID Configuration
5.3.2. Creating a New RAID Device
5.3.3. Replacing a Faulty Device
5.3.4. Extending a RAID Device
5.3.5. Removing a RAID Device
5.3.6. Preserving the Configuration
5.4. Additional Resources
5.4.1. Installed Documentation
6. Swap-Space
6.1. Was ist Swap-Space?
6.2. Swap-Space hinzufügen
6.2.1. Extending Swap on an LVM2 Logical Volume
6.2.2. Creating an LVM2 Logical Volume for Swap
6.2.3. Creating a Swap File
6.3. Löschen von Swap-Space
6.3.1. Reducing Swap on an LVM2 Logical Volume
6.3.2. Removing an LVM2 Logical Volume for Swap
6.3.3. Removing a Swap File
6.4. Swap-Space verlagern
7. Verwalten des Festplattenspeichers
7.1. Standard Partitions using parted
7.1.1. Anzeigen der Partitionstabelle
7.1.2. Erstellen von Partitionen
7.1.3. Löschen von Partitionen
7.1.4. Ändern der Partitionsgröße
7.2. LVM Partition Management
8. Festplatten-Quoten implementieren
8.1. Festplatten-Quoten konfigurieren
8.1.1. Quoten aktivieren
8.1.2. Erneutes Mounten des Dateisystems
8.1.3. Creating the Quota Database Files
8.1.4. Quoten pro Benutzer zuweisen
8.1.5. Quoten pro Gruppe zuweisen
8.1.6. Setting the Grace Period for Soft Limits
8.2. Verwalten von Festplatten-Quoten
8.2.1. Aktivieren und Deaktivieren
8.2.2. Berichte über Festplatten-Quoten erstellen
8.2.3. Genauigkeit der Quoten einhalten
8.3. Zusätzliche Ressourcen
8.3.1. Installierte Dokumentation
8.3.2. Bücher zum Thema
9. Access Control Lists
9.1. Dateisysteme mounten
9.1.1. NFS
9.2. Access ACLs einstellen
9.3. Einstellen von Default ACLs
9.4. ACLs abrufen
9.5. Dateisysteme mit ACLs archivieren
9.6. Kompatibilität mit älteren Systemen
9.7. Zusätzliche Ressourcen
9.7.1. Installierte Dokumentation
9.7.2. Nützliche Webseiten
10. LVM (Logical Volume Manager)
10.1. What is LVM?
10.1.1. What is LVM2?
10.2. LVM-Konfiguration
10.3. Automatic Partitioning
10.4. Manual LVM Partitioning
10.4.1. Creating the /boot Partition
10.4.2. Creating the LVM Physical Volumes
10.4.3. Creating the LVM Volume Groups
10.4.4. Creating the LVM Logical Volumes
10.5. Using the LVM utility system-config-lvm
10.5.1. Utilizing uninitialized entities
10.5.2. Adding Unallocated Volumes to a volume group
10.5.3. Migrating extents
10.5.4. Adding a new hard disk using LVM
10.5.5. Adding a new volume group
10.5.6. Extending a volume group
10.5.7. Editing a Logical Volume
10.6. Additional Resources
10.6.1. Installed Documentation
10.6.2. Useful Websites

Kapitel 1. Struktur des Dateisystems

1.1. Warum eine gemeinsame Struktur?

Die Struktur des Dateisystems ist die niedrigste organisatorische Stufe eines Betriebssystems. Fast alle Wege, mit denen ein Betriebssystem mit seinen Benutzern, seinen Anwendungen und seinem Sicherheitskonzept interagiert, hängen davon ab, wie es Dateien auf Speicherelementen speichert. Das Bereitstellen einer gemeinsamen Struktur des Dateisystems stellt sicher, dass Benutzer und Programme imstande sind, Dateien zu öffnen und Dateien zu schreiben.
Dateisysteme unterteilen Dateien in zwei logische Kategorien:
  • Shareable vs. unshareable files
  • Variable und statische Dateien
Shareable files are those that can be accessed locally and by remote hosts; unshareable files are only available locally. Variable files, such as documents, can be changed at any time; static files, such as binaries, do not change without an action from the system administrator.
Diese Betrachtungsweise soll helfen, die Zusammenhänge zwischen Dateien und den Zugriffsoptionen ihrer Verzeichnisse besser zu erkennen. Die Art, wie das Betriebssystem und seine Benutzer die Dateien verwenden, bestimmt somit auch das Verzeichnis, in dem sie abgelegt werden. Und ob dieses Verzeichnis schreibgeschützt gemountet wird, oder mit Schreib- und Lesezugriff, und welche Zugriffsrechte jeder Benutzer für seine Dateien hat. Ausschlaggebend ist die oberste Organisationsstufe, da der Zugriff auf die darunterliegenden Verzeichnisse eingeschränkt werden kann bzw. sich unter Umständen Sicherheitsprobleme ergeben, wenn die Organisation nicht von oben bis unten einer strengen Struktur unterliegt.

1.2. Übersicht über den Dateisystem-Hierarchiestandard (FHS)

Red Hat Enterprise Linux verwendet die Filesystem Hierarchy Standard (FHS)-Dateisystemstruktur, die die Namen, Orte und Berechtigungen für viele Dateiarten und Verzeichnisse definiert.
Das aktuelle FHS-Dokument ist die maßgebende Referenz für alle FHS-konformen Dateisysteme, wobei der Standard jedoch viele Bereiche undefiniert oder erweiterbar lässt. In diesem Abschnitt geben wir Ihnen einen Überblick über diesen Standard und eine Beschreibung jener Bereiche des Dateisystems, die vom Standard nicht erfasst werden.
Compliance with the standard means many things, but the two most important are compatibility with other compliant systems and the ability to mount a /usr/ partition as read-only. This second point is important because the directory contains common executables and should not be changed by users. Also, since the /usr/ directory is mounted as read-only, it can be mounted from the CD-ROM or from another machine via a read-only NFS mount.

1.2.1. FHS-Organisation

Die hier beschriebenen Verzeichnisse und Dateien stellen nur eine kleine Teilmenge der im Dokument zum Dateisystemstandard angegebenen Verzeichnisse und Dateien dar. Vollständige Informationen finden Sie im neuesten Dokument zum Dateisystemstandard FHS.
Der vollständige Standard ist online verfügbar unter: http://www.pathname.com/fhs/.

1.2.1.1. The /boot/ Directory

The /boot/ directory contains static files required to boot the system, such as the Linux kernel. These files are essential for the system to boot properly.

Warnung

Do not remove the /boot/ directory. Doing so renders the system unbootable.

1.2.1.2. The /dev/ Directory

The /dev/ directory contains device nodes that either represent devices that are attached to the system or virtual devices that are provided by the kernel. These device nodes are essential for the system to function properly. The udev daemon takes care of creating and removing all these device nodes in /dev/.
Devices in the /dev directory and subdirectories are either character (providing only a serial stream of input/output) or block (accessible randomly). Character devices include mouse, keyboard, modem while block devices include hard disk, floppy drive etc. If you have GNOME or KDE installed in your system, devices such as external drives or cds are automatically detected when connected (e.g via usb) or inserted (e.g via CD or DVD drive) and a popup window displaying the contents is automatically displayed. Files in the /dev directory are essential for the system to function properly.
Tabelle 1.1. Examples of common files in the /dev
File Description
/dev/hda The master device on primary IDE channel.
/dev/hdb The slave device on primary IDE channel.
/dev/tty0 The first virtual console.
/dev/tty1 The second virtual console.
/dev/sda The first device on primary SCSI or SATA channel.
/dev/lp0 The first parallel port.

1.2.1.3. The /etc/ Directory

The /etc/ directory is reserved for configuration files that are local to the machine. No binaries are to be placed in /etc/. Any binaries that were once located in /etc/ should be placed into /sbin/ or /bin/.
Examples of directories in /etc are the X11/ and skel/:
/etc
   |- X11/
   |- skel/
The /etc/X11/ directory is for X Window System configuration files, such as xorg.conf. The /etc/skel/ directory is for "skeleton" user files, which are used to populate a home directory when a user is first created. Applications also store their configuration files in this directory and may reference them when they are executed.

1.2.1.4. The /lib/ Directory

The /lib/ directory should contain only those libraries needed to execute the binaries in /bin/ and /sbin/. These shared library images are particularly important for booting the system and executing commands within the root file system.

1.2.1.5. The /media/ Directory

The /media/ directory contains subdirectories used as mount points for removable media such as usb storage media, DVDs, CD-ROMs, and Zip disks.

1.2.1.6. The /mnt/ Directory

The /mnt/ directory is reserved for temporarily mounted file systems, such as NFS file system mounts. For all removable media, please use the /media/ directory. Automatically detected removable media will be mounted in the /media directory.

Hinweis

Das /mnt-Verzeichnis darf nicht durch Installationsprogramme benutzt werden.

1.2.1.7. The /opt/ Directory

The /opt/ directory provides storage for most application software packages.
A package placing files in the /opt/ directory creates a directory bearing the same name as the package. This directory, in turn, holds files that otherwise would be scattered throughout the file system, giving the system administrator an easy way to determine the role of each file within a particular package.
For example, if sample is the name of a particular software package located within the /opt/ directory, then all of its files are placed in directories inside the /opt/sample/ directory, such as /opt/sample/bin/ for binaries and /opt/sample/man/ for manual pages.
Packages that encompass many different sub-packages, data files, extra fonts, clipart etc are also located in the /opt/ directory, giving that large package a way to organize itself. In this way, our sample package may have different tools that each go in their own sub-directories, such as /opt/sample/tool1/ and /opt/sample/tool2/, each of which can have their own bin/, man/, and other similar directories.

1.2.1.8. The /proc/ Directory

The /proc/ directory contains special files that either extract information from or send information to the kernel. Examples include system memory, cpu information, hardware configuration etc.
Due to the great variety of data available within /proc/ and the many ways this directory can be used to communicate with the kernel, an entire chapter has been devoted to the subject. For more information, refer to Kapitel 4, The proc File System.

1.2.1.9. The /sbin/ Directory

The /sbin/ directory stores executables used by the root user. The executables in /sbin/ are used at boot time, for system administration and to perform system recovery operations. Of this directory, the FHS says:
/sbin contains binaries essential for booting, restoring, recovering, and/or repairing the system in addition to the binaries in /bin. Programs executed after /usr/ is known to be mounted (when there are no problems) are generally placed into /usr/sbin. Locally-installed system administration programs should be placed into /usr/local/sbin.
At a minimum, the following programs should be in /sbin/:
arp, clock,
halt, init,
fsck.*, grub,
ifconfig, mingetty,
mkfs.*, mkswap,
reboot, route,
shutdown, swapoff,
swapon

1.2.1.10. The /srv/ Directory

The /srv/ directory contains site-specific data served by your system running Red Hat Enterprise Linux. This directory gives users the location of data files for a particular service, such as FTP, WWW, or CVS. Data that only pertains to a specific user should go in the /home/ directory.

1.2.1.11. The /sys/ Directory

The /sys/ directory utilizes the new sysfs virtual file system specific to the 2.6 kernel. With the increased support for hot plug hardware devices in the 2.6 kernel, the /sys/ directory contains information similarly held in /proc/, but displays a hierarchical view of specific device information in regards to hot plug devices.

1.2.1.12. The /usr/ Directory

Im /usr/-Verzeichnis werden Dateien abgelegt, die mehreren Maschinen zur Verfügung gestellt werden. Das /usr/-Verzeichnis liegt oftmals in seiner eigenen Partition und ist schreibgeschützt gemountet. Zumindest folgende Verzeichnisse sollten Unterverzeichnisse von /usr/ sein:
/usr
   |- bin/
   |- etc/
   |- games/
   |- include/
   |- kerberos/
   |- lib/
   |- libexec/
   |- local/
   |- sbin/
   |- share/
   |- src/
   |- tmp -> ../var/tmp/
Under the /usr/ directory, the bin/ subdirectory contains executables, etc/ contains system-wide configuration files, games is for games, include/ contains C header files, kerberos/ contains binaries and other Kerberos-related files, and lib/ contains object files and libraries that are not designed to be directly utilized by users or shell scripts. The libexec/ directory contains small helper programs called by other programs, sbin/ is for system administration binaries (those that do not belong in the /sbin/ directory), share/ contains files that are not architecture-specific, src/ is for source code.

1.2.1.13. The /usr/local/ Directory

The FHS says:
The /usr/local hierarchy is for use by the system administrator when installing software locally. It needs to be safe from being overwritten when the system software is updated. It may be used for programs and data that are shareable among a group of hosts, but not found in /usr.
The /usr/local/ directory is similar in structure to the /usr/ directory. It has the following subdirectories, which are similar in purpose to those in the /usr/ directory:
/usr/local
	|- bin/
	|- etc/
	|- games/
	|- include/
	|- lib/
	|- libexec/
	|- sbin/
	|- share/
	|- src/
In Red Hat Enterprise Linux, the intended use for the /usr/local/ directory is slightly different from that specified by the FHS. The FHS says that /usr/local/ should be where software that is to remain safe from system software upgrades is stored. Since software upgrades can be performed safely with RPM Package Manager (RPM), it is not necessary to protect files by putting them in /usr/local/. Instead, the /usr/local/ directory is used for software that is local to the machine.
For instance, if the /usr/ directory is mounted as a read-only NFS share from a remote host, it is still possible to install a package or program under the /usr/local/ directory.

1.2.1.14. The /var/ Directory

Since the FHS requires Linux to mount /usr/ as read-only, any programs that write log files or need spool/ or lock/ directories should write them to the /var/ directory. The FHS states /var/ is for:
...variable data files. This includes spool directories and files, administrative and logging data, and transient and temporary files.
Below are some of the directories found within the /var/ directory:
/var
   |- account/
   |- arpwatch/
   |- cache/
   |- crash/
   |- db/
   |- empty/
   |- ftp/
   |- gdm/
   |- kerberos/
   |- lib/
   |- local/
   |- lock/
   |- log/
   |- mail -> spool/mail/
   |- mailman/
   |- named/
   |- nis/
   |- opt/
   |- preserve/
   |- run/
   +- spool/
       |- at/
       |- clientmqueue/
       |- cron/
       |- cups/
       |- exim/
       |- lpd/
       |- mail/
       |- mailman/
       |- mqueue/
       |- news/
       |- postfix/
       |- repackage/
       |- rwho/
       |- samba/
       |- squid/
       |- squirrelmail/
       |- up2date/
       |- uucp
       |- uucppublic/
       |- vbox/
|- tmp/
|- tux/
|- www/
|- yp/
System log files, such as messages and lastlog, go in the /var/log/ directory. The /var/lib/rpm/ directory contains RPM system databases. Lock files go in the /var/lock/ directory, usually in directories for the program using the file. The /var/spool/ directory has subdirectories for programs in which data files are stored.

1.3. Spezielle Dateispeicherstellen unter Red Hat Enterprise Linux

Red Hat Enterprise Linux erweitert die FHS-Struktur ein wenig, um Platz für spezielle Dateien zu schaffen.
Most files pertaining to RPM are kept in the /var/lib/rpm/ directory. For more information on RPM, refer to the chapter Kapitel 11, Die Paketverwaltung mit RPM.
The /var/cache/yum/ directory contains files used by the Package Updater, including RPM header information for the system. This location may also be used to temporarily store RPMs downloaded while updating the system. For more information about Red Hat Network, refer to Kapitel 14, Product Subscriptions and Entitlements.
Another location specific to Red Hat Enterprise Linux is the /etc/sysconfig/ directory. This directory stores a variety of configuration information. Many scripts that run at boot time use the files in this directory. Refer to Kapitel 30, The sysconfig Directory for more information about what is within this directory and the role these files play in the boot process.

Kapitel 2. Using the mount Command

On Linux, UNIX, and similar operating systems, file systems on different partitions and removable devices like CDs, DVDs, or USB flash drives can be attached to a certain point (that is, the mount point) in the directory tree, and detached again. To attach or detach a file system, you can use the mount or umount command respectively. This chapter describes the basic usage of these commands, and covers some advanced topics such as moving a mount point or creating shared subtrees.

2.1. Listing Currently Mounted File Systems

To display all currently attached file systems, run the mount command with no additional arguments:
mount
This command displays the list of known mount points. Each line provides important information about the device name, the file system type, the directory in which it is mounted, and relevant mount options in the following form:
device on directory type type (options)
By default, the output includes various virtual file systems such as sysfs, tmpfs, and others. To display only the devices with a certain file system type, supply the -t option on the command line:
mount -t type
For a list of common file system types, refer to Tabelle 2.1, „Common File System Types“. For an example on how to use the mount command to list the mounted file systems, see Beispiel 2.1, „Listing Currently Mounted ext3 File Systems“.
Beispiel 2.1. Listing Currently Mounted ext3 File Systems
Usually, both / and /boot partitions are formatted to use ext3. To display only the mount points that use this file system, type the following at a shell prompt:
~]$ mount -t ext3
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
/dev/vda1 on /boot type ext3 (rw)

2.2. Mounting a File System

To attach a certain file system, use the mount command in the following form:
mount [option] device directory
When the mount command is run, it reads the content of the /etc/fstab configuration file to see if the given file system is listed. This file contains a list of device names and the directory in which the selected file systems should be mounted, as well as the file system type and mount options. Because of this, when you are mounting a file system that is specified in this file, you can use one of the following variants of the command:
mount [option] directory
mount [option] device
Note that unless you are logged in as root, you must have permissions to mount the file system (see Abschnitt 2.2.2, „Specifying the Mount Options“).

2.2.1. Specifying the File System Type

In most cases, mount detects the file system automatically. However, there are certain file systems, such as NFS (Network File System) or CIFS (Common Internet File System), that are not recognized, and need to be specified manually. To specify the file system type, use the mount command in the following form:
mount -t type device directory
Tabelle 2.1, „Common File System Types“ provides a list of common file system types that can be used with the mount command. For a complete list of all available file system types, consult the relevant manual page as referred to in Abschnitt 2.4.1, „Installed Documentation“.
Tabelle 2.1. Common File System Types
Type Description
ext2 The ext2 file system.
ext3 The ext3 file system.
iso9660 The ISO 9660 file system. It is commonly used by optical media, typically CDs.
jfs The JFS file system created by IBM.
nfs The NFS file system. It is commonly used to access files over the network.
nfs4 The NFSv4 file system. It is commonly used to access files over the network.
ntfs The NTFS file system. It is commonly used on machines that are running the Windows operating system.
udf The UDF file system. It is commonly used by optical media, typically DVDs.
vfat The FAT file system. It is commonly used on machines that are running the Windows operating system, and on certain digital media such as USB flash drives or floppy disks.

Beispiel 2.2. Mounting a USB Flash Drive
Older USB flash drives often use the FAT file system. Assuming that such drive uses the /dev/sdc1 device and that the /media/flashdisk/ directory exists, you can mount it to this directory by typing the following at a shell prompt as root:
~]# mount -t vfat /dev/sdc1 /media/flashdisk

2.2.2. Specifying the Mount Options

To specify additional mount options, use the command in the following form:
mount -o options
When supplying multiple options, do not insert a space after a comma, or mount will incorrectly interpret the values following spaces as additional parameters.
Tabelle 2.2, „Common Mount Options“ provides a list of common mount options. For a complete list of all available options, consult the relevant manual page as referred to in Abschnitt 2.4.1, „Installed Documentation“.
Tabelle 2.2. Common Mount Options
Option Description
async Allows the asynchronous input/output operations on the file system.
auto Allows the file system to be mounted automatically using the mount -a command.
defaults Provides an alias for async,auto,dev,exec,nouser,rw,suid.
exec Allows the execution of binary files on the particular file system.
loop Mounts an image as a loop device.
noauto Disallows the automatic mount of the file system using the mount -a command.
noexec Disallows the execution of binary files on the particular file system.
nouser Disallows an ordinary user (that is, other than root) to mount and unmount the file system.
remount Remounts the file system in case it is already mounted.
ro Mounts the file system for reading only.
rw Mounts the file system for both reading and writing.
user Allows an ordinary user (that is, other than root) to mount and unmount the file system.

See Beispiel 2.3, „Mounting an ISO Image“ for an example usage.
Beispiel 2.3. Mounting an ISO Image
An ISO image (or a disk image in general) can be mounted by using the loop device. Assuming that the ISO image of the Fedora 14 installation disc is present in the current working directory and that the /media/cdrom/ directory exists, you can mount the image to this directory by running the following command as root:
~]# mount -o ro,loop Fedora-14-x86_64-Live-Desktop.iso /media/cdrom
Note that ISO 9660 is by design a read-only file system.

2.2.3. Sharing Mounts

Occasionally, certain system administration tasks require access to the same file system from more than one place in the directory tree (for example, when preparing a chroot environment). To address such requirements, the mount command implements the --bind option that provides a means for duplicating certain mounts. Its usage is as follows:
mount --bind old_directory new_directory
Although the above command allows a user to access the file system from both places, it does not apply on the file systems that are mounted within the original directory. To include these mounts as well, type:
mount --rbind old_directory new_directory
Additionally, to provide as much flexibility as possible, Red Hat Enterprise Linux 5.8 implements the functionality known as shared subtrees. This feature allows you to use the following four mount types:
Shared Mount
A shared mount allows you to create an exact replica of a given mount point. When a shared mount is created, any mount within the original mount point is reflected in it, and vice versa. To create a shared mount, type the following at a shell prompt:
mount --make-shared mount_point
Alternatively, you can change the mount type for the selected mount point and all mount points under it:
mount --make-rshared mount_point
Beispiel 2.4. Creating a Shared Mount Point
There are two places where other file systems are commonly mounted: the /media directory for removable media, and the /mnt directory for temporarily mounted file systems. By using a shared mount, you can make these two directories share the same content. To do so, as root, mark the /media directory as shared:
~]# mount --bind /media /media
~]# mount --make-shared /media
Then create its duplicate in /mnt by using the following command:
~]# mount --bind /media /mnt
You can now verify that a mount within /media also appears in /mnt. For example, if you have non-empty media in your CD-ROM drive and the /media/cdrom/ directory exists, run the following commands:
~]# mount /dev/cdrom /media/cdrom
~]# ls /media/cdrom
EFI  GPL  isolinux  LiveOS
~]# ls /mnt/cdrom
EFI  GPL  isolinux  LiveOS
Similarly, you can verify that any file system mounted in the /mnt directory is reflected in /media. For instance, if you have a non-empty USB flash drive that uses the /dev/sdc1 device plugged in and the /mnt/flashdisk/ directory is present, type:
~]# mount /dev/sdc1 /mnt/flashdisk
~]# ls /media/flashdisk
en-US  publican.cfg
~]# ls /mnt/flashdisk
en-US  publican.cfg

Slave Mount
A slave mount allows you to create a limited duplicate of a given mount point. When a slave mount is created, any mount within the original mount point is reflected in it, but no mount within a slave mount is reflected in its original. To create a slave mount, type the following at a shell prompt:
mount --make-slave mount_point
Alternatively, you can change the mount type for the selected mount point and all mount points under it:
mount --make-rslave mount_point
Beispiel 2.5. Creating a Slave Mount Point
Imagine you want the content of the /media directory to appear in /mnt as well, but you do not want any mounts in the /mnt directory to be reflected in /media. To do so, as root, first mark the /media directory as shared:
~]# mount --bind /media /media
~]# mount --make-shared /media
Then create its duplicate in /mnt, but mark it as slave:
~]# mount --bind /media /mnt
~]# mount --make-slave /mnt
You can now verify that a mount within /media also appears in /mnt. For example, if you have non-empty media in your CD-ROM drive and the /media/cdrom/ directory exists, run the following commands:
~]# mount /dev/cdrom /media/cdrom
~]# ls /media/cdrom
EFI  GPL  isolinux  LiveOS
~]# ls /mnt/cdrom
EFI  GPL  isolinux  LiveOS
You can also verify that file systems mounted in the /mnt directory are not reflected in /media. For instance, if you have a non-empty USB flash drive that uses the /dev/sdc1 device plugged in and the /mnt/flashdisk/ directory is present, type: :
~]# mount /dev/sdc1 /mnt/flashdisk
~]# ls /media/flashdisk
~]# ls /mnt/flashdisk
en-US  publican.cfg

Private Mount
A private mount allows you to create an ordinary mount. When a private mount is created, no subsequent mounts within the original mount point are reflected in it, and no mount within a private mount is reflected in its original. To create a private mount, type the following at a shell prompt:
mount --make-private mount_point
Alternatively, you can change the mount type for the selected mount point and all mount points under it:
mount --make-rprivate mount_point
Beispiel 2.6. Creating a Private Mount Point
Taking into account the scenario in Beispiel 2.4, „Creating a Shared Mount Point“, assume that you have previously created a shared mount point by using the following commands as root:
~]# mount --bind /media /media
~]# mount --make-shared /media
~]# mount --bind /media /mnt
To mark the /mnt directory as private, type:
~]# mount --make-private /mnt
You can now verify that none of the mounts within /media appears in /mnt. For example, if you have non-empty media in your CD-ROM drive and the /media/cdrom/ directory exists, run the following commands:
~]# mount /dev/cdrom /media/cdrom
~]# ls /media/cdrom
EFI  GPL  isolinux  LiveOS
~]# ls /mnt/cdrom
~]#
You can also verify that file systems mounted in the /mnt directory are not reflected in /media. For instance, if you have a non-empty USB flash drive that uses the /dev/sdc1 device plugged in and the /mnt/flashdisk/ directory is present, type:
~]# mount /dev/sdc1 /mnt/flashdisk
~]# ls /media/flashdisk
~]# ls /mnt/flashdisk
en-US  publican.cfg

Unbindable Mount
An unbindable mount allows you to prevent a given mount point from being duplicated whatsoever. To create an unbindable mount, type the following at a shell prompt:
mount --make-unbindable mount_point
Alternatively, you can change the mount type for the selected mount point and all mount points under it:
mount --make-runbindable mount_point
Beispiel 2.7. Creating an Unbindable Mount Point
To prevent the /media directory from being shared, as root, type the following at a shell prompt:
~]# mount --bind /media /media
~]# mount --make-unbindable /media
This way, any subsequent attempt to make a duplicate of this mount will fail with an error:
~]# mount --bind /media /mnt
mount: wrong fs type, bad option, bad superblock on /media/,
       missing code page or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

2.2.4. Moving a Mount Point

To change the directory in which a file system is mounted, use the following command:
mount --move old_directory new_directory
Beispiel 2.8. Moving an Existing NFS Mount Point
Imagine that you have an NFS storage that contains user directories. Assuming that this storage is already mounted in /mnt/userdirs/, as root, you can move this mount point to /home by using the following command:
~]# mount --move /mnt/userdirs /home
To verify the mount point has been moved, list the content of both directories:
~]# ls /mnt/userdirs
~]# ls /home
jill  joe

2.3. Unmounting a File System

To detach a previously mounted file system, use either of the following variants of the umount command:
umount directory
umount device
Note that unless you are logged in as root, you must have permissions to unmount the file system (see Abschnitt 2.2.2, „Specifying the Mount Options“). See Beispiel 2.9, „Unmounting a CD“ for an example usage.

Important: Make Sure the File System Is Not in Use

When a file system is in use (for example, when a process is reading a file on this file system), running the umount command will fail with an error. To determine which processes are accessing the file system, use the fuser command in the following form:
fuser -m directory
For example, to list the processes that are accessing a file system mounted to the /media/cdrom/ directory, type:
~]$ fuser -m /media/cdrom
/media/cdrom:         1793  2013  2022  2435 10532c 10672c
Beispiel 2.9. Unmounting a CD
To unmount a CD that was previously mounted to the /media/cdrom/ directory, type the following at a shell prompt:
~]$ umount /media/cdrom

2.4. Additional Resources

The following resources provide an in-depth documentation on the subject.

2.4.1. Installed Documentation

  • man 8 mount — The manual page for the mount command that provides a full documentation on its usage.
  • man 8 umount — The manual page for the umount command that provides a full documentation on its usage.
  • man 5 fstab — The manual page providing a thorough description of the /etc/fstab file format.

2.4.2. Useful Websites

  • Shared subtrees — An LWN article covering the concept of shared subtrees.
  • sharedsubtree.txt — Extensive documentation that is shipped with the shared subtrees patches.

Kapitel 3. Das ext3-Dateisystem

Das standardmäßige Dateisystem istext3 des Typs Journaling.

3.1. Eigenschaften von ext3

Das ext3-Dateisystem ist im Wesentlichen eine erweiterte Version des ext2-Dateisystems. Diese Verbesserungen bringen folgende Vorteile mit sich:
Verfügbarkeit
After an unexpected power failure or system crash (also called an unclean system shutdown), each mounted ext2 file system on the machine must be checked for consistency by the e2fsck program. This is a time-consuming process that can delay system boot time significantly, especially with large volumes containing a large number of files. During this time, any data on the volumes is unreachable.
Das vom ext3-Dateisystem angelegte Journal bewirkt, dass diese Art Kontrollen des Dateisystems nach einer unsauberen Systemabschaltung nicht mehr notwendig sind. Das einzige Mal, wenn eine Konsistenzkontrolle bei ext3 durchgeführt wird, ist bei selten auftretenden Hardware-Fehlern wie Festplattenlaufwerkfehlern. Die Zeit zum Wiederherstellen eines ext3-Dateisystems nach einer unsauberen Systemschließung hängt nicht von der Größe des Dateisystems oder der Anzahl der Dateien ab, sondern von der Größe des Journals, das zur Konsistenzpflege verwendet wird. Das Wiederherstellen eines Journals der Standardgröße dauert etwa eine Sekunde, je nachdem wie schnell die Hardware ist.
Datenintegrität
Das ext3-Dateisystem liefert eine bessere Datenintegrität im Falle einer unsauberen Systemabschaltung. Mit dem ext3-Dateisystem haben Sie die Möglichkeit, Art und Stufe des Schutzes Ihrer Daten zu wählen. Standardmäßig werden ext3-Volumen konfiguriert, um ein hohes Niveau an Datenkonsistenz im Hinblick auf den Dateisystemstatus beizubehalten.
Geschwindigkeit
Despite writing some data more than once, ext3 has a higher throughput in most cases than ext2 because ext3's journaling optimizes hard drive head motion. You can choose from three journaling modes to optimize speed, but doing so means trade-offs in regards to data integrity if the system was to fail.
Einfacher Umstieg
It is easy to migrate from ext2 to ext3 and gain the benefits of a robust journaling file system without reformatting. Refer to Abschnitt 3.3, „Konvertierung in ein ext3-Dateisystem“ for more on how to perform this task.
The following sections walk you through the steps for creating and tuning ext3 partitions. For ext2 partitions, skip the partitioning and formatting sections below and go directly to Abschnitt 3.3, „Konvertierung in ein ext3-Dateisystem“.

3.2. Erstellen eines ext3-Dateisystems

Nach der Installation ist es manchmal notwendig, ein neues ext3-Dateisystem zu erstellen. Wenn Sie zum Beispiel einem System ein neues Festplattenlaufwerk hinzufügen, möchten Sie wahrscheinlich neue Partitionen für das Laufwerk erstellen und das ext3-Dateisystem verwenden.
Schritte zum Erstellen eines ext3-Dateisystems:
  1. Format the partition with the ext3 file system using mkfs.
  2. Label the partition using e2label.

3.3. Konvertierung in ein ext3-Dateisystem

The tune2fs allows you to convert an ext2 filesystem to ext3.

Hinweis

Verwenden Sie stets das e2fsck-Hilfsprogramm, um Ihr Dateisystem zu prüfen sowie nach Verwendung von tune2fs. Eine Standardinstallation von Red Hat Enterprise Linux verwendet ext3 für sämtliche Dateisysteme.
Um ein ext2-Dateisystem in ein ext3 zu konvertieren, melden Sie sich als Root-Account an und geben Sie Folgendes ein:
tune2fs -j <block_device>
where <block_device> contains the ext2 filesystem you wish to convert.
A valid block device could be one of two types of entries:
  • A mapped device — A logical volume in a volume group, for example, /dev/mapper/VolGroup00-LogVol02.
  • A static device — A traditional storage volume, for example, /dev/hdbX, where hdb is a storage device name and X is the partition number.
Issue the df command to display mounted file systems.
For the remainder of this section, the sample commands use the following value for the block device:
/dev/mapper/VolGroup00-LogVol02
You must recreate the initrd image so that it will contain the ext3 kernel module. To create this, run the mkinitrd program. For information on using the mkinitrd command, type man mkinitrd. Also, make sure your GRUB configuration loads the initrd.
Versäumen Sie es, diese Änderung vorzunehmen, wird das System zwar gebootet, aber das Dateisystem wird als ext2 anstatt ext3 gemountet.

3.4. Rückkehr zu einem ext2-Dateisystem

Um eine Partition von ext3 in ext2 zurückzuverwandeln, müssen Sie zunächst die Partition durch Anmeldung als Root und mit Hilfe folgender Eingabe unmounten:
umount /dev/mapper/VolGroup00-LogVol02
Ändern Sie den Dateisystemtyp in ext2 durch Eingabe des folgenden Befehls als root:
tune2fs -O ^has_journal /dev/mapper/VolGroup00-LogVol02
Kontrollieren Sie die Partition auf Fehler. Geben Sie hierzu als root den folgenden Befehl ein:
e2fsck -y /dev/mapper/VolGroup00-LogVol02
Mounten Sie dann die Partition erneut als ext2-Dateisystem durch Eingabe von:
mount -t ext2 /dev/mapper/VolGroup00-LogVol02 /mount/point
Ersetzen Sie im obengenannten Befehl /mount/point durch den Mount-Punkt der Partition.
Next, remove the .journal file at the root level of the partition by changing to the directory where it is mounted and typing:
rm -f .journal
Sie verfügen jetzt über eine ext2-Partition.
If you want to permanently change the partition to ext2, remember to update the /etc/fstab file.

Kapitel 4. The proc File System

The Linux kernel has two primary functions: to control access to physical devices on the computer and to schedule when and how processes interact with these devices. The /proc/ directory — also called the proc file system — contains a hierarchy of special files which represent the current state of the kernel — allowing applications and users to peer into the kernel's view of the system.
Within the /proc/ directory, one can find a wealth of information detailing the system hardware and any processes currently running. In addition, some of the files within the /proc/ directory tree can be manipulated by users and applications to communicate configuration changes to the kernel.

4.1. Ein virtuelles Dateisystem

Under Linux, all data are stored as files. Most users are familiar with the two primary types of files: text and binary. But the /proc/ directory contains another type of file called a virtual file. It is for this reason that /proc/ is often referred to as a virtual file system.
Diese virtuellen Dateien haben einige interessante Besonderheiten. Die meisten werden mit einer Dateigröße von 0 Bytes aufgelistet, wenn man die Datei allerdings öffnet, zeigt sie oft einiges an Informationen. Außerdem spiegeln die meisten Zeit-und Datumseinstellungen der virtuellen Dateien die aktuelle Zeit und das aktuelle Datum wieder, was bedeutet, dass sie sich ständig ändern.
Virtual files such as /proc/interrupts, /proc/meminfo, /proc/mounts, and /proc/partitions provide an up-to-the-moment glimpse of the system's hardware. Others, like the /proc/filesystems file and the /proc/sys/ directory provide system configuration information and interfaces.
For organizational purposes, files containing information on a similar topic are grouped into virtual directories and sub-directories. For instance, /proc/ide/ contains information for all physical IDE devices. Likewise, process directories contain information about each running process on the system.

4.1.1. Anzeigen virtueller Dateien

By using the cat, more, or less commands on files within the /proc/ directory, users can immediately access enormous amounts of information about the system. For example, to display the type of CPU a computer has, type cat /proc/cpuinfo to receive output similar to the following:
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 5
model		: 9
model name	: AMD-K6(tm) 3D+
Processor stepping	: 1 cpu
MHz		: 400.919
cache size	: 256 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
bogomips	: 799.53
When viewing different virtual files in the /proc/ file system, some of the information is easily understandable while some is not human-readable. This is in part why utilities exist to pull data from virtual files and display it in a useful way. Examples of these utilities include lspci, apm, free, and top.

Anmerkung

Some of the virtual files in the /proc/ directory are readable only by the root user.

4.1.2. Ändern virtueller Dateien

As a general rule, most virtual files within the /proc/ directory are read-only. However, some can be used to adjust settings in the kernel. This is especially true for files in the /proc/sys/ subdirectory.
To change the value of a virtual file, use the echo command and a greater than symbol (>) to redirect the new value to the file. For example, to change the hostname on the fly, type:
echo www.example.com > /proc/sys/kernel/hostname 
Other files act as binary or Boolean switches. Typing cat /proc/sys/net/ipv4/ip_forward returns either a 0 or a 1. A 0 indicates that the kernel is not forwarding network packets. Using the echo command to change the value of the ip_forward file to 1 immediately turns packet forwarding on.

Tip

Another command used to alter settings in the /proc/sys/ subdirectory is /sbin/sysctl. For more information on this command, refer to Abschnitt 4.4, „Using the sysctl Command“
For a listing of some of the kernel configuration files available in the /proc/sys/ subdirectory, refer to Abschnitt 4.3.9, „ /proc/sys/.

4.2. Top-level Files within the proc File System

Below is a list of some of the more useful virtual files in the top-level of the /proc/ directory.

Anmerkung

In most cases, the content of the files listed in this section are not the same as those installed on your machine. This is because much of the information is specific to the hardware on which Red Hat Enterprise Linux is running for this documentation effort.

4.2.1. /proc/apm

This file provides information about the state of the Advanced Power Management (APM) system and is used by the apm command. If a system with no battery is connected to an AC power source, this virtual file would look similar to the following:
1.16 1.2 0x07 0x01 0xff 0x80 -1% -1 ?
Running the apm -v command on such a system results in output similar to the following:
APM BIOS 1.2 (kernel driver 1.16ac) AC on-line, no system battery
For systems which do not use a battery as a power source, apm is able do little more than put the machine in standby mode. The apm command is much more useful on laptops. For example, the following output is from the command cat /proc/apm on a laptop while plugged into a power outlet:
1.16 1.2 0x03 0x01 0x03 0x09 100% -1 ?
When the same laptop is unplugged from its power source for a few minutes, the content of the apm file changes to something like the following:
1.16 1.2 0x03 0x00 0x00 0x01 99% 1792 min
The apm -v command now yields more useful data, such as the following:
APM BIOS 1.2 (kernel driver 1.16) AC off-line, battery status high: 99% (1 day, 5:52)

4.2.2. /proc/buddyinfo

Diese Datei wird hauptsächlich dazu benutzt Speicherfragmentierungs-Probleme zu diagnostizieren. Unter Verwendung des Buddy System Algorithmus stellt jede Spalte die Anzahl von Seiten einer bestimmten Reihenfolge (einer bestimmten Größe) dar, welche jederzeit verfügbar sind. Zum Beispiel gibt es für Zone-DMA (Direct Memory Access) 90 von 2^(0*PAGE_SIZE) Chunks Speicher. Ähnlich dazu stehen 6 von 2^(1*PAGE_SIZE) Chunks und 2 von 2^(2*PAGE_SIZE) Chunks Speicher zur Verfügung.
The DMA row references the first 16 MB on a system, the HighMem row references all memory greater than 4 GB on a system, and the Normal row references all memory in between.
The following is an example of the output typical of /proc/buddyinfo:
Node 0, zone      DMA     90      6      2      1      1      ...
Node 0, zone   Normal   1650    310      5      0      0      ...
Node 0, zone  HighMem      2      0      0      1      1      ...

4.2.3. /proc/cmdline

This file shows the parameters passed to the kernel at the time it is started. A sample /proc/cmdline file looks like the following:
ro root=/dev/VolGroup00/LogVol00 rhgb quiet 3
This output tells us the following:
ro
The root device is mounted read-only at boot time. The presence of ro on the kernel boot line overrides any instances of rw.
root=/dev/VolGroup00/LogVol00
This tells us on which disk device or, in this case, on which logical volume, the root filesystem image is located. With our sample /proc/cmdline output, the root filesystem image is located on the first logical volume (LogVol00) of the first LVM volume group (VolGroup00). On a system not using Logical Volume Management, the root file system might be located on /dev/sda1 or /dev/sda2, meaning on either the first or second partition of the first SCSI or SATA disk drive, depending on whether we have a separate (preceding) boot or swap partition on that drive.
For more information on LVM used in Red Hat Enterprise Linux, refer to http://www.tldp.org/HOWTO/LVM-HOWTO/index.html.
rhgb
A short lowercase acronym that stands for Red Hat Graphical Boot, providing "rhgb" on the kernel command line signals that graphical booting is supported, assuming that /etc/inittab shows that the default runlevel is set to 5 with a line like this:
id:5:initdefault:
quiet
Indicates that all verbose kernel messages except those which are extremely serious should be suppressed at boot time.

4.2.4. /proc/cpuinfo

This virtual file identifies the type of processor used by your system. The following is an example of the output typical of /proc/cpuinfo:
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 15
model		: 2
model name	: Intel(R) Xeon(TM) CPU 2.40GHz
stepping	: 7 cpu
MHz		: 2392.371
cache size	: 512 KB
physical id	: 0
siblings	: 2
runqueue	: 0
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca  cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
bogomips	: 4771.02
  • processor — Provides each processor with an identifying number. On systems that have one processor, only a 0 is present.
  • cpu family — Authoritatively identifies the type of processor in the system. For an Intel-based system, place the number in front of "86" to determine the value. This is particularly helpful for those attempting to identify the architecture of an older system such as a 586, 486, or 386. Because some RPM packages are compiled for each of these particular architectures, this value also helps users determine which packages to install.
  • model name — Displays the common name of the processor, including its project name.
  • cpu MHz — Shows the precise speed in megahertz for the processor to the thousandths decimal place.
  • cache size — Displays the amount of level 2 memory cache available to the processor.
  • siblings — Displays the number of sibling CPUs on the same physical CPU for architectures which use hyper-threading.
  • flags — Defines a number of different qualities about the processor, such as the presence of a floating point unit (FPU) and the ability to process MMX instructions.

4.2.5. /proc/crypto

This file lists all installed cryptographic ciphers used by the Linux kernel, including additional details for each. A sample /proc/crypto file looks like the following:
name         : sha1
module       : kernel
type         : digest
blocksize    : 64
digestsize   : 20
name         : md5
module       : md5
type         : digest
blocksize    : 64
digestsize   : 16

4.2.6. /proc/devices

Diese Datei zeigt die Zeichen- und Block-Geräte an, die zur Zeit im Kernel konfiguriert sind (Geräte, deren Module nicht im Kernel geladen sind, werden nicht berücksichtigt). Eine Beispiel-Ausgabe dieser virtuellen Datei finden Sie hier:
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  4 ttyS
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  7 vcs
  10 misc
  13 input
  29 fb
  36 netlink
  128 ptm
  136 pts
  180 usb

Block devices:
  1 ramdisk
  3 ide0
  9 md
  22 ide1
  253 device-mapper
  254 mdp
The output from /proc/devices includes the major number and name of the device, and is broken into two major sections: Character devices and Block devices.
Zeichen-Geräte (Character Devices) sind bis auf zwei wichtige Unterschiede sehr ähnlich zu Block-Geräten.
  1. Block-Geräte haben einen Puffer, der das Ordnen von Zugriffen vor der Ausführung zulässt. Das ermöglicht zum Beispiel bei Festplatten oder anderen Speichergeräten eine effizientere Speicherung durch die Fähigkeit die Informationen zuvor zu gliedern. Zeichen-Geräte benötigen diese Pufferung nicht.
  2. Block-Geräte können Informationen in Datenblöcken einer bestimmten Größe senden und empfangen. Diese Größe kann je nach Gerät konfiguriert werden. Zeichen-Geräte senden Daten, ohne eine vorkonfigurierte Größe zu beachten.
Für weitere Informationen über Geräte, sehen Sie die im Folgenden angegebene Dokumentation:
/usr/share/doc/kernel-doc-<version>/Documentation/devices.txt

4.2.7. /proc/dma

This file contains a list of the registered ISA DMA channels in use. A sample /proc/dma files looks like the following:
4: cascade

4.2.8. /proc/execdomains

Diese Datei zeigt die Execution Domains, die gegenwärtig vom Linux-Kernel unterstützt werden, und die jeweilige Anzahl unterstützter "Personalities" (Persönlichkeiten) an.
0-0   Linux           [kernel]
Think of execution domains as the "personality" for an operating system. Because other binary formats, such as Solaris, UnixWare, and FreeBSD, can be used with Linux, programmers can change the way the operating system treats system calls from these binaries by changing the personality of the task. Except for the PER_LINUX execution domain, different personalities can be implemented as dynamically loadable modules.

4.2.9. /proc/fb

This file contains a list of frame buffer devices, with the frame buffer device number and the driver that controls it. Typical output of /proc/fb for systems which contain frame buffer devices looks similar to the following:
0 VESA VGA

4.2.10. /proc/filesystems

This file displays a list of the file system types currently supported by the kernel. Sample output from a generic /proc/filesystems file looks similar to the following:
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   sockfs
nodev   binfmt_misc
nodev   usbfs
nodev   usbdevfs
nodev   futexfs
nodev   tmpfs
nodev   pipefs
nodev   eventpollfs
nodev   devpts
	ext2
nodev   ramfs
nodev   hugetlbfs
	iso9660
nodev   mqueue
	ext3
nodev   rpc_pipefs
nodev   autofs
The first column signifies whether the file system is mounted on a block device. Those beginning with nodev are not mounted on a device. The second column lists the names of the file systems supported.
The mount command cycles through the file systems listed here when one is not specified as an argument.

4.2.11. /proc/interrupts

This file records the number of interrupts per IRQ on the x86 architecture. A standard /proc/interrupts looks similar to the following:
  CPU0
  0:   80448940          XT-PIC  timer
  1:     174412          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  8:          1          XT-PIC  rtc
 10:     410964          XT-PIC  eth0
 12:      60330          XT-PIC  PS/2 Mouse
 14:    1314121          XT-PIC  ide0
 15:    5195422          XT-PIC  ide1
NMI:          0
ERR:          0
Bei einer Multi-Prozessor-Maschine sieht dies etwas anders aus:
	   CPU0       CPU1
  0: 1366814704          0          XT-PIC  timer
  1:        128        340    IO-APIC-edge  keyboard
  2:          0          0          XT-PIC  cascade
  8:          0          1    IO-APIC-edge  rtc
 12:       5323       5793    IO-APIC-edge  PS/2 Mouse
 13:          1          0          XT-PIC  fpu
 16:   11184294   15940594   IO-APIC-level  Intel EtherExpress Pro 10/100 Ethernet
 20:    8450043   11120093   IO-APIC-level  megaraid
 30:      10432      10722   IO-APIC-level  aic7xxx
 31:         23         22   IO-APIC-level  aic7xxx
NMI:          0
ERR:          0
Die erste Spalte bezeichnet die IRQ Nummer. Jede CPU im Rechner hat ihre eigene Spalte und ihre eigenen Interrupts pro IRQ. Die nächste Spalte bezeichnet den Typ des Interrupts und die letzte Spalte enthält den Namen des Geräts, das auf diesem IRQ angesprochen werden kann.
Jeder der Interrupt-Typen, die plattform-spezifisch sind, in dieser Datei hat eine unterschiedliche Bedeutung. Bei x86 Rechnern kommen folgende Werte häufig vor:
  • XT-PIC — This is the old AT computer interrupts.
  • IO-APIC-edge — The voltage signal on this interrupt transitions from low to high, creating an edge, where the interrupt occurs and is only signaled once. This kind of interrupt, as well as the IO-APIC-level interrupt, are only seen on systems with processors from the 586 family and higher.
  • IO-APIC-level — Generates interrupts when its voltage signal is high until the signal is low again.

4.2.12. /proc/iomem

This file shows you the current map of the system's memory for each physical device:
00000000-0009fbff : System RAM
0009fc00-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000f0000-000fffff : System ROM
00100000-07ffffff : System RAM
00100000-00291ba8 : Kernel code
00291ba9-002e09cb : Kernel data
e0000000-e3ffffff : VIA Technologies, Inc. VT82C597 [Apollo VP3] e4000000-e7ffffff : PCI Bus #01
e4000000-e4003fff : Matrox Graphics, Inc. MGA G200 AGP
e5000000-e57fffff : Matrox Graphics, Inc. MGA G200 AGP
e8000000-e8ffffff : PCI Bus #01
e8000000-e8ffffff : Matrox Graphics, Inc. MGA G200 AGP
ea000000-ea00007f : Digital Equipment Corporation DECchip 21140 [FasterNet]
ea000000-ea00007f : tulip ffff0000-ffffffff : reserved
Die erste Spalte zeigt die Speicherregister an, die von jedem der verschiedenen Speichertypen verwendet werden. Die zweite Spalte zeigt die Art des Speichers in diesem Register an. Diese Spalte zeigt Ihnen vor allem auch an, welche Speicherregister vom Kernel im Systemspeicher benutzt werden, oder, wenn z.B. Ihre Netzwerkschnittstelle mehrere Ethernetports hat, welcher Port welche Speicherregister verwendet.

4.2.13. /proc/ioports

The output of /proc/ioports provides a list of currently registered port regions used for input or output communication with a device. This file can be quite long. The following is a partial listing:
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
02f8-02ff : serial(auto)
0376-0376 : ide1
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(auto)
0cf8-0cff : PCI conf1
d000-dfff : PCI Bus #01
e000-e00f : VIA Technologies, Inc. Bus Master IDE
e000-e007 : ide0
e008-e00f : ide1
e800-e87f : Digital Equipment Corporation DECchip 21140 [FasterNet]
e800-e87f : tulip
Die erste Spalte zeigt den Adressbereich des I/O-Ports an, der für ein Gerät in der zweiten Spalte reserviert ist.

4.2.14. /proc/kcore

This file represents the physical memory of the system and is stored in the core file format. Unlike most /proc/ files, kcore displays a size. This value is given in bytes and is equal to the size of the physical memory (RAM) used plus 4 KB.
The contents of this file are designed to be examined by a debugger, such as gdb, and is not human readable.

Achtung

Do not view the /proc/kcore virtual file. The contents of the file scramble text output on the terminal. If this file is accidentally viewed, press Ctrl+C to stop the process and then type reset to bring back the command line prompt.

4.2.15. /proc/kmsg

This file is used to hold messages generated by the kernel. These messages are then picked up by other programs, such as /sbin/klogd or /bin/dmesg.

4.2.16. /proc/loadavg

This file provides a look at the load average in regard to both the CPU and IO over time, as well as additional data used by uptime and other commands. A sample /proc/loadavg file looks similar to the following:
0.20 0.18 0.12 1/80 11206
The first three columns measure CPU and IO utilization of the last one, five, and 15 minute periods. The fourth column shows the number of currently running processes and the total number of processes. The last column displays the last process ID used.
In addition, load average also refers to the number of processes ready to run (i.e. in the run queue, waiting for a CPU share.

4.2.17. /proc/locks

This file displays the files currently locked by the kernel. The contents of this file contain internal kernel debugging data and can vary tremendously, depending on the use of the system. A sample /proc/locks file for a lightly loaded system looks similar to the following:
1: POSIX  ADVISORY  WRITE 3568 fd:00:2531452 0 EOF
2: FLOCK  ADVISORY  WRITE 3517 fd:00:2531448 0 EOF
3: POSIX  ADVISORY  WRITE 3452 fd:00:2531442 0 EOF
4: POSIX  ADVISORY  WRITE 3443 fd:00:2531440 0 EOF
5: POSIX  ADVISORY  WRITE 3326 fd:00:2531430 0 EOF
6: POSIX  ADVISORY  WRITE 3175 fd:00:2531425 0 EOF
7: POSIX  ADVISORY  WRITE 3056 fd:00:2548663 0 EOF
Each lock has its own line which starts with a unique number. The second column refers to the class of lock used, with FLOCK signifying the older-style UNIX file locks from a flock system call and POSIX representing the newer POSIX locks from the lockf system call.
The third column can have two values: ADVISORY or MANDATORY. ADVISORY means that the lock does not prevent other people from accessing the data; it only prevents other attempts to lock it. MANDATORY means that no other access to the data is permitted while the lock is held. The fourth column reveals whether the lock is allowing the holder READ or WRITE access to the file. The fifth column shows the ID of the process holding the lock. The sixth column shows the ID of the file being locked, in the format of MAJOR-DEVICE:MINOR-DEVICE:INODE-NUMBER . The seventh and eighth column shows the start and end of the file's locked region.

4.2.18. /proc/mdstat

This file contains the current information for multiple-disk, RAID configurations. If the system does not contain such a configuration, then /proc/mdstat looks similar to the following:
Personalities :  read_ahead not set unused devices: <none>
This file remains in the same state as seen above unless a software RAID or md device is present. In that case, view /proc/mdstat to find the current status of mdX RAID devices.
The /proc/mdstat file below shows a system with its md0 configured as a RAID 1 device, while it is currently re-syncing the disks:
Personalities : [linear] [raid1] read_ahead 1024 sectors
md0: active raid1 sda2[1] sdb2[0] 9940 blocks [2/2] [UU] resync=1% finish=12.3min algorithm 2 [3/3] [UUU]
unused devices: <none>

4.2.19. /proc/meminfo

This is one of the more commonly used files in the /proc/ directory, as it reports a large amount of valuable information about the systems RAM usage.
The following sample /proc/meminfo virtual file is from a system with 256 MB of RAM and 512 MB of swap space:
MemTotal:       255908 kB
MemFree:         69936 kB
Buffers:         15812 kB
Cached:         115124 kB
SwapCached:          0 kB
Active:          92700 kB
Inactive:        63792 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       255908 kB
LowFree:         69936 kB
SwapTotal:      524280 kB
SwapFree:       524280 kB
Dirty:               4 kB
Writeback:           0 kB
Mapped:          42236 kB
Slab:            25912 kB
Committed_AS:   118680 kB
PageTables:       1236 kB
VmallocTotal:  3874808 kB
VmallocUsed:      1416 kB
VmallocChunk:  3872908 kB
HugePages_Total:     0
HugePages_Free:      0
Hugepagesize:     4096 kB
Much of the information here is used by the free, top, and ps commands. In fact, the output of the free command is similar in appearance to the contents and structure of /proc/meminfo. But by looking directly at /proc/meminfo, more details are revealed:
  • MemTotal — Total amount of physical RAM, in kilobytes.
  • MemFree — The amount of physical RAM, in kilobytes, left unused by the system.
  • Buffers — The amount of physical RAM, in kilobytes, used for file buffers.
  • Cached — The amount of physical RAM, in kilobytes, used as cache memory.
  • SwapCached — The amount of swap, in kilobytes, used as cache memory.
  • Active — The total amount of buffer or page cache memory, in kilobytes, that is in active use. This is memory that has been recently used and is usually not reclaimed for other purposes.
  • Inactive — The total amount of buffer or page cache memory, in kilobytes, that are free and available. This is memory that has not been recently used and can be reclaimed for other purposes.
  • HighTotal and HighFree — The total and free amount of memory, in kilobytes, that is not directly mapped into kernel space. The HighTotal value can vary based on the type of kernel used.
  • LowTotal and LowFree — The total and free amount of memory, in kilobytes, that is directly mapped into kernel space. The LowTotal value can vary based on the type of kernel used.
  • SwapTotal — The total amount of swap available, in kilobytes.
  • SwapFree — The total amount of swap free, in kilobytes.
  • Dirty — The total amount of memory, in kilobytes, waiting to be written back to the disk.
  • Writeback — The total amount of memory, in kilobytes, actively being written back to the disk.
  • Mapped — The total amount of memory, in kilobytes, which have been used to map devices, files, or libraries using the mmap command.
  • Slab — The total amount of memory, in kilobytes, used by the kernel to cache data structures for its own use.
  • Committed_AS — The total amount of memory, in kilobytes, estimated to complete the workload. This value represents the worst case scenario value, and also includes swap memory.
  • PageTables — The total amount of memory, in kilobytes, dedicated to the lowest page table level.
  • VMallocTotal — The total amount of memory, in kilobytes, of total allocated virtual address space.
  • VMallocUsed — The total amount of memory, in kilobytes, of used virtual address space.
  • VMallocChunk — The largest contiguous block of memory, in kilobytes, of available virtual address space.
  • HugePages_Total — The total number of hugepages for the system. The number is derived by dividing Hugepagesize by the megabytes set aside for hugepages specified in /proc/sys/vm/hugetlb_pool. This statistic only appears on the x86, Itanium, and AMD64 architectures.
  • HugePages_Free — The total number of hugepages available for the system. This statistic only appears on the x86, Itanium, and AMD64 architectures.
  • Hugepagesize — The size for each hugepages unit in kilobytes. By default, the value is 4096 KB on uniprocessor kernels for 32 bit architectures. For SMP, hugemem kernels, and AMD64, the default is 2048 KB. For Itanium architectures, the default is 262144 KB. This statistic only appears on the x86, Itanium, and AMD64 architectures.

4.2.20. /proc/misc

Diese Datei listet verschiedene Treiber auf, die im Major-Gerät mit der Nummer 10 aufgeführt sind:
63 device-mapper 175 agpgart 135 rtc 134 apm_bios
Die erste Spalte zeigt die Minor-Nummer des Geräts an und die zweite Spalte zeigt den benutzten Treiber an.

4.2.21. /proc/modules

This file displays a list of all modules loaded into the kernel. Its contents vary based on the configuration and use of your system, but it should be organized in a similar manner to this sample /proc/modules file output:

Anmerkung

This example has been reformatted into a readable format. Most of this information can also be viewed via the /sbin/lsmod command.
nfs      170109  0 -          Live 0x129b0000
lockd    51593   1 nfs,       Live 0x128b0000
nls_utf8 1729    0 -          Live 0x12830000
vfat     12097   0 -          Live 0x12823000
fat      38881   1 vfat,      Live 0x1287b000
autofs4  20293   2 -          Live 0x1284f000
sunrpc   140453  3 nfs,lockd, Live 0x12954000
3c59x    33257   0 -          Live 0x12871000
uhci_hcd 28377   0 -          Live 0x12869000
md5      3777    1 -          Live 0x1282c000
ipv6     211845 16 -          Live 0x128de000
ext3     92585   2 -          Live 0x12886000
jbd      65625   1 ext3,      Live 0x12857000
dm_mod   46677   3 -          Live 0x12833000
Die erste Spalte beinhaltet den Namen des Moduls.
Die zweite Spalte verweist auf die Speichergröße des Moduls in Bytes.
Die dritte Spalte listet die Anzahl der Instanzen des Moduls, die derzeit geladen sind. Ein Wert von Null repräsentiert ein ungeladenens Modul.
Die vierte Spalte gibt an, ob das Modul von der Anwesenheit eines anderen Moduls abhängig ist, um zu funktionieren und listet gleichzeitig diese anderen Module auf.
The fifth column lists what load state the module is in: Live, Loading, or Unloading are the only possible values.
The sixth column lists the current kernel memory offset for the loaded module. This information can be useful for debugging purposes, or for profiling tools such as oprofile.

4.2.22. /proc/mounts

Diese Datei gibt Ihnen einen kurzen Überblick über alle Mounts im System:
rootfs / rootfs rw 0 0
/proc /proc proc rw,nodiratime 0 0 none
/dev ramfs rw 0 0
/dev/mapper/VolGroup00-LogVol00 / ext3 rw 0 0
none /dev ramfs rw 0 0
/proc /proc proc rw,nodiratime 0 0
/sys /sys sysfs rw 0 0
none /dev/pts devpts rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/hda1 /boot ext3 rw 0 0
none /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
The output found here is similar to the contents of /etc/mtab, except that /proc/mount is more up-to-date.
The first column specifies the device that is mounted, the second column reveals the mount point, and the third column tells the file system type, and the fourth column tells you if it is mounted read-only (ro) or read-write (rw). The fifth and sixth columns are dummy values designed to match the format used in /etc/mtab.

4.2.23. /proc/mtrr

This file refers to the current Memory Type Range Registers (MTRRs) in use with the system. If the system architecture supports MTRRs, then the /proc/mtrr file may look similar to the following:
reg00: base=0x00000000 (   0MB), size= 256MB: write-back, count=1
reg01: base=0xe8000000 (3712MB), size=  32MB: write-combining, count=1
MTRRs are used with the Intel P6 family of processors (Pentium II and higher) and control processor access to memory ranges. When using a video card on a PCI or AGP bus, a properly configured /proc/mtrr file can increase performance more than 150%.
In den meisten Fällen werden diese Werte standardmäßig richtig für Sie eingestellt. Weitere Informationen zur manuellen Konfiguration dieser Datei, finden Sie unter folgender URL:
/usr/share/doc/kernel-doc-<version>/Documentation/mtrr.txt

4.2.24. /proc/partitions

Diese Datei beinhaltet Informationen über die Zuweisung von Partitions-Blöcken. Ein Sampling dieser Datei von einem Grundsystem sieht ähnlich wie Folgendes aus:
major minor  #blocks  name
  3     0   19531250 hda
  3     1     104391 hda1
  3     2   19422585 hda2
253     0   22708224 dm-0
253     1     524288 dm-1
Die meisten Infomationen hier sind nicht sehr wichtig für die meisten Benutzer. Die folgenden Zeilen allerdings ausgenommen:
  • major — The major number of the device with this partition. The major number in the /proc/partitions, (3), corresponds with the block device ide0, in /proc/devices.
  • minor — The minor number of the device with this partition. This serves to separate the partitions into different physical devices and relates to the number at the end of the name of the partition.
  • #blocks — Lists the number of physical disk blocks contained in a particular partition.
  • name — The name of the partition.

4.2.25. /proc/pci

This file contains a full listing of every PCI device on the system. Depending on the number of PCI devices, /proc/pci can be rather long. A sampling of this file from a basic system looks similar to the following:
Bus  0, device 0, function 0: Host bridge: Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge (rev 3). Master Capable. Latency=64. Prefetchable 32 bit memory at 0xe4000000 [0xe7ffffff].
Bus  0, device 1, function 0: PCI bridge: Intel Corporation 440BX/ZX - 82443BX/ZX AGP bridge (rev 3).   Master Capable. Latency=64. Min Gnt=128.
Bus  0, device 4, function 0: ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 2).
Bus  0, device 4, function 1: IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev 1). Master Capable. Latency=32. I/O at 0xd800 [0xd80f].
Bus  0, device 4, function 2: USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 1). IRQ 5. Master Capable. Latency=32. I/O at 0xd400 [0xd41f].
Bus  0, device 4, function 3: Bridge: Intel Corporation 82371AB PIIX4 ACPI (rev 2). IRQ 9.
Bus  0, device 9, function 0: Ethernet controller: Lite-On Communications Inc LNE100TX (rev 33). IRQ 5. Master Capable. Latency=32. I/O at 0xd000 [0xd0ff].
Bus  0, device 12, function  0: VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 1). IRQ 11. Master Capable. Latency=32. Min Gnt=4.Max Lat=255.
Diese Ausgabe zeigt eine Liste aller PCI-Geräte an, sortiert nach Bus, Gerät und Funktion. Außer Namen und Version eines Gerätes, gibt Ihnen diese Liste auch detaillierte IRQ-Informationen, so dass ein Administrator Konflikten schnell beikommen kann.

Tip

Für eine besser lesbare Version dieser Informationen geben Sie Folgendes ein:
lspci -vb

4.2.26. /proc/slabinfo

Diese Datei gibt Ihnen Informationen über die Speicherbenutzung im slab Level. Linux Kernel über 2.2 benutzen slab pools, um Speicher über der Seiten-Ebene zu verwalten. Oft benutzte Objekte besitzen deren eigene Slab Pools.
Instead of parsing the highly verbose /proc/slabinfo file manually, the /usr/bin/slabtop program displays kernel slab cache information in real time. This program allows for custom configurations, including column sorting and screen refreshing.
A sample screen shot of /usr/bin/slabtop usually looks like the following example:
Active / Total Objects (% used)    : 133629 / 147300 (90.7%)
Active / Total Slabs (% used)      : 11492 / 11493 (100.0%)
Active / Total Caches (% used)     : 77 / 121 (63.6%)
Active / Total Size (% used)       : 41739.83K / 44081.89K (94.7%)
Minimum / Average / Maximum Object : 0.01K / 0.30K / 128.00K
OBJS   ACTIVE USE      OBJ   SIZE     SLABS OBJ/SLAB CACHE SIZE NAME
44814  43159  96%    0.62K   7469      6     29876K ext3_inode_cache
36900  34614  93%    0.05K    492     75      1968K buffer_head
35213  33124  94%    0.16K   1531     23      6124K dentry_cache
7364   6463  87%    0.27K    526      14      2104K radix_tree_node
2585   1781  68%    0.08K     55      47       220K vm_area_struct
2263   2116  93%    0.12K     73      31       292K size-128
1904   1125  59%    0.03K     16      119        64K size-32
1666    768  46%    0.03K     14      119        56K anon_vma
1512   1482  98%    0.44K    168       9       672K inode_cache
1464   1040  71%    0.06K     24      61        96K size-64
1320    820  62%    0.19K     66      20       264K filp
678    587  86%    0.02K      3      226        12K dm_io
678    587  86%    0.02K      3      226        12K dm_tio
576    574  99%    0.47K     72        8       288K proc_inode_cache
528    514  97%    0.50K     66        8       264K size-512
492    372  75%    0.09K     12       41        48K bio
465    314  67%    0.25K     31       15       124K size-256
452    331  73%    0.02K      2      226         8K biovec-1
420    420 100%    0.19K     21       20        84K skbuff_head_cache
305    256  83%    0.06K      5       61        20K biovec-4
290      4   1%    0.01K      1      290         4K revoke_table
264    264 100%    4.00K    264        1      1056K size-4096
260    256  98%    0.19K     13       20        52K biovec-16
260    256  98%    0.75K     52        5       208K biovec-64
Some of the more commonly used statistics in /proc/slabinfo that are included into /usr/bin/slabtop include:
  • OBJS — The total number of objects (memory blocks), including those in use (allocated), and some spares not in use.
  • ACTIVE — The number of objects (memory blocks) that are in use (allocated).
  • USE — Percentage of total objects that are active. ((ACTIVE/OBJS)(100))
  • OBJ SIZE — The size of the objects.
  • SLABS — The total number of slabs.
  • OBJ/SLAB — The number of objects that fit into a slab.
  • CACHE SIZE — The cache size of the slab.
  • NAME — The name of the slab.
For more information on the /usr/bin/slabtop program, refer to the slabtop man page.

4.2.27. /proc/stat

This file keeps track of a variety of different statistics about the system since it was last restarted. The contents of /proc/stat, which can be quite long, usually begins like the following example:
cpu  259246 7001 60190 34250993 137517 772 0
cpu0 259246 7001 60190 34250993 137517 772 0
intr 354133732 347209999 2272 0 4 4 0 0 3 1 1249247 0 0 80143 0 422626 5169433
ctxt 12547729
btime 1093631447
processes 130523
procs_running 1
procs_blocked 0
preempt 5651840
cpu  209841 1554 21720 118519346 72939 154 27168
cpu0 42536 798 4841 14790880 14778 124 3117
cpu1 24184 569 3875 14794524 30209 29 3130
cpu2 28616 11 2182 14818198 4020 1 3493
cpu3 35350 6 2942 14811519 3045 0 3659
cpu4 18209 135 2263 14820076 12465 0 3373
cpu5 20795 35 1866 14825701 4508 0 3615
cpu6 21607 0 2201 14827053 2325 0 3334
cpu7 18544 0 1550 14831395 1589 0 3447
intr 15239682 14857833 6 0 6 6 0 5 0 1 0 0 0 29 0 2 0 0 0 0 0 0 0 94982 0 286812
ctxt 4209609
btime 1078711415
processes 21905
procs_running 1
procs_blocked 0
Einige der häufiger verwendeten Statistiken sind:
  • cpu — Measures the number of jiffies (1/100 of a second for x86 systems) that the system has been in user mode, user mode with low priority (nice), system mode, idle task, I/O wait, IRQ (hardirq), and softirq respectively. The IRQ (hardirq) is the direct response to a hardware event. The IRQ takes minimal work for queuing the "heavy" work up for the softirq to execute. The softirq runs at a lower priority than the IRQ and therefore may be interrupted more frequently. The total for all CPUs is given at the top, while each individual CPU is listed below with its own statistics. The following example is a 4-way Intel Pentium Xeon configuration with multi-threading enabled, therefore showing four physical processors and four virtual processors totaling eight processors.
  • page — The number of memory pages the system has written in and out to disk.
  • swap — The number of swap pages the system has brought in and out.
  • intr — The number of interrupts the system has experienced.
  • btime — The boot time, measured in the number of seconds since January 1, 1970, otherwise known as the epoch.

4.2.28. /proc/swaps

This file measures swap space and its utilization. For a system with only one swap partition, the output of /proc/swaps may look similar to the following:
Filename                          Type        Size     Used    Priority
/dev/mapper/VolGroup00-LogVol01   partition   524280   0       -1
While some of this information can be found in other files in the /proc/ directory, /proc/swaps provides a snapshot of every swap file name, the type of swap space, the total size, and the amount of space in use (in kilobytes). The priority column is useful when multiple swap files are in use. The lower the priority, the more likely the swap file is to be used.

4.2.29. /proc/sysrq-trigger

Using the echo command to write to this file, a remote root user can execute most System Request Key commands remotely as if at the local terminal. To echo values to this file, the /proc/sys/kernel/sysrq must be set to a value other than 0. For more information about the System Request Key, refer to Abschnitt 4.3.9.3, „ /proc/sys/kernel/.
Obwohl man zu dieser Datei schreiben kann, diese kann nicht gelesen werden, nicht einmal vom root-Benutzer.

4.2.30. /proc/uptime

This file contains information detailing how long the system has been on since its last restart. The output of /proc/uptime is quite minimal:
350735.47 234388.90
Die erste Zahl zeigt die Sekundenzahl an, die das System bereits läuft. Die zweite Zahl zeigt die Sekunden an, wielange die Maschine idle (im Leerlauf) war.

4.2.31. /proc/version

This file specifies the version of the Linux kernel and gcc in use, as well as the version of Red Hat Enterprise Linux installed on the system:
Linux version 2.6.8-1.523 (user@foo.redhat.com) (gcc version 3.4.1 20040714 \  (Red Hat Enterprise Linux 3.4.1-7)) #1 Mon Aug 16 13:27:03 EDT 2004
Diese Information wird für eine Vielzahl von Zwecken benutzt, unter anderem um Versionsdaten am Login-Prompt auszugeben.

4.3. Directories within /proc/

Common groups of information concerning the kernel are grouped into directories and subdirectories within the /proc/ directory.

4.3.1. Prozess-Verzeichnisse

Every /proc/ directory contains a number of directories with numerical names. A listing of them may be similar to the following:
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 1
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 1010
dr-xr-xr-x    3 xfs      xfs             0 Feb 13 01:28 1087
dr-xr-xr-x    3 daemon   daemon          0 Feb 13 01:28 1123
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 11307
dr-xr-xr-x    3 apache   apache          0 Feb 13 01:28 13660
dr-xr-xr-x    3 rpc      rpc             0 Feb 13 01:28 637
dr-xr-xr-x    3 rpcuser  rpcuser         0 Feb 13 01:28 666
These directories are called process directories, as they are named after a program's process ID and contain information specific to that process. The owner and group of each process directory is set to the user running the process. When the process is terminated, its /proc/ process directory vanishes.
Jedes Prozess-Verzeichnis enthält die folgenden Dateien:
  • cmdline — Contains the command issued when starting the process.
  • cwd — A symbolic link to the current working directory for the process.
  • environ — A list of the environment variables for the process. The environment variable is given in all upper-case characters, and the value is in lower-case characters.
  • exe — A symbolic link to the executable of this process.
  • fd — A directory containing all of the file descriptors for a particular process. These are given in numbered links:
    total 0
    lrwx------    1 root     root           64 May  8 11:31 0 -> /dev/null
    lrwx------    1 root     root           64 May  8 11:31 1 -> /dev/null
    lrwx------    1 root     root           64 May  8 11:31 2 -> /dev/null
    lrwx------    1 root     root           64 May  8 11:31 3 -> /dev/ptmx
    lrwx------    1 root     root           64 May  8 11:31 4 -> socket:[7774817]
    lrwx------    1 root     root           64 May  8 11:31 5 -> /dev/ptmx
    lrwx------    1 root     root           64 May  8 11:31 6 -> socket:[7774829]
    lrwx------    1 root     root           64 May  8 11:31 7 -> /dev/ptmx
  • maps — A list of memory maps to the various executables and library files associated with this process. This file can be rather long, depending upon the complexity of the process, but sample output from the sshd process begins like the following:
    08048000-08086000 r-xp 00000000 03:03 391479     /usr/sbin/sshd
    08086000-08088000 rw-p 0003e000 03:03 391479	/usr/sbin/sshd
    08088000-08095000 rwxp 00000000 00:00 0
    40000000-40013000 r-xp 0000000 03:03 293205	/lib/ld-2.2.5.so
    40013000-40014000 rw-p 00013000 03:03 293205	/lib/ld-2.2.5.so
    40031000-40038000 r-xp 00000000 03:03 293282	/lib/libpam.so.0.75
    40038000-40039000 rw-p 00006000 03:03 293282	/lib/libpam.so.0.75
    40039000-4003a000 rw-p 00000000 00:00 0
    4003a000-4003c000 r-xp 00000000 03:03 293218	/lib/libdl-2.2.5.so
    4003c000-4003d000 rw-p 00001000 03:03 293218	/lib/libdl-2.2.5.so
  • mem — The memory held by the process. This file cannot be read by the user.
  • root — A link to the root directory of the process.
  • stat — The status of the process.
  • statm — The status of the memory in use by the process. Below is a sample /proc/statm file:
    263 210 210 5 0 205 0
    Die sieben Spalten hängen mit verschiedenen Speicherstatistiken für den Prozess zusammen. Sie zeigen von links nach rechts verschiedene Aspekte des benutzten Speichers:
    1. Gesamte Programmgröße, in Kilobytes.
    2. Größe der Speicherteile, in Kilobytes.
    3. Anzahl der gemeinsam verwendeten Seiten.
    4. Anzahl der Seiten mit Programmcode.
    5. Anzahl der Seiten mit Stack/Daten.
    6. Anzahl der Library-Seiten.
    7. Anzahl der unsauberen Seiten.
  • status — The status of the process in a more readable form than stat or statm. Sample output for sshd looks similar to the following:
    Name:	sshd
    State:	S (sleeping)
    Tgid:	797
    Pid:	797
    PPid:	1
    TracerPid:	0
    Uid:	0	0	0	0
    Gid:	0	0	0	0
    FDSize:	32
    Groups:
    VmSize:	    3072 kB
    VmLck:	       0 kB
    VmRSS:	     840 kB
    VmData:	     104 kB
    VmStk:	      12 kB
    VmExe:	     300 kB
    VmLib:	    2528 kB
    SigPnd:	0000000000000000
    SigBlk:	0000000000000000
    SigIgn:	8000000000001000
    SigCgt:	0000000000014005
    CapInh:	0000000000000000
    CapPrm:	00000000fffffeff
    CapEff:	00000000fffffeff
    The information in this output includes the process name and ID, the state (such as S (sleeping) or R (running)), user/group ID running the process, and detailed data regarding memory usage.

4.3.1.1. /proc/self/

The /proc/self/ directory is a link to the currently running process. This allows a process to look at itself without having to know its process ID.
Within a shell environment, a listing of the /proc/self/ directory produces the same contents as listing the process directory for that process.

4.3.2. /proc/bus/

This directory contains information specific to the various buses available on the system. For example, on a standard system containing PCI and USB buses, current data on each of these buses is available within a subdirectory within /proc/bus/ by the same name, such as /proc/bus/pci/.
The subdirectories and files available within /proc/bus/ vary depending on the devices connected to the system. However, each bus type has at least one directory. Within these bus directories are normally at least one subdirectory with a numerical name, such as 001, which contain binary files.
For example, the /proc/bus/usb/ subdirectory contains files that track the various devices on any USB buses, as well as the drivers required for them. The following is a sample listing of a /proc/bus/usb/ directory:
total 0 dr-xr-xr-x    1 root     root            0 May  3 16:25 001
-r--r--r--    1 root     root            0 May  3 16:25 devices
-r--r--r--    1 root     root            0 May  3 16:25 drivers
The /proc/bus/usb/001/ directory contains all devices on the first USB bus and the devices file identifies the USB root hub on the motherboard.
The following is a example of a /proc/bus/usb/devices file:
T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI Root Hub
S:  SerialNumber=d400
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms

4.3.3. /proc/driver/

Dieses Verzeichnis enthält Informationen zu bestimmten Treibern, die vom Kernel verwendet werden.
A common file found here is rtc which provides output from the driver for the system's Real Time Clock (RTC), the device that keeps the time while the system is switched off. Sample output from /proc/driver/rtc looks like the following:
rtc_time        : 16:21:00
rtc_date        : 2004-08-31
rtc_epoch       : 1900
alarm           : 21:16:27
DST_enable      : no
BCD             : yes
24hr            : yes
square_wave     : no
alarm_IRQ       : no
update_IRQ      : no
periodic_IRQ    : no
periodic_freq   : 1024
batt_status     : okay
Weitere Informationen über RTC finden Sie in der folgenden, installierten Dokumentation:
/usr/share/doc/kernel-doc-<version>/Documentation/rtc.txt.

4.3.4. /proc/fs

This directory shows which file systems are exported. If running an NFS server, typing cat /proc/fs/nfsd/exports displays the file systems being shared and the permissions granted for those file systems. For more on file system sharing with NFS, refer to Kapitel 20, Network File System (NFS).

4.3.5. /proc/ide/

This directory contains information about IDE devices on the system. Each IDE channel is represented as a separate directory, such as /proc/ide/ide0 and /proc/ide/ide1. In addition, a drivers file is available, providing the version number of the various drivers used on the IDE channels:
ide-floppy version 0.99.
newide ide-cdrom version 4.61
ide-disk version 1.18
Many chipsets also provide a file in this directory with additional data concerning the drives connected through the channels. For example, a generic Intel PIIX4 Ultra 33 chipset produces the /proc/ide/piix file which reveals whether DMA or UDMA is enabled for the devices on the IDE channels:
Intel PIIX4 Ultra 33 Chipset.
------------- Primary Channel ---------------- Secondary Channel -------------
		enabled                          enabled

------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------
DMA enabled:    yes              no              yes               no
UDMA enabled:   yes              no              no                no
UDMA enabled:   2                X               X                 X
UDMA DMA PIO
Navigating into the directory for an IDE channel, such as ide0, provides additional information. The channel file provides the channel number, while the model identifies the bus type for the channel (such as pci).

4.3.5.1. Geräte-Verzeichnisse

Within each IDE channel directory is a device directory. The name of the device directory corresponds to the drive letter in the /dev/ directory. For instance, the first IDE drive on ide0 would be hda.

Anmerkung

There is a symbolic link to each of these device directories in the /proc/ide/ directory.
Jedes Geräte-Verzeichnis enthält eine Sammlung von Informationen und Statistiken. Der Inhalt dieser Verzeichnisse verändert sich je nach angesprochenem Gerät. Einige der wichtigen Dateien, die bei verschiedenen Geräten vorhanden sind, umfassen unter anderem:
  • cache — The device cache.
  • capacity — The capacity of the device, in 512 byte blocks.
  • driver — The driver and version used to control the device.
  • geometry — The physical and logical geometry of the device.
  • media — The type of device, such as a disk.
  • model — The model name or number of the device.
  • settings — A collection of current device parameters. This file usually contains quite a bit of useful, technical information. A sample settings file for a standard IDE hard disk looks similar to the following:
    name                value          min          max          mode
    ----                -----          ---          ---          ----
    acoustic            0              0            254          rw
    address             0              0            2            rw
    bios_cyl            38752          0            65535        rw
    bios_head           16             0            255          rw
    bios_sect           63             0            63           rw
    bswap               0              0            1            r
    current_speed       68             0            70           rw
    failures            0              0            65535        rw
    init_speed          68             0            70           rw
    io_32bit            0              0            3            rw
    keepsettings        0              0            1            rw
    lun                 0              0            7            rw
    max_failures        1              0            65535        rw
    multcount           16             0            16           rw
    nice1               1              0            1            rw
    nowerr              0              0            1            rw
    number              0              0            3            rw
    pio_mode            write-only     0            255          w
    unmaskirq           0              0            1            rw
    using_dma           1              0            1            rw
    wcache              1              0            1            rw

4.3.6. /proc/irq/

Dieses Verzeichnis wird benutzt, um 'IRQ zu CPU'-Affinität einzustellen. Dies erlaubt Ihnen, einen bestimmten IRQ mit nur einer CPU zu verbinden. Alternativ dazu kann eine CPU z.B. auch vom IRQ-Handling entbunden werden.
Each IRQ has its own directory, allowing for the individual configuration of each IRQ. The /proc/irq/prof_cpu_mask file is a bitmask that contains the default values for the smp_affinity file in the IRQ directory. The values in smp_affinity specify which CPUs handle that particular IRQ.
For more information about the /proc/irq/ directory, refer to the following installed documentation:
/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt

4.3.7. /proc/net/

This directory provides a comprehensive look at various networking parameters and statistics. Each directory and virtual file within this directory describes aspects of the system's network configuration. Below is a partial list of the /proc/net/ directory:
  • arp — Lists the kernel's ARP table. This file is particularly useful for connecting a hardware address to an IP address on a system.
  • atm/ directory — The files within this directory contain Asynchronous Transfer Mode (ATM) settings and statistics. This directory is primarily used with ATM networking and ADSL cards.
  • dev — Lists the various network devices configured on the system, complete with transmit and receive statistics. This file displays the number of bytes each interface has sent and received, the number of packets inbound and outbound, the number of errors seen, the number of packets dropped, and more.
  • dev_mcast — Lists Layer2 multicast groups on which each device is listening.
  • igmp — Lists the IP multicast addresses which this system joined.
  • ip_conntrack — Lists tracked network connections for machines that are forwarding IP connections.
  • ip_tables_names — Lists the types of iptables in use. This file is only present if iptables is active on the system and contains one or more of the following values: filter, mangle, or nat.
  • ip_mr_cache — Lists the multicast routing cache.
  • ip_mr_vif — Lists multicast virtual interfaces.
  • netstat — Contains a broad yet detailed collection of networking statistics, including TCP timeouts, SYN cookies sent and received, and much more.
  • psched — Lists global packet scheduler parameters.
  • raw — Lists raw device statistics.
  • route — Lists the kernel's routing table.
  • rt_cache — Contains the current routing cache.
  • snmp — List of Simple Network Management Protocol (SNMP) data for various networking protocols in use.
  • sockstat — Provides socket statistics.
  • tcp — Contains detailed TCP socket information.
  • tr_rif — Lists the token ring RIF routing table.
  • udp — Contains detailed UDP socket information.
  • unix — Lists UNIX domain sockets currently in use.
  • wireless — Lists wireless interface data.

4.3.8. /proc/scsi/

This directory is analogous to the /proc/ide/ directory, but it is for connected SCSI devices.
The primary file in this directory is /proc/scsi/scsi, which contains a list of every recognized SCSI device. From this listing, the type of device, as well as the model name, vendor, SCSI channel and ID data is available.
Wenn ein System zum Beispiel ein SCSI CD-ROM, ein Bandlaufwerk, Festplatten und einen RAID-Controller beinhaltet, könnte die Datei ähnlich wie in diesem Beispiel aussehen:
Attached devices:
Host: scsi1
Channel: 00
Id: 05
Lun: 00
Vendor: NEC
Model: CD-ROM DRIVE:466
Rev: 1.06
Type:   CD-ROM
ANSI SCSI revision: 02
Host: scsi1
Channel: 00
Id: 06
Lun: 00
Vendor: ARCHIVE
Model: Python 04106-XXX
Rev: 7350
Type:   Sequential-Access
ANSI SCSI revision: 02
Host: scsi2
Channel: 00
Id: 06
Lun: 00
Vendor: DELL
Model: 1x6 U2W SCSI BP
Rev: 5.35
Type:   Processor
ANSI SCSI revision: 02
Host: scsi2
Channel: 02
Id: 00
Lun: 00
Vendor: MegaRAID
Model: LD0 RAID5 34556R
Rev: 1.01
Type:   Direct-Access
ANSI SCSI revision: 02
Each SCSI driver used by the system has its own directory within /proc/scsi/, which contains files specific to each SCSI controller using that driver. From the previous example, aic7xxx/ and megaraid/ directories are present, since two drivers are in use. The files in each of the directories typically contain an I/O address range, IRQ information, and statistics for the SCSI controller using that driver. Each controller can report a different type and amount of information. The Adaptec AIC-7880 Ultra SCSI host adapter's file in this example system produces the following output:
Adaptec AIC7xxx driver version: 5.1.20/3.2.4
Compile Options:
TCQ Enabled By Default : Disabled
AIC7XXX_PROC_STATS     : Enabled
AIC7XXX_RESET_DELAY    : 5
Adapter Configuration:
SCSI Adapter: Adaptec AIC-7880 Ultra SCSI host adapter
Ultra Narrow Controller     PCI MMAPed
I/O Base: 0xfcffe000
Adapter SEEPROM Config: SEEPROM found and used.
Adaptec SCSI BIOS: Enabled
IRQ: 30
SCBs: Active 0, Max Active 1, Allocated 15, HW 16, Page 255
Interrupts: 33726
BIOS Control Word: 0x18a6
Adapter Control Word: 0x1c5f
Extended Translation: Enabled
Disconnect Enable Flags: 0x00ff
Ultra Enable Flags: 0x0020
Tag Queue Enable Flags: 0x0000
Ordered Queue Tag Flags: 0x0000
Default Tag Queue Depth: 8
Tagged Queue By Device array for aic7xxx
host instance 1:       {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
Actual queue depth per device for aic7xxx host instance 1:       {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
Statistics:

(scsi1:0:5:0) Device using Narrow/Sync transfers at 20.0 MByte/sec, offset 15
Transinfo settings: current(12/15/0/0), goal(12/15/0/0), user(12/15/0/0)
Total transfers 0 (0 reads and 0 writes)
		< 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+
Reads:        0       0       0       0       0       0       0       0
Writes:       0       0       0       0       0       0       0       0

(scsi1:0:6:0) Device using Narrow/Sync transfers at 10.0 MByte/sec, offset 15
Transinfo settings: current(25/15/0/0), goal(12/15/0/0), user(12/15/0/0)
Total transfers 132 (0 reads and 132 writes)
		< 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+
Reads:        0       0       0       0       0       0       0       0
Writes:       0       0       0       1     131       0       0       0
Dieser Bildschirm zeigt die Transfergeschwindigkeiten zu den verschiedenen SCSI-Geräten, die an den Controller angeschlossen sind, basierend auf der Channel-ID, sowie detaillierte Statistiken zu der Anzahl und Größe der Dateien, die von diesem Gerät gelesen oder geschrieben wurden. Der oben angegebenen Ausgabe entnehmen Sie, dass der Controller mit dem CD-ROM-Laufwerk mit 20 Megabyte pro Sekunde kommuniziert, während das Bandlaufwerk nur mit 10 Megabytes kommuniziert.

4.3.9. /proc/sys/

The /proc/sys/ directory is different from others in /proc/ because it not only provides information about the system but also allows the system administrator to immediately enable and disable kernel features.

Achtung

Use caution when changing settings on a production system using the various files in the /proc/sys/ directory. Changing the wrong setting may render the kernel unstable, requiring a system reboot.
For this reason, be sure the options are valid for that file before attempting to change any value in /proc/sys/.
A good way to determine if a particular file can be configured, or if it is only designed to provide information, is to list it with the -l option at the shell prompt. If the file is writable, it may be used to configure the kernel. For example, a partial listing of /proc/sys/fs looks like the following:
-r--r--r--    1 root     root            0 May 10 16:14 dentry-state
-rw-r--r--    1 root     root            0 May 10 16:14 dir-notify-enable
-r--r--r--    1 root     root            0 May 10 16:14 dquot-nr
-rw-r--r--    1 root     root            0 May 10 16:14 file-max
-r--r--r--    1 root     root            0 May 10 16:14 file-nr
In this listing, the files dir-notify-enable and file-max can be written to and, therefore, can be used to configure the kernel. The other files only provide feedback on current settings.
Changing a value within a /proc/sys/ file is done by echoing the new value into the file. For example, to enable the System Request Key on a running kernel, type the command:
echo 1 > /proc/sys/kernel/sysrq
This changes the value for sysrq from 0 (off) to 1 (on).
A few /proc/sys/ configuration files contain more than one value. To correctly send new values to them, place a space character between each value passed with the echo command, such as is done in this example:
echo 4 2 45 > /proc/sys/kernel/acct

Anmerkung

Any configuration changes made using the echo command disappear when the system is restarted. To make configuration changes take effect after the system is rebooted, refer to Abschnitt 4.4, „Using the sysctl Command“.
The /proc/sys/ directory contains several subdirectories controlling different aspects of a running kernel.

4.3.9.1. /proc/sys/dev/

This directory provides parameters for particular devices on the system. Most systems have at least two directories, cdrom/ and raid/. Customized kernels can have other directories, such as parport/, which provides the ability to share one parallel port between multiple device drivers.
The cdrom/ directory contains a file called info, which reveals a number of important CD-ROM parameters:
CD-ROM information, Id: cdrom.c 3.20 2003/12/17
drive name:             hdc
drive speed:            48
drive # of slots:       1
Can close tray:         1
Can open tray:          1
Can lock tray:          1
Can change speed:       1
Can select disk:        0
Can read multisession:  1
Can read MCN:           1
Reports media changed:  1
Can play audio:         1
Can write CD-R:         0
Can write CD-RW:        0
Can read DVD:           0
Can write DVD-R:        0
Can write DVD-RAM:      0
Can read MRW:           0
Can write MRW:          0
Can write RAM:          0
Diese Datei kann benutzt werden, um die Fähigkeiten einer unbekannten CD-ROM herauszufinden. Wenn mehrere Laufwerke vorhanden sind, hat jedes Gerät seine eigene Informationsspalte.
Various files in /proc/sys/dev/cdrom, such as autoclose and checkmedia, can be used to control the system's CD-ROM. Use the echo command to enable or disable these features.
If RAID support is compiled into the kernel, a /proc/sys/dev/raid/ directory becomes available with at least two files in it: speed_limit_min and speed_limit_max. These settings determine the acceleration of RAID devices for I/O intensive tasks, such as resyncing the disks.

4.3.9.2. /proc/sys/fs/

Dieses Verzeichnis enthält eine Liste von Optionen und Informationen zu verschiedenen Einstellungen des Dateisystems, inklusive Quoten, Datei-Handles, Inoden und dentry-Informationen.
The binfmt_misc/ directory is used to provide kernel support for miscellaneous binary formats.
The important files in /proc/sys/fs/ include:
  • dentry-state — Provides the status of the directory cache. The file looks similar to the following:
    57411	52939	45	0	0	0
    Die erste Zahl zeigt die Gesamtzahl der Verzeichnis-Cache Einträge an, die zweite Zahl zeigt die Anzahl der nicht benutzten Einträgen an. Die dritte Zahl zeigt die Sekunden zwischem dem Löschen und dem erneuten Aufnehmen eines Verzeichnisses an. Die vierte misst die Seiten, die gerade vom System angefordert werden. Die letzten zwei Zahlen werden nicht benutzt und zeigen nur Nullen an.
  • dquot-nr — Lists the maximum number of cached disk quota entries.
  • file-max — Lists the maximum number of file handles that the kernel allocates. Raising the value in this file can resolve errors caused by a lack of available file handles.
  • file-nr — Lists the number of allocated file handles, used file handles, and the maximum number of file handles.
  • overflowgid and overflowuid — Defines the fixed group ID and user ID, respectively, for use with file systems that only support 16-bit group and user IDs.
  • super-max — Controls the maximum number of superblocks available.
  • super-nr — Displays the current number of superblocks in use.

4.3.9.3. /proc/sys/kernel/

Dieses Verzeichnis enthält eine Vielzahl von verschiedenen Konfigurationsdateien, die direkt die Kernelfunktion beeinflussen. Einige der wichtigsten Dateien sind unter anderem:
  • acct — Controls the suspension of process accounting based on the percentage of free space available on the file system containing the log. By default, the file looks like the following:
    4	2	30
    Der erste Wert schreibt den Prozentsatz an freiem Speicher vor, der erforderlich ist, um das Logging wiederaufzunehmen, wogegen der zweite Wert den prozentualen Grenzwert an freiem Speicher setzt, an dem das Protokollieren unterbrochen wird. Der dritte Wert setzt das Intervall in Sekunden, in dem der Kernel das Dateisystem abfragt, um zu entscheiden, ob das Logging wieder aufgenommen oder unterbrochen werden soll.
  • cap-bound — Controls the capability bounding settings, which provides a list of capabilities for any process on the system. If a capability is not listed here, then no process, no matter how privileged, can do it. The idea is to make the system more secure by ensuring that certain things cannot happen, at least beyond a certain point in the boot process.
    Für eine gültige Liste von Werten für diese virtuelle Datei sehen Sie bitte nachfolgende, installierte Dokumentation:
    /lib/modules/<kernel-version>/build/include/linux/capability.h.
  • ctrl-alt-del — Controls whether Ctrl+Alt+Delete gracefully restarts the computer using init (0) or forces an immediate reboot without syncing the dirty buffers to disk (1).
  • domainname — Configures the system domain name, such as example.com.
  • exec-shield — Configures the Exec Shield feature of the kernel. Exec Shield provides protection against certain types of buffer overflow attacks.
    Für diese virtuelle Datei gibt es zwei mögliche Werte:
    • 0 — Disables Exec Shield.
    • 1 — Enables Exec Shield. This is the default value.

    Wichtig

    Auf Sicherheit beruhende Applikationen, die gestartet wurden, während Exec-Shield deaktiviert war, müssen nach Aktivierung von Exec-Shield neu gestartet werden.
  • exec-shield-randomize — Enables location randomization of various items in memory. This helps deter potential attackers from locating programs and daemons in memory. Each time a program or daemon starts, it is put into a different memory location each time, never in a static or absolute memory address.
    Für diese virtuelle Datei gibt es zwei mögliche Werte:
    • 0 — Disables randomization of Exec Shield. This may be useful for application debugging purposes.
    • 1 — Enables randomization of Exec Shield. This is the default value. Note: The exec-shield file must also be set to 1 for exec-shield-randomize to be effective.
  • hostname — Configures the system hostname, such as www.example.com.
  • hotplug — Configures the utility to be used when a configuration change is detected by the system. This is primarily used with USB and Cardbus PCI. The default value of /sbin/hotplug should not be changed unless testing a new program to fulfill this role.
  • modprobe — Sets the location of the program used to load kernel modules. The default value is /sbin/modprobe which means kmod calls it to load the module when a kernel thread calls kmod.
  • msgmax — Sets the maximum size of any message sent from one process to another and is set to 8192 bytes by default. Be careful when raising this value, as queued messages between processes are stored in non-swappable kernel memory. Any increase in msgmax would increase RAM requirements for the system.
  • msgmnb — Sets the maximum number of bytes in a single message queue. The default is 16384.
  • msgmni — Sets the maximum number of message queue identifiers. The default is 16.
  • osrelease — Lists the Linux kernel release number. This file can only be altered by changing the kernel source and recompiling.
  • ostype — Displays the type of operating system. By default, this file is set to Linux, and this value can only be changed by changing the kernel source and recompiling.
  • overflowgid and overflowuid — Defines the fixed group ID and user ID, respectively, for use with system calls on architectures that only support 16-bit group and user IDs.
  • panic — Defines the number of seconds the kernel postpones rebooting when the system experiences a kernel panic. By default, the value is set to 0, which disables automatic rebooting after a panic.
  • printk — This file controls a variety of settings related to printing or logging error messages. Each error message reported by the kernel has a loglevel associated with it that defines the importance of the message. The loglevel values break down in this order:
    • 0 — Kernel emergency. The system is unusable.
    • 1 — Kernel alert. Action must be taken immediately.
    • 2 — Condition of the kernel is considered critical.
    • 3 — General kernel error condition.
    • 4 — General kernel warning condition.
    • 5 — Kernel notice of a normal but significant condition.
    • 6 — Kernel informational message.
    • 7 — Kernel debug-level messages.
    Four values are found in the printk file:
    6     4     1     7
    Jeder dieser Werte definiert eine andere Regel zum Verarbeiten von Fehlermeldungen. Der erste Wert, Konsolen-Loglevel genannt, definiert die niedrigste Priorität von Mitteilungen, die auf die Konsole ausgegeben werden (je niedriger die Priorität, desto höher die Loglevel-Nummer). Der zweite Wert setzt den Standart-Loglevel für Mitteilungen, welche keinen Loglevel gesetzt haben. Der dritte Wert setzt den niedrigsten Loglevel Konfigurationswert für den Konsolen Loglevel. Der letzte Wert setzt den Standardwert für den Konsolen-Loglevel.
  • random/ directory — Lists a number of values related to generating random numbers for the kernel.
  • rtsig-max — Configures the maximum number of POSIX real-time signals that the system may have queued at any one time. The default value is 1024.
  • rtsig-nr — Lists the current number of POSIX real-time signals queued by the kernel.
  • sem — Configures semaphore settings within the kernel. A semaphore is a System V IPC object that is used to control utilization of a particular process.
  • shmall— Sets the total amount of shared memory pages that can be used at one time, system-wide. By default, this value is 2097152.
  • shmmax — Sets the largest shared memory segment size allowed by the kernel. By default, this value is 33554432. However, the kernel supports much larger values than this.
  • shmmni — Sets the maximum number of shared memory segments for the whole system. By default, this value is 4096.
  • sysrq — Activates the System Request Key, if this value is set to anything other than zero (0), the default.
    The System Request Key allows immediate input to the kernel through simple key combinations. For example, the System Request Key can be used to immediately shut down or restart a system, sync all mounted file systems, or dump important information to the console. To initiate a System Request Key, type Alt+SysRq+ <system request code> . Replace <system request code> with one of the following system request codes:
    • r — Disables raw mode for the keyboard and sets it to XLATE (a limited keyboard mode which does not recognize modifiers such as Alt, Ctrl, or Shift for all keys).
    • k — Kills all processes active in a virtual console. Also called Secure Access Key (SAK), it is often used to verify that the login prompt is spawned from init and not a Trojan copy designed to capture usernames and passwords.
    • b — Reboots the kernel without first unmounting file systems or syncing disks attached to the system.
    • c — Crashes the system without first unmounting file systems or syncing disks attached to the system.
    • o — Shuts off the system.
    • s — Attempts to sync disks attached to the system.
    • u — Attempts to unmount and remount all file systems as read-only.
    • p — Outputs all flags and registers to the console.
    • t — Outputs a list of processes to the console.
    • m — Outputs memory statistics to the console.
    • 0 through 9 — Sets the log level for the console.
    • e — Kills all processes except init using SIGTERM.
    • i — Kills all processes except init using SIGKILL.
    • l — Kills all processes using SIGKILL (including init). The system is unusable after issuing this System Request Key code.
    • h — Displays help text.
    Dieses Feature ist sehr nützlich bei der Verwendung eines Entwicklungskernel oder wenn ein System-Freeze auftritt.

    Achtung

    Das System-Request-Key Feature wird als Sicherheitsrisiko angesehen, da eine unbewachte Konsole einem Angreifer Zugriff zum System ermöglichen könnte. Aus diesem Grund ist es standardmäßig ausgeschaltet.
    Refer to /usr/share/doc/kernel-doc-<version>/Documentation/sysrq.txt for more information about the System Request Key.
  • sysrq-key — Defines the key code for the System Request Key (84 is the default).
  • sysrq-sticky — Defines whether the System Request Key is a chorded key combination. The accepted values are as follows:
    • 0Alt+SysRq and the system request code must be pressed simultaneously. This is the default value.
    • 1Alt+SysRq must be pressed simultaneously, but the system request code can be pressed anytime before the number of seconds specified in /proc/sys/kernel/sysrq-timer elapses.
  • sysrq-timer — Specifies the number of seconds allowed to pass before the system request code must be pressed. The default value is 10.
  • tainted — Indicates whether a non-GPL module is loaded.
    • 0 — No non-GPL modules are loaded.
    • 1 — At least one module without a GPL license (including modules with no license) is loaded.
    • 2 — At least one module was force-loaded with the command insmod -f.
  • threads-max — Sets the maximum number of threads to be used by the kernel, with a default value of 2048.
  • version — Displays the date and time the kernel was last compiled. The first field in this file, such as #3, relates to the number of times a kernel was built from the source base.

4.3.9.4. /proc/sys/net/

This directory contains subdirectories concerning various networking topics. Various configurations at the time of kernel compilation make different directories available here, such as ethernet/, ipv4/, ipx/, and ipv6/. By altering the files within these directories, system administrators are able to adjust the network configuration on a running system.
Given the wide variety of possible networking options available with Linux, only the most common /proc/sys/net/ directories are discussed.
The /proc/sys/net/core/ directory contains a variety of settings that control the interaction between the kernel and networking layers. The most important of these files are:
  • message_burst — Sets the amount of time in tenths of a second required to write a new warning message. This setting is used to mitigate Denial of Service (DoS) attacks. The default setting is 50.
  • message_cost — Sets a cost on every warning message. The higher the value of this file (default of 5), the more likely the warning message is ignored. This setting is used to mitigate DoS attacks.
    The idea of a DoS attack is to bombard the targeted system with requests that generate errors and fill up disk partitions with log files or require all of the system's resources to handle the error logging. The settings in message_burst and message_cost are designed to be modified based on the system's acceptable risk versus the need for comprehensive logging.
  • netdev_max_backlog — Sets the maximum number of packets allowed to queue when a particular interface receives packets faster than the kernel can process them. The default value for this file is 300.
  • optmem_max — Configures the maximum ancillary buffer size allowed per socket.
  • rmem_default — Sets the receive socket buffer default size in bytes.
  • rmem_max — Sets the receive socket buffer maximum size in bytes.
  • wmem_default — Sets the send socket buffer default size in bytes.
  • wmem_max — Sets the send socket buffer maximum size in bytes.
The /proc/sys/net/ipv4/ directory contains additional networking settings. Many of these settings, used in conjunction with one another, are useful in preventing attacks on the system or when using the system to act as a router.

Achtung

Eine irrtümliche Änderung dieser Dateien kann die Netzwerkverbindungen beeinträchtigen.
The following is a list of some of the more important files within the /proc/sys/net/ipv4/ directory:
  • icmp_destunreach_rate, icmp_echoreply_rate, icmp_paramprob_rate, and icmp_timeexeed_rate — Set the maximum ICMP send packet rate, in 1/100 of a second, to hosts under certain conditions. A setting of 0 removes any delay and is not a good idea.
  • icmp_echo_ignore_all and icmp_echo_ignore_broadcasts — Allows the kernel to ignore ICMP ECHO packets from every host or only those originating from broadcast and multicast addresses, respectively. A value of 0 allows the kernel to respond, while a value of 1 ignores the packets.
  • ip_default_ttl — Sets the default Time To Live (TTL), which limits the number of hops a packet may make before reaching its destination. Increasing this value can diminish system performance.
  • ip_forward — Permits interfaces on the system to forward packets to one other. By default, this file is set to 0. Setting this file to 1 enables network packet forwarding.
  • ip_local_port_range — Specifies the range of ports to be used by TCP or UDP when a local port is needed. The first number is the lowest port to be used and the second number specifies the highest port. Any systems that expect to require more ports than the default 1024 to 4999 should use a range from 32768 to 61000.
  • tcp_syn_retries — Provides a limit on the number of times the system re-transmits a SYN packet when attempting to make a connection.
  • tcp_retries1 — Sets the number of permitted re-transmissions attempting to answer an incoming connection. Default of 3.
  • tcp_retries2 — Sets the number of permitted re-transmissions of TCP packets. Default of 15.
The file called
/usr/share/doc/kernel-doc-<version>/Documentation/networking/ ip-sysctl.txt
contains a complete list of files and options available in the /proc/sys/net/ipv4/ directory.
A number of other directories exist within the /proc/sys/net/ipv4/ directory and each covers a different aspect of the network stack. The /proc/sys/net/ipv4/conf/ directory allows each system interface to be configured in different ways, including the use of default settings for unconfigured devices (in the /proc/sys/net/ipv4/conf/default/ subdirectory) and settings that override all special configurations (in the /proc/sys/net/ipv4/conf/all/ subdirectory).
The /proc/sys/net/ipv4/neigh/ directory contains settings for communicating with a host directly connected to the system (called a network neighbor) and also contains different settings for systems more than one hop away.
Routing over IPV4 also has its own directory, /proc/sys/net/ipv4/route/. Unlike conf/ and neigh/, the /proc/sys/net/ipv4/route/ directory contains specifications that apply to routing with any interfaces on the system. Many of these settings, such as max_size, max_delay, and min_delay, relate to controlling the size of the routing cache. To clear the routing cache, write any value to the flush file.
Zusätzliche Informationen über diese Verzeichnisse und die möglichen Werte zur Konfiguration finden Sie unter:
/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt

4.3.9.5. /proc/sys/vm/

This directory facilitates the configuration of the Linux kernel's virtual memory (VM) subsystem. The kernel makes extensive and intelligent use of virtual memory, which is commonly referred to as swap space.
The following files are commonly found in the /proc/sys/vm/ directory:
  • block_dump — Configures block I/O debugging when enabled. All read/write and block dirtying operations done to files are logged accordingly. This can be useful if diagnosing disk spin up and spin downs for laptop battery conservation. All output when block_dump is enabled can be retrieved via dmesg. The default value is 0.

    Tip

    If block_dump is enabled at the same time as kernel debugging, it is prudent to stop the klogd daemon, as it generates erroneous disk activity caused by block_dump.
  • dirty_background_ratio — Starts background writeback of dirty data at this percentage of total memory, via a pdflush daemon. The default value is 10.
  • dirty_expire_centisecs — Defines when dirty in-memory data is old enough to be eligible for writeout. Data which has been dirty in-memory for longer than this interval is written out next time a pdflush daemon wakes up. The default value is 3000, expressed in hundredths of a second.
  • dirty_ratio — Starts active writeback of dirty data at this percentage of total memory for the generator of dirty data, via pdflush. The default value is 40.
  • dirty_writeback_centisecs — Defines the interval between pdflush daemon wakeups, which periodically writes dirty in-memory data out to disk. The default value is 500, expressed in hundredths of a second.
  • laptop_mode — Minimizes the number of times that a hard disk needs to spin up by keeping the disk spun down for as long as possible, therefore conserving battery power on laptops. This increases efficiency by combining all future I/O processes together, reducing the frequency of spin ups. The default value is 0, but is automatically enabled in case a battery on a laptop is used.
    Dieser Wert wird automatisch vom acpid-Daemon überprüft, sobald ein Benutzer darüber informiert wird, dass der Batterieversorgung des Laptops aktiviert wurde. Dabei sind weder Benutzermodifikationen noch die Mitwirkung des Benutzers in irgendeiner Form notwendig, wenn der Laptop die ACPI (Advanced Configuration and Power Interface) Spezifikationen unterstützt.
    Für weitere Informationen siehe folgende, installierte Dokumentation:
    /usr/share/doc/kernel-doc-<version>/Documentation/laptop-mode.txt
  • lower_zone_protection — Determines how aggressive the kernel is in defending lower memory allocation zones. This is effective when utilized with machines configured with highmem memory space enabled. The default value is 0, no protection at all. All other integer values are in megabytes, and lowmem memory is therefore protected from being allocated by users.
    Für weitere Informationen siehe folgende, installierte Dokumentation:
    /usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt
  • max_map_count — Configures the maximum number of memory map areas a process may have. In most cases, the default value of 65536 is appropriate.
  • min_free_kbytes — Forces the Linux VM (virtual memory manager) to keep a minimum number of kilobytes free. The VM uses this number to compute a pages_min value for each lowmem zone in the system. The default value is in respect to the total memory on the machine.
  • nr_hugepages — Indicates the current number of configured hugetlb pages in the kernel.
    Für weitere Informationen siehe folgende, installierte Dokumentation:
    /usr/share/doc/kernel-doc-<version>/Documentation/vm/hugetlbpage.txt
  • nr_pdflush_threads — Indicates the number of pdflush daemons that are currently running. This file is read-only, and should not be changed by the user. Under heavy I/O loads, the default value of two is increased by the kernel.
  • overcommit_memory — Configures the conditions under which a large memory request is accepted or denied. The following three modes are available:
    • 0 — The kernel performs heuristic memory over commit handling by estimating the amount of memory available and failing requests that are blatantly invalid. Unfortunately, since memory is allocated using a heuristic rather than a precise algorithm, this setting can sometimes allow available memory on the system to be overloaded. This is the default setting.
    • 1 — The kernel performs no memory over commit handling. Under this setting, the potential for memory overload is increased, but so is performance for memory intensive tasks (such as those executed by some scientific software).
    • 2 — The kernel fails requests for memory that add up to all of swap plus the percent of physical RAM specified in /proc/sys/vm/overcommit_ratio. This setting is best for those who desire less risk of memory overcommitment.

      Anmerkung

      Diese Einstellung ist nur für Systeme empfohlen, deren Swap größer als deren physikalischer Speicher ist.
  • overcommit_ratio — Specifies the percentage of physical RAM considered when /proc/sys/vm/overcommit_memory is set to 2. The default value is 50.
  • page-cluster — Sets the number of pages read in a single attempt. The default value of 3, which actually relates to 16 pages, is appropriate for most systems.
  • swappiness — Determines how much a machine should swap. The higher the value, the more swapping occurs. The default value, as a percentage, is set to 60.
Sämtliche Kernel-bezogene Dokumentation kann in folgendem lokal installiertem Speicherort gefunden werden:
/usr/share/doc/kernel-doc-<version>/Documentation/, which contains additional information.

4.3.10. /proc/sysvipc/

This directory contains information about System V IPC resources. The files in this directory relate to System V IPC calls for messages (msg), semaphores (sem), and shared memory (shm).

4.3.11. /proc/tty/

Dieses Verzeichnis enthält Informationen über die verfügbaren und zur Zeit benutzten TTY-Geräte im System. Früher teletype device genannt, werden heute alle auf zeichenorientierten Daten-Terminals als TTY-Geräte bezeichnet.
In Linux, there are three different kinds of tty devices. Serial devices are used with serial connections, such as over a modem or using a serial cable. Virtual terminals create the common console connection, such as the virtual consoles available when pressing Alt+<F-key> at the system console. Pseudo terminals create a two-way communication that is used by some higher level applications, such as XFree86. The drivers file is a list of the current tty devices in use, as in the following example:
serial               /dev/cua        5  64-127 serial:callout
serial               /dev/ttyS       4  64-127 serial
pty_slave            /dev/pts      136   0-255 pty:slave
pty_master           /dev/ptm      128   0-255 pty:master
pty_slave            /dev/ttyp       3   0-255 pty:slave
pty_master           /dev/pty        2   0-255 pty:master
/dev/vc/0            /dev/vc/0       4       0 system:vtmaster
/dev/ptmx            /dev/ptmx       5       2 system
/dev/console         /dev/console    5       1 system:console
/dev/tty             /dev/tty        5       0 system:/dev/tty
unknown              /dev/vc/%d      4    1-63 console
The /proc/tty/driver/serial file lists the usage statistics and status of each of the serial tty lines.
Damit TTY-Geräte ähnlich wie Netzwerk-Geräte benutzt werden können, stellt der Kernel line discipline für das Gerät ein. Das erlaubt dem Treiber, einen bestimmten Headertyp mit jedem Datenblock, der über das Gerät geht, zu transferieren; dieser Header macht das Paket zu einem Paket in einem Stream. SLIP und PPP sind allgemein bekannte Line Disciplines und werden vor allem benutzt, um Systeme über eine serielle Verbindung zu koppeln.
Registered line disciplines are stored in the ldiscs file, and more detailed information is available within the ldisc/ directory.

4.3.12. /proc/<PID>/

Out of Memory (OOM) refers to a computing state where all available memory, including swap space, has been allocated. When this situation occurs, it will cause the system to panic and stop functioning as expected. There is a switch that controls OOM behavior in /proc/sys/vm/panic_on_oom. When set to 1 the kernel will panic on OOM. A setting of 0 instructs the kernel to call a function named oom_killer on an OOM. Usually, oom_killer can kill rogue processes and the system will survive.
The easiest way to change this is to echo the new value to /proc/sys/vm/panic_on_oom.
~]# cat /proc/sys/vm/panic_on_oom
1
~]# echo 0 > /proc/sys/vm/panic_on_oom
~]# cat /proc/sys/vm/panic_on_oom
0
It is also possible to prioritize which processes get killed by adjusting the oom_killer score. In /proc/<PID>/ there are two tools labelled oom_adj and oom_score. Valid scores for oom_adj are in the range -16 to +15. To see the current oom_killer score, view the oom_score for the process. oom_killer will kill processes with the highest scores first.
This example adjusts the oom_score of a process with a PID of 12465 to make it less likely that oom_killer will kill it.
~]# cat /proc/12465/oom_score
79872
~]# echo -5 > /proc/12465/oom_adj
~]# cat /proc/12465/oom_score
78
There is also a special value of -17, which disables oom_killer for that process. In the example below, oom_score returns a value of 0, indicating that this process would not be killed.
~]# cat /proc/12465/oom_score
78
~]# echo -17 > /proc/12465/oom_adj
~]# cat /proc/12465/oom_score
0
A function called badness() is used to determine the actual score for each process. This is done by adding up 'points' for each examined process. The process scoring is done in the following way:
  1. The basis of each process's score is its memory size.
  2. The memory size of any of the process's children (not including a kernel thread) is also added to the score
  3. The process's score is increased for 'niced' processes and decreased for long running processes.
  4. Processes with the CAP_SYS_ADMIN and CAP_SYS_RAWIO capabilities have their scores reduced.
  5. The final score is then bitshifted by the value saved in the oom_adj file.
Thus, a process with the highest oom_score value will most probably be a non-privileged, recently started process that, along with its children, uses a large amount of memory, has been 'niced', and handles no raw I/O.

4.4. Using the sysctl Command

The /sbin/sysctl command is used to view, set, and automate kernel settings in the /proc/sys/ directory.
For a quick overview of all settings configurable in the /proc/sys/ directory, type the /sbin/sysctl -a command as root. This creates a large, comprehensive list, a small portion of which looks something like the following:
net.ipv4.route.min_delay = 2 kernel.sysrq = 0 kernel.sem = 250     32000     32     128
This is the same information seen if each of the files were viewed individually. The only difference is the file location. For example, the /proc/sys/net/ipv4/route/min_delay file is listed as net.ipv4.route.min_delay, with the directory slashes replaced by dots and the proc.sys portion assumed.
The sysctl command can be used in place of echo to assign values to writable files in the /proc/sys/ directory. For example, instead of using the command
echo 1 > /proc/sys/kernel/sysrq
use the equivalent sysctl command as follows:
~]# sysctl -w kernel.sysrq="1"
kernel.sysrq = 1
While quickly setting single values like this in /proc/sys/ is helpful during testing, this method does not work as well on a production system as special settings within /proc/sys/ are lost when the machine is rebooted. To preserve custom settings, add them to the /etc/sysctl.conf file.
Each time the system boots, the init program runs the /etc/rc.d/rc.sysinit script. This script contains a command to execute sysctl using /etc/sysctl.conf to determine the values passed to the kernel. Any values added to /etc/sysctl.conf therefore take effect each time the system boots.

4.5. Zusätzliche Ressourcen

Below are additional sources of information about proc file system.

4.5.1. Installierte Dokumentation

Some of the best documentation about the proc file system is installed on the system by default.
  • /usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt — Contains assorted, but limited, information about all aspects of the /proc/ directory.
  • /usr/share/doc/kernel-doc-<version>/Documentation/sysrq.txt — An overview of System Request Key options.
  • /usr/share/doc/kernel-doc-<version>/Documentation/sysctl/ — A directory containing a variety of sysctl tips, including modifying values that concern the kernel (kernel.txt), accessing file systems (fs.txt), and virtual memory use (vm.txt).
  • /usr/share/doc/kernel-doc-<version>/Documentation/networking/ip-sysctl.txt — A detailed overview of IP networking options.

4.5.2. Hilfreiche Websites

  • http://www.linuxhq.com/ — Diese Seite wartet eine komplette Datenbank mit Quellcode, Patches und Dokumentation für verschiedene Versionen des Linux-Kernels.

Kapitel 5. Redundant Array of Independent Disks (RAID)

The basic idea behind RAID is to combine multiple small, inexpensive disk drives into an array to accomplish performance or redundancy goals not attainable with one large and expensive drive. This array of drives appears to the computer as a single logical storage unit or drive.

5.1. What is RAID?

RAID allows information to access several disks. RAID uses techniques such as disk striping (RAID Level 0), disk mirroring (RAID Level 1), and disk striping with parity (RAID Level 5) to achieve redundancy, lower latency, increased bandwidth, and maximized ability to recover from hard disk crashes.
RAID consistently distributes data across each drive in the array. RAID then breaks down the data into consistently-sized chunks (commonly 32K or 64k, although other values are acceptable). Each chunk is then written to a hard drive in the RAID array according to the RAID level employed. When the data is read, the process is reversed, giving the illusion that the multiple drives in the array are actually one large drive.

5.1.1. Who Should Use RAID?

System Administrators and others who manage large amounts of data would benefit from using RAID technology. Primary reasons to deploy RAID include:
  • Enhances speed
  • Increases storage capacity using a single virtual disk
  • Minimizes disk failure

5.1.2. Hardware RAID versus Software RAID

There are two possible RAID approaches: hardware RAID and software RAID.
Hardware RAID
The hardware-based array manages the RAID subsystem independently from the host. It presents a single disk per RAID array to the host.
A hardware RAID device connects to the SCSI controller and presents the RAID arrays as a single SCSI drive. An external RAID system moves all RAID handling intelligence into a controller located in the external disk subsystem. The whole subsystem is connected to the host via a normal SCSI controller and appears to the host as a single disk.
RAID controller cards function like a SCSI controller to the operating system, and handle all the actual drive communications. The user plugs the drives into the RAID controller (just like a normal SCSI controller) and then adds them to the RAID controllers configuration, and the operating system won't know the difference.
Software RAID
Software RAID implements the various RAID levels in the kernel disk (block device) code. It offers the cheapest possible solution, as expensive disk controller cards or hot-swap chassis[1] are not required. Software RAID also works with cheaper IDE disks as well as SCSI disks. With today's faster CPUs, software RAID outperforms hardware RAID.
The Linux kernel contains an MD driver that allows the RAID solution to be completely hardware independent. The performance of a software-based array depends on the server CPU performance and load.
To learn more about software RAID, here are the key features:
  • Threaded rebuild process
  • Kernel-based configuration
  • Portability of arrays between Linux machines without reconstruction
  • Backgrounded array reconstruction using idle system resources
  • Hot-swappable drive support
  • Automatic CPU detection to take advantage of certain CPU optimizations

5.1.3. RAID Levels and Linear Support

RAID supports various configurations, including levels 0, 1, 4, 5, and linear. These RAID types are defined as follows:
Level 0
RAID level 0, often called striping, is a performance-oriented striped data mapping technique. This means the data being written to the array is broken down into strips and written across the member disks of the array, allowing high I/O performance at low inherent cost but provides no redundancy. The storage capacity of a level 0 array is equal to the total capacity of the member disks in a hardware RAID or the total capacity of member partitions in a software RAID.
Level 1
RAID level 1, or mirroring, has been used longer than any other form of RAID. Level 1 provides redundancy by writing identical data to each member disk of the array, leaving a mirrored copy on each disk. Mirroring remains popular due to its simplicity and high level of data availability. Level 1 operates with two or more disks that may use parallel access for high data-transfer rates when reading but more commonly operate independently to provide high I/O transaction rates. Level 1 provides very good data reliability and improves performance for read-intensive applications but at a relatively high cost. The storage capacity of the level 1 array is equal to the capacity of one of the mirrored hard disks in a hardware RAID or one of the mirrored partitions in a software RAID.

Anmerkung

RAID level 1 comes at a high cost because you write the same information to all of the disks in the array, which wastes drive space. For example, if you have RAID level 1 set up so that your root (/) partition exists on two 40G drives, you have 80G total but are only able to access 40G of that 80G. The other 40G acts like a mirror of the first 40G.
Level 4
RAID level 4 uses parity[2] concentrated on a single disk drive to protect data. It is better suited to transaction I/O rather than large file transfers. Because the dedicated parity disk represents an inherent bottleneck, level 4 is seldom used without accompanying technologies such as write-back caching. Although RAID level 4 is an option in some RAID partitioning schemes, it is not an option allowed in Red Hat Enterprise Linux RAID installations. The storage capacity of hardware RAID level 4 is equal to the capacity of member disks, minus the capacity of one member disk. The storage capacity of software RAID level 4 is equal to the capacity of the member partitions, minus the size of one of the partitions if they are of equal size.

Anmerkung

RAID level 4 takes up the same amount of space as RAID level 5, but level 5 has more advantages. For this reason, level 4 is not supported.
Level 5
RAID level 5 is the most common type of RAID. By distributing parity across some or all of an array's member disk drives, RAID level 5 eliminates the write bottleneck inherent in level 4. The only performance bottleneck is the parity calculation process. With modern CPUs and software RAID, that usually is not a very big problem. As with level 4, the result is asymmetrical performance, with reads substantially outperforming writes. Level 5 is often used with write-back caching to reduce the asymmetry. The storage capacity of hardware RAID level 5 is equal to the capacity of member disks, minus the capacity of one member disk. The storage capacity of software RAID level 5 is equal to the capacity of the member partitions, minus the size of one of the partitions if they are of equal size.
Linear RAID
Linear RAID is a simple grouping of drives to create a larger virtual drive. In linear RAID, the chunks are allocated sequentially from one member drive, going to the next drive only when the first is completely filled. This grouping provides no performance benefit, as it is unlikely that any I/O operations will be split between member drives. Linear RAID also offers no redundancy and, in fact, decreases reliability — if any one member drive fails, the entire array cannot be used. The capacity is the total of all member disks.

5.2. Configuring Software RAID

Users can configure software RAID during the graphical installation process, the text-based installation process, or during a kickstart installation. This section discusses software RAID configuration during the installation process using the Disk Druid application, and covers the following steps:
  1. Creating software RAID partitions on physical hard drives.
  2. Creating RAID devices from the software RAID partitions.
  3. (Optional) Configuring LVM from the RAID devices.
  4. Creating file systems from the RAID devices.
To configure software RAID, select Create custom layout from the pulldown list on the Disk Partitioning Setup screen, click the Next button, and follow the instructions in the rest of this section. The example screenshots in this section use two 10 GB disk drives (/dev/hda and /dev/hdb) to illustrate the creation of simple RAID 1 and RAID 0 configurations, and detail how to create a simple RAID configuration by implementing multiple RAID devices.

5.2.1. Creating the RAID Partitions

In a typical situation, the disk drives are new or are formatted. Both drives are shown as raw devices with no partition configuration in Abbildung 5.1, „Two Blank Drives, Ready For Configuration“.
Two Blank Drives, Ready For Configuration
Two Blank Drives, Ready For Configuration
Abbildung 5.1. Two Blank Drives, Ready For Configuration

  1. In Disk Druid, click the RAID button to enter the software RAID creation screen.
  2. Choose Create a software RAID partition to create a RAID partition as shown in Abbildung 5.2, „RAID Partition Options“. Note that no other RAID options (such as entering a mount point) are available until RAID partitions, as well as RAID devices, are created. Click OK to confirm the choice.
    RAID Partition Options
    RAID Partition Options
    Abbildung 5.2. RAID Partition Options

  3. A software RAID partition must be constrained to one drive. For Allowable Drives, select the drive to use for RAID. If you have multiple drives, by default all drives are selected and you must deselect the drives you do not want.
    Adding a RAID Partition
    Adding a RAID Partition
    Abbildung 5.3. Adding a RAID Partition

  4. Edit the Size (MB) field, and enter the size that you want the partition to be (in MB).
  5. Select Fixed Size to specify partition size. Select Fill all space up to (MB) and enter a value (in MB) to specify partition size range. Select Fill to maximum allowable size to allow maximum available space of the hard disk. Note that if you make more than one space growable, they share the available free space on the disk.
  6. Select Force to be a primary partition if you want the partition to be a primary partition. A primary partition is one of the first four partitions on the hard drive. If unselected, the partition is created as a logical partition. If other operating systems are already on the system, unselecting this option should be considered. For more information on primary versus logical/extended partitions, refer to the appendix section of the Red Hat Enterprise Linux Installation Guide.
Repeat these steps to create as many partitions as needed for your RAID setup. Notice that all the partitions do not have to be RAID partitions. For example, you can configure only the /boot partition as a software RAID device, leaving the root partition (/), /home, and swap as regular file systems. Abbildung 5.4, „RAID 1 Partitions Ready, Pre-Device and Mount Point Creation“ shows successfully allocated space for the RAID 1 configuration (for /boot), which is now ready for RAID device and mount point creation:
RAID 1 Partitions Ready, Pre-Device and Mount Point Creation
RAID 1 Partitions Ready, Pre-Device and Mount Point Creation
Abbildung 5.4. RAID 1 Partitions Ready, Pre-Device and Mount Point Creation

5.2.2. Creating the RAID Devices and Mount Points

Once you create all of your partitions as software RAID partitions, you must create the RAID device and mount point.
  1. On the main partitioning screen, click the RAID button. The RAID Options dialog appears as shown in Abbildung 5.5, „RAID Optionen“.
    RAID Optionen
    RAID Optionen auswählen
    Abbildung 5.5. RAID Optionen

  2. Select the Create a RAID device option, and click OK. As shown in Abbildung 5.6, „Making a RAID Device and Assigning a Mount Point“, the Make RAID Device dialog appears, allowing you to make a RAID device and assign a mount point.
    Making a RAID Device and Assigning a Mount Point
    Making a RAID Device and Assigning a Mount Point
    Abbildung 5.6. Making a RAID Device and Assigning a Mount Point

  3. Select a mount point from the Mount Point pulldown list.
  4. Choose the file system type for the partition from the File System Type pulldown list. At this point you can either configure a dynamic LVM file system or a traditional static ext2/ext3 file system. For more information on LVM and its configuration during the installation process, refer to Kapitel 10, LVM (Logical Volume Manager). If LVM is not required, continue on with the following instructions.
  5. From the RAID Device pulldown list, select a device name such as md0.
  6. From the RAID Level, choose the required RAID level.

    Anmerkung

    If you are making a RAID partition of /boot, you must choose RAID level 1, and it must use one of the first two drives (IDE first, SCSI second). If you are not creating a separate RAID partition of /boot, and you are making a RAID partition for the root file system (that is, /), it must be RAID level 1 and must use one of the first two drives (IDE first, SCSI second).
  7. The RAID partitions created appear in the RAID Members list. Select which of these partitions should be used to create the RAID device.
  8. If configuring RAID 1 or RAID 5, specify the number of spare partitions in the Number of spares field. If a software RAID partition fails, the spare is automatically used as a replacement. For each spare you want to specify, you must create an additional software RAID partition (in addition to the partitions for the RAID device). Select the partitions for the RAID device and the partition(s) for the spare(s).
  9. Click OK to confirm the setup. The RAID device appears in the Drive Summary list.
  10. Repeat this chapter's entire process for configuring additional partitions, devices, and mount points, such as the root partition (/), home partition (/home), or swap.
After completing the entire configuration, the figure as shown in Abbildung 5.7, „Sample RAID Configuration“ resembles the default configuration, except for the use of RAID.
Sample RAID Configuration
Sample RAID Configuration
Abbildung 5.7. Sample RAID Configuration

The figure as shown in Abbildung 5.8, „Sample RAID With LVM Configuration“ is an example of a RAID and LVM configuration.
Sample RAID With LVM Configuration
Sample RAID With LVM Configuration
Abbildung 5.8. Sample RAID With LVM Configuration

You can proceed with your installation process by clicking Next. Refer to the Red Hat Enterprise Linux Installation Guide for further instructions.

5.3. Managing Software RAID

This section discusses software RAID configuration and management after the installation, and covers the following topics:
  • Reviewing existing software RAID configuration.
  • Creating a new RAID device.
  • Replacing a faulty device in an array.
  • Adding a new device to an existing array.
  • Deactivating and removing an existing RAID device.
  • Saving the configuration.
All examples in this section use the software RAID configuration from the previous section.

5.3.1. Reviewing RAID Configuration

When a software RAID is in use, basic information about all presently active RAID devices are stored in the /proc/mdstat special file. To list these devices, display the content of this file by typing the following at a shell prompt:
cat /proc/mdstat
To determine whether a certain device is a RAID device or a component device, run the command in the following form as root:
mdadm --query device
In order to examine a RAID device in more detail, use the following command:
mdadm --detail raid_device
Similarly, to examine a component device, type:
mdadm --examine component_device
While the mdadm --detail command displays information about a RAID device, mdadm --examine only relays information about a RAID device as it relates to a given component device. This distinction is particularly important when working with a RAID device that itself is a component of another RAID device.
The mdadm --query command, as well as both mdadm --detail and mdadm --examine commands allow you to specify multiple devices at once.
Beispiel 5.1. Reviewing RAID configuration
Assume the system uses configuration from Abbildung 5.7, „Sample RAID Configuration“. You can verify that /dev/md0 is a RAID device by typing the following at a shell prompt:
~]# mdadm --query /dev/md0
/dev/md0: 125.38MiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.
/dev/md0: No md super block found, not an md component.
As you can see, the above command produces only a brief overview of the RAID device and its configuration. To display more detailed information, use the following command instead:
~]# mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Tue Jun 28 16:05:49 2011
     Raid Level : raid1
     Array Size : 128384 (125.40 MiB 131.47 MB)
  Used Dev Size : 128384 (125.40 MiB 131.47 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Jun 30 17:06:34 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : 49c5ac74:c2b79501:5c28cb9c:16a6dd9f
         Events : 0.6

    Number   Major   Minor   RaidDevice State
       0       3        1        0      active sync   /dev/hda1
       1       3       65        1      active sync   /dev/hdb1
Finally, to list all presently active RAID devices, type:
~]$ cat /proc/mdstat
Personalities : [raid0] [raid1]
md0 : active raid1 hdb1[1] hda1[0]
      128384 blocks [2/2] [UU]
      
md1 : active raid0 hdb2[1] hda2[0]
      1573888 blocks 256k chunks

md2 : active raid0 hdb3[1] hda3[0]
      19132928 blocks 256k chunks

unused devices: <none>

5.3.2. Creating a New RAID Device

To create a new RAID device, use the command in the following form as root:
mdadm --create raid_device --level=level --raid-devices=number component_device
This is the simplest way to create a RAID array. There are many more options that allow you to specify the number of spare devices, the block size of a stripe array, if the array has a write-intent bitmap, and much more. All these options can have a significant impact on the performance, but are beyond the scope of this document. For more detailed information, refer to the CREATE MODE section of the mdadm(8) manual page.
Beispiel 5.2. Creating a new RAID device
Assume that the system has two unused SCSI disk drives available, and that each of these devices has exactly one partition of the same size:
~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sdb  /dev/sdb1
To create /dev/md3 as a new RAID level 1 array from /dev/sda1 and /dev/sdb1, run the following command:
~]# mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
mdadm: array /dev/md3 started.

5.3.3. Replacing a Faulty Device

To replace a particular device in a software RAID, first make sure it is marked as faulty by running the following command as root:
mdadm raid_device --fail component_device
Then remove the faulty device from the array by using the command in the following form:
mdadm raid_device --remove component_device
Once the device is operational again, you can re-add it to the array:
mdadm raid_device --add component_device
Beispiel 5.3. Replacing a faulty device
Assume the system has an active RAID device, /dev/md3, with the following layout (that is, the RAID device created in Beispiel 5.2, „Creating a new RAID device“):
~]# mdadm --detail /dev/md3 | tail -n 3
    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
Imagine the first disk drive fails and needs to be replaced. To do so, first mark the /dev/sdb1 device as faulty:
~]# mdadm /dev/md3 --fail /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md3
Then remove it from the RAID device:
~]# mdadm /dev/md3 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1
As soon as the hardware is replaced, you can add the device back to the array by using the following command:
~]# mdadm /dev/md3 --add /dev/sdb1
mdadm: added /dev/sdb1

5.3.4. Extending a RAID Device

To add a new device to an existing array, use the command in the following form as root:
mdadm raid_device --add component_device
This will add the device as a spare device. To grow the array to use this device actively, type the following at a shell prompt:
mdadm --grow raid_device --raid-devices=number
Beispiel 5.4. Extending a RAID device
Assume the system has an active RAID device, /dev/md3, with the following layout (that is, the RAID device created in Beispiel 5.2, „Creating a new RAID device“):
~]# mdadm --detail /dev/md3 | tail -n 3
    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
Also assume that a new SCSI disk drive, /dev/sdc, has been added and has exactly one partition. To add it to the /dev/md3 array, type the following at a shell prompt:
~]# mdadm /dev/md3 --add /dev/sdc1
mdadm: added /dev/sdc1
This will add /dev/sdc1 as a spare device. To change the size of the array to actually use it, type:
~]# mdadm --grow /dev/md3 --raid-devices=3

5.3.5. Removing a RAID Device

To remove an existing RAID device, first deactivate it by running the following command as root:
mdadm --stop raid_device
Once deactivated, remove the RAID device itself:
mdadm --remove raid_device
Finally, zero superblocks on all devices that were associated with the particular array:
mdadm --zero-superblock component_device
Beispiel 5.5. Removing a RAID device
Assume the system has an active RAID device, /dev/md3, with the following layout (that is, the RAID device created in Beispiel 5.4, „Extending a RAID device“):
~]# mdadm --detail /dev/md3 | tail -n 4
    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
       2       8       33        2      active sync   /dev/sdc1
In order to remove this device, first stop it by typing the following at a shell prompt:
~]# mdadm --stop /dev/md3
mdadm: stopped /dev/md3
Once stopped, you can remove the /dev/md3 device by running the following command:
~]# mdadm --remove /dev/md3
Finally, to remove the superblocks from all associated devices, type:
~]# mdadm --zero-superblock /dev/sda1 /dev/sdb1 /dev/sdc1

5.3.6. Preserving the Configuration

By default, changes made by the mdadm command only apply to the current session, and will not survive a system restart. At boot time, the mdmonitor service reads the content of the /etc/mdadm.conf configuration file to see which RAID devices to start. If the software RAID was configured during the graphical installation process, this file contains directives listed in Tabelle 5.1, „Common mdadm.conf directives“ by default.
Tabelle 5.1. Common mdadm.conf directives
Option Description
ARRAY
Allows you to identify a particular array.
DEVICE
Allows you to specify a list of devices to scan for a RAID component (for example, /dev/hda1). You can also use the keyword partitions to use all partitions listed in /proc/partitions, or containers to specify an array container.
MAILADDR Allows you to specify an email address to use in case of an alert.

To list what ARRAY lines are presently in use regardless of the configuration, run the following command as root:
mdadm --detail --scan
Use the output of this command to determine which lines to add to the /etc/mdadm.conf file. You can also display the ARRAY line for a particular device:
mdadm --detail --brief raid_device
By redirecting the output of this command, you can add such a line to the configuration file with a single command:
mdadm --detail --brief raid_device >> /etc/mdadm.conf
Beispiel 5.6. Preserving the configuration
By default, the /etc/mdadm.conf contains the software RAID configuration created during the system installation:
# mdadm.conf written out by anaconda
DEVICE partitions
MAILADDR root
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=49c5ac74:c2b79501:5c28cb9c:16a6dd9f
ARRAY /dev/md1 level=raid0 num-devices=2 UUID=76914c11:5bfa2c00:dc6097d1:a1f4506d
ARRAY /dev/md2 level=raid0 num-devices=2 UUID=2b5d38d0:aea898bf:92be20e2:f9d893c5
Assuming you have created the /dev/md3 device as shown in Beispiel 5.2, „Creating a new RAID device“, you can make it persistent by running the following command:
~]# mdadm --detail --brief /dev/md3 >> /etc/mdadm.conf

5.4. Additional Resources

For more information on RAID, refer to the following resources.

5.4.1. Installed Documentation

  • mdadm man page — A manual page for the mdadm utility.
  • mdadm.conf man page — A manual page that provides a comprehensive list of available /etc/mdadm.conf configuration options.


[1] A hot-swap chassis allows you to remove a hard drive without having to power-down your system.
[2] Parity information is calculated based on the contents of the rest of the member disks in the array. This information can then be used to reconstruct data when one disk in the array fails. The reconstructed data can then be used to satisfy I/O requests to the failed disk before it is replaced and to repopulate the failed disk after it has been replaced.

Kapitel 6. Swap-Space

6.1. Was ist Swap-Space?

Swap space in Linux is used when the amount of physical memory (RAM) is full. If the system needs more memory resources and the RAM is full, inactive pages in memory are moved to the swap space. While swap space can help machines with a small amount of RAM, it should not be considered a replacement for more RAM. Swap space is located on hard drives, which have a slower access time than physical memory.
Swap-Space kann eine eigens erstellte Swap-Partition sein (empfehlenswert), eine Swap-Datei oder eine Kombination aus Swap-Partitionen und Swap-Dateien.
In years past, the recommended amount of swap space increased linearly with the amount of RAM in the system. But because the amount of memory in modern systems has increased into the hundreds of gigabytes, it is now recognized that the amount of swap space that a system needs is a function of the memory workload running on that system. However, given that swap space is usually designated at install time, and that it can be difficult to determine beforehand the memory workload of a system, we recommend determining system swap using the following table.

Important

File systems and LVM2 volumes assigned as swap space cannot be in use when being modified. For example, no system processes can be assigned the swap space, as well as no amount of swap should be allocated and used by the kernel. Use the free and cat /proc/swaps commands to verify how much and where swap is in use.
The best way to achieve swap space modifications is to boot your system in rescue mode, and then follow the instructions (for each scenario) in the remainder of this chapter. Refer to the Red Hat Enterprise Linux Installation Guide for instructions on booting into rescue mode. When prompted to mount the file system, select Skip.

6.2. Swap-Space hinzufügen

Sometimes it is necessary to add more swap space after installation. For example, you may upgrade the amount of RAM in your system from 128 MB to 256 MB, but there is only 256 MB of swap space. It might be advantageous to increase the amount of swap space to 512 MB if you perform memory-intense operations or run applications that require a large amount of memory.
You have three options: create a new swap partition, create a new swap file, or extend swap on an existing LVM2 logical volume. It is recommended that you extend an existing logical volume.

6.2.1. Extending Swap on an LVM2 Logical Volume

To extend an LVM2 swap logical volume (assuming /dev/VolGroup00/LogVol01 is the volume you want to extend):
  1. Disable swapping for the associated logical volume:
    swapoff -v /dev/VolGroup00/LogVol01
  2. Resize the LVM2 logical volume by 256 MB:
    lvm lvresize /dev/VolGroup00/LogVol01 -L +256M
  3. Format the new swap space:
    mkswap /dev/VolGroup00/LogVol01
  4. Enable the extended logical volume:
    swapon -va
  5. Test that the logical volume has been extended properly:
    cat /proc/swaps
    free

6.2.2. Creating an LVM2 Logical Volume for Swap

To add a swap volume group (assuming /dev/VolGroup00/LogVol02 is the swap volume you want to add):
  1. Create the LVM2 logical volume of size 256 MB:
    lvm lvcreate VolGroup00 -n LogVol02 -L 256M
  2. Format the new swap space:
    mkswap /dev/VolGroup00/LogVol02
  3. Add the following entry to the /etc/fstab file:
    /dev/VolGroup00/LogVol02   swap     swap    defaults     0 0
  4. Enable the extended logical volume:
    swapon -va
  5. Test that the logical volume has been extended properly:
    cat /proc/swaps
    free

6.2.3. Creating a Swap File

Hinzufügen einer Swap-Datei:
  1. Determine the size of the new swap file in megabytes and multiply by 1024 to determine the number of blocks. For example, the block size of a 64 MB swap file is 65536.
  2. At a shell prompt as root, type the following command with count being equal to the desired block size:
    dd if=/dev/zero of=/swapfile bs=1024 count=65536
  3. Richten Sie die Swap-Datei mit dem folgenden Befehl ein:
    mkswap /swapfile
  4. Zur sofortigen Aktivierung der Swap-Datei (aber nicht automatisch beim Booten):
    swapon /swapfile
  5. To enable it at boot time, edit /etc/fstab to include the following entry:
    /swapfile          swap            swap    defaults        0 0
    Beim nächsten Booten des Systems wird die neue Swap-Datei aktiviert.
  6. After adding the new swap file and enabling it, verify it is enabled by viewing the output of the command cat /proc/swaps or free.

6.3. Löschen von Swap-Space

Sometimes it can be prudent to reduce swap space after installation. For example, say you downgraded the amount of RAM in your system from 1 GB to 512 MB, but there is 2 GB of swap space still assigned. It might be advantageous to reduce the amount of swap space to 1 GB, since the larger 2 GB could be wasting disk space.
You have three options: remove an entire LVM2 logical volume used for swap, remove a swap file, or reduce swap space on an existing LVM2 logical volume.

6.3.1. Reducing Swap on an LVM2 Logical Volume

To reduce an LVM2 swap logical volume (assuming /dev/VolGroup00/LogVol01 is the volume you want to reduce):
  1. Disable swapping for the associated logical volume:
    swapoff -v /dev/VolGroup00/LogVol01
  2. Reduce the LVM2 logical volume by 512 MB:
    lvm lvreduce /dev/VolGroup00/LogVol01 -L -512M
  3. Format the new swap space:
    mkswap /dev/VolGroup00/LogVol01
  4. Enable the extended logical volume:
    swapon -va
  5. Test that the logical volume has been reduced properly:
    cat /proc/swaps
    free

6.3.2. Removing an LVM2 Logical Volume for Swap

The swap logical volume cannot be in use (no system locks or processes on the volume). The easiest way to achieve this is to boot your system in rescue mode. Refer to the Red Hat Enterprise Linux Installation Guide for instructions on booting into rescue mode. When prompted to mount the file system, select Skip.
To remove a swap volume group (assuming /dev/VolGroup00/LogVol02 is the swap volume you want to remove):
  1. Disable swapping for the associated logical volume:
    swapoff -v /dev/VolGroup00/LogVol02
  2. Remove the LVM2 logical volume of size 512 MB:
    lvm lvremove /dev/VolGroup00/LogVol02
  3. Remove the following entry from the /etc/fstab file:
    /dev/VolGroup00/LogVol02   swap     swap    defaults     0 0
  4. Test that the logical volume has been removed:
    cat /proc/swaps
    free

6.3.3. Removing a Swap File

Löschen einer Swap-Datei:
  1. At a shell prompt as root, execute the following command to disable the swap file (where /swapfile is the swap file):
    swapoff -v /swapfile
  2. Remove its entry from the /etc/fstab file.
  3. Löschen Sie die aktuelle Datei:
    rm /swapfile

6.4. Swap-Space verlagern

Um Swap-Space von einem Ort zu einem anderen zu verlagern, folgen Sie den Schritten zum Löschen von Swap-Space und dann den Anweisungen zum Hinzufügen von Swap-Space.

Kapitel 7. Verwalten des Festplattenspeichers

7.1. Standard Partitions using parted

The utility parted allows users to:
  • View the existing partition table
  • Change the size of existing partitions
  • Add partitions from free space or additional hard drives
If you want to view the system's disk space usage or monitor the disk space usage, refer to Abschnitt 40.3, „Dateisysteme“.
By default, the parted package is included when installing Red Hat Enterprise Linux. To start parted, log in as root and type the command parted /dev/sda at a shell prompt (where /dev/sda is the device name for the drive you want to configure).
If you want to remove or resize a partition, the device on which that partition resides must not be in use. Creating a new partition on a device which is in use—while possible—is not recommended.
For a device to not be in use, none of the partitions on the device can be mounted, and any swap space on the device must not be enabled.
As well, the partition table should not be modified while it is in use because the kernel may not properly recognize the changes. If the partition table does not match the actual state of the mounted partitions, information could be written to the wrong partition, resulting in lost and overwritten data.
The easiest way to achieve this is to boot your system in rescue mode. When prompted to mount the file system, select Skip.
Alternately, if the drive does not contain any partitions in use (system processes that use or lock the file system from being unmounted), you can unmount them with the umount command and turn off all the swap space on the hard drive with the swapoff command.
Tabelle 7.1, „parted commands“ contains a list of commonly used parted commands. The sections that follow explain some of these commands and arguments in more detail.
Tabelle 7.1. parted commands
Befehl Beschreibung
check minor-num Führt eine einfache Prüfung des Dateisystems durch
cp from to Kopiert das Dateisystem von einer Partition zur anderen; von und bis sind die Minor-Nummern der Partitionen
help Zeigt Liste verfügbarer Befehle an
mklabel label Erstellt eine Laufwerkkennung für die Partitionstabelle
mkfs minor-num file-system-type Erstellt Dateisystem des Typs Dateisystemtyp
mkpart part-type fs-type start-mb end-mb Erstellt eine Partition, ohne ein neues Dateisystem anzulegen
mkpartfs part-type fs-type start-mb end-mb Erstellt eine Partition und legt das angegebene Dateisystem an
move minor-num start-mb end-mb Verschiebt die Partition
name minor-num name Name nur für Mac und PC98 Kennungen
print Zeigt die Partitionstabelle an
quit Quit parted
rescue start-mb end-mb Retten einer verlorenen Partition von start-mb bis end-mb
resize minor-num start-mb end-mb Ändert die Größe der Partition von start-mb bis end-mb
rm minor-num Löscht die Partition
select device Wählt ein neues zu konfigurierendes Gerät
set minor-num flag state Setzt Flag auf eine Partition; state ist entweder aktiv oder inaktiv
toggle [NUMBER [FLAG] Toggle the state of FLAG on partition NUMBER
unit UNIT Set the default unit to UNIT

7.1.1. Anzeigen der Partitionstabelle

After starting parted, use the command print to view the partition table. A table similar to the following appears:
Model: ATA ST3160812AS (scsi)
Disk /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size    Type      File system  Flags
 1      32.3kB  107MB  107MB   primary   ext3         boot
 2      107MB   105GB  105GB   primary   ext3
 3      105GB   107GB  2147MB  primary   linux-swap
 4      107GB   160GB  52.9GB  extended		      root
 5      107GB   133GB  26.2GB  logical   ext3
 6      133GB   133GB  107MB   logical   ext3
 7      133GB   160GB  26.6GB  logical                lvm
The first line contains the disk type, manufacturer, model number and interface, and the second line displays the disk label type. The remaining output below the fourth line shows the partition table.
In the partition table, the Minor number is the partition number. For example, the partition with minor number 1 corresponds to /dev/sda1. The Start and End values are in megabytes. Valid Type are metadata, free, primary, extended, or logical. The Filesystem is the file system type, which can be any of the following:
  • ext2
  • ext3
  • fat16
  • fat32
  • hfs
  • jfs
  • linux-swap
  • ntfs
  • reiserfs
  • hp-ufs
  • sun-ufs
  • xfs
If a Filesystem of a device shows no value, this means that its file system type is unknown.
The Flags column lists the flags set for the partition. Available flags are boot, root, swap, hidden, raid, lvm, or lba.

Tip

To select a different device without having to restart parted, use the select command followed by the device name (for example, /dev/sda). Doing so allows you to view or configure the partition table of a device.

7.1.2. Erstellen von Partitionen

Warnung

Versuchen Sie nicht, eine Partition auf einem Gerät zu erstellen, das in Gebrauch ist.
Bevor Sie eine Partition erstellen, booten Sie im Rescue Modus (oder unmounten Sie Partitionen und deaktivieren Sie jeglichen Swap-Space auf dem Gerät).
Start parted, where /dev/sda is the device on which to create the partition:
parted /dev/sda
Zeigen Sie die aktuelle Partitionstabelle an, um festzulegen, ob genug freier Platz vorhanden ist:
print
If there is not enough free space, you can resize an existing partition. Refer to Abschnitt 7.1.4, „Ändern der Partitionsgröße“ for details.

7.1.2.1. Erstellen von Partitionen

From the partition table, determine the start and end points of the new partition and what partition type it should be. You can only have four primary partitions (with no extended partition) on a device. If you need more than four partitions, you can have three primary partitions, one extended partition, and multiple logical partitions within the extended. For an overview of disk partitions, refer to the appendix An Introduction to Disk Partitions in the Red Hat Enterprise Linux Installation Guide.
Um zum Beispiel eine primäre Partition mit einem ext3 Dateisystem von 1024 Megabyte bis 2048 Megabyte auf einem Festplattenlaufwerk zu erstellen, geben Sie folgenden Befehl ein:
mkpart primary ext3 1024 2048

Tip

If you use the mkpartfs command instead, the file system is created after the partition is created. However, parted does not support creating an ext3 file system. Thus, if you wish to create an ext3 file system, use mkpart and create the file system with the mkfs command as described later.
The changes start taking place as soon as you press Enter, so review the command before executing to it.
After creating the partition, use the print command to confirm that it is in the partition table with the correct partition type, file system type, and size. Also remember the minor number of the new partition so that you can label it. You should also view the output of
cat /proc/partitions
anzeigen, um sicherzustellen, dass der Kernel die neue Partition erkennt.

7.1.2.2. Formatting the Partition

Die Partition hat immer noch kein Dateisystem. Erstellen Sie das Dateisystem:
mkfs -t ext3 /dev/sda6

Warnung

Das Formatieren von Partitionen hat zur Folge, dass sämtliche Daten, die sich derzeit auf der Partition befinden, unwiderruflich gelöscht werden.

7.1.2.3. Partitionen mit Kennungen versehen

Next, give the partition a label. For example, if the new partition is /dev/sda6 and you want to label it /work:
e2label /dev/sda6 /work
Standardmäßig verwendet das Installationsprogramm den Mount-Punkt der Partition als Kennung, um sicher zu gehen, dass die Kennung einmalig ist. Sie können jedoch jede beliebige Kennung verwenden.

7.1.2.4. Erstellen des Mount-Punktes

Erstellen Sie als root den Mount-Punkt:
mkdir /work

7.1.2.5. Add to /etc/fstab

As root, edit the /etc/fstab file to include the new partition. The new line should look similar to the following:
LABEL=/work           /work                 ext3    defaults        1 2
The first column should contain LABEL= followed by the label you gave the partition. The second column should contain the mount point for the new partition, and the next column should be the file system type (for example, ext3 or swap). If you need more information about the format, read the man page with the command man fstab.
If the fourth column is the word defaults, the partition is mounted at boot time. To mount the partition without rebooting, as root, type the command:
mount /work

7.1.3. Löschen von Partitionen

Warnung

Versuchen Sie nicht, eine Partition auf einem Gerät zu löschen, das in Gebrauch ist.
Bevor Sie eine Partition löschen, booten Sie im Rescue Modus (oder unmounten Sie die Partitionen und deaktivieren Sie jeglichen Swap-Space auf dem Gerät).
Start parted, where /dev/sda is the device on which to remove the partition:
parted /dev/sda
Zeigen Sie die aktuelle Partitionstabelle an, um die Minor-Nummer der zu löschenden Partition zu bestimmen:
print
Remove the partition with the command rm. For example, to remove the partition with minor number 3:
rm 3
The changes start taking place as soon as you press Enter, so review the command before committing to it.
After removing the partition, use the print command to confirm that it is removed from the partition table. You should also view the output of
cat /proc/partitions
anzeigen lassen, um sicherzustellen, dass der Kernel die gelöschte Partition anerkennt.
The last step is to remove it from the /etc/fstab file. Find the line that declares the removed partition, and remove it from the file.

7.1.4. Ändern der Partitionsgröße

Warnung

Versuchen Sie nicht, die Größe einer Partition auf einem Gerät zu ändern, das in Gebrauch ist.
Bevor Sie die Größe einer Partition ändern, booten Sie im Rescue Modus (oder unmounten Sie die Partitionen und deaktivieren Sie jeglichen Swap-Space auf dem Gerät).
Start parted, where /dev/sda is the device on which to resize the partition:
parted /dev/sda
Zeigen Sie die aktuelle Partitionstabelle an, um die Minor-Nummer der zu löschenden Partition sowie die Start-und Endpunkte für die Partition zu bestimmen:
print
To resize the partition, use the resize command followed by the minor number for the partition, the starting place in megabytes, and the end place in megabytes. For example:
resize 3 1024 2048

Warnung

A partition cannot be made larger than the space available on the device
After resizing the partition, use the print command to confirm that the partition has been resized correctly, is the correct partition type, and is the correct file system type.
After rebooting the system into normal mode, use the command df to make sure the partition was mounted and is recognized with the new size.

7.2. LVM Partition Management

The following commands can be found by issuing lvm help at a command prompt.
Tabelle 7.2. LVM commands
Befehl Beschreibung
dumpconfig Dump the active configuration
formats List the available metadata formats
help Display the help commands
lvchange Change the attributes of logical volume(s)
lvcreate Create a logical volume
lvdisplay Display information about a logical volume
lvextend Add space to a logical volume
lvmchange Due to use of the device mapper, this command has been deprecated
lvmdiskscan List devices that may be used as physical volumes
lvmsadc Collect activity data
lvmsar Create activity report
lvreduce Reduce the size of a logical volume
lvremove Remove logical volume(s) from the system
lvrename Rename a logical volume
lvresize Resize a logical volume
lvs Display information about logical volumes
lvscan List all logical volumes in all volume groups
pvchange Change attributes of physical volume(s)
pvcreate Initialize physical volume(s) for use by LVM
pvdata Display the on-disk metadata for physical volume(s)
pvdisplay Display various attributes of physical volume(s)
pvmove Move extents from one physical volume to another
pvremove Remove LVM label(s) from physical volume(s)
pvresize Resize a physical volume in use by a volume group
pvs Display information about physical volumes
pvscan List all physical volumes
segtypes List available segment types
vgcfgbackup Backup volume group configuration
vgcfgrestore Restore volume group configuration
vgchange Change volume group attributes
vgck Check the consistency of a volume group
vgconvert Change volume group metadata format
vgcreate Create a volume group
vgdisplay Display volume group information
vgexport Unregister a volume group from the system
vgextend Add physical volumes to a volume group
vgimport Register exported volume group with system
vgmerge Merge volume groups
vgmknodes Create the special files for volume group devices in /dev/
vgreduce Remove a physical volume from a volume group
vgremove Remove a volume group
vgrename Rename a volume group
vgs Display information about volume groups
vgscan Search for all volume groups
vgsplit Move physical volumes into a new volume group
version Display software and driver version information

Kapitel 8. Festplatten-Quoten implementieren

Disk space can be restricted by implementing disk quotas which alert a system administrator before a user consumes too much disk space or a partition becomes full.
Disk quotas can be configured for individual users as well as user groups. This makes it possible to manage the space allocated for user-specific files (such as email) separately from the space allocated to the projects a user works on (assuming the projects are given their own groups).
In addition, quotas can be set not just to control the number of disk blocks consumed but to control the number of inodes (data structures that contain information about files in UNIX file systems). Because inodes are used to contain file-related information, this allows control over the number of files that can be created.
The quota RPM must be installed to implement disk quotas.

Note

For more information on installing RPM packages, refer to Teil II, „Paketverwaltung“.

8.1. Festplatten-Quoten konfigurieren

Um Festplatten-Quoten zu implementieren, folgen Sie den nachfolgenden Schritten:
  1. Enable quotas per file system by modifying the /etc/fstab file.
  2. Remount the file system(s).
  3. Create the quota database files and generate the disk usage table.
  4. Assign quota policies.
Jeder dieser Schritte wird in den folgenden Abschnitten genauer erklärt.

8.1.1. Quoten aktivieren

As root, using a text editor, edit the /etc/fstab file. Add the usrquota and/or grpquota options to the file systems that require quotas:
/dev/VolGroup00/LogVol00 /         ext3    defaults        1 1
LABEL=/boot              /boot     ext3    defaults        1 2
none                     /dev/pts  devpts  gid=5,mode=620  0 0
none                     /dev/shm  tmpfs   defaults        0 0
none                     /proc     proc    defaults        0 0
none                     /sys      sysfs   defaults        0 0
/dev/VolGroup00/LogVol02 /home     ext3    defaults,usrquota,grpquota  1 2
/dev/VolGroup00/LogVol01 swap      swap    defaults        0 0 . . .
In this example, the /home file system has both user and group quotas enabled.

Anmerkung

The following examples assume that a separate /home partition was created during the installation of Red Hat Enterprise Linux. The root (/) partition can be used for setting quota policies in the /etc/fstab file.

8.1.2. Erneutes Mounten des Dateisystems

After adding the usrquota and/or grpquota options, remount each file system whose fstab entry has been modified. If the file system is not in use by any process, use one of the following methods:
  • Issue the umount command followed by the mount command to remount the file system.(See the man page for both umount and mount for the specific syntax for mounting and unmounting various filesystem types.)
  • Issue the mount -o remount <file-system> command (where <file-system> is the name of the file system) to remount the file system. For example, to remount the /home file system, the command to issue is mount -o remount /home.
If the file system is currently in use, the easiest method for remounting the file system is to reboot the system.

8.1.3. Creating the Quota Database Files

After each quota-enabled file system is remounted, the system is capable of working with disk quotas. However, the file system itself is not yet ready to support quotas. The next step is to run the quotacheck command.
The quotacheck command examines quota-enabled file systems and builds a table of the current disk usage per file system. The table is then used to update the operating system's copy of disk usage. In addition, the file system's disk quota files are updated.
To create the quota files (aquota.user and aquota.group) on the file system, use the -c option of the quotacheck command. For example, if user and group quotas are enabled for the /home file system, create the files in the /home directory:
quotacheck -cug /home
The -c option specifies that the quota files should be created for each file system with quotas enabled, the -u option specifies to check for user quotas, and the -g option specifies to check for group quotas.
Wenn weder -u noch -g angegeben werden, wird nur die Datei für die Benutzer-Quoten erstellt. Wenn nur -g angegeben wird, wird nur die Datei für Gruppen-Quoten erstellt.
Nachdem die Dateien erstellt wurden, führen Sie den folgenden Befehl aus, um die Tabelle für die aktuelle Festplattennutzung pro Dateisystem mit aktivierten Quoten zu erstellen:
quotacheck -avug
Die Optionen sind wie folgt:
  • a — Überprüfen aller quoten-aktivierten, lokal gemounteten Dateisysteme
  • v — Anzeigen detaillierter Statusinformationen während der Quoten-Überprüfung
  • u — Überprüfen der Informationen zu Benutzer-Quoten
  • g — Überprüfen der Informationen zu Gruppen-Quoten
After quotacheck has finished running, the quota files corresponding to the enabled quotas (user and/or group) are populated with data for each quota-enabled locally-mounted file system such as /home.

8.1.4. Quoten pro Benutzer zuweisen

The last step is assigning the disk quotas with the edquota command.
Um die Quoten für einen Benutzer zu konfigurieren, geben Sie als root im Shell-Prompt folgenden Befehl ein:
edquota username
Perform this step for each user who needs a quota. For example, if a quota is enabled in /etc/fstab for the /home partition (/dev/VolGroup00/LogVol02 in the example below) and the command edquota testuser is executed, the following is shown in the editor configured as the default for the system:
Disk quotas for user testuser (uid 501):
Filesystem                blocks     soft     hard    inodes   soft   hard
/dev/VolGroup00/LogVol02  440436        0        0     37418      0      0

Anmerkung

The text editor defined by the EDITOR environment variable is used by edquota. To change the editor, set the EDITOR environment variable in your ~/.bash_profile file to the full path of the editor of your choice.
The first column is the name of the file system that has a quota enabled for it. The second column shows how many blocks the user is currently using. The next two columns are used to set soft and hard block limits for the user on the file system. The inodes column shows how many inodes the user is currently using. The last two columns are used to set the soft and hard inode limits for the user on the file system.
The hard block limit is the absolute maximum amount of disk space that a user or group can use. Once this limit is reached, no further disk space can be used.
The soft block limit defines the maximum amount of disk space that can be used. However, unlike the hard limit, the soft limit can be exceeded for a certain amount of time. That time is known as the grace period. The grace period can be expressed in seconds, minutes, hours, days, weeks, or months.
Wenn einer dieser Werte auf 0 gesetzt ist, bedeutet dies, dass keine Grenze angegeben wurde. Sie können im Texteditor die gewünschten Grenzen einstellen. Zum Beispiel:
Disk quotas for user testuser (uid 501):
Filesystem                blocks     soft     hard   inodes   soft   hard
/dev/VolGroup00/LogVol02  440436   500000   550000    37418      0      0
Um zu prüfen, dass die Quote für den Benutzer gesetzt wurde, geben Sie folgenden Befehl ein:
quota testuser

8.1.5. Quoten pro Gruppe zuweisen

Quotas can also be assigned on a per-group basis. For example, to set a group quota for the devel group (the group must exist prior to setting the group quota), use the command:
edquota -g devel
Dieser Befehl zeigt die bestehenden Quoten für die Gruppe im Texteditor an:
Disk quotas for group devel (gid 505):
Filesystem                blocks    soft     hard    inodes    soft    hard
/dev/VolGroup00/LogVol02  440400       0        0     37418       0       0
Modify the limits, then save the file.
Um zu prüfen, dass Sie Gruppen-Quote eingestellt wurde, geben Sie den folgenden Befehl ein:
quota -g devel

8.1.6. Setting the Grace Period for Soft Limits

If soft limits are set for a given quota (whether inode or block and for either users or groups) the grace period, or amount of time a soft limit can be exceeded, should be set with the command:
edquota -t
While other edquota commands operate on a particular user's or group's quota, the -t option operates on every filesystem with quotas enabled.

8.2. Verwalten von Festplatten-Quoten

If quotas are implemented, they need some maintenance — mostly in the form of watching to see if the quotas are exceeded and making sure the quotas are accurate.
Of course, if users repeatedly exceed their quotas or consistently reach their soft limits, a system administrator has a few choices to make depending on what type of users they are and how much disk space impacts their work. The administrator can either help the user determine how to use less disk space or increase the user's disk quota.

8.2.1. Aktivieren und Deaktivieren

It is possible to disable quotas without setting them to 0. To turn all user and group quotas off, use the following command:
quotaoff -vaug
If neither the -u or -g options are specified, only the user quotas are disabled. If only -g is specified, only group quotas are disabled. The -v switch causes verbose status information to display as the command executes.
To enable quotas again, use the quotaon command with the same options.
For example, to enable user and group quotas for all file systems, use the following command:
quotaon -vaug
To enable quotas for a specific file system, such as /home, use the following command:
quotaon -vug /home
Wenn weder die Option -u noch die Option -g angegeben wird, werden nur die Benutzer-Quoten deaktiviert. Wenn nur -g angegeben wird, werden nur die Gruppen-Quoten deaktiviert.

8.2.2. Berichte über Festplatten-Quoten erstellen

Creating a disk usage report entails running the repquota utility. For example, the command repquota /home produces this output:
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol02
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      36       0       0              4     0     0
kristin   --     540       0       0            125     0     0
testuser  --  440400  500000  550000          37418     0     0
To view the disk usage report for all (option -a) quota-enabled file systems, use the command:
repquota -a
While the report is easy to read, a few points should be explained. The -- displayed after each user is a quick way to determine whether the block or inode limits have been exceeded. If either soft limit is exceeded, a + appears in place of the corresponding -; the first - represents the block limit, and the second represents the inode limit.
The grace columns are normally blank. If a soft limit has been exceeded, the column contains a time specification equal to the amount of time remaining on the grace period. If the grace period has expired, none appears in its place.

8.2.3. Genauigkeit der Quoten einhalten

Whenever a file system is not unmounted cleanly (due to a system crash, for example), it is necessary to run quotacheck. However, quotacheck can be run on a regular basis, even if the system has not crashed. Safe methods for periodically running quotacheck include:
Ensuring quotacheck runs on next reboot

Best method for most systems

This method works best for (busy) multiuser systems which are periodically rebooted.
As root, place a shell script into the /etc/cron.daily/ or /etc/cron.weekly/ directory—or schedule one using the crontab -e command—that contains the touch /forcequotacheck command. This creates an empty forcequotacheck file in the root directory, which the system init script looks for at boot time. If it is found, the init script runs quotacheck. Afterward, the init script removes the /forcequotacheck file; thus, scheduling this file to be created periodically with cron ensures that quotacheck is run during the next reboot.
Refer to Kapitel 37, Automated Tasks for more information about configuring cron.
Running quotacheck in single user mode
An alternative way to safely run quotacheck is to (re-)boot the system into single-user mode to prevent the possibility of data corruption in quota files and run:
~]# quotaoff -vaug /<file_system>
~]# quotacheck -vaug /<file_system>
~]# quotaon -vaug /<file_system>
Running quotacheck on a running system
If necessary, it is possible to run quotacheck on a machine during a time when no users are logged in, and thus have no open files on the file system being checked. Run the command quotacheck -vaug <file_system> ; this command will fail if quotacheck cannot remount the given <file_system> as read-only. Note that, following the check, the file system will be remounted read-write.

Do not run quotacheck on a live file system

Running quotacheck on a live file system mounted read-write is not recommended due to the possibility of quota file corruption.
Refer to Kapitel 37, Automated Tasks for more information about configuring cron.

8.3. Zusätzliche Ressourcen

In den folgenden Ressourcen finden Sie weitere Informationen zu Festplatten-Quoten.

8.3.1. Installierte Dokumentation

  • The quotacheck, edquota, repquota, quota, quotaon, and quotaoff man pages

Kapitel 9. Access Control Lists

Files and directories have permission sets for the owner of the file, the group associated with the file, and all other users for the system. However, these permission sets have limitations. For example, different permissions cannot be configured for different users. Thus, Access Control Lists (ACLs) were implemented.
The Red Hat Enterprise Linux 5 kernel provides ACL support for the ext3 file system and NFS-exported file systems. ACLs are also recognized on ext3 file systems accessed via Samba.
Along with support in the kernel, the acl package is required to implement ACLs. It contains the utilities used to add, modify, remove, and retrieve ACL information.
The cp and mv commands copy or move any ACLs associated with files and directories.

9.1. Dateisysteme mounten

Bevor Sie ACLs für eine Datei oder ein Verzeichnis verwenden, muss die Partition hierfür mit AVL-Support gemountet werden. Ist dieses ein lokales ext3-Dateisystem, kann es mit dem folgenden Befehl gemountet werden:
mount -t ext3 -o acl <device-name> <partition>
Beispiel:
mount -t ext3 -o acl /dev/VolGroup00/LogVol02 /work
Alternatively, if the partition is listed in the /etc/fstab file, the entry for the partition can include the acl option:
LABEL=/work      /work       ext3    acl        1 2
Wird auf ein ext3-Dateisystem über Samba zugegriffen und hierfür ACLs aktiviert, werden die ACLs erkannt, da Samba mit der Option --with-acl-support kompiliert wurde. Es werden keine besonderen Flags benötigt, wenn ein Samba-Share gemountet oder zugegriffen werden soll.

9.1.1. NFS

Als Vorgabe, wenn das von einem NFS-Server exportierte Dateisystem ACLs unterstützt, und der NFS-Client ACLs lesen kann, werden ACLs von dem Client-System verwendet.
To disable ACLs on NFS shares when configuring the server, include the no_acl option in the /etc/exports file. To disable ACLs on an NFS share when mounting it on a client, mount it with the no_acl option via the command line or the /etc/fstab file.

9.2. Access ACLs einstellen

Es gibt zwei Arten von ACLs: Access ACLs und Default ACLs. Eine Access ACL ist die Zugriffskontroll-Liste für eine bestimmte Datei oder Verzeichnis. Eine Default ACL kann nur auf ein Verzeichnis verweisen; wenn eine Datei innerhalb des Verzeichnisses keine Access ACL besitzt, werden die regeln der Default ACL für das Verzeichnis verwendet. Default ACLs sind optional.
ACLs können konfiguriert werden:
  1. Pro Benutzer
  2. Pro Gruppe
  3. Über die effektive Rechte-Maske
  4. Für Benutzer nicht in der Benutzergruppe für diese Datei
The setfacl utility sets ACLs for files and directories. Use the -m option to add or modify the ACL of a file or directory:
setfacl -m <rules> <files>
Rules (<rules>) must be specified in the following formats. Multiple rules can be specified in the same command if they are separated by commas.
u:<uid>:<perms>
Setzt die Access-ACL für einen Benutzer. Der Benutzername oder UID kann angegeben werden. Der Benutzer kann ein beliebiger, gültiger Benutzer auf dem System sein.
g:<gid>:<perms>
Setzt die Access-ACL für eine Gruppe. Der Gruppenname oder GID kann angegeben werden. Die Gruppe kann eine beliebige, gültige Gruppe auf dem System sein.
m:<perms>
Setzt die effektive Rechte-Maske. Die Maske ist die Zusammenstellung aller Berechtigungen der Gruppe und aller Benutzer- und Gruppen-Einträge.
o:<perms>
Setzt die Access-ACL für Benutzer, die nicht in einer Gruppe für die Datei sind.
White space is ignored. Permissions (<perms>) must be a combination of the characters r, w, and x for read, write, and execute.
If a file or directory already has an ACL, and the setfacl command is used, the additional rules are added to the existing ACL or the existing rule is modified.
For example, to give read and write permissions to user andrius:
setfacl -m u:andrius:rw /project/somefile
To remove all the permissions for a user, group, or others, use the -x option and do not specify any permissions:
setfacl -x <rules> <files>
Um alle Berechtigungen vom Benutzer mit der UID 500 zu entfernen:
setfacl -x u:500 /project/somefile

9.3. Einstellen von Default ACLs

To set a default ACL, add d: before the rule and specify a directory instead of a file name.
For example, to set the default ACL for the /share/ directory to read and execute for users not in the user group (an access ACL for an individual file can override it):
setfacl -m d:o:rx /share

9.4. ACLs abrufen

To determine the existing ACLs for a file or directory, use the getfacl command. In the example below, the getfacl is used to determine the existing ACLs for a file.
getfacl home/john/picture.png
The above command returns the following output:
# file: home/john/picture.png
# owner: john
# group: john
user::rw-
group::r--
other::r--
If a directory with a default ACL is specified, the default ACL is also displayed as illustrated below.
[john@main /]$ getfacl home/sales/
# file: home/sales/
# owner: john
# group: john
user::rw-
user:barryg:r--
group::r--
mask::r--
other::r--
default:user::rwx
default:user:john:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

9.5. Dateisysteme mit ACLs archivieren

Achtung

The tar and dump commands do not backup ACLs.
The star utility is similar to the tar utility in that it can be used to generate archives of files; however, some of its options are different. Refer to Tabelle 9.1, „Command Line Options for star for a listing of more commonly used options. For all available options, refer to the star man page. The star package is required to use this utility.
Tabelle 9.1. Command Line Options for star
Option Beschreibung
-c Erstellt eine Archivdatei.
-n Extrahiert die Dateien nicht; Wird zusammen mit -x verwendet, um anzuzeigen, was ein Extrahieren der Dateien anrichtet.
-r Ersetzt Dateien im Archiv. Die Dateien werden ans Ende der Archivdatei geschrieben und ersetzen alle Dateien mit dem gleichen Pfad- und Dateinamen.
-t Zeigt den Inhalt einer Archivdatei an.
-u Aktualisiert eine Archivdatei. Die Dateien werden ans Ende des Archivs geschrieben, wenn diese nicht im Archiv sein sollten oder wenn die Dateien neuer sind als solche mit dem gleichen Namen im Archiv. Diese Option funktioniert nur, wenn das Archiv eine Datei oder ein nicht-blockiertes Band ist, das die Fähigkeit zum Backspace hat.
-x Extarhiert die Dateien aus dem Archiv. Wenn dies zusammen mit -U verwendet wird und eine Datei im Archiv älter ist als die entsprechende Datei auf dem Dateisystem, wird diese nicht extrahiert.
-help Zeigt die wichtigsten Optionen an.
-xhelp Zeigt die nicht so wichtigen Optionen an.
-/ Vorausgehende Schrägstriche vor Dateibnamen werden bei der Extraktion aus einem Archiv nicht entfernt. Standardmäßig werden die Schrägstriche beim Extrahieren entfernt.
-acl Beim Erstellen oder Extrahieren, werden ACLs zu Dateien oder Verzeichnissen archiviert oder abgerufen.

9.6. Kompatibilität mit älteren Systemen

If an ACL has been set on any file on a given file system, that file system has the ext_attr attribute. This attribute can be seen using the following command:
tune2fs -l <filesystem-device>
A file system that has acquired the ext_attr attribute can be mounted with older kernels, but those kernels do not enforce any ACLs which have been set.
Versions of the e2fsck utility included in version 1.22 and higher of the e2fsprogs package (including the versions in Red Hat Enterprise Linux 2.1 and 4) can check a file system with the ext_attr attribute. Older versions refuse to check it.

9.7. Zusätzliche Ressourcen

In den folgenden Ressourcen finden Sie weitere Informationen.

9.7.1. Installierte Dokumentation

  • acl man page — Description of ACLs
  • getfacl man page — Discusses how to get file access control lists
  • setfacl man page — Explains how to set file access control lists
  • star man page — Explains more about the star utility and its many options

9.7.2. Nützliche Webseiten

Kapitel 10. LVM (Logical Volume Manager)

10.1. What is LVM?

LVM is a tool for logical volume management which includes allocating disks, striping, mirroring and resizing logical volumes.
With LVM, a hard drive or set of hard drives is allocated to one or more physical volumes. LVM physical volumes can be placed on other block devices which might span two or more disks.
The physical volumes are combined into logical volumes, with the exception of the /boot partition. The /boot partition cannot be on a logical volume group because the boot loader cannot read it. If the root (/) partition is on a logical volume, create a separate /boot partition which is not a part of a volume group.
Since a physical volume cannot span over multiple drives, to span over more than one drive, create one or more physical volumes per drive.
Logical Volumes
LVM Group
Abbildung 10.1. Logical Volumes

The volume groups can be divided into logical volumes, which are assigned mount points, such as /home and / and file system types, such as ext2 or ext3. When "partitions" reach their full capacity, free space from the volume group can be added to the logical volume to increase the size of the partition. When a new hard drive is added to the system, it can be added to the volume group, and partitions that are logical volumes can be increased in size.
Logical Volumes
Logical Volumes
Abbildung 10.2. Logical Volumes

On the other hand, if a system is partitioned with the ext3 file system, the hard drive is divided into partitions of defined sizes. If a partition becomes full, it is not easy to expand the size of the partition. Even if the partition is moved to another hard drive, the original hard drive space has to be reallocated as a different partition or not used.
To learn how to configure LVM during the installation process, refer to Abschnitt 10.2, „LVM-Konfiguration“.

10.1.1. What is LVM2?

LVM version 2, or LVM2, is the default for Red Hat Enterprise Linux 5, which uses the device mapper driver contained in the 2.6 kernel. LVM2 can be upgraded from versions of Red Hat Enterprise Linux running the 2.4 kernel.

10.2. LVM-Konfiguration

LVM can be configured during the graphical installation process, the text-based installation process, or during a kickstart installation. You can use the system-config-lvm utility to create your own LVM configuration post-installation. The next two sections focus on using Disk Druid during installation to complete this task. The third section introduces the LVM utility (system-config-lvm) which allows you to manage your LVM volumes in X windows or graphically.
Read Abschnitt 10.1, „What is LVM?“ first to learn about LVM. An overview of the steps required to configure LVM include:
  • Creating physical volumes from the hard drives.
  • Creating volume groups from the physical volumes.
  • Creating logical volumes from the volume groups and assign the logical volumes mount points.
Two 9.1 GB SCSI drives (/dev/sda and /dev/sdb) are used in the following examples. They detail how to create a simple configuration using a single LVM volume group with associated logical volumes during installation.

10.3. Automatic Partitioning

On the Disk Partitioning Setup screen, select Remove linux partitions on selected drives and create default layout from the pulldown list.
For Red Hat Enterprise Linux, LVM is the default method for disk partitioning. If you do not wish to have LVM implemented, or if you require RAID partitioning, manual disk partitioning through Disk Druid is required.
The following properties make up the automatically created configuration:
  • The /boot partition resides on its own non-LVM partition. In the following example, it is the first partition on the first drive (/dev/sda1). Bootable partitions cannot reside on LVM logical volumes.
  • A single LVM volume group (VolGroup00) is created, which spans all selected drives and all remaining space available. In the following example, the remainder of the first drive (/dev/sda2), and the entire second drive (/dev/sdb1) are allocated to the volume group.
  • Two LVM logical volumes (LogVol00 and LogVol01) are created from the newly created spanned volume group. In the following example, the recommended swap space is automatically calculated and assigned to LogVol01, and the remainder is allocated to the root file system, LogVol00.
Automatic LVM Configuration With Two SCSI Drives
Automatic LVM Configuration With Two SCSI Drives
Abbildung 10.3. Automatic LVM Configuration With Two SCSI Drives

Anmerkung

If enabling quotas are of interest to you, it may be best to modify the automatic configuration to include other mount points, such as /home or /var, so that each file system has its own independent quota configuration limits.
In most cases, the default automatic LVM partitioning is sufficient, but advanced implementations could warrant modification or manual configuration of the partition tables.

Anmerkung

If you anticipate future memory upgrades, leaving some free space in the volume group would allow for easy future expansion of the swap space logical volume on the system; in which case, the automatic LVM configuration should be modified to leave available space for future growth.

10.4. Manual LVM Partitioning

The following section explains how to manually configure LVM for Red Hat Enterprise Linux. Because there are numerous ways to manually configure a system with LVM, the following example is similar to the default configuration done in Abschnitt 10.3, „Automatic Partitioning“.
On the Disk Partitioning Setup screen, select Create custom layout from the pulldown list and click the Next button in the bottom right corner of the screen.

10.4.1. Creating the /boot Partition

In a typical situation, the disk drives are new, or formatted clean. The following figure, Abbildung 10.4, „Two Blank Drives, Ready for Configuration“, shows both drives as raw devices with no partitioning configured.
Two Blank Drives, Ready for Configuration
Two Blank Drives, Ready for Configuration
Abbildung 10.4. Two Blank Drives, Ready for Configuration

Warnung

The /boot partition cannot reside on an LVM volume because the GRUB boot loader cannot read it.
  1. Select New.
  2. Select /boot from the Mount Point pulldown menu.
  3. Select ext3 from the File System Type pulldown menu.
  4. Select only the sda checkbox from the Allowable Drives area.
  5. Leave 100 (the default) in the Size (MB) menu.
  6. Leave the Fixed size (the default) radio button selected in the Additional Size Options area.
  7. Select Force to be a primary partition to make the partition be a primary partition. A primary partition is one of the first four partitions on the hard drive. If unselected, the partition is created as a logical partition. If other operating systems are already on the system, unselecting this option should be considered. For more information on primary versus logical/extended partitions, refer to the appendix section of the Red Hat Enterprise Linux Installation Guide.
Refer to Abbildung 10.5, „Creation of the Boot Partition“ to verify your inputted values:
Creation of the Boot Partition
Creation of the Boot Partition
Abbildung 10.5. Creation of the Boot Partition

Click OK to return to the main screen. The following figure displays the boot partition correctly set:
The /boot Partition Displayed
The /boot Partition Displayed
Abbildung 10.6. The /boot Partition Displayed

10.4.2. Creating the LVM Physical Volumes

Once the boot partition is created, the remainder of all disk space can be allocated to LVM partitions. The first step in creating a successful LVM implementation is the creation of the physical volume(s).
  1. Select New.
  2. Select physical volume (LVM) from the File System Type pulldown menu as shown in Abbildung 10.7, „Creating a Physical Volume“.
    Creating a Physical Volume
    Creating a Physical Volume
    Abbildung 10.7. Creating a Physical Volume

  3. You cannot enter a mount point yet (you can once you have created all your physical volumes and then all volume groups).
  4. A physical volume must be constrained to one drive. For Allowable Drives, select the drive on which the physical volume are created. If you have multiple drives, all drives are selected, and you must deselect all but one drive.
  5. Geben Sie die Größe für das physischen Volumens ein.
  6. Select Fixed size to make the physical volume the specified size, select Fill all space up to (MB) and enter a size in MBs to give range for the physical volume size, or select Fill to maximum allowable size to make it grow to fill all available space on the hard disk. If you make more than one growable, they share the available free space on the disk.
  7. Select Force to be a primary partition if you want the partition to be a primary partition.
  8. Click OK to return to the main screen.
Repeat these steps to create as many physical volumes as needed for your LVM setup. For example, if you want the volume group to span over more than one drive, create a physical volume on each of the drives. The following figure shows both drives completed after the repeated process:
Two Physical Volumes Created
Two Physical Volumes Created, Ready for Volume Groups
Abbildung 10.8. Two Physical Volumes Created

10.4.3. Creating the LVM Volume Groups

Once all the physical volumes are created, the volume groups can be created:
  1. Click the LVM button to collect the physical volumes into volume groups. A volume group is basically a collection of physical volumes. You can have multiple logical volumes, but a physical volume can only be in one volume group.

    Anmerkung

    There is overhead disk space reserved in the volume group. The volume group size is slightly less than the total of physical volume sizes.
    Creating an LVM Volume Group
    Creating an LVM Volume Group
    Abbildung 10.9. Creating an LVM Volume Group

  2. Change the Volume Group Name if desired.
  3. All logical volumes inside the volume group must be allocated in physical extent (PE) units. A physical extent is an allocation unit for data.
  4. Wählen Sie die physischen Volumen, die für die Volumengruppe verwendet werden sollen.

10.4.4. Creating the LVM Logical Volumes

Create logical volumes with mount points such as /, /home, and swap space. Remember that /boot cannot be a logical volume. To add a logical volume, click the Add button in the Logical Volumes section. A dialog window as shown in Abbildung 10.10, „Creating a Logical Volume“ appears.
Creating a Logical Volume
Creating a Logical Volume
Abbildung 10.10. Creating a Logical Volume

Wiederholen Sie diese Schritte für jede Volumengruppe, die Sie anlegen möchten.

Tip

You may want to leave some free space in the volume group so you can expand the logical volumes later. The default automatic configuration does not do this, but this manual configuration example does — approximately 1 GB is left as free space for future expansion.
Pending Logical Volumes
Pending Logical Volumes
Abbildung 10.11. Pending Logical Volumes

Click OK to apply the volume group and all associated logical volumes.
The following figure shows the final manual configuration:
Final Manual Configuration
Final Manual Configuration
Abbildung 10.12. Final Manual Configuration

10.5. Using the LVM utility system-config-lvm

The LVM utility allows you to manage logical volumes within X windows or graphically. You can access the application by selecting from your menu panel System > Administration > Logical Volume Management. Alternatively you can start the Logical Volume Management utility by typing system-config-lvm from a terminal.
In the example used in this section, the following are the details for the volume group that was created during the installation:
/boot - (Ext3) file system. Displayed under 'Uninitialized Entities'. (DO NOT initialize this partition).
LogVol00 - (LVM) contains the (/) directory (312 extents).
LogVol02 - (LVM) contains the (/home) directory (128 extents).
LogVol03 - (LVM) swap (28 extents).
The logical volumes above were created in disk entity /dev/hda2 while /boot was created in /dev/hda1. The system also consists of 'Uninitialized Entities' which are illustrated in Abbildung 10.17, „Uninitialized Entities“. The figure below illustrates the main window in the LVM utility. The logical and the physical views of the above configuration are illustrated below. The three logical volumes exist on the same physical volume (hda2).
Main LVM Window
Main LVM Window
Abbildung 10.13. Main LVM Window

The figure below illustrates the physical view for the volume. In this window, you can select and remove a volume from the volume group or migrate extents from the volume to another volume group. Steps to migrate extents are discussed in Abbildung 10.22, „Migrate Extents“.
Physical View Window
Physical View Window
Abbildung 10.14. Physical View Window

The figure below illustrates the logical view for the selected volume group. The logical volume size is also indicated with the individual logical volume sizes illustrated.
Logical View Window
Logical View Window
Abbildung 10.15. Logical View Window

On the left side column, you can select the individual logical volumes in the volume group to view more details about each. In this example the objective is to rename the logical volume name for 'LogVol03' to 'Swap'. To perform this operation select the respective logical volume and click on the Edit Properties button. This will display the Edit Logical Volume window from which you can modify the Logical volume name, size (in extents) and also use the remaining space available in a logical volume group. The figure below illustrates this.
Please note that this logical volume cannot be changed in size as there is currently no free space in the volume group. If there was remaining space, this option would be enabled (see Abbildung 10.31, „Edit logical volume“). Click on the OK button to save your changes (this will remount the volume). To cancel your changes click on the Cancel button. To revert to the last snapshot settings click on the Revert button. A snapshot can be created by clicking on the Create Snapshot button on the LVM utility window. If the selected logical volume is in use by the system (for example) the / (root) directory, this task will not be successful as the volume cannot be unmounted.
Edit Logical Volume
Edit Logical Volume
Abbildung 10.16. Edit Logical Volume

10.5.1. Utilizing uninitialized entities

'Uninitialized Entities' consist of unpartitioned space and non LVM file systems. In this example partitions 3, 4, 5, 6 and 7 were created during installation and some unpartitioned space was left on the hard disk. Please view each partition and ensure that you read the 'Properties for Disk Entity' on the right column of the window to ensure that you do not delete critical data. In this example partition 1 cannot be initialized as it is /boot. Uninitialized entities are illustrated below.
Uninitialized Entities
Uninitialized Entities
Abbildung 10.17. Uninitialized Entities

In this example, partition 3 will be initialized and added to an existing volume group. To initialize a partition or unpartioned space, select the partition and click on the Initialize Entity button. Once initialized, a volume will be listed in the 'Unallocated Volumes' list.

10.5.2. Adding Unallocated Volumes to a volume group

Once initialized, a volume will be listed in the 'Unallocated Volumes' list. The figure below illustrates an unallocated partition (Partition 3). The respective buttons at the bottom of the window allow you to:
  • create a new volume group,
  • add the unallocated volume to an existing volume group,
  • remove the volume from LVM.
To add the volume to an existing volume group, click on the Add to Existing Volume Group button.
Unallocated Volumes
Unallocated Volumes
Abbildung 10.18. Unallocated Volumes

Clicking on the Add to Existing Volume Group button will display a pop up window listing the existing volume groups to which you can add the physical volume you are about to initialize. A volume group may span across one or more hard disks. In this example only one volume group exists as illustrated below.
Add physical volume to volume group
Add physical volume to volume group
Abbildung 10.19. Add physical volume to volume group

Once added to an existing volume group the new logical volume is automatically added to the unused space of the selected volume group. You can use the unused space to:
  • create a new logical volume (click on the Create New Logical Volume(s) button,
  • select one of the existing logical volumes and increase the extents (see Abschnitt 10.5.6, „Extending a volume group“),
  • select an existing logical volume and remove it from the volume group by clicking on the Remove Selected Logical Volume(s) button. Please note that you cannot select unused space to perform this operation.
The figure below illustrates the logical view of 'VolGroup00' after adding the new volume group.
Logical view of volume group
Logical view of volume group
Abbildung 10.20. Logical view of volume group

In the figure below, the uninitialized entities (partitions 3, 5, 6 and 7) were added to 'VolGroup00'.
Logical view of volume group
Logical view of volume group
Abbildung 10.21. Logical view of volume group

10.5.3. Migrating extents

To migrate extents from a physical volume, select the volume and click on the Migrate Selected Extent(s) From Volume button. Please note that you need to have a sufficient number of free extents to migrate extents within a volume group. An error message will be displayed if you do not have a sufficient number of free extents. To resolve this problem, please extend your volume group (see Abschnitt 10.5.6, „Extending a volume group“). If a sufficient number of free extents is detected in the volume group, a pop up window will be displayed from which you can select the destination for the extents or automatically let LVM choose the physical volumes (PVs) to migrate them to. This is illustrated below.
Migrate Extents
Migrate Extents
Abbildung 10.22. Migrate Extents

The figure below illustrates a migration of extents in progress. In this example, the extents were migrated to 'Partition 3'.
Migrating extents in progress
Migrating extents in progress
Abbildung 10.23. Migrating extents in progress

Once the extents have been migrated, unused space is left on the physical volume. The figure below illustrates the physical and logical view for the volume group. Please note that the extents of LogVol00 which were initially in hda2 are now in hda3. Migrating extents allows you to move logical volumes in case of hard disk upgrades or to manage your disk space better.
Logical and physical view of volume group
Logical and physical view of volume group
Abbildung 10.24. Logical and physical view of volume group

10.5.4. Adding a new hard disk using LVM

In this example, a new IDE hard disk was added. The figure below illustrates the details for the new hard disk. From the figure below, the disk is uninitialized and not mounted. To initialize a partition, click on the Initialize Entity button. For more details, see Abschnitt 10.5.1, „Utilizing uninitialized entities“. Once initialized, LVM will add the new volume to the list of unallocated volumes as illustrated in Abbildung 10.26, „Create new volume group“.
Uninitialized hard disk
Uninitialized hard disk
Abbildung 10.25. Uninitialized hard disk

10.5.5. Adding a new volume group

Once initialized, LVM will add the new volume to the list of unallocated volumes where you can add it to an existing volume group or create a new volume group. You can also remove the volume from LVM. The volume if removed from LVM will be listed in the list of 'Uninitialized Entities' as illustrated in Abbildung 10.25, „Uninitialized hard disk“. In this example, a new volume group was created as illustrated below.
Create new volume group
Create new volume group
Abbildung 10.26. Create new volume group

Once created a new volume group will be displayed in the list of existing volume groups as illustrated below. The logical view will display the new volume group with unused space as no logical volumes have been created. To create a logical volume, select the volume group and click on the Create New Logical Volume button as illustrated below. Please select the extents you wish to use on the volume group. In this example, all the extents in the volume group were used to create the new logical volume.
Create new logical volume
Create new logical volume
Abbildung 10.27. Create new logical volume

The figure below illustrates the physical view of the new volume group. The new logical volume named 'Backups' in this volume group is also listed.
Physical view of new volume group
Physical view of new volume group
Abbildung 10.28. Physical view of new volume group

10.5.6. Extending a volume group

In this example, the objective was to extend the new volume group to include an uninitialized entity (partition). This was to increase the size or number of extents for the volume group. To extend the volume group, click on the Extend Volume Group button. This will display the 'Extend Volume Group' window as illustrated below. On the 'Extend Volume Group' window, you can select disk entities (partitions) to add to the volume group. Please ensure that you check the contents of any 'Uninitialized Disk Entities' (partitions) to avoid deleting any critical data (see Abbildung 10.25, „Uninitialized hard disk“). In the example, the disk entity (partition) /dev/hda6 was selected as illustrated below.
Select disk entities
Select disk entities
Abbildung 10.29. Select disk entities

Once added, the new volume will be added as 'Unused Space' in the volume group. The figure below illustrates the logical and physical view of the volume group after it was extended.
Logical and physical view of an extended volume group
Logical and physical view of an extended volume group
Abbildung 10.30. Logical and physical view of an extended volume group

10.5.7. Editing a Logical Volume

The LVM utility allows you to select a logical volume in the volume group and modify its name, size and specify filesystem options. In this example, the logical volume named 'Backups" was extended onto the remaining space for the volume group.
Clicking on the Edit Properties button will display the 'Edit Logical Volume' popup window from which you can edit the properties of the logical volume. On this window, you can also mount the volume after making the changes and mount it when the system is rebooted. Please note that you should indicate the mount point. If the mount point you specify does not exist, a popup window will be displayed prompting you to create it. The 'Edit Logical Volume' window is illustrated below.
Edit logical volume
Edit logical volume
Abbildung 10.31. Edit logical volume

If you wish to mount the volume, select the 'Mount' checkbox indicating the preferred mount point. To mount the volume when the system is rebooted, select the 'Mount when rebooted' checkbox. In this example, the new volume will be mounted in /mnt/backups. This is illustrated in the figure below.
Edit logical volume - specifying mount options
Edit logical volume - specifying mount options
Abbildung 10.32. Edit logical volume - specifying mount options

The figure below illustrates the logical and physical view of the volume group after the logical volume was extended to the unused space. Please note in this example that the logical volume named 'Backups' spans across two hard disks. A volume can be striped across two or more physical devices using LVM.
Edit logical volume
Edit logical volume
Abbildung 10.33. Edit logical volume

10.6. Additional Resources

Use these sources to learn more about LVM.

10.6.1. Installed Documentation

  • rpm -qd lvm2 — This command shows all the documentation available from the lvm package, including man pages.
  • lvm help — This command shows all LVM commands available.

10.6.2. Useful Websites

Teil II. Paketverwaltung

Jegliche Software auf einem Red Hat Enterprise Linux-System ist in RPM-Pakete unterteilt, die installiert, aktualisiert oder gelöscht werden können. Dieser Teil beschreibt das Management von RPM-Paketen auf einem Red Hat Enterprise Linux-System, unter Verwendung von grafischen und Befehlszeilentools.

Inhaltsverzeichnis

11. Die Paketverwaltung mit RPM
11.1. Ziele des RPM-Designs
11.2. Die Verwendung von RPM
11.2.1. Suche nach RPM-Paketen
11.2.2. Installieren
11.2.3. Deinstallieren
11.2.4. Aktualisieren
11.2.5. Auffrischen
11.2.6. Anfragen
11.2.7. Prüfen
11.3. Checking a Package's Signature
11.3.1. Importieren von Schlüsseln
11.3.2. Überprüfung der Signatur von Paketen
11.4. Praktische und häufige Beispiele für den RPM-Gebrauch
11.5. Zusätzliche Ressourcen
11.5.1. Installierte Dokumentation
11.5.2. Hilfreiche Websites
11.5.3. Zusätzliche Literatur
12. Package Management Tool
12.1. Das Listen und Analysieren von Paketen
12.2. Installation und Entfernung von Paketen
13. YUM (Yellowdog Updater Modified)
13.1. Setting Up a Yum Repository
13.2. yum Commands
13.3. yum Options
13.4. Configuring yum
13.4.1. [main] Options
13.4.2. [repository] Options
13.5. Useful yum Variables
14. Product Subscriptions and Entitlements
14.1. An Overview of Managing Subscriptions and Content
14.1.1. The Purpose of Subscription Management
14.1.2. Defining Subscriptions, Entitlements, and Products
14.1.3. Subscription Management Tools
14.1.4. Subscription and Content Architecture
14.1.5. Advanced Content Management: Extended Update Support
14.1.6. RHN Classic v. Certificate-based Red Hat Network
14.2. Using Red Hat Subscription Manager Tools
14.2.1. Launching Red Hat Subscription Manager
14.2.2. About subscription-manager
14.2.3. Looking at RHN Subscription Management
14.2.4. Looking at Subscription Asset Manager
14.3. Managing Special Deployment Scenarios
14.3.1. Local Subscription Services, Local Content Providers, and Multi-Tenant Organizations
14.3.2. Virtual Guests and Hosts
14.3.3. Domains
14.4. Registering, Unregistering, and Reregistering a System
14.4.1. Registering Consumers in the Hosted Environment
14.4.2. Registering Consumers to a Local Organization
14.4.3. Registering an Offline Consumer
14.4.4. Registering from the Command Line
14.4.5. Unregistering
14.4.6. Restoring a Registration
14.5. Migrating Systems from RHN Classic to Certificate-based Red Hat Network
14.5.1. Installing the Migration Tools
14.5.2. Migrating from RHN Classic to Certificate-based Red Hat Network
14.5.3. Unregistering from RHN Classic Only
14.5.4. Migrating a Disconnected System
14.5.5. Looking at Channel and Certificate Mappings
14.6. Handling Subscriptions
14.6.1. Subscribing and Unsubscribing through the Red Hat Subscription Manager GUI
14.6.2. Handling Subscriptions through the Command Line
14.6.3. Stacking Subscriptions
14.6.4. Manually Adding a New Subscription
14.7. Redeeming Subscriptions on a Machine
14.7.1. Redeeming Subscriptions through the GUI
14.7.2. Redeeming Subscriptions on a Machine through the Command Line
14.8. Viewing Available and Used Subscriptions
14.8.1. Viewing Subscriptions in the GUI
14.8.2. Listing Subscriptions with the Command Line
14.8.3. Viewing Subscriptions Used in Both RHN Classic and Certificate-based Red Hat Network
14.9. Working with Subscription yum Repos
14.10. Responding to Subscription Notifications
14.11. Healing Subscriptions
14.11.1. Enabling Healing
14.11.2. Changing the Healing Check Frequency
14.12. Working with Subscription Asset Manager
14.12.1. Configuring Subscription Manager to Work with Subscription Asset Manager
14.12.2. Viewing Organization Information
14.13. Updating Entitlements Certificates
14.13.1. Updating Entitlement Certificates
14.13.2. Updating Subscription Information
14.14. Configuring the Subscription Service
14.14.1. Red Hat Subscription Manager Configuration Files
14.14.2. Using the config Command
14.14.3. Using an HTTP Proxy
14.14.4. Changing the Subscription Server
14.14.5. Configuring Red Hat Subscription Manager to Use a Local Content Provider
14.14.6. Managing Secure Connections to the Subscription Server
14.14.7. Starting and Stopping the Subscription Service
14.14.8. Checking Logs
14.14.9. Showing and Hiding Incompatible Subscriptions
14.14.10. Checking and Adding System Facts
14.14.11. Regenerating Identity Certificates
14.14.12. Getting the System UUID
14.14.13. Viewing Package Profiles
14.14.14. Retrieving the Consumer ID, Registration Tokens, and Other Information
14.15. About Certificates and Managing Entitlements
14.15.1. The Structure of Identity Certificates
14.15.2. The Structure of Entitlement Certificates
14.15.3. The Structure of Product Certificates
14.15.4. Anatomy of Satellite Certificates

Kapitel 11. Die Paketverwaltung mit RPM

The RPM Package Manager (RPM) is an open packaging system, which runs on Red Hat Enterprise Linux as well as other Linux and UNIX systems. Red Hat, Inc. encourages other vendors to use RPM for their own products. RPM is distributed under the terms of the GPL.
The utility works only with packages built for processing by the rpm package. For the end user, RPM makes system updates easy. Installing, uninstalling, and upgrading RPM packages can be accomplished with short commands. RPM maintains a database of installed packages and their files, so you can invoke powerful queries and verifications on your system. If you prefer a graphical interface, you can use the Package Management Tool to perform many RPM commands. Refer to Kapitel 12, Package Management Tool for details.

Wichtig

Bei der Installation eines Pakets sollten Sie sicherstellen, dass es mit Ihrem Betriebssystem und Ihrer Architektur kompatibel ist. In der Regel lässt sich dies durch Überprüfung des Paketnamens leicht feststellen.
During upgrades, RPM handles configuration files carefully, so that you never lose your customizations — something that you cannot accomplish with regular .tar.gz files.
RPM ermöglicht es dem Entwickler, den Software-Quellcode in die Quell- und Binärpakete für Endanwender zu übernehmen. Hierbei handelt es sich um einen sehr einfachen Prozess, der von einer einzigen Datei und optionalen Korrekturen, die Sie erstellen, ausgeführt wird. Diese klare Darstellung von ursprünglichen Quellen und Ihren Korrekturen und Erstellungsanleitungen erleichtert die Wartung des Pakets, wenn neue Software-Versionen herausgegeben werden.

Anmerkung

Da Sie mit RPM Änderungen an Ihrem System vornehmen, müssen Sie als "root" angemeldet sein, um ein RPM-Paket zu installieren, zu entfernen oder zu aktualisieren.

11.1. Ziele des RPM-Designs

Um die Verwendung von RPM zu verstehen, ist das Verständnis der konzeptuellen Ziele dieser Anwendung hilfreich:
Aktualisierbarkeit
Mit RPM können Sie einzelne Komponenten Ihres Systems aktualisieren, ohne Ihr System komplett neu installieren zu müssen. Wenn Sie eine neue Version eines RPM-Betriebssystems (beispielsweise Red Hat Enterprise Linux) besitzen, ist es ebenfalls nicht notwendig, dass Sie Ihr System neu installieren (wie bei Betriebssystemen mit anderen Paketsystemen). RPM ermöglicht intelligente und voll automatische Upgrades Ihres Systems. Die Konfigurationsdateien der Pakete werden dabei beibehalten, so dass Sie Ihre individuellen Einstellungen nicht verlieren. Für die Aktualisierung eines Pakets sind keine speziellen Upgrade-Dateien erforderlich, da dies ebenfalls durch die RPM-Datei erfolgt.
Anfragen von Paketen
RPM bietet leistungsstarke Anfrageoptionen. Sie können dabei in Ihrer gesamten Datenbank nach Paketen oder auch nach bestimmten Dateien suchen. Weiterhin können Sie ganz einfach herausfinden, zu welchem Paket eine Datei gehört und wo der Ursprung des Pakets liegt. Die Dateien, die ein RPM-Paket enthalten, befinden sich in einem komprimierten Archiv. Dieses Archiv beinhaltet einen benutzerdefinierten binären Header, der nützliche Informationen über das Paket und seinen Inhalt enthält. Mit Hilfe dieses Headers bekommen Sie schnell und einfach Informationen zu den einzelnen Paketen.
System-Prüfung
Ein weiteres leistungsfähiges Feature von RPM ist die Verifizierung von Paketen. Wenn Sie zum Beispiel nicht sicher sind, ob Sie eine wichtige Datei in einem Paket gelöscht haben, können Sie das Paket überprüfen. Ihnen werden dann jegliche Unstimmigkeiten mitgeteilt. An diesem Punkt können Sie die Pakete wenn nötig neu installieren. Alle Konfigurationsdateien, die Sie geändert haben, bleiben während einer Neuinstallation erhalten.
Ursprüngliche Quellen
Ein wichtiges konzeptuelles Ziel dieser Anwendung ist es, den Gebrauch von ursprünglichen Software-Quellen, wie sie von den Entwicklern der Software herausgegeben wurden, möglich zu machen. Ein RPM-Paket beinhaltet bietet solche ursprünglichen Quellen zusammen mit den verwendeten Korrekturen und den kompletten Erstellungsanleitungen. Dies bedeutet aus mehreren Gründen einen enormen Vorteil. Wenn zum Beispiel eine neue Version eines Programms erscheint, so müssen Sie sie nicht unbedingt unbedingt bei "Null" beginnen, um kompilieren zu können. Sie können die Korrekturen überprüfen, um zu sehen, was Sie eventuell tun sollten. Alle einkompilierten Standards und alle Änderungen an der Software können auf diese Weise ganz einfach getrennt voneinander angezeigt werden.
Das Ziel der Beibehaltung der ursprünglichen Quellen mag auf den ersten Blick nur für Entwickler von Bedeutung zu sein, bietet aber auch den Endanwendern eine bessere Softwarequalität.

11.2. Die Verwendung von RPM

RPM has five basic modes of operation (not counting package building): installing, uninstalling, upgrading, querying, and verifying. This section contains an overview of each mode. For complete details and options, try rpm --help or man rpm. You can also refer to Abschnitt 11.5, „Zusätzliche Ressourcen“ for more information on RPM.

11.2.1. Suche nach RPM-Paketen

Bevor Sie RPM-Pakete verwenden, müssen Sie wissen, wo diese zu finden sind. Eine Suche im Internet liefert viele RPM-Repositories. Wenn Sie allerdings RPM-Pakete suchen, die von Red Hat erstellt wurden, können Sie diese an folgenden Orten finden:

11.2.2. Installieren

RPM packages typically have file names like foo-1.0-1.i386.rpm. The file name includes the package name (foo), version (1.0), release (1), and architecture (i386). To install a package, log in as root and type the following command at a shell prompt:
rpm -ivh foo-1.0-1.i386.rpm
Alternatively, the following command can also be used:
rpm -Uvh foo-1.0-1.i386.rpm
Ist die Installation erfolgreich, erscheint folgende Ausgabe:
Preparing...                ########################################### [100%]
   1:foo                    ########################################### [100%]
RPM gibt den Paketnamen und eine Reihe von Rautenzeichen auf dem Bildschirm aus, um den Installationsfortschritt anzuzeigen.
Die Signatur eines Paketes wird bei der Installation oder Aktualisierung eines Paketes automatisch geprüft. Die Signatur bestätigt, dass das Paket von einer berechtigten Partei unterzeichnet wurde. Schlägt die Verifizierung der Signatur fehl, erscheint eine Fehlermeldung, die wie folgt aussehen kann:
error: V3 DSA signature: BAD, key ID 0352860f
Handelt es sich um eine neue Signatur, die nur im Header-Bereich vorkommt, erscheint eine Fehlermeldung, die wie folgt aussehen kann:
error: Header V3 DSA signature: BAD, key ID 0352860f
If you do not have the appropriate key installed to verify the signature, the message contains the word NOKEY such as:
warning: V3 DSA signature: NOKEY, key ID 0352860f
Refer to Abschnitt 11.3, „Checking a Package's Signature“ for more information on checking a package's signature.

Warnung

If you are installing a kernel package, you should use rpm -ivh instead. Refer to Kapitel 42, Manuelles Aktualisieren des Kernels for details.

11.2.2.1. Paket bereits installiert

Falls ein Paket mit demselben Namen und derselben Version bereits installiert wurde, erscheint folgende Anzeige:
Preparing...                ########################################### [100%]
package foo-1.0-1 is already installed
However, if you want to install the package anyway, you can use the --replacepkgs option, which tells RPM to ignore the error:
rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
Diese Option ist vor allem dann sehr nützlich, wenn die von RPM installierten Dateien gelöscht wurden oder wenn die ursprünglichen Konfigurationsdateien von RPM installiert werden sollen.

11.2.2.2. Dateikonflikte

Wenn Sie versuchen, ein Paket zu installieren, das eine bereits durch ein anderes Paket installierte Datei enthält, so wird folgende Meldung ausgegeben:
Preparing...                ########################################### [100%]
file /usr/bin/foo from install of foo-1.0-1 conflicts with file from package bar-2.0.20
To make RPM ignore this error, use the --replacefiles option:
rpm -ivh --replacefiles foo-1.0-1.i386.rpm

11.2.2.3. Ungelöste Abhängigkeiten

RPM-Pakete können von anderen Paketen abhängig sein, d.h. es müssen andere Pakete installiert sein, damit sie ordnungsgemäß funktionieren. Falls Sie versuchen, ein Paket zu installieren, für das eine solche ungelöste Abhängigkeit besteht, erscheint eine Meldung ähnlich der folgenden Anzeige:
error: Failed dependencies:
        bar.so.2 is needed by foo-1.0-1
Suggested resolutions:
	bar-2.0.20-3.i386.rpm
Installieren Sie ein Paket von den Red Hat Enterprise Linux CD-ROMs, so wird normalerweise vorgeschlagen, dass die Abhängigkeit des/der Pakete(s) aufgelöst wird. Suchen Sie dieses Paket in den Red Hat Enterprise Linux CD-ROMs oder aus der Red Hat und fügen Sie es dem Befehl hinzu:
rpm -ivh foo-1.0-1.i386.rpm bar-2.0.20-3.i386.rpm
Ist die Installation beider Pakete erfolgreich, erscheint ein Meldung ähnlich der Folgenden:
Preparing...                ########################################### [100%]
   1:foo                    ########################################### [ 50%]
   2:bar                    ########################################### [100%]
If it does not suggest a package to resolve the dependency, you can try the -q --whatprovides option combination to determine which package contains the required file.
rpm -q --whatprovides bar.so.2
Falls Sie jedoch die Installation dennoch erzwingen möchten (was nicht empfohlen wird, da das Paket möglicherweise nicht ordnungsgemäß ausgeführt wird), verwenden Sie die --nodeps-Option.

11.2.3. Deinstallieren

Das Deinstallieren von Paketen ist ebenso einfach wie das Installieren. Geben Sie am Shell-Prompt Folgendes ein:
rpm -e foo

Anmerkung

Notice that we used the package name foo, not the name of the original package file foo-1.0-1.i386.rpm. To uninstall a package, replace foo with the actual package name of the original package.
Beim Deinstallieren eines Pakets kann ein Abhängigkeitsfehler auftreten, wenn ein anderes installiertes Paket von diesem Paket abhängt. Beispiel:
error: Failed dependencies:
	foo is needed by (installed) bar-2.0.20-3.i386.rpm
Wenn Sie möchten, dass RPM diesen Fehler ignoriert und das Paket dennoch deinstalliert (was ebenfalls keine gute Idee ist, da das hiervon abhängige Paket dabei vermutlich nicht mehr einwandfrei funktioniert), verwenden Sie die Option --nodeps.

11.2.4. Aktualisieren

Das Aktualisieren von Paketen erfolgt ähnlich wie das Installieren. Geben Sie den folgenden Befehl am Shell-Prompt ein:
rpm -Uvh foo-2.0-1.i386.rpm
As part of upgrading a package, RPM automatically uninstalls any old versions of the foo package. Note that -U will also install a package even when there are no previous versions of the package installed.

Tip

Bei der Installation von Kernel-Paketen ist es nicht ratsam die Option -U zu verwenden, da RPM das vorherige Kernel-Paket vollständig ersetzt. Dies hat keinen Einfluss auf eine betriebsfähiges, laufendes System, kann der neue Kernel jedoch während des nächsten Neustarts nicht booten, so existiert kein anderer Kernel, der diese Funktion übernehmen kann.
Using the -i option adds the kernel to your GRUB boot menu (/etc/grub.conf). Similarly, removing an old, unneeded kernel removes the kernel from GRUB.
Da RPM eine intelligente Aktualisierung von Paketen mit Konfigurationsdateien durchführt, wird möglicherweise folgende Meldung angezeigt:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
Diese Meldung bedeutet, dass Ihre Änderungen an der Konfigurationsdatei mit der neuen Konfigurationsdatei des Pakets nicht vorwärts-kompatibel sind und RPM Ihre ursprüngliche Datei gespeichert und eine Neue installiert hat. Sie sollten die Unterschiede zwischen den beiden Konfigurationsdateien überprüfen und diese so bald wie möglich beheben. Andernfalls besteht das Risiko, dass Ihr System auf längere Sicht nicht ordnungsgemäß funktioniert.
Falls Sie versuchen, ein Paket mit einer älteren Versionsnummer (d.h. falls eine aktuellere Version des Pakets bereits installiert ist) aufzurüsten, so sieht die Ausgabe in etwa so aus:
package foo-2.0-1 (which is newer than foo-1.0-1) is already installed
To force RPM to upgrade anyway, use the --oldpackage option:
rpm -Uvh --oldpackage foo-1.0-1.i386.rpm

11.2.5. Auffrischen

Das Auffrischen eines Pakets ist dem Aktualisieren sehr ähnlich mit dem Unterschied, dass lediglich bestehende Pakete aktualisiert werden. Geben Sie folgenden Befehl am Shell-Prompt ein:
rpm -Fvh foo-1.2-1.i386.rpm
RPM's freshen option checks the versions of the packages specified on the command line against the versions of packages that have already been installed on your system. When a newer version of an already-installed package is processed by RPM's freshen option, it is upgraded to the newer version. However, RPM's freshen option does not install a package if no previously-installed package of the same name exists. This differs from RPM's upgrade option, as an upgrade does install packages whether or not an older version of the package was already installed.
Die Option Auffrischen von RPM funktioniert bei einzelnen Paketen oder bei Paketgruppen. Wenn Sie eine große Anzahl verschiedener Pakete heruntergeladen haben und nur die Pakete aktualisieren möchten, die bereits in Ihrem System installiert sind, dann sollten Sie die Funktion des Auffrischens verwenden. Hierbei ist es nicht notwendig, dass Sie unerwünschte Pakete aus der Gruppe löschen, die Sie zuvor mit dem RPM heruntergeladen haben.
In diesem Fall können Sie den folgenden Befehl eingeben:
rpm -Fvh *.rpm
RPM wird nun automatisch nur die Pakete aktualisieren, die bereits installiert sind.

11.2.6. Anfragen

Die RPM Datenbank speichert Informationen zu allen in Ihrem System installierten RPM-Paketen. Die Informationen werden im /var/lib/rpm/-Verzeichnis gespeichert und dienen unter anderem dazu herauszufinden, welche Pakete installiert sind, welche Version die einzelnen Pakete besitzen und ob es zu Änderungen an Dateien innerhalb des Pakets kam, seit dieses installiert wurde.
To query this database, use the -q option. The rpm -q package name command displays the package name, version, and release number of the installed package package name . For example, using rpm -q foo to query installed package foo might generate the following output:
foo-2.0-1
You can also use the following Package Selection Options with -q to further refine or qualify your query:
  • -a — queries all currently installed packages.
  • -f <filename> — queries the RPM database for which package owns f<filename> . When specifying a file, specify the absolute path of the file (for example, rpm -qf /bin/ls ).
  • -p <packagefile> — queries the uninstalled package <packagefile> .
There are a number of ways to specify what information to display about queried packages. The following options are used to select the type of information for which you are searching. These are called Package Query Options.
  • -i displays package information including name, description, release, size, build date, install date, vendor, and other miscellaneous information.
  • -l displays the list of files that the package contains.
  • -s displays the state of all the files in the package.
  • -d displays a list of files marked as documentation (man pages, info pages, READMEs, etc.).
  • -c displays a list of files marked as configuration files. These are the files you edit after installation to adapt and customize the package to your system (for example, sendmail.cf, passwd, inittab, etc.).
For options that display lists of files, add -v to the command to display the lists in a familiar ls -l format.

11.2.7. Prüfen

Beim Überprüfen eines Pakets werden die Angaben zu Dateien, die aus einem Paket installiert wurden, mit den Angaben aus dem ursprünglichen Paket verglichen. Bei einer Überprüfung werden u.a. folgende Parameter verglichen: Größe, MD5-Summe, Berechtigungen, Typ, Eigentümer und Gruppe.
The command rpm -V verifies a package. You can use any of the Verify Options listed for querying to specify the packages you wish to verify. A simple use of verifying is rpm -V foo, which verifies that all the files in the foo package are as they were when they were originally installed. For example:
  • So prüfen Sie ein Paket, das eine bestimmte Datei enthält:
    rpm -Vf /usr/bin/foo
    In diesem Beispiel ist /usr/bin/foo der vollständige Pfad zu der für die Anfrage an das Paket verwendeten Datei.
  • So prüfen Sie ALLE installierten Pakete innerhalb des Systems:
    rpm -Va
  • So prüfen Sie ein installiertes Paket gegenüber einer RPM-Paketdatei:
    rpm -Vp foo-1.0-1.i386.rpm
    Dieser Befehl kann nützlich sein, wenn Sie vermuten, dass Ihre RPM-Datenbank beschädigt ist.
If everything verified properly, there is no output. If there are any discrepancies, they are displayed. The format of the output is a string of eight characters (a c denotes a configuration file) and then the file name. Each of the eight characters denotes the result of a comparison of one attribute of the file to the value of that attribute recorded in the RPM database. A single period (.) means the test passed. The following characters denote specific discrepancies:
  • 5 — MD5 checksum
  • S — file size
  • L — symbolic link
  • T — file modification time
  • D — device
  • U — user
  • G — group
  • M — mode (includes permissions and file type)
  • ? — unreadable file
Wenn eine Ausgabe angezeigt wird, entscheiden Sie, ob Sie das Paket entfernen oder neu installieren oder aber das Problem auf andere Weise lösen möchten.

11.3. Checking a Package's Signature

If you wish to verify that a package has not been corrupted or tampered with, examine only the md5sum by typing the following command at a shell prompt (where <rpm-file> is the file name of the RPM package):
rpm -K --nosignature <rpm-file>
The message <rpm-file>: md5 OK is displayed. This brief message means that the file was not corrupted by the download. To see a more verbose message, replace -K with -Kvv in the command.
On the other hand, how trustworthy is the developer who created the package? If the package is signed with the developer's GnuPG key, you know that the developer really is who they say they are.
Ein RPM-Paket kann mithilfe des Gnu Privacy Guard (oder GnuPG) signiert werden, was sicherstellt, dass das heruntergeladene Paket "vertrauenswürdig" ist.
GnuPG ist ein Tool für sichere Kommunikation und stellt einen umfassenden und kostenlosen Ersatz für die Verschlüsselungstechnologie von PGP, einem elektronischem Privacy-Programm dar. Mit GnuPG können Sie die Echtheit von Dokumenten überprüfen und Daten für den Austausch mit anderen Benutzern verschlüsseln und entschlüsseln. Das Tool ist auch in der Lage, PGP5.x Dateien zu entschlüsseln und zu überprüfen.
During installation, GnuPG is installed by default. That way you can immediately start using GnuPG to verify any packages that you receive from Red Hat. Before doing so, you must first import Red Hat's public key.

11.3.1. Importieren von Schlüsseln

Zur Überprüfung von Red Hat Paketen müssen Sie den Red Hat GPG-Schlüssel importieren. Führen Sie dazu folgenden Befehl an einem Shell-Prompt aus:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
Um eine Liste aller zur RPM-Prüfung installierten Schlüssel anzuzeigen, führen Sie folgenden Befehl aus:
rpm -qa gpg-pubkey*
Für den Red Hat Schlüssel schließt die Ausgabe Folgendes mit ein:
gpg-pubkey-37017186-45761324
To display details about a specific key, use rpm -qi followed by the output from the previous command:
rpm -qi gpg-pubkey-37017186-45761324

11.3.2. Überprüfung der Signatur von Paketen

To check the GnuPG signature of an RPM file after importing the builder's GnuPG key, use the following command (replace <rpm-file> with the filename of the RPM package):
rpm -K <rpm-file>
If all goes well, the following message is displayed: md5 gpg OK. This means that the signature of the package has been verified, and that it is not corrupt.

11.4. Praktische und häufige Beispiele für den RPM-Gebrauch

RPM ist ein nützliches Tool für die Verwaltung Ihres Systems und die Ermittlung und Behebung von Problemen. Um diese Anwendung und ihre Optionen besser zu erläutern, sind nachfolgend einige Beispiele aufgeführt.
  • Möglicherweise haben Sie unbeabsichtigt einige Dateien gelöscht. Sie sind sich aber nicht sicher, welche. Wenn Sie Ihr gesamtes System prüfen und herausfinden möchten, was genau fehlt, können Sie auch den folgenden Befehl verwenden:
    rpm -Va
    Wenn einige Dateien fehlen oder beschädigt sind, sollten Sie das Paket entweder neu installieren oder zunächst deinstallieren und anschließend neu installieren.
  • Es könnte vorkommen, dass Sie eine Datei sehen, die Ihnen nicht bekannt ist. Wenn Sie herausfinden möchten, zu welchem Paket sie gehört, geben Sie Folgendes am Shell-Prompt ein:
    rpm -qf /usr/bin/ggv
    Es erscheint eine Ausgabe, die etwa wie folgt aussieht:
    ggv-2.6.0-2
  • We can combine the above two examples in the following scenario. Say you are having problems with /usr/bin/paste. You would like to verify the package that owns that program, but you do not know which package owns paste. Enter the following command,
    rpm -Vf /usr/bin/paste
    und das entsprechende Paket wird geprüft.
  • Möchten Sie mehr Informationen über ein bestimmtes Programm? Verwenden Sie den folgenden Befehl, um die Dokumentation zu suchen, die mit dem Paket geliefert wurde, das das Programm enthält:
    rpm -qdf /usr/bin/free
    Es erscheint eine Ausgabe, die etwa so aussieht:
    /usr/share/doc/procps-3.2.3/BUGS
    /usr/share/doc/procps-3.2.3/FAQ
    /usr/share/doc/procps-3.2.3/NEWS
    /usr/share/doc/procps-3.2.3/TODO
    /usr/share/man/man1/free.1.gz
    /usr/share/man/man1/pgrep.1.gz
    /usr/share/man/man1/pkill.1.gz
    /usr/share/man/man1/pmap.1.gz
    /usr/share/man/man1/ps.1.gz
    /usr/share/man/man1/skill.1.gz
    /usr/share/man/man1/slabtop.1.gz
    /usr/share/man/man1/snice.1.gz
    /usr/share/man/man1/tload.1.gz
    /usr/share/man/man1/top.1.gz
    /usr/share/man/man1/uptime.1.gz
    /usr/share/man/man1/w.1.gz
    /usr/share/man/man1/watch.1.gz
    /usr/share/man/man5/sysctl.conf.5.gz
    /usr/share/man/man8/sysctl.8.gz
    /usr/share/man/man8/vmstat.8.gz
  • Sie finden eine neue RPM-Datei, wissen aber nicht, was das Tool genau bietet. Geben Sie den folgenden Befehl ein, um mehr Informationen hierüber zu erhalten:
    rpm -qip crontabs-1.10-7.noarch.rpm
    Es erscheint eine Ausgabe, die etwa so aussieht:
    Name        : crontabs                     Relocations: (not relocatable)
    Version     : 1.10                              Vendor: Red Hat, Inc.
    Release     : 7                             Build Date: Mon 20 Sep 2004 05:58:10 PM EDT
    Install Date: (not installed)               Build Host: tweety.build.redhat.com
    Group       : System Environment/Base       Source RPM: crontabs-1.10-7.src.rpm
    Size        : 1004                             License: Public Domain
    Signature   : DSA/SHA1, Wed 05 Jan 2005 06:05:25 PM EST, Key ID 219180cddb42a60e
    Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
    Summary     : Root crontab files used to schedule the execution of programs.
    Description : The crontabs package contains root crontab files. Crontab is the
    program used to install, uninstall, or list the tables used to drive the
    cron daemon. The cron daemon checks the crontab files to see when
    particular commands are scheduled to be executed. If commands are
    scheduled, then it executes them.
  • Perhaps you now want to see what files the crontabs RPM installs. You would enter the following:
    rpm -qlp crontabs-1.10-5.noarch.rpm
    Es erscheint eine Ausgabe, die etwa so aussieht:
    /etc/cron.daily
    /etc/cron.hourly
    /etc/cron.monthly
    /etc/cron.weekly
    /etc/crontab
    /usr/bin/run-parts
Dies sind nur ein paar Beispiele. Mit dem Gebrauch von RPM werden Sie noch mehr Anwendungsmöglichkeiten kennenlernen.

11.5. Zusätzliche Ressourcen

RPM ist ein sehr komplexes Dienstprogramm mit zahlreichen Optionen und Methoden zum Anfragen, Installieren, Aktualisieren und Entfernen von Paketen. Die folgenden Ressourcen bieten Ihnen detailliertere Informationen zu diesem Tool.

11.5.1. Installierte Dokumentation

  • rpm --help — This command displays a quick reference of RPM parameters.
  • man rpm — The RPM man page gives more detail about RPM parameters than the rpm --help command.

11.5.2. Hilfreiche Websites

Kapitel 12. Package Management Tool

If you prefer to use a graphical interface to view and manage packages in your system, you can use the Package Management Tool, better known as pirut. This tool allows you to perform basic package management of your system through an easy-to-use interface to remove installed packages or download (and install) packages compatible to your system. It also allows you to view what packages are installed in your system and which ones are available for download from Red Hat Network. In addition, the Package Management Tool also automatically resolves any critical dependencies when you install or remove packages in the same way that the rpm command does.

Hinweis

While the Package Management Tool can automatically resolve dependencies during package installation and removal, it cannot perform a forced install / remove the same way that rpm -e --nodeps or rpm -U --nodeps can.
The X Window System is required to run the Package Management Tool. To start the application, go to Applications (the main menu on the panel) > Add/Remove Software. Alternatively, you can type the commands system-config-packages or pirut at shell prompt.
Package Management Tool
Package Management Tool
Abbildung 12.1. Package Management Tool

12.1. Das Listen und Analysieren von Paketen

You can use the Package Management Tool to search and list all packages installed in your system, as well as any packages available for you to download. The Browse, Search, and List tabs present different options in viewing, analyzing, installing or removing packages.
The Browse tab allows you to view packages by group. In Abbildung 12.1, „Package Management Tool“, the left window shows the different package group types you can choose from (for example, Desktop Environments, Applications, Development and more). When a package group type is selected, the right window displays the different package groups of that type.
Um die in einer Paketgruppe beinhalteten Pakete anzusehen, klicken Sie auf Optional packages. Installierte Pakete sind markiert.
Optional Packages
Optional Packages
Abbildung 12.2. Optional Packages

The List tab displays a list of packages installed or available for download. Packages already installed in your system are marked with a green check ( ).
Standardmäßig ist die All packages-Option über dem Hauptbildschirm aktiviert; dies legt fest, dass alle Pakete angezeigt werden. Verwenden Sie die Installed packages-Option, um nur die bereits in Ihrem System installierten Pakete anzuzeigen und die Available packages-Option zur Darstellung von herunterladbaren und installierbaren Paketen.
Mit dem Search-Tabulator können Sie mittels Schlüsselwörtern nach bestimmten Paketen suchen. Sie können außerdem eine Kurzbeschreibung des Pakets einsehen. Um dies zu tun, wählen Sie einfach das gewünschte Paket und klicken Sie auf die Package Details-Schaltfläche unter dem Hauptbildschirm.

12.2. Installation und Entfernung von Paketen

To install a package available for download, click the checkbox beside the package name. When you do so, an installation icon ( ) appears beside its checkbox. This indicates that the package is queued for download and installation. You can select multiple packages to download and install; once you have made your selection, click the Apply button.
Package installation
Package installation
Abbildung 12.3. Package installation

If there are any package dependencies for your selected downloads, the Package Management Tool will notify you accordingly. Click Details to view what additional packages are needed. To proceed with downloading and installing the package (along with all other dependent packages) click Continue.
Package dependencies: installation
Package dependencies: installation
Abbildung 12.4. Package dependencies: installation

Removing a package can be done in a similar manner. To remove a package installed in your system, click the checkbox beside the package name. The green check appearing beside the package name will be replaced by a package removal icon ( ). This indicates that the package is queued for removal; you can also select multiple packages to be removed at the same time. Once you have selected the packages you want to remove, click the Apply button.
Package removal
Package removal
Abbildung 12.5. Package removal

Note that if any other installed packages are dependent on the package you are removing, they will be removed as well. The Package Management Tool will notify you if there are any such dependencies. Click Details to view what packages are dependent on the one you are removing. To proceed with removing your selected package/s (along with all other dependent packages) click Continue.
Package dependencies: removal
Package dependencies: removal
Abbildung 12.6. Package dependencies: removal

You can install and remove multiple packages by selecting packages to be installed / removed and then clicking Apply. The Package selections window displays the number of packages to be installed and removed.
Installing and removing packages simultaneously
Installing and removing packages simultaneously
Abbildung 12.7. Installing and removing packages simultaneously

Kapitel 13. YUM (Yellowdog Updater Modified)

Yellowdog Update, Modified (YUM) is a package manager that was developed by Duke University to improve the installation of RPMs. yum searches numerous repositories for packages and their dependencies so they may be installed together in an effort to alleviate dependency issues. Red Hat Enterprise Linux 5.8 uses yum to fetch packages and install RPMs.
up2date is now deprecated in favor of yum (Yellowdog Updater Modified). The entire stack of tools which installs and updates software in Red Hat Enterprise Linux 5.8 is now based on yum. This includes everything, from the initial installation via Anaconda to host software management tools like pirut.
yum also allows system administrators to configure a local (i.e. available over a local network) repository to supplement packages provided by Red Hat. This is useful for user groups that use applications and packages that are not officially supported by Red Hat.
Aside from being able to supplement available packages for local users, using a local yum repository also saves bandwidth for the entire network. Further, clients that use local yum repositories do not need to be registered individually to install or update the latest packages from Red Hat Network.

13.1. Setting Up a Yum Repository

To set up a repository for Red Hat Enterprise Linux packages, follow these steps:
  1. Install the createrepo package:
    ~]# yum install createrepo
  2. Copy all the packages you want to provide in the repository into one directory (/mnt/local_repo for example).
  3. Run createrepo on that directory (for example, createrepo /mnt/local_repo). This will create the necessary metadata for your Yum repository.

13.2. yum Commands

yum commands are typically run as yum <command> <package name/s> . By default, yum will automatically attempt to check all configured repositories to resolve all package dependencies during an installation/upgrade.
The following is a list of the most commonly-used yum commands. For a complete list of available yum commands, refer to man yum.
yum install <package name/s>
Used to install the latest version of a package or group of packages. If no package matches the specified package name(s), they are assumed to be a shell glob, and any matches are then installed.
yum update <package name/s>
Used to update the specified packages to the latest available version. If no package name/s are specified, then yum will attempt to update all installed packages.
If the --obsoletes option is used (i.e. yum --obsoletes <package name/s> , yum will process obsolete packages. As such, packages that are obsoleted across updates will be removed and replaced accordingly.
yum check-update
This command allows you to determine whether any updates are available for your installed packages. yum returns a list of all package updates from all repositories if any are available.
yum remove <package name/s>
Used to remove specified packages, along with any other packages dependent on the packages being removed.
yum provides <file name>
Used to determine which packages provide a specific file or feature.
yum search <keyword>
This command is used to find any packages containing the specified keyword in the description, summary, packager and package name fields of RPMs in all repositories.
yum localinstall <absolute path to package name/s>
Used when using yum to install a package located locally in the machine.

13.3. yum Options

yum options are typically stated before specific yum commands; i.e. yum <options> <command> <package name/s> . Most of these options can be set as default using the configuration file.
The following is a list of the most commonly-used yum options. For a complete list of available yum options, refer to man yum.
-y
Answer "yes" to every question in the transaction.
-t
Sets yum to be "tolerant" of errors with regard to packages specified in the transaction. For example, if you run yum update package1 package2 and package2 is already installed, yum will continue to install package1.
--exclude=<package name>
Excludes a specific package by name or glob in a specific transaction.

13.4. Configuring yum

By default, yum is configured through /etc/yum.conf. The following is an example of a typical /etc/yum.conf file:
[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
distroverpkg=redhat-release
tolerant=1
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
metadata_expire=1800
[myrepo]
name=RHEL 5 $releasever - $basearch
baseurl=http://local/path/to/yum/repository/
enabled=1
A typical /etc/yum.conf file is made up of two types of sections: a [main] section, and a repository section. There can only be one [main] section, but you can specify multiple repositories in a single /etc/yum.conf.

13.4.1. [main] Options

The [main] section is mandatory, and there must only be one. For a complete list of options you can use in the [main] section, refer to man yum.conf.
The following is a list of the most commonly-used options in the [main] section.
cachedir
This option specifies the directory where yum should store its cache and database files. By default, the cache directory of yum is /var/cache/yum.
keepcache=<1 or 0>
Setting keepcache=1 instructs yum to keep the cache of headers and packages after a successful installation. keepcache=1 is the default.
reposdir=<absolute path to directory of .repo files>
This option allows you to specify a directory where .repo files are located. .repo files contain repository information (similar to the [repository] section of /etc/yum.conf).
yum collects all repository information from .repo files and the [repository] section of the /etc/yum.conf file to create a master list of repositories to use for each transaction. Refer to Abschnitt 13.4.2, „ [repository] Options“ for more information about options you can use for both the [repository] section and .repo files.
If reposdir is not set, yum uses the default directory /etc/yum.repos.d.
gpgcheck=<1 or 0>
This disables/enables GPG signature checking on packages on all repositories, including local package installation. The default is gpgcheck=0, which disables GPG checking.
If this option is set in the [main] section of the /etc/yum.conf file, it sets the GPG checking rule for all repositories. However, you can also set this on individual repositories instead; i.e., you can enable GPG checking on one repository while disabling it on another.
assumeyes=<1 or 0>
This determines whether or not yum should prompt for confirmation of critical actions. The default if assumeyes=0, which means yum will prompt you for confirmation.
If assumeyes=1 is set, yum behaves in the same way that the command line option -y does.
tolerant=<1 or 0>
When enabled (tolerant=1), yum will be tolerant of errors on the command line with regard to packages. This is similar to the yum command line option -t.
The default value for this is tolerant=0 (not tolerant).
exclude=<package name/s>
This option allows you to exclude packages by keyword during installation/updates. If you are specifying multiple packages, this is a space-delimited list. Shell globs using wildcards (for example, * and ?) are allowed.
retries=<number of retries>
This sets the number of times yum should attempt to retrieve a file before returning an error. Setting this to 0 makes yum retry forever. The default value is 6.

13.4.2. [repository] Options

The [repository] section of the /etc/yum.conf file contains information about a repository yum can use to find packages during package installation, updating and dependency resolution. A repository entry takes the following form:
[repository ID]
name=repository name
baseurl=url, file or ftp://path to repository
You can also specify repository information in a separate .repo files (for example, rhel5.repo). The format of repository information placed in .repo files is identical with the [repository] of /etc/yum.conf.
.repo files are typically placed in /etc/yum.repos.d, unless you specify a different repository path in the [main] section of /etc/yum.conf with reposdir=. .repo files and the /etc/yum.conf file can contain multiple repository entries.
Each repository entry consists of the following mandatory parts:
[repository ID]
The repository ID is a unique, one-word string that serves as a repository identifier.
name=repository name
This is a human-readable string describing the repository.
baseurl=http, file or ftp://path
This is a URL to the directory where the repodatadirectory of a repository is located. If the repository is local to the machine, use baseurl=file://path to local repository . If the repository is located online using HTTP, use baseurl=http://link . If the repository is online and uses FTP, use baseurl=ftp://link .
If a specific online repository requires basic HTTP authentication, you can specify your username and password in the baseurl line by prepending it as username:password@link. For example, if a repository on http://www.example.com/repo/ requires a username of "user" and a password os "password", then the baseurl link can be specified as baseurl=http://user:password@www.example.com/repo/.
The following is a list of options most commonly used in repository entries. For a complete list of repository entries, refer to man yum.conf.
gpgcheck=<1 or 0>
This disables/enables GPG signature checking a specific repository. The default is gpgcheck=0, which disables GPG checking.
gpgkey=URL
This option allows you to point to a URL of the ASCII-armoured GPG key file for a repository. This option is normally used if yum needs a public key to verify a package and the required key was not imported into the RPM database.
If this option is set, yum will automatically import the key from the specified URL. You will be prompted before the key is installed unless you set assumeyes=1 (in the [main] section of /etc/yum.conf) or -y (in a yum transaction).
exclude=<package name/s>
This option is similar to the exclude option in the [main] section of /etc/yum.conf. However, it only applies to the repository in which it is specified.
includepkgs=<package name/s>
This option is the opposite of exclude. When this option is set on a repository, yum will only be able to see the specified packages in that repository. By default, all packages in a repository are visible to yum.

13.5. Useful yum Variables

The following is a list of variables you can use for both yum commands and yum configuration files (i.e. /etc/yum.conf and .repo files).
$releasever
This is replaced with the package's version, as listed in distroverpkg. This defaults to the version of the redhat-release package.
$arch
This is replaced with your system's architecture, as listed by os.uname() in Python.
$basearch
This is replaced with your base architecture. For example, if $arch=i686 then $basearch=i386.
$YUM0-9
This is replaced with the value of the shell environment variable of the same name. If the shell environment variable does not exist, then the configuration file variable will not be replaced.

Kapitel 14. Product Subscriptions and Entitlements

14.1. An Overview of Managing Subscriptions and Content
14.1.1. The Purpose of Subscription Management
14.1.2. Defining Subscriptions, Entitlements, and Products
14.1.3. Subscription Management Tools
14.1.4. Subscription and Content Architecture
14.1.5. Advanced Content Management: Extended Update Support
14.1.6. RHN Classic v. Certificate-based Red Hat Network
14.2. Using Red Hat Subscription Manager Tools
14.2.1. Launching Red Hat Subscription Manager
14.2.2. About subscription-manager
14.2.3. Looking at RHN Subscription Management
14.2.4. Looking at Subscription Asset Manager
14.3. Managing Special Deployment Scenarios
14.3.1. Local Subscription Services, Local Content Providers, and Multi-Tenant Organizations
14.3.2. Virtual Guests and Hosts
14.3.3. Domains
14.4. Registering, Unregistering, and Reregistering a System
14.4.1. Registering Consumers in the Hosted Environment
14.4.2. Registering Consumers to a Local Organization
14.4.3. Registering an Offline Consumer
14.4.4. Registering from the Command Line
14.4.5. Unregistering
14.4.6. Restoring a Registration
14.5. Migrating Systems from RHN Classic to Certificate-based Red Hat Network
14.5.1. Installing the Migration Tools
14.5.2. Migrating from RHN Classic to Certificate-based Red Hat Network
14.5.3. Unregistering from RHN Classic Only
14.5.4. Migrating a Disconnected System
14.5.5. Looking at Channel and Certificate Mappings
14.6. Handling Subscriptions
14.6.1. Subscribing and Unsubscribing through the Red Hat Subscription Manager GUI
14.6.2. Handling Subscriptions through the Command Line
14.6.3. Stacking Subscriptions
14.6.4. Manually Adding a New Subscription
14.7. Redeeming Subscriptions on a Machine
14.7.1. Redeeming Subscriptions through the GUI
14.7.2. Redeeming Subscriptions on a Machine through the Command Line
14.8. Viewing Available and Used Subscriptions
14.8.1. Viewing Subscriptions in the GUI
14.8.2. Listing Subscriptions with the Command Line
14.8.3. Viewing Subscriptions Used in Both RHN Classic and Certificate-based Red Hat Network
14.9. Working with Subscription yum Repos
14.10. Responding to Subscription Notifications
14.11. Healing Subscriptions
14.11.1. Enabling Healing
14.11.2. Changing the Healing Check Frequency
14.12. Working with Subscription Asset Manager
14.12.1. Configuring Subscription Manager to Work with Subscription Asset Manager
14.12.2. Viewing Organization Information
14.13. Updating Entitlements Certificates
14.13.1. Updating Entitlement Certificates
14.13.2. Updating Subscription Information
14.14. Configuring the Subscription Service
14.14.1. Red Hat Subscription Manager Configuration Files
14.14.2. Using the config Command
14.14.3. Using an HTTP Proxy
14.14.4. Changing the Subscription Server
14.14.5. Configuring Red Hat Subscription Manager to Use a Local Content Provider
14.14.6. Managing Secure Connections to the Subscription Server
14.14.7. Starting and Stopping the Subscription Service
14.14.8. Checking Logs
14.14.9. Showing and Hiding Incompatible Subscriptions
14.14.10. Checking and Adding System Facts
14.14.11. Regenerating Identity Certificates
14.14.12. Getting the System UUID
14.14.13. Viewing Package Profiles
14.14.14. Retrieving the Consumer ID, Registration Tokens, and Other Information
14.15. About Certificates and Managing Entitlements
14.15.1. The Structure of Identity Certificates
14.15.2. The Structure of Entitlement Certificates
14.15.3. The Structure of Product Certificates
14.15.4. Anatomy of Satellite Certificates
Effective asset management requires a mechanism to handle the software inventory — both the type of products and the number of systems that the software is installed on. The subscription service provides that mechanism and gives transparency into both global allocations of subscriptions for an entire organization and the specific subscriptions assigned to a single system.
Red Hat Subscription Manager works with yum to unit content delivery with subscription management. The Subscription Manager handles only the subscription-system associations. yum or other package management tools handle the actual content delivery. Kapitel 13, YUM (Yellowdog Updater Modified) describes how to use yum.
This chapter provides an overview of subscription management in Red Hat Enterprise Linux and the Red Hat Subscription Manager tools which are available.

14.1. An Overview of Managing Subscriptions and Content

Red Hat Enterprise Linux and other Red Hat products are sold through subscriptions, which make packages available and provide support for a set number of systems. Subscription management clarifies the relationships between local systems and available software resources because it gives a view into where software subscriptions are assigned, apart from installing the packages.

14.1.1. The Purpose of Subscription Management

New government and industry regulations are setting new mandates for businesses to track how their infrastructure assets are used. These changes include legislation like Sarbanes-Oxley in the United States, standards like Payment Card Industry Data Security Standard (PCI-DSS), or accreditation like SAS-70. Software inventory maintenance is increasingly important to meet accounting and governmental standards.
That means that there is increasing pressure on IT administrators to have an accurate, current accounting of the software used on their systems. Generally, this is called software license management; with Red Hat's subscription model, this is subscription management.
Managing Subscriptions for Software Inventory
Abbildung 14.1. Managing Subscriptions for Software Inventory

Effective subscription management helps organizations achieve four primary goals:
  • Maintain regulatory compliance. One of the key responsibilities of administrators is software compliance in conformance with legal or industry requirements. Subscription management helps track both subscription assignments and contract expirations, which helps administrators manage both systems and software inventories in accordance to their regulatory requirements.
  • Simplify IT audits. Having a central and clear inventory of both current subscriptions and current systems, IT administrators can monitor and report on their infrastructure better.
  • Get better performance by doing better at assigning subscriptions. The subscription service maintains dual inventories of available product subscriptions and registered server systems, with clear associations between subscriptions and systems. This makes it easier for IT administrators to assign relevant subscriptions to systems, because they have a view of what is in the inventory and what the system is currently subscribed to.
  • Lower costs and streamline procurement. While under-subscribing systems can run afoul of regulations, over- subscribing systems can cause a significant impact on IT budgets. Subscription management helps subscriptions be assigned most efficiently, so costs could actually be lowered.
With Red Hat's commitment to free and open software, subscription management is focused on delivering tools that help IT administrators monitor their software/systems inventory for their own benefit. Subscription management does not enforce or restrict access to products.

Important

Most Red Hat products are licensed under a GNU General Public License (GPL), which allows free use of the software or code; this a different license than the Red Hat license agreement. A Red Hat license provides access to Red Hat services, like the Customer Portal and Content Delivery Network.
The Red Hat subscription requires that, as long as there is any active subscription for a product, then every system which uses the Red Hat product must have an active subscription assigned to it. Otherwise, the subscription is violated. See http://www.redhat.com/subscriptions/ and http://www.redhat.com/rhel/renew/faqs/#6 for more information on Red Hat's subscription model and terms.

14.1.2. Defining Subscriptions, Entitlements, and Products

The basis of everything is a subscription. A subscription contains both the products that are available, the support levels, and the quantities, or number of servers, that the product can be installed on.
Subscriptions are managed though the Certificate-Based Red Hat Network service, which ties into the Subscription and Content Delivery Network (CDN).
The subscription service maintains a complete list of subscriptions for an organization, identified by a unique ID (called a pool ID). A system is registered, or added, to the subscription service to allow it to manage the subscriptions for that system. Like the subscription, the system is also added to the subscription service inventory and is assigned a unique ID within the service. The subscriptions and system entries, together, comprise the inventory.
A system allocates one of the quantities of a product in a subscription to itself. When a subscription is consumed, it is an entitlement. (An entitlement is roughly analogous to a user license, in that it grants all of the rights to that product to that system. Unlike a user license, an entitlement does not grant the right to use the software; with the subscription model, an entitlement grants the ability to download the packages and receive updates.) Because the available quantity in a subscription lowers once a system subscribes to it, the system consumes the subscription.
Managing Subscriptions, Illustrated
Abbildung 14.2. Managing Subscriptions, Illustrated

The repository where the product software is located is organized according to the product. Each product group within the repository may contain the primary software packages and then any required dependencies or associated packages. Altogether, the product and its associated packages are called a content set. (A content set for a product even includes other versions of the product.) When a subscription grants access to a product, it includes access to all of the associated packages in that content set.
A single subscription can have multiple products, and each system can have multiple different subscriptions, depending on how many entitlement certificates are loaded on the machine.
Any number of products, for any number of different architectures, can be contained in a single subscription. The subscription options that are visible to a consumer are filtered, by default, according to whether the architecture for the product matches the architecture of the system. This is compatibility. Depending on compatible subscriptions makes sure that subscriptions are allocated efficiently, only to systems which can actually use the products.
The subscription tools can display even incompatible entitlements. Alternatively, the architecture definition for the system can be overridden by defining custom system facts for the subscription tools to use.
It's important to distinguish between subscribing to a product and installing a product. A subscription is essentially a statement of whatever products an organization has purchased. The act of subscribing to a subscription means that a system is allowed to install the product with a valid certificate, but subscribing doesn't actually perform any installation or updates. In the reverse, a product can also be installed apart from any entitlements for the system; the system is just does not have a valid product certificate. Certificate-Based Red Hat Network and the Content Delivery Network harmonize with content delivery and installation by using yum plug-ins that come with the Subscription Manager tools.

14.1.3. Subscription Management Tools

Subscriptions are managed through GUI and CLI tools called Red Hat Subscription Manager. The Subscription Manager tracks and displays what entitlements are available to the local system and what entitlements have been consumed by the local system. The Subscription Manager works as a conduit back to the subscription service to synchronize changes like available product quantities or subscription expiration and renewals.

Note

The Red Hat Subscription Manager tools are always run as root because of the nature of the changes to the system. However, Red Hat Subscription Manager connects to the subscription service as a user account for the Customer Service Portal.
The Subscription Manager handles both registration and subscriptions for a system. The Subscription Manager is part of the firstboot process for configuring content and updates, but the system can be registered at any time through the Red Hat Subscription Manager GUI or CLI. New subscriptions, new products, and updates can be viewed and applied to a system through the Red Hat Subscription Manager tools.
The different Subscription Manager clients are covered in Abschnitt 14.2, „Using Red Hat Subscription Manager Tools“.

14.1.4. Subscription and Content Architecture

Content includes new downloads, ISOs, updates, and errata, anything that can be installed on a system.
Subscription management helps to clarify and to define the relationships between local server infrastructure and the content delivery systems. Subscription management and content delivery are tightly associated. Entitlements (assigned subscriptions) identify what a system is allowed to install and update. In other words, entitlements define access to content. The content delivery system actually provides the software packages.
There are three parties that are involved in subscriptions and content:
  • The subscription service
  • The Content Delivery Network
  • The system which uses the content
Relationship Among Systems, the Subscription Service, and Content Delivery Network
Abbildung 14.3. Relationship Among Systems, the Subscription Service, and Content Delivery Network

The subscription service handles the system registration (verifying that the system is allowed to access the content). It also supplies the system with information on what products are available and handles a central list of entitlements and remaining quantities for the entire organization.
The content delivery network is responsible for delivering the content to the system when requested. The content server is configured in the Red Hat Subscription Manager configuration and then tied into the system's yum service through the Red Hat Subscription Manager yum plug-in.
Both the subscription service and the content server used by a system's Red Hat Subscription Manager tools can be customized. The default settings use the public subscription service and Content Delivery Network, but either one can be changed to use organization-specific services.

Note

Systems have the option of using the older Red Hat Network and Satellite 5.x systems to deliver content. These content delivery mechanisms bypass the subscription service in Certificate-Based Red Hat Network, so there is no entitlement management. This is allowed for legacy infrastructures, but Red Hat strongly recommends registering new systems with the latest Certificate-based Red Hat Network.

14.1.5. Advanced Content Management: Extended Update Support

Sometimes software product installations are straightforward — you want to install a Red Hat Enterprise Linux server, so you install Red Hat Enterprise Linux. However, products can have dependencies with each other (product B is only worthwhile if product A is also installed) or products can interact with each other to provide extended functionality. There are two categories of these kinds of product interactions:
  • Dependencies, where one product requires or relies on another product directly
  • Modifiers, where a product provides enhanced functionality or services for existing products
Dependencies are common and can be handled directly when processing content through tools like yum.
Modifiers can be more subtle. A modifier subscription extends another entitlement and provides different repository access and support than the product entitlement alone.
If the system is subscribed to that product entitlement or combination of products, then the modifier subscription brings an enhanced content set for that product. The content set can include additional new products, new functionality, or extended service and support, depending on the product being modified.
One simple example of a modifier is extended update support (EUS), which extends support for a minor release of Red Hat Enterprise Linux from six months to 24 months. An EUS subscription provides an enhanced support path, rather than a new product. EUS works only in conjunction with another product, to extend its support profile; it does not stand alone.

Red Hat Enterprise Linux Add-ons and EUS Subscriptions

Red Hat Enterprise Linux add-ons have access to EUS streams as long as the underlying Red Hat Enterprise Linux product has an EUS subscription. For example, if an administrator has a Red Hat Enterprise Linux 2 Socket subscription, a File System subscription, and a Red Hat Enterprise Linux 2 Socket EUS subscription, then the system can access both non-EUS and EUS content for both the Red Hat Enterprise Linux server and the File System product.

14.1.6. RHN Classic v. Certificate-based Red Hat Network

During the firstboot process, there are two options given for the content server: (Certificate-based) Red Hat Network and RHN Classic. These systems are mutually exclusive, but they both handle software content and updates as well as subscriptions and system inventory.
In 5.7 and later versions, entitlements and subscriptions are defined by available and installed products. However, in older versions of Red Hat Enterprise Linux, subscriptions were defined by channel access. These are two different approaches to content and entitlement access. Red Hat Network uses the product-based subscription model, while RHN Classic uses the channel-based model.
Certificate-based Red Hat Network is focused on two things:
  • Subscription management
  • Content delivery
Certificate-based Red Hat Network integrates the Customer Portal, Content Delivery Network, and subscription service (subscription management). It uses simple and streamlined local tools (the Red Hat Subscription Manager client) to give greater visibility into how entitlements and subscriptions are used and assigned and to help control software subscriptions as they are added and expire.
Since the client tools for subscription management (the focus of Certificate-based Red Hat Network) are only available in Red Hat Enterprise Linux 5.7 systems and later, Certificate-based Red Hat Network can only be utilized by 5.7 and later systems.
RHN Classic uses the traditional channel entitlement model, which provides a global view of content access but does not provide insight into system-level subscription uses. Along with content and global subscription management, RHN Classic also provides some systems management functions:
  • Kickstarting systems
  • Managing configuration files
  • Running scripts
  • Taking system snapshots
Satellite 5.x systems use a channel-based model similar to RHN Classic.
While RHN Classic has an expanded systems management feature set, RHN Classic does not provide the system-level view into installed and subscribed products that the enhanced Red Hat Network and subscription service do. RHN Classic is provided for older Red Hat Enterprise Linux systems (Red Hat Enterprise Linux 4.x, Red Hat Enterprise Linux 5.x, and Satellite 5.x) to migrate systems over to Red Hat Enterprise Linux 5.7 and later versions.
The two subscription services are mututally exclusive, with separate inventories and using separate client tools. Both the RHN Classic and Red Hat Subscription Manager tools correctly identify which service a system is registered with. When a system is registered with RHN Classic, then the Red Hat Subscription Manager shows an error that the system is already registered and cannot be managed by the Subscription Manager tools. Likewise, similar errors are returned in the RHN Classic tools if a system is registered with Red Hat Network and the subscription service.
For information on migrating from RHN Classic to Certificate-based Red Hat Network, see Abschnitt 14.5, „Migrating Systems from RHN Classic to Certificate-based Red Hat Network“.

14.2. Using Red Hat Subscription Manager Tools

The Red Hat Subscription Manager tool set encompasses three different tools:
  • A GUI-based local client to manage the local machine
  • A CLI client for advanced users and administrators to manage a local machine (and which can be tied into other applications and actions, like kickstarting machines)
  • A web-based client for organizational, multi-system views of the subscriptions and inventoried resources
All of these tools, both local clients and the web-based tools, allow administrators to perform three major tasks directly related to managing subscriptions: registering machines, assigning subscriptions to systems, and updating the certificates required for authentication. Some minor operations, like updating system facts, are available to help display and track what subscriptions are available.

Note

Both the Red Hat Subscription Manager GUI and CLI must be run as root.

14.2.1. Launching Red Hat Subscription Manager

Red Hat Subscription Manager is listed as one of the administrative tools in the System => Administration menu in the top management bar.
Red Hat Subscription Manager Menu Option
Abbildung 14.4. Red Hat Subscription Manager Menu Option

Alternatively, the Red Hat Subscription Manager GUI can be opened from the command line with a single command:
[root@server1 ~]# subscription-manager-gui
The Red Hat Subscription Manager UI has a single window with tabbed sections that offer quick views into the current state of the system, showing installed products, subscriptions for the system, and available subscriptions the system has access to. These tabs also allow administrators to manage subscriptions by subscribing and unsubscribing the system.
The Red Hat Subscription Manager has three main areas to manage products and subscriptions:
  • The My Subscriptions area shows all of the current entitlements that the system is subscribed to.
  • The All Available Subscriptions area shows all of the subscriptions that are available to the system. The default displays only entitlements that are compatible with the hardware, but these can be filtered to show entitlements corresponding to other installed programs, only subscriptions that have not been installed, and subscriptions based on date.
  • The My Installed Software area shows the currently installed products on the system, along with their subscription status. This does not allow administrators to install software, only to view installed software.
Red Hat Subscription Manager Main Screen
Abbildung 14.5. Red Hat Subscription Manager Main Screen

The top right box contains the tools required to perform maintenance tasks like changing the registration connection information and viewing system facts.

14.2.2. About subscription-manager

Any of the operations that can be performed through the Red Hat Subscription Manager UI can also be performed by running the subscription-manager tool. This tools has the following format:
[root@server1 ~]# subscription-manager command [options]
Each command has its own set of options that are used with it. The subscription-manager help and manpage have more information.
Tabelle 14.1. subscription-manager Commands
Command Description
register Registers or identifies a new system to the subscription service.
unregister Unregisters a machine, which strips its subscriptions and removes the machine from the subscription service.
subscribe Allocates a specific subscription to the machine.
redeem Autosubscribes a machine to a pre-specified subscription that was purchased from a vendor, based on its hardware and BIOS information.
refresh Pulls the latest entitlement data from the server. Normally, the system polls the entitlement server at a set interval (4 hours by default) to check for any changes in the available subscriptions. The refresh command checks with the entitlement server right then, outside the normal interval.
unsubscribe Removes a specific subscription or all subscriptions from the machine.
list Lists all of the subscriptions that are compatible with a machine, either subscriptions that are actually consumed by the machine or unused subscriptions that are available to the machine.
identity Handles the identity certificate and registration ID for a system. This command can be used to return the current UUID or generate a new identity certificate.
facts Lists the system information, like the release version, number of CPUs, and other architecture information.
clean Removes all of the subscription and identity data from the local system, without affecting the consumer information in the subscription service. Any of the subscriptions consumed by the system are still consumed and are not available for other systems to use. The clean command is useful in cases where the local entitlement information is corrupted or lost somehow, and the system will be reregistered using the register --consumerid=EXISTING_ID command.
orgs, repos, environments Lists all of the configured organizations, environments, and content repositories that are available to the given user account or system. These commands are used to view information in a multi-org infrastructure. They are not used to configure the local machine or multi-org infrastructure.

14.2.3. Looking at RHN Subscription Management

The ultimate goal of entitlement management is to allow administrators to identify the relationship between their systems and the subscriptions used by those systems. This can be done from two different perspectives: from the perspective of the local system looking externally to potential subscriptions and from the perspective of the organization, looking down at the total infrastructure of systems and all subscriptions.
The Red Hat Subscription Manager GUI and CLI are both local clients which manage only the local machine. These tools are somewhat limited in their view; they only disclose information (such as available entitlements) from the perspective of that one system, so expired and depleted subscriptions or subscriptions for other architectures aren't displayed.
RHN Subscription Management in the Customer Portal is a global tool which is intended to give complete, organization-wide views into subscriptions and systems. It shows all subscriptions and all consumers for the entire organization. RHN Subscription Management can perform many of the tasks of the local tools, like registering consumers, assigning subscriptions, and viewing system facts and UUID. It can also manage the subscriptions themselves, such as viewing contract information and renewing subscriptions — a task not possible in the local clients.
RHN Subscription Management in the Customer Portal
Abbildung 14.6. RHN Subscription Management in the Customer Portal

Note

RHN Subscription Management gives a global view of all consumers, of all types, for an organization, which is crucial for planning and effectively assigning subscriptions. However, it does not provide any insight into what products are installed on a system and whether subscriptions are assigned for those products. To track the validity of installed products, you must use the local Subscription Manager tools.
RHN Subscription Management also provides a view of systems and subscriptions managed under RHN Classic and provides access to the RHN Classic web tools.
All of the subscriptions for an entire organization — the subscriptions that have been purchased and the systems to which they have been allocated — are viewable through the account pages at https://access.redhat.com/. Additional information about RHN Subscription Management is available with the portal documentation at https://access.redhat.com/knowledge/docs/Red_Hat_Customer_Portal/.

14.2.4. Looking at Subscription Asset Manager

Subscription Asset Manager provides a local site not only to view subscriptions and systems for an infrastructure (as with the Customer Portal) but also to manage all of those systems. Subscription Asset Manager has three major functional areas:
  • Works with the client machine's Subscription Manager to manage subscriptions and content. In that way, it is a centralized, global, web-based Subscription Manager.
  • Helps manage the subscriptions themselves. It receives a subscription manifest from Red Hat Network. The manifest allocates that Subscription Asset Manager service a subset of all of an organization's subscriptions. From there, the Subscription Asset Manager locally assigns subscriptions to individual systems and can create activation keys.
  • Works as a real-time proxy between the local system assets and the Red Hat content delivery network.
Subscription Asset Manager handles both client-side, local system management and backend subscription management. This allows Subscription Asset Manager to provide more in-depth information on the status of products and certificates through tools like its dashboard and activity reports.
Subscription Asset Manager Dashboard
Abbildung 14.7. Subscription Asset Manager Dashboard

Because of the insight Subscription Asset Manager has into the local server assets, it can be used to define multi-tenant organizations. Multi-tentant organizations allow completely separate silos of assets (organizations). Organizations can then be subdivided into environments; since a system can belong to multiple environments, it is possible to organize systems into overlapping circles according to the real-world infrastructure. This is covered more in Abschnitt 14.3.1, „Local Subscription Services, Local Content Providers, and Multi-Tenant Organizations“.
Subscription Asset Manager is available with Red Hat Enterprise Linux, but it must be installed and configured before it can be used to manage assets.
For more information on configuring and using Subscription Asset Manager, see the documentation at http://docs.redhat.com/docs/en-US/Red_Hat_Subscription_Asset_Manager/1.0/html/Installation_Guide/index.html.

14.3. Managing Special Deployment Scenarios

There are different types of consumers and different ways of organizing consumers. The simplest environment has physical machines grouped together in one single, homogeneous group, connecting to Red Hat's hosted content and subscription services. While this is an easy arrangement to maintain, it does not accurately describe many enterprise environments, which have a lively mix of physical and virtual machines, divided across disparate organizational units and even subunits within those organizations and accessing locally-controlled content and subscription services.
The first change is the ability to group systems into divisions and subdivisions. This is called multi-tenancy, the ability create unrelated groups beneath the primary umbrella account. Multi-tenant (or multi-org) structures are for infrastructures which may have multiple content repositories or subscription services, and systems within the organization need to be grouped according to access to those repositories and services.
The other part of heterogeneous environments is recognizing consumers other than physical machines. Two special consumer types are common: virtual guests and server domains. The difference between these consumer types and physical, single-machine consumers is only in the type of information that the Red Hat Subscription Service uses and stores — not in any special configuration or management tasks.

14.3.1. Local Subscription Services, Local Content Providers, and Multi-Tenant Organizations

As Abschnitt 14.1.4, „Subscription and Content Architecture“ outlines, the subscription service, content repository, and client tools and inventory all work together to define the entitlements structure for a customer. The way that these elements are organized depends on a lot of factors, like who is maintaining the individual services, how systems in the inventory are group, and how user access to the different services is controlled.
The most simplistic structure is the hosted structure. The content and subscription services are hosted by Red Hat, and all systems within the inventory are contained in one monolithic group. User access is defined only by Red Hat Customer Portal account access.
Hosted Structure
Abbildung 14.8. Hosted Structure

The next step allows a customer to have its own, local subscription service (Subscription Asset Manager), while still using Red Hat's hosted content delivery network. At this point, user access can be defined locally, within the Subscription Asset Manager configuration. Subscription Asset Manager can define independent groups, called organizations. Systems belong to those organizations, and users are granted access to those organizations. Systems and users in one organization are essentially invisible to systems and users in other organizations.
Hosted Content/Local Subscriptions Structure
Abbildung 14.9. Hosted Content/Local Subscriptions Structure

The last style of infrastructure is almost entirely local, with a Subscription Asset Manager that provides locally-hosted content providers and an integrated local subscription service.
Local Subscriptions and Local Content Provider Structure
Abbildung 14.10. Local Subscriptions and Local Content Provider Structure

This allows the most control over how systems are grouped within the subscriptions/content. A customer's main account can be divided into separate and independent organizations. These organizations can use different content provider, can have different subscriptions allocated to them, and can have different users assigned to them with levels of access set per organization. Access control in this scenario is controlled entirely locally. The local Subscription Asset Manager, not the remote Red Hat Customer Portal, processes user authentication requests and applies local access control policies.
A system is assigned to one organization. Within an organization, there can be different environments which define access to product versions and content sets. There can be overlap between environments, with a system belonging to multiple environments.
Multi-Org
Abbildung 14.11. Multi-Org

When there is only one organization — such as a hosted environment (where the single organization is implicit) — then the systems all default to use that one organization. When there are multiple organizations, then the organization for a system to use must be defined for that system. This affects register operations, where the system is registered to subscription service and then joined to the organization. It also affects other operations tangentially. It may affect subscribe operations because it affects repository availability and subscription allocations, and it affects redeem operations (activation of existing subscriptions) because subscriptions must be redeemed from the organization which issued the subscription.
For more information on configuring and managing organizations, environments, and content repositories, see the Subscription Asset Manager documentation.

14.3.2. Virtual Guests and Hosts

When the Red Hat Subscription Manager process checks the system facts, it attempts to identify whether the system is a physical machine or a virtual guest. The Subscription Manager can detect guests for several different virtualization services, including:
  • KVM
  • Xen
  • HyperV
  • VMWare ESX
Subscription Manager records a unique identifier called a guest ID as one of the system facts for a virtual guest. A special process, libvirt-rhsm, checks VMWare, KVM, and Xen processes and then relays that information to Subscription Manager and any configured subscription service (Certificate-based Red Hat Network or a local Subscription Asset Manager). Each guest machine on a host is assigned a guest ID, and that guest ID is both associated with the host and used to generate the identity certificate for the guest when it is registered.
Some Red Hat Enterprise Linux variants are specifically planned for virtual hosts and guests. The corresponding subscriptions are divided into a certain quantity of physical hosts and then a quantity of allowed guests. Red Hat Enterprise Linux add-ons may even be inherited, so that when a host machine is subscribed to that entitlement, all of its guests are automatically included in that subscription. (Red Hat layered products usually do not draw any distinction between virtual and physical systems; the same type of subscription is used for both.) If the system is a guest, then virtual entitlements are listed with the available subscriptions. If no more virtual entitlements are available, then the subscription service will apply physical entitlements.
Virtual and physical subscriptions are identified in the Type column.
Virtual and Physical Subscription
Abbildung 14.12. Virtual and Physical Subscription

Anmerkung

The distinction of being a physical machine versus virtual machine matters only in the priority of how entitlements are consumed. Virtual machines are recorded in the subscription service inventory as a regular system type of consumer.
Virtual guests are registered to the subscription service inventory as regular systems and subscribe to entitlements just like any other consumer.
Virtual entitlements can only be used by virtual machines. Physical entitlements can be used by both physical and virtual machines. When ascertaining what subscriptions are available for autosubscription, preference is given first to virtual entitlements (which are more restrictive in the type of consumer which can use them), and then to physical entitlements.

14.3.3. Domains

Consumers in the subscription service inventory are identified by type. Most consumers will have a type of system, meaning that each individual server subscribes to its own entitlements for its own use. There is another type of consumer, though, which is available for server groups, the domain type. domain-based entitlements are not allocated to a single system; they are distributed across the group of servers to govern the behavior of that group of servers. (That server group is called a domain.)
There are two things to keep in mind about domain entitlements:
  • Each member of the domain is still registered to the subscription service as a system consumer and added to the inventory individually.
  • The domain entitlements apply to the behavior of the entire server group, not to any one system.
The domain entitlement simply governs the behavior of the domain. A domain entitlement is not limited to a specific type of behavior. Domain entitlements can describe a variety of types of behavior, such as storage quotas or the maximum number of messages to process per day. The entire domain is bound to the subscriptions when one of the domain servers subscribes to the domain entitlements using the Red Hat Subscription Manager tools, and the entitlement certificate is replicated between the domain servers.

14.4. Registering, Unregistering, and Reregistering a System

Entitlements are managed by organizing and maintaining the systems which use entitlement subscriptions. The entitlements and subscriptions are managed by Red Hat through the subscription service. A system is recognized to the subscription service by being registered with the service. The subscription service assigns the system (called a consumer) a unique ID (essentially as an inventory number) and issues that system an identifying certificate (with the UUID in its subject CN) to identify that system.
Whenever a subscription is purchased by an organization, the consumer can subscribe to that subscription. This means that a portion of the subscription is allocated to that consumer ID; when the consumer contacts the content delivery network and downloads the software, the licenses have been already assigned to the system. The system has valid certificates for its subscriptions.
Systems can be registered with an subscription service during the firstboot process or as part of the kickstart setup (both described in the Installation Guide). Systems can also be registered after they've been configured or removed from the subscription service inventory (unregistered) if they will no longer be managed within that entitlement system.

14.4.1. Registering Consumers in the Hosted Environment

For infrastructures which use Red Hat's hosted subscription and content delivery network, all that is required to register the system is the username and password of the Red Hat Network account.
  1. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  2. If the system is not already registered, then there will be a Register button at the top of the window in the Tools area.
  3. Enter the username and password of the user account on the subscription service; this is the account used to access the Customer Portal.
  4. Optionally, select the Automatically subscribe... checkbox, so that the system is subscribed to the best matched subscription when it is registered. Otherwise, the system must be subscribed manually, as in Abschnitt 14.6, „Handling Subscriptions“.

14.4.2. Registering Consumers to a Local Organization

Infrastructures which manage their own local content repository and subscription service must have a defined organization. This organization is essentially a group definition, and systems must be assigned to that group as part of the registration process. This allows there to be multiple, discrete organizations or tenants within the infrastructure.
When a system is registered using the Subscription Manager GUI, Subscription Manager automatically scans the local subscription and content service to see what organizations are configured.
  1. Make sure that the rhsm.conf configuration file points to the local subscription service (in the hostname parameter) and the local content server (in the baseurl parameter). The Subscription Manager configuration is described in Abschnitt 14.14, „Configuring the Subscription Service“.
  2. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  3. Click the Register button at the top of the window in the Tools area.
  4. Enter the username and password of the user account on the subscription service; this is the account used to access the Customer Portal.
  5. Subscription Manager scans the network for available organizations.
    When the configured organizations are detected, Subscription Manager prompts for the organization for the system to join. It is only possible to register with one organization.
  6. If the selected organization has multiple environments available, then the Subscription Manager will detect them and provide a list. It is possible to join multiple environments. Use the Ctrl key to select multiple environments from the list.
    If no environment is selected, then Subscription Manager uses the default environment for the organization.

    NOTE

    It is only possible to join an environment during registration. The environments cannot be changed after registration.
  7. Optionally, select the Automatically subscribe... checkbox, so that the system is subscribed to the best matched subscription when it is registered. Otherwise, the system must be subscribed manually, as in Abschnitt 14.6, „Handling Subscriptions“.

14.4.3. Registering an Offline Consumer

Some systems may not have internet connectivity, but administrators still want to assign and track the subscriptions for that system. This can be done by manually registering the system, rather than depending on Subscription Manager to perform the registration. This has two major steps, first to create an entry on the subscriptions service and then to configure the system.
  1. Open the Subscriptions tab in the Customer Portal, and select the Overview item under the Certificate-Based Management area.
  2. In the summary of consumers, click the Register New System link to create the new inventory entry.
  3. Fill in the required information for the new consumer type. A system requires information about the architecture and hardware in order to ascertain what subscriptions are available to that system.
  4. Once the system is created, assign the appropriate subscriptions to that system.
    1. Open the Available Subscriptions tab.
    2. Click the check boxes by all of the subscriptions to assign, and then click the Add button.
  5. Once the subscriptions are added, open the Applied Subscriptions tab.
  6. Click the Download All Certificates button. This exports all of the entitlements certificates, for each product, to a single .zip file. Save the file to some kind of portable media, like a flash drive.
  7. Optionally, click the Download Identity Certificate button. This saves the identity certificate for the registered consumer and could be used by the consumer to connect to the subscription service. If the consumer will permanently be offline, then this is not necessary, but if the consumer could ever be brought onto the network, then this is useful.
  8. Copy the entitlements certificates from the media device over to the consumer.
  9. If all entitlement certificates were downloaded in an archive file, then there are multiple archives in the downloaded certificates.zip file. Unzip the directories until the PEM files for the entitlement certificates are available.
  10. Import the entitlement certificates. This can be done using the Import Certificates button in the Subscription Manager GUI or using the import command. For example:
    # subscription-manager import --certificate=/tmp/export/entitlement_certificates/596576341785244687.pem --certificate=/tmp/export/entitlement_certificates/3195996649750311162.pem
    Successfully imported certificate 596576341785244687.pem
    Successfully imported certificate 3195996649750311162.pem
  11. If you downloaded an identity certificate, copy the cert.pem file directly into the /etc/pki/consumer directory. For example:
    cp /tmp/downloads/cert.pem /etc/pki/consumer

14.4.4. Registering from the Command Line

The simplest way to register a machine is to pass the register command with the user account information required to authenticate to the Certificate-Based Red Hat Network (the credentials used to access subscription service or the Customer Portal). When the system is successfully authenticated, it echoes back the newly-assigned consumer ID and the user account name which registered it.
The register options are listed in Tabelle 14.2, „register Options“.
Beispiel 14.1. Registering a New Consumer
[root@server1 ~]# subscription-manager register --username admin-example --password secret

7d133d55-876f-4f47-83eb-0ee931cb0a97 admin-example (the new consumer UUID and the account used for registration)

In a multi-org environment, it is required that you specify which organization (essentially an independent group or unit within the main account) to join the system to. This is done by using the --org option in addition to the username and password. The given user must also have the access permissions to add systems to that organization. (See Abschnitt 14.12, „Working with Subscription Asset Manager“ for information about organizations and Subscription Asset Manager.)
Beispiel 14.2. Registering a New Consumer with an Organization
If there is more than one organization, then the system must be assigned to one specific organization:
[root@server1 ~]# subscription-manager register --username admin-example --password secret --org="IT Department"

7d133d55-876f-4f47-83eb-0ee931cb0a97 admin-example (the new consumer UUID and the account used for registration)
Organizations can be subdivided into environments, which define access to content based on repositories, product versions, and content sets. While a consumer can only belong to a single organization, it can be assigned to multiple environments within that organization. If no environment is given, the subscription service uses the default environment. See Abschnitt 14.12, „Working with Subscription Asset Manager“ for information about organizations and Subscription Asset Manager.
A system can only be added to an environment during registration.
[root@server1 ~]# subscription-manager register --username admin-example --password secret --org="IT Department" --environment=Dev1,ITall

Anmerkung

If the system is in a multi-org environment and no organization is given, the register command returns a Remote Server error.
The register command has an option, --autosubscribe, which allows the system to be registered to the subscription service and immediately subscribed to the subscription which best matches its architecture in a single step.
Beispiel 14.3. Automatically Subscribing While Registering
[root@server1 ~]# subscription-manager register --username admin-example --password secret --autosubscribe

Beispiel 14.4. Applying Subscriptions During Registration
When using the command-line tools to register the system, there is an option that can pass the activation key to apply existing, already-assigned certificates along with the other registration information. The activation keys are set, in a comma-separated list, in the --activationkey option.
With an activation key, it is not necessary to give a username and password because the authentication is implicit in the activation key.
In hosted or single organization environments, it is not necessary to specify an organization with the --org option, but in multi-org environments, the --org option is required. The organization is not defined as part of the activation key. See Abschnitt 14.12, „Working with Subscription Asset Manager“ for information about activation keys and Subscription Asset Manager.
For example:
# subscription-manager register --activationkey=1234abcd --org="IT Dept"

Tabelle 14.2. register Options
Options Description Required
--username=name Gives the content server user account name. Required
--password=password Gives the password for the user account. Required
--org=name Gives the organization to which to join the system. Required, except for hosted environments
--environment=name Registers the consumer to an environment within an organization. Optional
--name=machine_name Sets the name of the consumer (machine) to register. This defaults to be the same as the hostname. Optional
--autosubscribe Automatically subscribes this system to the best-matched compatible subscription. This is good for automated setup operations, since the system can be configured in a single step. Optional
--activation_key Applies existing subscriptions as part of the registration process. The subscriptions are pre-assigned by a vendor or by a systems administrator using Subscription Asset Manager. Optional
--force Registers the system even if it is already registered. Normally, any register operations will fail if the machine is already registered. Optional

14.4.5. Unregistering

The only thing required to unregister a machine is to run the unregister command. This removes the system's entry from the subscription service, unsubscribes it from any subscriptions, and, locally, deletes its identity and entitlement certificates.
In the Red Hat Subscription Manager GUI, there is an Unregister button at the top of the window in the Tools area.
From the command line, this requires only the unregister.
Beispiel 14.5. Unregistering a Consumer
[root@server1 ~]# subscription-manager unregister

14.4.6. Restoring a Registration

There are times when the local registration and subscription information could be lost or corrupted. There could be a hardware failure or system crash. Or other IT considerations may require that a system be moved to a different machine. Whatever the reason, the local subscription configuration is lost.
A system can be registered against an existing system entry in the Red Hat subscription service, which essentially restores or reregisters that consumer. The reregister operation uses the original consumer ID with the registration request, so that all of the previous subscriptions associated with the consumer entry are restored along with the registration.
Reregistering a system uses the register command. This command passes the original UUID for a system to issue a request to the subscription service to receive a new certificate using the same UUID. This essentially renews its previous registration.
Beispiel 14.6. Registering a System Against an Existing Identity Certificate
The register command uses the original ID to identify itself to the subscription service and restore its previous subscriptions.
[root@server1 ~]# subscription-manager register --username admin-example --password secret --consumerid=7d133d55-876f-4f47-83eb-0ee931cb0a97

Tabelle 14.3. register Options to Reregister the System
Options Description Required
--consumerid Gives the consumer UUID used by an existing consumer. The system's consumer entry must exist in the Red Hat subscription service for the reregister operation to succeed. Required
--username=name Gives the content server user account name. Optional
--password=password Gives the password for the user account. Optional

14.5. Migrating Systems from RHN Classic to Certificate-based Red Hat Network

As described in Abschnitt 14.1.6, „RHN Classic v. Certificate-based Red Hat Network“ and https://access.redhat.com/kb/docs/DOC-45987, there are differences in how RHN Classic and Certificate-based Red Hat Network define and manage subscriptions.
As part of migration, the RHN Classic channels are mapped to Certificate-based Red Hat Network X.509 product certificates for every installed product. Subscription Manager can use those certificates to subscribe or autosubscribe the system to the appropriate subscriptions once it is registered.
Migration tools are available to transition system registration from RHN Classic to Certificate-based Red Hat Network and then re-apply its previous subscriptions. Product certificates in general are described in Abschnitt 14.15.3, „The Structure of Product Certificates“.
There are two migration paths supported:
  • From being registered with RHN Classic Hosted to being registered with Certificate-based Red Hat Network, using rhn-migrate-classic-to-rhsm
  • From a disconnected (offline) system using RHN Classic-style channels to using Certificate-based Red Hat Network X.509 certificates for installed products, using install-num-migrate-to-rhsm

Important

There is no migration path from a Satellite system to Certificate-based Red Hat Network.

14.5.1. Installing the Migration Tools

The migration tools are contained in the subscription-manager-migration package. An additional package, subscription-manager-migration-data, is required to map the RHN Classic channels to Certificate-based Red Hat Network product certificates.
  1. The migration tools and data are in supplementary channels. If necessary, enable the supplementary repositories, as described in Abschnitt 14.9, „Working with Subscription yum Repos“.
  2. Install the migration tool packages.
    [root@server ~]# yum install subscription-manager-migration subscription-manager-migration-data

14.5.2. Migrating from RHN Classic to Certificate-based Red Hat Network

A system which was registered against the hosted subscription service, RHN Classic, can be migrated to Certificate-based Red Hat Network using the rhn-migrate-classic-to-rhsm script.
The general action is that it unregisters the system from RHN Classic, registers it with Certificate-based Red Hat Network, and opens Subscription Manager (either GUI or CLI) to assign subscriptions.
The rhn-migrate-classic-to-rhsm script has this syntax:
rhn-migrate-classic-to-rhsm [--force|--cli-only|--help|--no-auto]
After running migration, the system facts list what script was used for migration and what the previous system ID was.
[root@server ~]# subscription-manager facts --list | grep migr
migration.classic_system_id: 09876
migration.migrated_from: rhn_hosted_classic
This makes it easy to track the migration process for systems within the infrastructure.
Beispiel 14.7. Basic RHN Classic to Certificate-based Red Hat Network Migration
Simply running the rhn-migrate-classic-to-rhsm tool migrates the system profile and then opens the Subscription Manager GUI so that administrators can assign subscriptions to the system.
While administrators only have to run the command, the script itself runs through a series of steps to migrate the account.
[root@server ~]# rhn-migrate-classic-to-rhsm
RHN Username: jsmith@example.com
Password:
The script prompts for the username and password to use to connect to Red Hat Network. It uses these credentials to authenticate to both Red Hat Network Classic and Certificatebased Red Hat Network, to verify the account settings.
Once the account is verified, the script creates a channel list for the system.
Retrieving existing RHN classic subscription information ...
+----------------------------------+
System is currently subscribed to:
+----------------------------------+
rhel-i386-client-5
Each discovered channel is then mapped to a corresponding product certificate (Abschnitt 14.5.5, „Looking at Channel and Certificate Mappings“). Not every product has a product certificate, so not every channel may have a map. Only the channels with a certificate channel to a corresponding certificate map.
The matching certificates are copied into the /etc/pki/product directory.
List of channels for which certs are being copied
rhel-i386-client-5

Product Certificates copied successfully to /etc/pki/product !!
Then, the script unregisters the system from RHN Classic.
Preparing to unregister system from RHN classic ...
System successfully unregistered from RHN Classic.
Then, it registers the system with Certificate-based Red Hat Network.
Attempting to register system to Certificate-based RHN ...
The system has been registered with id: abcd1234
System server.example.com successfully registered to Certificate-based RHN.

Launching the GUI tool to manually subscribe the system ...
The last step opens the Subscription Manager GUI to the All Available Subscriptions tab so that the administrator can manually assign the subscriptions to the system.

Alternatively, the rhn-migrate-classic-to-rhsm can automatically subscribe the system to matching subscriptions.
Beispiel 14.8. All CLI-Based Migration
The --cli-only option tells the rhn-migrate-classic-to-rhsm to register the system with the autosubscribe option, so all of the migration process occurs in the command line.
The overall process is identical to the one in Beispiel 14.7, „Basic RHN Classic to Certificate-based Red Hat Network Migration“ until the final step.
[root@server ~]# rhn-migrate-classic-to-rhsm --cli-only
RHN Username: jsmith@example.com
Password:

....

Attempting to auto-subscribe to appropriate subscriptions ...
Installed Product Current Status:
ProductName:            Red Hat Enterprise Linux Desktop
Status:                 Subscribed

Please visit https://access.redhat.com/management/consumers/abcd1234 to view the details, and to make changes if necessary.

14.5.3. Unregistering from RHN Classic Only

There may be an instance where a system should be unregistered from RHN Classic but is not yet ready to be registered to Certificate-based Red Hat Network. The rhn-migrate-classic-to-rhsm tool can be used simply to unregister a system from RHN Classic. This still copies over the product certificates for the classic channels to configure the system in the style of certificate-based subscriptions, but it does not register the machine with subscription service.
To unregister the system only, use the --no-auto option.
[root@server ~]# rhn-migrate-classic-to-rhsm --no-auto
RHN Username: jsmith@example.com
Password:

Retrieving existing RHN classic subscription information ...
+----------------------------------+
System is currently subscribed to:
+----------------------------------+
rhel-i386-client-5

List of channels for which certs are being copied
rhel-i386-client-5

Product Certificates copied successfully to /etc/pki/product !!

Preparing to unregister system from RHN classic ...
System successfully unregistered from RHN Classic.
Because there are product certificates, Subscription Manager will show a red, invalid status for the system and issue notifications until the system is registered and subscriptions applied.

14.5.4. Migrating a Disconnected System

Some systems may never be connected to an external network or may be prevented from accessing Red Hat Network or a Satellite system. These systems still require valid subscriptions and product certificates, though.
The rhn-migrate-classic-to-rhsm uses the information in /etc/sysconfig/rhn/systemid to get the previous registration information and map channels to certificates. If a system is disconnected, it may not have a systemid file.
Most systems, even ones never registered with RHN Classic, do have an installation number. When Red Hat software is purchased through a vendor, the purchased software is identified in an installation number or subscription number (described in https://access.redhat.com/kb/docs/DOC-15408) in the /etc/sysconfig/rhn/install-num file.
The installation number is in essence a code which contains all of the information about the products and versions purchased for the system. For example, this installation number shows that it is valid for RHEL Client and RHEL Workstation channels.
[root@server ~]# python /usr/lib/python2.4/site-packages/instnum.py da3122afdb7edd23
Product: RHEL Client
Type: Installer Only
Options: Eval FullProd Workstation
Allowed CPU Sockets: Unlimited
Allowed Virtual Instances: Unlimited
Package Repositories: Client Workstation

key: 14299426 "da3122"
checksum: 175 "af"
options: 4416 "Eval FullProd Workstation"
socklimit: -1 "Unlimited"
virtlimit: -1 "Unlimited"
type: 2 "Installer Only"
product: 1 "client"

{"Workstation": "Workstation", "Base": "Client"}
For a system which is not connected to either RHN Classic or a Satellite system, the installation number can be used to transition the product information from the older channel-based subscription model to the X.509 certificate model, managed by Subscription Manager.
The install-num-migrate-to-rhsm script identifies the channels that a disconnected system is subscribed to and then copies in the appropriate product certificates. Simply run the command:
[root@server ~]# install-num-migrate-to-rhsm
The script copies in the product certificates for the channels into the /etc/pki/product directory.
Once the system is migrated, it can be registered remotely and have entitlement certificates installed as described in Abschnitt 14.4.3, „Registering an Offline Consumer“.
Even though the system is not registered, the system facts display what script was used for migration.
[root@server ~]# subscription-manager facts --list | grep migr
migration.migrated_from: install_number
Because the system was not previously registered with RHN Classic, the migration facts do not include a system ID number.

14.5.5. Looking at Channel and Certificate Mappings

The subscription-manager-migration-data package contains a mapping file that maps RHN Classic channels to Certificate-based Red Hat Network product certificates. This file (/usr/share/rhsm/product/RHEL-5/channel-cert-mapping.txt) uses simple keys to map the values:
channel_name: product_name-hash-product_cert.pem
For example, this maps the Red Hat Enterprise Linux Client channel to the corresponding product certificate:
rhel-i386-client-workstation-5: Client-Workstation-i386-b0d4c042-6e31-45a9-bd94-ff0b82e43b1a-71.pem
During migration, that mapping is translated into product_cert.pem and the product certificate is copied into the /etc/pki/product directory. For the rhel-i386-client-workstation-5, this migrates to the 71.pem product certificate (the last two digits of the mapping).
However, many channels are available for legacy systems only or have not yet released an X.509 product certificate. In that case, the channel has no mapping.
jbappplatform-4.3.0-fp-i386-server-5-rpm: none
This can create a situation where not all channels are migrated over to Certificate-based Red Hat Network or where products are not fully subscribed.

14.6. Handling Subscriptions

Assigning a subscription to a system gives the system the ability to install and update any Red Hat product in that subscription. A subscription is a list of all of the products, in all variations, that were purchased at one time, and it defines both the products and the number of times that subscription can be used (the quantity of that product). The quantity is roughly the number of user licenses available. When one of those licenses is allocated to a system, that system is subscribed to the subscription.
A subscription is available to a system based on the system's architecture and other installed products. Subscriptions that are available for a platform (based on its hardware and operating system) are compatible. When the subscription is actually assigned to the machine, the subscription is consumed.
A system can be subscribed to multiple subscriptions, a single subscription, or a single product. Subscribing a system requires the ID number of the subscription or the subscription key for the product.
Unsubscribing a machine removes the entitlement to any of the products in the subscription, but the machine remains registered with the subscription service. Unsubscribing one system frees the subscription so that it can be allocated to another system.

14.6.1. Subscribing and Unsubscribing through the Red Hat Subscription Manager GUI

14.6.1.1. Subscribing to a Product

  1. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  2. Open the All Available Subscriptions tab.
  3. Set the filters to use to search for available entitlements. Subscriptions can be filtered by their active date and by their name. The checkboxes provide more fine-grained filtering:
    • match my system shows only subscriptions which match the system architecture.
    • match my installed products shows subscriptions which work with currently installed products on the system.
    • have no overlap with existing subscriptions excludes subscriptions with duplicate products. If a system is already subscribed to an entitlement for a specific product or if multiple entitlements supply the same product, then the subscription service filters those subscriptions and shows only the best fit.
  4. Select the available entitlements. To select multiple subscriptions, use the Ctrl key.
  5. Click the Subscribe button.

14.6.1.2. Unsubscribing through the GUI

  1. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  2. Open the My Subscriptions tab.
    All of the active subscriptions to which the system is currently subscribed are listed. (The products available through the subscription may or may not be installed.)
  3. Select the entitlements to unsubscribe. To select multiple subscriptions, use the Ctrl key.
  4. Click the Unsubscribe button in the bottom right of the window.

14.6.2. Handling Subscriptions through the Command Line

14.6.2.1. Subscribing from the Command Line

Subscribing a machine through the command line requires specifying the individual product or subscription to subscribe to, using the --pool option.
[root@server1 ~]# subscription-manager subscribe --pool=XYZ01234567
The options for the subscribe command are listed in Tabelle 14.4, „subscribe Options“.
The ID of the subscription pool for the purchased product must be specified, and this pool ID is listed with the product subscription information, from running the list command:
[root@server1 ~]# subscription-manager list --available

+-------------------------------------------+
    Available Subscriptions
+-------------------------------------------+


ProductName:            RHEL for Physical Servers
ProductId:              MKT-rhel-server
PoolId:                 ff8080812bc382e3012bc3845ca000cb
Quantity:               10
Expires:                2011-09-20
Alternatively, the system can be subscribed to the best-fitting subscriptions, as identified by the subscription service, by using the --auto option (which is analogous to the --autosubscribe option with the register command).
[root@server1 ~]# subscription-manager subscribe --auto
Tabelle 14.4. subscribe Options
Options Description Required
--pool=pool-id Gives the ID for the subscription to subscribe the machine to. Required, unless --auto is used
--auto Automatically subscribes the system to the best-match subscription or subscriptions. Optional
--quantity Subscribes multiple counts of an entitlement to the system. This is used to cover subscriptions that define a count limit, like using two 2-socket server subscriptions to cover a 4-socket machine. Optional

14.6.2.2. Unsubscribing from the Command Line

A system can be subscribed to multiple subscriptions and products. The system can be unsubscribed from a single subscription or product or from every subscribed product.
Running the unsubscribe command with the --all unsubscribes the system from every product and subscription pool it is currently subscribed to.
[root@server1 ~]# subscription-manager unsubscribe --all
It is also possible to unsubscribe from a single product. Each product has an identifying X.509 certificate installed with it, and the product to unsubscribe from can be identified with the unsubscribe command to remove only that product subscription.
  1. Get the serial number for the product certificate, if you are unsubscribing from a single product. The serial number can be obtained from the cert.pem file or by using the list command. For example:
    [root@server1 ~]# subscription-manager list --consumed
    
    +-------------------------------------------+
        Consumed Product Subscriptions
    +-------------------------------------------+
    
    
    ProductName:         High availability (cluster suite)
    ContractNumber:      0
    SerialNumber:        11287514358600162
    Active:              True
    Begins:              2010-09-18
    Expires:             2011-11-18
  2. Run the subscription-manager tool with the --serial option to specify the certificate.
    [root@server1 ~]# subscription-manager unsubscribe --serial=11287514358600162

14.6.3. Stacking Subscriptions

Some subscriptions define a count which works as a restriction on the subscription. For example, counts can be set on the number of sockets or CPUs on a machine, the number of virtual guests on a host, or the number of clients in a domain.
The entire count must be covered for the system to be fully entitled. If there are four sockets on a machine, then the server subscriptions must cover four sockets, or if there are eight guests, then there must be enough to cover all eight guests.
Many subscriptions can be combined together to cover the count on the system. Two subscriptions for RHEL Server for 2-Sockets can be combined together to cover a four-socket machine. These subscriptions can be stacked.
There are some rules on what subscriptions can be stacked:
  • Subscriptions can be stacked by using multiple quantities from the same subscription set.
  • Subscriptions from different contracts can be stacked together.
  • Only the same product subscription can be stacked. RHEL Server for 2-Sockets can be stacked with another RHEL Server for 2-Sockets subscription, but not with RHEL Server for Virtualization, even if they both cover the socket count.
  • Stackable entitlements are indicated in the Subscription Manager UI with an asterisk (*). In the UI, available subscriptions are grouped first by what subscriptions are compatible for stacking, and then by other available subscriptions.
To stack subscriptions in the Subscription Manager UI, simply set the Quantity field to the required quantity to cover the count.
Stacking Quantities
Abbildung 14.13. Stacking Quantities

To stack subscriptions from the command line, use the --quantity option. The quantity taken applies to the product in the --pool option:
[root@server1 ~]# subscription-manager subscribe --pool=XYZ01234567 --quantity=2

14.6.4. Manually Adding a New Subscription

In certain situations, new product subscriptions can be added by uploading the X.509 entitlements certificate directly rather than polling the subscription service. For example, consumers which are offline must have subscriptions manually added because they cannot connect to the subscription service directly.
  1. Retrieve the certificate information for the consumer from the Customer Portal.
    1. Open the Subscriptions tab in the Customer Portal, and select the Overview item under the Certificate-Based Management area.
    2. In the summary of consumers, click the name of the offline consumer.
    3. If necessary, assign the subscriptions to the consumer.
    4. Open the Applied Subscriptions tab.
    5. Click the Download All Certificates button. This exports all of the entitlements certificates, for each product, to a single .zip file. Save the file to some kind of portable media, like a flash drive.
      To download individual entitlement certificates, click the Download link on the row for the subscription.
  2. Copy the certificates over to the consumer machine.
  3. If all certificates were downloaded in an archive file, then there are multiple archives in the downloaded certificates.zip file. Unzip the directories until the PEM files for the subscription certificates are available.
  4. Import the certificates.
    This can be done from the command line using the import command:
    # subscription-manager import --certificate=/tmp/export/entitlement_certificates/596576341785244687.pem --certificate=/tmp/export/entitlement_certificates/3195996649750311162.pem
    Successfully imported certificate 596576341785244687.pem
    Successfully imported certificate 3195996649750311162.pem
    This can also be performed through the Subscription Manager GUI:
    1. Launch the Red Hat Subscription Manager GUI. For example:
      subscription-manager-gui
    2. In the Tools area, click the Import Certificate button.
    3. Click the file folder icon at the right of the field to navigate to the .pem file of the product certificate.
    4. Click the Import Certificate button.
The consumer is then entitled for all of the subscription that were uploaded.

14.7. Redeeming Subscriptions on a Machine

Systems can be set up with pre-existing subscriptions already available to that system. For some systems which were purchased through third-party vendors, a subscription to Red Hat products is included with the purchase of the machine. Companies using the Subscription Asset Manager can allocate subscriptions to their own systems by creating activation keys which are used to claim those assigned subscriptions.
Red Hat Subscription Manager pulls information about the system hardware and the BIOS into the system facts to recognize the hardware vendor. If the vendor and BIOS information matches a certain configuration, then the subscription can be redeemed, which will allow the system to be automatically subscribed to the entitlements purchased with the machine.
This diverges from the normal subscription process by adding an extra step:
  1. The machine is registered first (Abschnitt 14.4, „Registering, Unregistering, and Reregistering a System“). This can be done as normal or the activation keys can be submitted with command-line registrations.
  2. The subscriptions are redeemed using the given activation keys.
  3. The system is then subscribed to its subscriptions (Abschnitt 14.6, „Handling Subscriptions“).

Anmerkung

Activation keys may be generated by a hardware vendor (external to your organization). Activation keys may also be generated using the Subscription Asset Manager, which is a local subscription service, which is described in the Subscription Asset Manager documentation and Abschnitt 14.12, „Working with Subscription Asset Manager“.

14.7.1. Redeeming Subscriptions through the GUI

The Activate Subscription Button

If the machine does not have any subscriptions to be redeemed, then the Activate Subscription button is not there.
  1. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  2. At the top of the main window, click the Activate Subscription button.
  3. In the pop-up window, enter the email address to send the notification to when the redemption is complete.
  4. Click the Activate button.
It can take up to ten minutes for the confirmation email to arrive.

14.7.2. Redeeming Subscriptions on a Machine through the Command Line

The machine subscriptions are redeemed by running the redeem command, with an email address to send the redemption email to when the process is complete.
# subscription-manager redeem --email=jsmith@example.com
In a multi-organization environment, it is also necessary to specify the organization which issued the activation keys. For example:
# subscription-manager redeem --email=jsmith@example.com --org="IT Dept"

Anmerkung

The machine must be registered first so that the subscription service can properly identify the system and its subscriptions.

14.8. Viewing Available and Used Subscriptions

To manage subscriptions, administrators need to know both what subscriptions a system is currently consuming and what subscriptions are available to the system.

14.8.1. Viewing Subscriptions in the GUI

The Red Hat Subscription Manager tools give a more detailed view of subscriptions and entitlements than is available through the global tools of the Customer Portal. Three tabs summarize each of the subscriptions and products for the specific machine: installed products (with subscriptions), subscribed entitlements, and available subscriptions.
These summaries are always displayed in the Red Hat Subscription Manager UI.
Subscribed Entitlements
The My Subscriptions area shows all of the current entitlements that the system is subscribed to.
My Subscriptions Tab
Abbildung 14.14. My Subscriptions Tab

Available Subscriptions
The All Available Subscriptions area shows all of the subscriptions that are available to the system. The default displays only entitlements that are compatible with the hardware, but these can be filtered to show entitlements corresponding to other installed programs, only subscriptions that have not been installed, and subscriptions based on date.
All Available Subscriptions Tab
Abbildung 14.15. All Available Subscriptions Tab

The filters dynamically search for available entitlements. Subscriptions can be filtered by their active date and by their name. The checkboxes provide more fine-grained filtering:
  • match my system shows only subscriptions which match the system architecture.
  • match my installed products shows subscriptions which work with currently installed products on the system.
  • have no overlap with existing subscriptions excludes subscriptions with duplicate products. If a system is already subscribed to an entitlement for a specific product or if multiple entitlements supply the same product, then the subscription service filters those subscriptions and shows only the best fit.
My Installed Software
The My Installed Software area shows the currently installed products on the system, along with their subscription status. This doesn't allow administrators to install software, only to view installed software.
My Installed Software Tab
Abbildung 14.16. My Installed Software Tab

14.8.2. Listing Subscriptions with the Command Line

As with the three tabs in the UI, there are three different ways to use the list command to display different areas of the subscriptions and products on the system.
Tabelle 14.5. subscription-manager list Options
Option Description
--installed (or nothing) Lists all of the installed and subscribed product on the system. If no option is given with list, it is the same as using the --installed argument.
--consumed Lists all of the subscriptions allocated to the system.
--available [--all] Using --available alone lists all of the compatible, active subscriptions for the system. Using --available --all lists all options, even ones not compatible with the system or with no more available quantities.
--ondate=YYYY-MM-DD Shows subscriptions which are active and available on the specified date. This is only used with the --available option. If this is not used, then the command uses the current date.
--installed Lists all of the products that are installed on the system (and whether they have a subscription) and it lists all of the product subscriptions which are assigned to the system (and whether those products are installed).

The list command shows all of the subscriptions that are currently allocated to the system by using the --consumed option.
[root@server1 ~]# subscription-manager list --consumed

+-------------------------------------------+
    Consumed Product Subscriptions
+-------------------------------------------+


ProductName:        	Red Hat Enterprise Linux Server
ContractNumber:     	1458961
SerialNumber:       	171286550006020205
Active:             	True
Begins:             	2009-01-01
Expires:            	2011-12-31
The list command shows all of the subscriptions that are compatible with and available to the system using the --available option. To include every subscription the organization has — both the ones that are compatible with the system and others for other platforms — use the --all option with the --available. The --ondate option shows only subscriptions which are active on that date, based on their activation and expiry dates.
[root@server1 ~]# subscription-manager list --available --all

+-------------------------------------------+
    Available Subscriptions
+-------------------------------------------+


ProductName:            RHEL for Physical Servers
ProductId:              MKT-rhel-server
PoolId:                 ff8080812bc382e3012bc3845ca000cb
Quantity:               10
Expires:                2011-09-20


ProductName:            RHEL Workstation
ProductId:              MKT-rhel-workstation-mkt
PoolId:                 5e09a31f95885cc4
Quantity:               10
Expires:                2011-09-20

[snip]
The --installed option correlates the products that are actually installed on the system (and their subscription status) and the products which could be installed on the system based on the assigned subscriptions (and whether those products are installed).
[root@server1 ~]# subscription-manager list --installed

+-------------------------------------------+
    Installed Product Status
+-------------------------------------------+
ProductName:         Red Hat Enterprise Linux
Status:              Not Subscribed
Expires:
Subscription:
ContractNumber:
AccountNumber:


ProductName:         Awesome OS Server
Status:              Not Installed
Expires:             2012-02-20
Subscription:        54129829316535230
ContractNumber:      39
AccountNumber:       12331131231

14.8.3. Viewing Subscriptions Used in Both RHN Classic and Certificate-based Red Hat Network

Administrators need to have a sense of all of the subscriptions allocated for their organization, altogether, regardless of whether the system is managed in RHN Classic or Certificate-based Red Hat Network. The Customer Portal provides a way of looking at the total consumed subscriptions.
In the Subscriptions Overview page, the Subscription Utilization area at the top gives the current count for every active subscription for the entire organization, and a total count of every used subscription, regardless of whether it is used in RHN Classic or Certificate-based Red Hat Network. These numbers are updated whenever the subscription count changes in the subscription server. (The subsequent Certificate-based Red Hat Network and RHN Classic sections gives usage subcounts based on system which are registered to that specific subscription service.)
Total Counts of Subscriptions for All Subscription Services
Abbildung 14.17. Total Counts of Subscriptions for All Subscription Services

NOTE

RHN Classic is provided for legacy systems. Red Hat Enterprise Linux 5.7 and 6.1 and later systems should use Certificate-based Red Hat Network to manage subscriptions for systems.

14.9. Working with Subscription yum Repos

As Abschnitt 14.1.4, „Subscription and Content Architecture“ says, Red Hat Subscription Manager works with package management tools like yum. Subscription Manager has its own yum plug-ins: product-id for subscription-related information for products and subscription-manager which is used for the content repositories.
As systems are subscribed to products, the associated content repositories (identified in the entitlement certificate) are made available to the system. The content repositories are based on the product and on the content delivery network, defined in the baseurl parameter of the rhsm.conf file.
A subscription may include access to optional content channels along with the default channels. This optional channels must be enabled before the packages in them can be installed (even if the system is fully entitled to the products in those channels).
  1. List all available repos for the system, including disabled repos.
    [root@server ~]# yum repolist all
    repo id                      repo name                           status
    rhel-5-server                Red Hat Enterprise Linux 5Server -  enabled:    1,749
    rhel-5-server-beta           Red Hat Enterprise Linux 5Server Be enabled:      869
    rhel-5-server-optional-rpms  Red Hat Enterprise Linux 5Server Op disabled
    rhel-5-server-supplementary  Red Hat Enterprise Linux 5Server Su disabled
    The optional and supplementary channels are named rhel-5-server-optional-rpms and rhel-5-server-supplementary, respectively.
  2. The repositories can be enabled using the yum-config-manager command:
    [root@server ~]# yum-config-manager --enable rhel-5-server-optional-rpms
Alternatively, simply specify the optional or supplementary repository when installing a package with yum. This uses the --enablerepo repo_name option. For example:
# yum install rubygems --enablerepo=rhel-5-server-optional-rpms
Loaded plugins: product-id, refresh-packagekit, subscription-manager
Updating Red Hat repositories.
....

14.10. Responding to Subscription Notifications

The Red Hat Subscription Manager provides a series of log and UI messages that indicate any changes to the valid certificates of any installed products for a system. In the Subscription Manager GUI, the status of the system entitlements is color-coded, where green means all products are fully subscribed, yellow means that some products may not be subscribed but updates are still in effect, and red means that updates are disabled.
Color-Coded Status Views
Abbildung 14.18. Color-Coded Status Views

The command-line tools also indicate that status of the machine. The green-yellow-red codes translate to text status messages of subscribed, partially subscribed, and expired/not subscribed, respectively.
[root@server ~]# subscription-manager list
+-------------------------------------------+
    Installed Product Status
+-------------------------------------------+

ProductName:            Red Hat Enterprise Linux Server
Status: Not Subscribed
Expires:
SerialNumber:
ContractNumber:
AccountNumber:
Whenever there is a warning about subscription changes, a small icon appears in the top menu bar, similar to a fuel gauge.
Subscription Notification Icon
Abbildung 14.19. Subscription Notification Icon

As any installed product nears the expiration date of the subscription, the Subscription Manager daemon will issue a warning. A similar message is given when the system has products without a valid certificate, meaning either the system is not subscribed to a subscription that entitles that product or the product is installed past the expiration of the subscription. Clicking the Manage My Subscriptions... button in the subscription notification window opens the Red Hat Subscription Manager GUI to view and update subscriptions.
Subscription Warning Message
Abbildung 14.20. Subscription Warning Message

When the Subscription Manager UI opens, whether it was opened through a notification or just opened normally, there is a box in the upper left corner that shows the number of products that lack a valid certificate. The easiest way to allocate subscriptions which match invalidated products is to click the Update Certificates button.
Update Certificates Button
Abbildung 14.21. Update Certificates Button

The Subscription Assistant pop-up window shows a targeted list of available subscriptions that apply to the specific products that do not have valid certificates (assuming subscriptions are available).
Subscription Assistant
Abbildung 14.22. Subscription Assistant

Alternatively, you can respond to entitlements notifications by managing subscriptions generally:

14.11. Healing Subscriptions

Subscription Manager can monitor all of the active entitlements for a system. Along with passively warning that a subscription is close to expiration (Abschnitt 14.10, „Responding to Subscription Notifications“), Subscription Manager can be configured to re-subscribe to subscriptions, automatically and actively, as one nears its expiry. This is system healing.
System healing prevents a system from having unentitled products as long as any valid subscription is available for it.
System healing is configured as part of the Subscription Manager daemon, rhsmcertd. This daemon checks the certificate validity dates daily. If a subscription is within 24 hours of expiring, then Subscription Manager will check for any available compatible subscriptions and automatically re-subscribes the system, much like auto-subscribing during registration.

14.11.1. Enabling Healing

System healing is disabled by default. It can be enabled by manually adding the autoheal parameter to the Subscription Manager configuration.
  1. Open the Subscription Manager configuration file.
    vim /etc/rhsm/rhsm.conf
  2. In the [rhsmcertd] area, add the autoheal line, and set the value to true.
    [rhsmcertd]
    certFrequency = 240
    healFrequency = 1440
    autoheal = true
The configuration can also be updated using the config command:
[root@server1 ~]# subscription-manager config --rhsmcertd.autoheal=true

14.11.2. Changing the Healing Check Frequency

NOTE

Healing cannot be disabled by changing the time interval. Setting the healFrequency parameter to zero means that Subscription Manager simply uses the default time setting.
  1. Open the Subscription Manager configuration file:
    # vim /etc/rhsm/rhsm.conf
  2. In the [rhsmcertd] section, set the healFrequency parameter to the time, in minutes, to check for changed subscriptions.
    [rhsmcertd]
    certFrequency = 240
    healFrequency = 1440
  3. Restart the rhsmcertd daemon to reload the configuration.
    # service rhsmcertd start

14.12. Working with Subscription Asset Manager

Subscription Asset Manager works with the local Subscription Manager tools, but the local Subscription Manager must be configured to work with the given Subscription Asset Manager service.
This section covers the procedures for setting up Subscription Manager to work with Subscription Asset Manager.
The Subscription Asset Manager documentation details all the tasks for managing the infrastructure:
  • Creating organizations and environments.
  • Creating activation keys.
  • Managing subscription manifests from Red Hat.
  • Viewing notification and system reports.

14.12.1. Configuring Subscription Manager to Work with Subscription Asset Manager

Subscription Asset Manager performs two backend management functions:
  • Allocate subscriptions as a subscription service
  • Work as a real-time proxy for the content delivery network
That means that the local Subscription Manager client needs to be configured to use Subscription Asset Manager as its subcription service and content provider, rather than using the default Red Hat Network (hosted) configuration.
The subscription service URL is configured in the hostname parameter in the [server] area in the rhsm.conf configuration file. The content delivery network URL is configured in the baseurl parameter in the [rhsm] area. These values can be reset using the config command. For example:
[root@server1 ~]# subscription-manager config --server.hostname=sam.example.com --rhsm.baseurl=sam.example.com
Changing the Subscription Manager configuration with the config command is covered in Abschnitt 14.14.2, „Using the config Command“.

14.12.2. Viewing Organization Information

Infrastructures that have their own local content and subscription services, such as Subscription Asset Manager, can define groups that organize their systems. The primary division is organizations, which create independent units. The systems and users in one organization are invisible to the systems and users in another organization. Organizations can be subdivided into environments, which provide associations with content repositories and allowed products, versions, and content sets. A system can belong to multiple environments.
Organizations, environments, and repositories are created and configured in the service application, such as Subscription Asset Manager. However, the organization structure for a system or for a user account can be viewed using the Subscription Manager command-line tools. The orgs, environments, and repos commands list the organization, environment, and repository information for the system, depending on the organization and environments it belongs to.
For example:
[root@server1 ~]# subscription-manager orgs --username=jsmith --password=secret
+-------------------------------------------+
           admin Organizations
+-------------------------------------------+

OrgName:         Admin Owner
OrgKey:         admin

OrgName:         Dev East
OrgKey:         deveast

OrgName:         Dev West
OrgKey:         devwest


[root@server1 ~]# subscription-manager environments --username=jsmith --password=secret --org=admin
+-------------------------------------------+
           Environments
+-------------------------------------------+

Name:                        Locker
Description:                 None

Name:                        Dev
Description:

Name:                        Prod
Description:


[root@server1 ~]# subscription-manager repos --list
+----------------------------------------------------------+
     Entitled Repositories in /etc/yum.repos.d/redhat.repo
+----------------------------------------------------------+

RepoName:                    never-enabled-content
RepoId:                      never-enabled-content
RepoUrl:                     https://content.example.com/repos/optional
Enabled:                     0


RepoName:                    always-enabled-content
RepoId:                      always-enabled-content
RepoUrl:                     https://content.example.com/repos/dev
Enabled:                     1


RepoName:                    content
RepoId:                      content-label
RepoUrl:                     https://content.example.com/repos/prod
Enabled:                     1

14.13. Updating Entitlements Certificates

An entitlement certificate represents a subscription that has been consumed by a given system. It includes all of the products which are included in the subscription for service and support, the subscription's start and end dates, and the number of entitlements included for each product. An entitlement certificate does not list products that are currently installed on the system; rather, it lists all of that products that are available to the system.
The entitlement certificate is an X.509 certificate and is stored in a base 64-encoded blob in a .pem file.
When a subscription expires or is changed, then the entitlement certificate must be updated to account for the changes. The Red Hat Subscription Manager polls the subscription service periodically to check for updated entitlement certificates; this can also be updated immediately or pulled down from the Customer Portal. The entitlement certificates are updated by revoking the previous entitlement certificate and generating a new one to replace it.

14.13.1. Updating Entitlement Certificates

  1. Open the Red Hat Customer Portal.
    https://access.redhat.com/
  2. Click the Subscriptions tab to open the subscriptions menu, and select the Consumers List option under Certificate-Based Management.
  3. Click the system name in the list of consumers.
  4. Open the Applied Subscriptions tab for the list of all active, assigned subscriptions for the consumer.
  5. Click the Download All Certificates button above the list of subscriptions. If there is only one subscription, then click the Download button by the certificate.
    To retrieve an individual entitlement certificate, click the Download link in the subscription row.
  6. If all entitlement certificates were downloaded in an archive file, then there are multiple archives in the downloaded certificates.zip file. Unzip the directories until the PEM files for the entitlement certificates are available.
  7. Import the certificate PEM file. This can be done using the Import Certificates button in the Subscription Manager GUI or using the import command:
    # subscription-manager import --certificate=/tmp/export/entitlement_certificates/596576341785244687.pem --certificate=/tmp/export/entitlement_certificates/3195996649750311162.pem
    Successfully imported certificate 596576341785244687.pem
    Successfully imported certificate 3195996649750311162.pem

14.13.2. Updating Subscription Information

The refresh command updates all of the subscription information that is available to the consumer. This removes expired subscriptions and adds new subscriptions to the list. This does not subscribe the machine, but it does pull in the newest data for administrators to use.
[root@server1 ~]# subscription-manager refresh

14.14. Configuring the Subscription Service

By default, Red Hat Subscription Manager (both GUI and CLI) talk to the subscription service and the Customer Portal for their subscription services and content delivery, respectively. Red Hat Subscription Manager can be configured to use different content servers or subscription services. Other aspects of the Red Hat Subscription Manager — like the locations to look for system and product certificates or the system information used by Red Hat Subscription Manager to identify compatible entitlements — can also be customized to fit the network environment.

14.14.1. Red Hat Subscription Manager Configuration Files

The primary configuration file for Red Hat Subscription Manager, both the GUI and CLI tools, is the rhsm.conf configuration file. There are other support files that either influence the Red Hat Subscription Manager service or can help administrators better use the Subscription Manager.

14.14.1.1. All Files Used by Red Hat Subscription Manager

All of the files related to the configuration of Red Hat Subscription Manager are used by both the GUI and CLI; there's no separate configuration.
Tabelle 14.6. Red Hat Subscription Manager Files and Directories
File or Directory Description
/etc/rhsm The primary Red Hat Subscription Manager configuration directory.
/etc/rhsm/rhsm.conf The Red Hat Subscription Manager configuration file. This is used by both the GUI and the CLI.
/etc/rhsm/facts Any user-defined JSON files that override or add system facts to determine entitlement compatibility. Any facts files must end in .facts.
/var/lib/rhsm/cache/installed_products.json A master list of installed products, which is sent by Subscription Manager to a hosted content service, such as Subscription Asset Manager.
/var/lib/rhsm/facts/facts.facts The default system facts filed, gathered by the Subscription Manager.
/var/lib/rhsm/packages/ The package profile cache (a list of installed products) which is gathered and periodically updated by the Subscription Manager.
/var/log/rhsm The Red Hat Subscription Manager log directory.
/var/log/rhsm/rhsm.log The log for the Red Hat Subscription Manager tools.
/var/log/rhsm/rhsmcertd.log The log for the Red Hat Subscription Manager daemon, rhsmcertd.
/etc/pki/consumer The directory which contains the identity certificates used by the system to identify itself to the subscription service.
/etc/pki/consumer/cert.pem The base-64 consumer identity certificate file.
/etc/pki/consumer/key.pem The base-64 consumer identity key file.
/etc/pki/entitlement The directory which contains the entitlement certificates for the available subscriptions.
/etc/pki/product/product_serial#.pem The product certificates for installed software products.
/var/run/subsys/rhsm Runtime files for Red Hat Subscription Manager
/etc/init.d/rhsmcertd The subscription certificate daemon.
/etc/cron.daily/rhsm-complianced and /usr/libexec/rhsm-complianced Files to run daily checks and notifications for subscription validity.
/etc/yum/pluginconf.d/rhsmplugin.conf The configuration file to include the Red Hat Subscription Manager plug-in in the yum configuration.
/usr/share/rhsm All of the Python and script files used by both Red Hat Subscription Manager tool to perform subscription tasks.
/usr/share/rhsm/gui All of the Python script and image files used to render the Red Hat Subscription Manager GUI.

14.14.1.2. About the rhsm.conf File

The main configuration file for the Subscription Manager is rhsm.conf. This file configures several important aspects of how Red Hat Subscription Manager interacts with both entitlements and content services:
  • The subscription service connection information, including the server host and port
  • The content service to use, in the form of a web address
  • The location of all of the different certificates used by the subscription service, including CA certificates for SSL authentication, identity certificates for the system, and entitlement and product certificates
The rhsm.conf file is divided into three sections. Two major sections defined the subscription service ([server]) and content and product delivery ([rhsm]). The third section relates to the rhsmcertd daemon. Each assertion is a simple attribute= value pair. Any of the default values can be edited; all possible attributes are present and active in the default rhsm.conf file.
Beispiel 14.9. Default rhsm.conf File
# Red Hat Subscription Manager Configuration File:

# Unified Entitlement Platform Configuration
[server]
# Server hostname:
hostname = subscription.rhn.redhat.com

# Server prefix:
prefix = /subscription

# Server port:
port = 443

# Set to 1 to disable certificate validation:
insecure = 0

# Set the depth of certs which should be checked
# when validating a certificate
ssl_verify_depth = 3

# Server CA certificate location:
ca_cert_dir = /etc/rhsm/ca/

# an http proxy server to use
proxy_hostname =

# port for http proxy server
proxy_port =

# user name for authenticating to an http proxy, if needed
proxy_user =

# password for basic http proxy auth, if needed
proxy_password =

[rhsm]
# Content base URL:
baseurl= https://cdn.redhat.com

# Default CA cert to use when generating yum repo configs:
repo_ca_cert = %(ca_cert_dir)sredhat-uep.pem

# Where the certificates should be stored
productCertDir = /etc/pki/product
entitlementCertDir = /etc/pki/entitlement
consumerCertDir = /etc/pki/consumer

[rhsmcertd]
# Frequency of certificate refresh (in minutes):
certFrequency = 240
# Frequency of autoheal check (1440 min = 1 day):
healFrequency = 1440

Tabelle 14.7. rhsm.conf Parameters
Parameter Description Default Value
[server] Parameters
hostname Gives the IP address or fully-qualified domain name of the subscription service. subscription.rhn.redhat.com
prefix Gives the directory, in the URL, to use to connect to the subscription service. /subscription
port Gives the port to use to connect to the subscription service. 443
insecure Sets whether to use a secure (0) or insecure (1) connection for connections between the Subscription Manager clients and the subscription service. 0
ssl_verify_depth Sets how far back in the certificate chain to verify the certificate. 3
proxy_hostname Gives the hostname of the proxy server. This is required.
proxy_port Gives the port of the proxy server. This is required.
proxy_user Gives the user account to use to access the proxy server. This may not be required, depending on the proxy server configuration.
proxy_password Gives the password credentials to access the proxy server. This may not be required, depending on the proxy server configuration.
ca_cert_dir Gives the location for the CA certificate for the CA which issued the subscription service's certificates. This allows the client to identify and trust the subscription service for authentication for establishing an SSL connection. /etc/rhsm/ca
[rhsm] Parameters
baseurl Gives the full URL to access the content delivery system. https://cdn.redhat.com
repo_ca_cert Identifies the default CA certificate to use to set the yum repo configuration. %(ca_cert_dir)sredhat-uep.pem
showIncompatiblePools
Sets whether to display subscription pools which are not compatible with the system's architecture but which have been purchased by an organization. By default, Subscription Manager only displays subscriptions which are compatible with, and therefore available to, the system.
This parameter only applies to the Subscription Manager GUI. Incompatible subscriptions can be displayed in the CLI by using the --all option with the list command.
0
productCertDir Sets the root directory where the product certificates are stored and can be accessed by Subscription Manager. /etc/pki/product
consumerCertDir Sets the directory where the identity certificate for the system is stored and can be accessed by Subscription Manager. /etc/pki/consumer
entitlementCertDir Sets the directory where the entitlement certificates for the system are stored and can be accessed by Subscription Manager. Each subscription has its own entitlement certificate. /etc/pki/entitlement
[rhsmcertd] Parameters
certFrequency Sets the interval, in minutes, to check and update entitlement certificates used by Subscription Manager. 240
healFrequency Sets the interval, in minutes, to check for change subscriptions and installed products and to allocate subscriptions, as necessary, to maintain subscription status for all products. 240

14.14.2. Using the config Command

subscription-manager has a subcommand that can change the rhsm.conf configuration file. Almost all of the connection information used by Subscription Manager to access the subscription server, content server, and any proxies is set in the configuration file, as well as general configuration parameters like the frequency Subscription Manager checks for entitlements updates. There are major divisions in the rhsm.conf file, such as [server] which is used to configure the subscription server. When changing the Subscription Manager configuration, the settings are identified with the format section.parameter and then the new value. For example:
server.hostname=newsubscription.example.com
When changing the value for a parameter, the parameter is passed as an argument to the config command:
[root@server1 ~]# subscription-manager config --section.parameter=newValue
For example, to change the hostname of the subscription service:
[root@server1 ~]# subscription-manager config --server.hostname=subscription.example.com
All of the rhsm.conf file parameters are listed in Tabelle 14.7, „rhsm.conf Parameters“. This is most commonly used to change connection settings:
  • server.hostname (subscription server)
  • server.proxy
  • server.proxy_port
  • server.proxy_user
  • server.proxy_password
  • rhsm.baseurl (content server)
  • rhsm.certFrequency
The config command also has a --remove option. This deletes the the current value for the parameter without supplying a new parameter. A blank value tells Subscription Manager to use any default values that are set for that parameter rather than a user-defined value. For example:
[root@server1 ~]# subscription-manager config --remove=rhsm.certFrequency

The default value for rhsm.certFrequency will now be used.
If a value does not have a default, then the command returns simply that the value has been removed:
[root@server1 ~]# subscription-manager config --remove=server.proxy

You have removed the value in section server for parameter proxy.

14.14.3. Using an HTTP Proxy

Some network environments may only allow external Internet access or access to content servers by going through an HTTP proxy.

14.14.3.1. Configuring an HTTP Proxy for GUI Use

The Red Hat Subscription Manager GUI can be configured to use an HTTP proxy for all of its connections to the subscription service. (This is also an advanced configuration option at firstboot.) To configure the proxy:
  1. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  2. Click the Proxy Configuration button at the top of the window in the Tools area.
  3. Check the ...Connect to Red Hat Network via an HTTP Proxy checkbox and enter the server location, in the format hostname:port.
  4. If the proxy requires a username/password to allow access, then also select the User authentication checkbox and fill in the user credentials.
  5. The configuration is automatically applied, so when the proxy is configured, simply close the window.

14.14.3.2. Configuring HTTP Proxy in the rhsm.conf File

The HTTP proxy settings can be configured in the rhsm.conf file; this is the same as configuring it in the Subscription Manager GUI. The proxy configuration is stored and used for every connection between the subscription service and the local system.
  1. Open the Subscription Manager configuration file.
    vim /etc/rhsm/rhsm.conf
  2. Change the settings in the [server] section that relate to the HTTP proxy. All parameters are described in Tabelle 14.7, „rhsm.conf Parameters“. There are four parameters directly related to the proxy:
    • proxy_hostname for the IP address or fully-qualified domain name of the proxy server; this is required.

      Note

      Leaving the proxy_hostname argument blank means that no HTTP proxy is used.
    • proxy_port for the proxy server port.
    • proxy_user for the user account to connect to the proxy; this may not be required, depending on the proxy server's configuration.
    • proxy_password for the password for the user account to connect to the proxy; this may not be required, depending on the proxy server's configuration.
    [server]
    
    # an http proxy server to use
    proxy_hostname = proxy.example.com
    
    # port for http proxy server
    proxy_port = 443
    
    # user name for authenticating to an http proxy, if needed
    proxy_user =
    
    # password for basic http proxy auth, if needed
    proxy_password =

14.14.3.3. Passing HTTP Proxy Information with subscription-manager Commands

Rather than using a permanently-configured HTTP proxy, as the GUI does, HTTP proxy information can be passed with a command invocations. The arguments listed in Tabelle 14.8, „Proxy Arguments“ are available to every command used with subscription-manager.
Tabelle 14.8. Proxy Arguments
Argument Description Required for a Proxy Connection?
--proxy Gives the proxy server to connect to, in the format hostname:port. Yes
--proxyuser Gives the username to use to authenticate. This is only required if user authentication is required. No
--proxypass Gives the password to use with the user account. This is only required if user authentication is required. No

The proxy information can be passed with any subscription-manager operation. For example:
[root@server1 ~]# subscription-manager subscribe --pool=ff8080812bc382e3012bc3845ca000cb --proxy=proxy.example.com:8443 --proxyuser=jsmith --proxypass=secret

14.14.4. Changing the Subscription Server

The Subscription Manager usually connects to the subscription service, and the public server is configured in the rhsm.conf file. The subscription service connection settings are in the [server] section of the configuration file.
  1. Open the Subscription Manager configuration file.
    vim /etc/rhsm/rhsm.conf
  2. Change the settings in the [server] section that relate to the subscription service connection. All parameters are described in Tabelle 14.7, „rhsm.conf Parameters“. There are three parameters directly related to the connection:
    • hostname for the IP address or fully-qualified domain name of the machine
    • prefix for the subscription service directory
    • port for the subscription service port
    [server]
    hostname=entitlements.server.example.com
    prefix=/candlepin
    port=8443

14.14.5. Configuring Red Hat Subscription Manager to Use a Local Content Provider

By default, the Subscription Manager is configured to use Red Hat's content delivery service, which is available at https://cdn.redhat.com. This can be changed to use a different external content delivery system or to use an organization-managed content system, such as Subscription Asset Manager.
  1. Open the Subscription Manager configuration file.
    vim /etc/rhsm/rhsm.conf
  2. Change the baseurl directive in the [rhsm] section. This is the full URL to the service.
    [rhsm]
    # Content base URL:
    baseurl= http://content.example.com/content

14.14.6. Managing Secure Connections to the Subscription Server

Red Hat Subscription Manager assumes, by default, that the subscription clients connect to the subscription service using a secure (SSL) connection. This requires that the CA certificate of the subscription service be downloaded and available locally for the client and that the appropriate connections be configured.
  1. Open the Subscription Manager configuration file.
    vim /etc/rhsm/rhsm.conf
  2. Change the settings in the [server] section that relate to a secure connection. All parameters are described in Tabelle 14.7, „rhsm.conf Parameters“. There are three parameters directly related to the connection:
    • insecure to set whether to use a secure (0) or insecure (1) connection
    • ca_cert_dir for the directory location for the CA certificate for authentication and verification
    • port for the subscription service port; this should be an SSL port if a secure connection is required
    [server]
    port=8443
    insecure = 1
    ca_cert = /etc/rhsm/ca

14.14.7. Starting and Stopping the Subscription Service

The Red Hat Subscription Manager daemon, rhsmcertd, runs as a service on the system. The daemon, by default, starts with the system, and it can be started, stopped, or checked with the service command.
service rhsmcertd status
rhsmcertd (pid 13084) is running...
Red Hat Enterprise Linux has a tool called chkconfig which manages the automatic startup and shutdown settings for each process on the server, described in Abschnitt 17.5, „chkconfig. When a system reboots, some services can be automatically restarted. chkconfig also defines startup settings for different run levels of the server.
The Red Hat Subscription Manager service, which runs routinely to check for changes in the entitlements for an organization, can be controlled by chkconfig. By default, the Red Hat Subscription Manager daemon, rhsmcertd, is configured to run at levels 3, 4, and 5, so that the service is started automatically when the server reboots.
The run level settings can be reset using chkconfig. For example, to enable run level 2:
chkconfig --level 2345 rhsmcertd on
To remove the rhsmcertd from the start list, change the run level settings off:
chkconfig --level 2345 rhsmcertd off
Red Hat Enterprise Linux also has a GUI console that can manage the service and chkconfig settings.
  1. In the main menu, select the System link and open the Administration submenu.
  2. Open the Services link.

    Note

    The system-config-services package must be installed for the Services wizard to be available.
  3. Scroll to the rhsmcertd item in the list of services on the left, and then edit the service as desired.

14.14.8. Checking Logs

There are two log files maintained for Red Hat Subscription Manager in the /var/log/rhsm directory:
  • rhsm.log shows every invocation and result of running the Subscription Manager GUI or CLI
  • rhsmcertd.log shows every time a new certificate is generated, which happens on a schedule defined by the certFrequency parameter in the rhsm.conf file.
The rhsm.log log contains the sequence of every Python call for every operation invoked through the Subscription Manager tools. Each entry has this format:
YYYY-MM-DD HH:MM:SS,process_id [MESSAGE_TYPE] call python_script response
The response in the log entry can be very complex, spanning multiple lines, or relatively simply, with just a status code.
Because each log entry in rhsm.log relates to the Python script or function that was called, there can be multiple log entries for a single operation.
Beispiel 14.10. rhsm.log Entry
2010-10-01 17:27:57,874 [INFO] _request() @connection.py:97 - status code: 200
2010-10-01 17:27:57,875 [INFO] perform() @certlib.py:132 - updated:
Total updates: 0
Found (local) serial# []
Expected (UEP) serial# []
Added (new)
  <NONE>
Deleted (rogue):
  <NONE>
Expired (not deleted):
  <NONE>
Expired (deleted):
  <NONE>
2010-10-01 17:27:57,878 [INFO] __init__() @connection.py:193 - Using certificate authentication: key = /etc/pki/consumer/key.pem, cert = /etc/pki/consumer/cert.pem, ca = /etc/pki/CA/candlepin.pem, insecure = True
2010-10-01 17:27:57,878 [INFO] __init__() @connection.py:196 - Connection Established: host: candlepin1.devlab.phx1.redhat.com, port: 443, handler: /candlepin

The entries in the rhsmcertd.log file are much simpler. The log only records when the rhsmcertd daemon starts or stops and every time a certificate is updated.
Beispiel 14.11. rhsmcertd.log Entry
Fri Oct  1 13:27:44 2010: started: interval = 240 minutes
Fri Oct  1 13:27:50 2010: certificates updated

14.14.9. Showing and Hiding Incompatible Subscriptions

The entitlements that are made available to a consumer are filtered, by default, according to whether the architecture for the product matches the architecture of the system. This is compatibility. The Red Hat Subscription Manager can be configured to display even incompatible entitlements.
When running the command-line tools, the incompatible facts can be displayed simply by using the --all option:
[root@server1 ~]# subscription-manager list --available --all
To have the incompatible subscriptions displayed in the GUI and through the command-line by default, edit the rhsm.conf configuration file.
  1. Open the Subscription Manager configuration file.
    vim /etc/rhsm/rhsm.conf
  2. Change the showIncompatiblePools directive in the [rhsm] section. A value of 0 shows only compatible entitlements.
    [rhsm]
    # Content base URL:
    showIncompatiblePools = 1

14.14.10. Checking and Adding System Facts

Entitlements are available to a system based on whether the software is compatible with the system's architecture. For example, there are different products and subscriptions for 32-bit and 64-bit platforms. Red Hat Subscription Manager determines compatibility by collecting a range of facts about the system's hardware and architecture and then comparing it with all available entitlements.
The collected facts can be viewed, updated to acknowledge a hardware or configuration change, or overridden to force compatibility in the specified areas.
The system facts are very similar to the information in /etc/redhat-release or /etc/sysconfig. In both the Red Hat Subscription Manager GUI and CLI, the facts are represented as simple attribute: value pairs.

Tip

Updating the facts resends the information about the system to the Red Hat subscription service so that it can update the list of subscriptions which match the system architecture. Updating the facts is a very good thing to do after hardware upgrades or other important system changes.

14.14.10.1. Checking Facts from the Red Hat Subscription Manager UI

  1. Launch the Red Hat Subscription Manager GUI. For example:
    subscription-manager-gui
  2. In the Tools at the top of the window, click the View System Facts button.
  3. All of the current facts for the system are listed in the table, broken down into categories. Each category is in a closed list; to reveal all of the facts in that category, click the arrow by the category name.
    To update the facts, click the Update Facts button in the bottom right of the window.

14.14.10.2. Checking Facts with subscription-manager

To simply list the facts, run the facts with the --list option.
[root@server1 ~]# subscription-manager facts --list

cpu.architecture: i686
cpu.core(s)_per_socket: 4
cpu.cpu(s): 4
cpu.cpu_family: 6
cpu.cpu_mhz: 2000.010
cpu.cpu_op-mode(s): 32-bit, 64-bit
cpu.cpu_socket(s): 1
cpu.l1d_cache: 32K
cpu.l1i_cache: 32K
cpu.l2_cache: 6144K
cpu.model: 23
cpu.stepping: 6
cpu.thread(s)_per_core: 1
cpu.vendor_id: GenuineIntel
cpu.virtualization: VT-x
distribution.id: Santiago
distribution.name: Red Hat Enterprise Linux Workstation
distribution.version: 5
dmi.baseboard.manufacturer: IBM
dmi.baseboard.product_name: Server Blade
... [snip] ...
To update the facts after a system change, use the --update option with the facts command.
[root@server1 ~]# subscription-manager facts --update

14.14.10.3. Overriding the Default System Facts

The system facts, as collected, are stored in /var/lib/rhsm/facts/facts.facts. These facts are stored as attribute: value pairs, in a comma-separated list.
{"fact1": "value1","fact2": "value2"}
The primary file is generated and maintained by the Subscription Manager service. However, these values can be overridden to force architecture or platform compatibility (and thereby widening the available compatible subscriptions) by creating additional JSON facts files and dropping them in the /etc/rhsm/facts directory. These JSON files can override existing facts or even add new facts to be used by the subscription service.
Beispiel 14.12. Example Facts Override File
vim /etc/rhsm/facts/my-example.facts

{"uname.machine": "x86","kernel_version": "2.6.32","physical_location": "MTV colo rack 5"}

14.14.11. Regenerating Identity Certificates

To regenerate the consumer's identity certificate (meaning it is revoked and replaced), use the identity command. Although not required, using the --force option will require the username and password and will cause the Subscription Manager to prompt for the credentials if they are not passed in the command:
[root@server1 ~]# subscription-manager identity --regenerate --force
Username: jsmith@example.com
Password:
Identity certificate has been regenerated.

14.14.12. Getting the System UUID

The consumer or system UUID is a unique identifier used in the inventory subscription service. This UUID can be used to re-register the system if there is some kind of corruption or for internal tracking. In the GUI (Abschnitt 14.14.10.1, „Checking Facts from the Red Hat Subscription Manager UI“), this is listed as one of the system facts, under the system category:
From the command-line, use the identity command to return the current UUID. The UUID is the Current identity is value.
[root@server1 ~]# subscription-manager identity
Current identity is: 63701087-f625-4519-8ab2-633bb50cb261
name: server1.example.com
org name: 6340056
org id: 8a85f981302cbaf201302d89931e059a

14.14.13. Viewing Package Profiles

A package profile is the list of installed packages on a system (regardless of its subscription status). Red Hat Subscription Manager maintains a local list of installed packages to track the subscription status of the system. The package profile contains some general information about each package in the list:
  • Package name
  • Package version
  • Epoch
  • Publisher
This package manifest is always visible locally in the My Installed Software tab of the UI or by using the list --installed command with the command-line tools.
The Subscription Manager daemon, rhsmcertd, checks the system periodically — once when it is first registered and then when it runs a refresh operation every four hours — to get the most current list of installed products. When the system is registered and then whenever there is a change to the package list, Subscription Manager sends an updated package profile to the subscription service.
The package profile is stored in a cache file in /var/lib/rhsm/packages/.
Having an updated package profile for a system helps the subscription service identify compatible subscriptions.

14.14.14. Retrieving the Consumer ID, Registration Tokens, and Other Information

Some pieces of information are used frequently when managing entitlements using the subscription-manager script. Information like the consumer ID or subscription pool ID is pulled up and referenced automatically in the Red Hat Subscription Manager UI, but it has to be entered manually in the command line.
Tabelle 14.9, „Locations and Descriptions of Entitlement Data“ lists common information that is used to manage subscriptions, the operations they're used in, and the places to find the data.
Tabelle 14.9. Locations and Descriptions of Entitlement Data
Information Description Operations Used In Find It In ...
Consumer ID A unique identifier for each system that is registered to the subscription service. identity The simplest method is to use the identity command to return the current UUID.
[root@server1 ~]# subscription-manager identity
Current identity is: 63701087-f625-4519-8ab2-633bb50cb261
name: consumer-1.example.com
org name: 6340056
org id: 8a85f981302cbaf201302d89931e059a
The Subject CN element of the identity certificate for the system, /etc/pki/consumer/cert.pem. The UUID can also be returned by using openssl to pretty-print the certificate.
openssl x509 -text -in /etc/pki/consumer/cert.pem

Certificate:
... snip ...
Subject: CN=7d133d55 876f 4f47 83eb 0ee931cb0a97
Pool ID An identifier for a specific set of subscriptions. This set is created when subscriptions are purchased. Whenever a system needs to subscribe to a product, it references a pool ID to identify which purchased set of subscriptions to use. subscribe The PoolID value given for a product when listing available subscriptions. For example:
[root@server1 ~]# subscription-manager list --available
+----------------------+
Available Subscriptions
+----------------------+
ProductName: Red Hat Enterprise Linux, Standard (up to 2 sockets) 3 year
ProductId: MCT0346F3
PoolId: ff8080812bc382e3012bc3845ca000cb
Quantity: 2
Expires: 2011-02-28
Product certificate serial number The identification used for a specific, installed product. A certificate with a unique serial number is generated when a product is installed; this serial number is used to identify that specific product installation when managing subscriptions. unsubscribe The SerialNumber line in the product subscription information. This can be returned by running list --consumed.
[root@server1 ~]# subscription-manager list --consumed

+-----------------------------+
Consumed Product Subscriptions
+-----------------------------+

ProductName: High availability (cluster suite)
ContractNumber: 0
SerialNumber: 11287514358600162
....
Product ID The internal identifier used to identify a type of product. The ProductID value given for a product when listing available subscriptions. For example:
[root@server1 ~]# subscription-manager list --available
+----------------------+
Available Subscriptions
+----------------------+

ProductName: RHEL for Physical Servers
ProductId: MKT-rhel-server
... snip ...

14.15. About Certificates and Managing Entitlements

Part of managing subscriptions requires verifying the identity of everything involved, such as the system, the subscription service, and the available products. The subscription service uses X.509 certificates to handle the identity and authentication aspects of the subscription service. These X.509 certificates also contain the actual data about available subscriptions and installed products.
The first time a system is subscribed to a subscription, it downloads a certificate from the subscription service. The entitlement certificate contains all of the information about products that are available through that subscription. The entitlement certificate is revoked and reissued any time there is a change in the subscriptions for an organization. Once a product is actually installed on a machine, then another certificate is issued to manage the entitlements for the product on the system.
Each certificate issued and used by the Subscription Manager services is a .pem formatted file. This file format stores both keys and certificates in a base-64 blob. For example:
-----BEGIN CERTIFICATE-----
MIIDaTCCAtKgAwIBAgICBZYwDQYJKoZIhvcNAQEFBQAwSzEqMCgGA1UEAxMhY2Fu
ZGxlcGluMS5kZXZsYWIucGh4MS5yZWRoYXQuY29tMQswCQYDVQQGEwJVUzEQMA4G
A1UEBxMHUmFsZWlnaDAeFw0xMDEwMDYxNjMyMDVaFw0xMTEwMDYyMzU5NTlaMC8x
LTArBgNVBAMMJDQ4ODFiZDJmLTg2OGItNDM4Yy1hZjk2LThiMWQyODNkYWZmYzCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKNyLw6+IMtjY03F7Otxj2GL
GTz5VKx1kfWY7q4OD4w+XlBHTkt+2tQV9S+4TFkUZ7XoI80LDL/BONpy/gq5c5cw
yKvjv2gjSS/pihgYNXc5zUOIfSj1vb3fHGHOkzdCcZMyWq1z0N/zaLClp/zP/pcM
og4NTAg2niNPjFYvkQ+oIl16WmQpefM0y0SY7N7oJd2T8dZjOiuLV2cVZLfwjrwG
9UpkT2J03g+n1ZA9q95ibLD5NVOdTy9+2lfRhdDViZaVoFiQXvg86qBHQ0ieENuF
a6bCvGgpTxcBuVXmsnl2+9dnMiwoDqPZp1HB6G2uNmyNe/IvkTOPFJ/ZVbtBTYUC
AwEAAaOB8zCB8DARBglghkgBhvhCAQEEBAMCBaAwCwYDVR0PBAQDAgSwMHsGA1Ud
IwR0MHKAFGiY1N2UtulxcMFy0j6gQGLTyo6CoU+kTTBLMSowKAYDVQQDEyFjYW5k
bGVwaW4xLmRldmxhYi5waHgxLnJlZGhhdC5jb20xCzAJBgNVBAYTAlVTMRAwDgYD
VQQHEwdSYWxlaWdoggkA1s54sVacN0EwHQYDVR0OBBYEFGbB5fqOzh32g4Wqrwhc
/96IupIgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdEQQWMBSkEjAQMQ4wDAYD
VQQDDAV4ZW9wczANBgkqhkiG9w0BAQUFAAOBgQANxHRsev4fYfnHO9kYcHo4UeK7
owN+fq92gl76iRHRnhzkPlhWL+uV2tyqGG9zJASOX+qEDOqN5sVAB4iNQTDGiUbK
z757igD2hsQ4ewv9Vq3QtnajWnfdaUZH919GgWs09Etg6ucsKwgfx1fqjSRLBbOo
lZuvBTYROOX6W2vKXw==
-----END CERTIFICATE-----
Tools like openssl or pk12util can be used to extract and view information from these certificates, in a pretty-print format. The product- and subscription-related information is extracted and viewable in the Red Hat Subscription Manager GUI or command-line tools.
This section describes the different certificates used by the subscription service and the entitlement information contained in those certificates. A much more detailed description of X.509 certificates and a public key infrastructure (PKI) is given in the Red Hat Certificate System documentation in chapter 1, "Introduction to Public-Key Cryptography," in the Red Hat Certificate System Deployment Guide.
Tabelle 14.10. Types of Certificates Used for Content and Entitlements
Certificate Type Description Default Location
Consumer Identity Certificate Used to identify the system (consumer) to the subscription service. This contains a unique ID which is assigned to the system when it is registered to the system. The identity certificate itself is generated by the subscription service when the system is registered and then sent to the consumer. /etc/pki/consumer
Entitlement Certificate Contains a list of products that are available to a system to install, based on the subscriptions that the system has been subscribed to. The entitlement certificate defines the software products, the content delivery location, and validity dates. The presence of an entitlement certificate means that the system has consumed one of the quantities from the subscription. /etc/pki/entitlement
Product Certificate Contains the information about a product after it has been installed. /etc/pki/product/product_serial#.pem
CA Certificate A certificate for the certificate authority which issued the SSL server certificate used by the subscription service. This must be installed on a system for the system to use SSl to connect to the subscription service. /etc/rhsm/ca/candlepin-ca.pem
Satellite Certificate An XML-formatted certificate which contains a product list. This is used by local Satellite 5.x systems, not the newer subscription service.

14.15.1. The Structure of Identity Certificates

An identity certificate is a standard SSL client certificate. This certificate is issued by the subscription service when the system registers to it. The system consumer subsequently uses this certificate to authenticate to the subscription service whenever it contacts the service after registration.
The certificate contains three important pieces of information:
  • The consumer UUID, in the subject CN of the certificate
  • The subscription service which the system is registered to, in the issuer field of the certificate
  • The user account which registered the system, as the DirName value in the Subject Alt Name
The validity period of this certificate is associated with the time when the system was registered, not to any subscription contract periods or user account settings.
Beispiel 14.13. Identity Certificate
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1430 (0x596)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: CN=entitlement.server.example.com, C=US, L=Raleigh  
        Validity
            Not Before: Oct  6 16:32:05 2010 GMT
            Not After : Oct  6 23:59:59 2011 GMT
        Subject: CN=4881bd2f-868b-438c-af96-8b1d283daffc  
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:a3:72:2f:0e:be:20:cb:63:63:4d:c5:ec:eb:71:
                    8f:61:8b:19:3c:f9:54:ac:75:91:f5:98:ee:ae:0e:
                    0f:8c:3e:5e:50:47:4e:4b:7e:da:d4:15:f5:2f:b8:
                    4c:59:14:67:b5:e8:23:cd:0b:0c:bf:c1:38:da:72:
                    fe:0a:b9:73:97:30:c8:ab:e3:bf:68:23:49:2f:e9:
                    8a:18:18:35:77:39:cd:43:88:7d:28:f5:bd:bd:df:
                    1c:61:ce:93:37:42:71:93:32:5a:ad:73:d0:df:f3:
                    68:b0:a5:a7:fc:cf:fe:97:0c:a2:0e:0d:4c:08:36:
                    9e:23:4f:8c:56:2f:91:0f:a8:22:5d:7a:5a:64:29:
                    79:f3:34:cb:44:98:ec:de:e8:25:dd:93:f1:d6:63:
                    3a:2b:8b:57:67:15:64:b7:f0:8e:bc:06:f5:4a:64:
                    4f:62:74:de:0f:a7:d5:90:3d:ab:de:62:6c:b0:f9:
                    35:53:9d:4f:2f:7e:da:57:d1:85:d0:d5:89:96:95:
                    a0:58:90:5e:f8:3c:ea:a0:47:43:48:9e:10:db:85:
                    6b:a6:c2:bc:68:29:4f:17:01:b9:55:e6:b2:79:76:
                    fb:d7:67:32:2c:28:0e:a3:d9:a7:51:c1:e8:6d:ae:
                    36:6c:8d:7b:f2:2f:91:33:8f:14:9f:d9:55:bb:41:
                    4d:85
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            Netscape Cert Type:
                SSL Client, S/MIME
            X509v3 Key Usage:
                Digital Signature, Key Encipherment, Data Encipherment
            X509v3 Authority Key Identifier:
                keyid:68:98:D4:DD:94:B6:E9:71:70:C1:72:D2:3E:A0:40:62:D3:CA:8E:82
                DirName:/CN=entitlement.server.example.com/C=US/L=Raleigh
                serial:D6:CE:78:B1:56:9C:37:41

            X509v3 Subject Key Identifier:
                66:C1:E5:FA:8E:CE:1D:F6:83:85:AA:AF:08:5C:FF:DE:88:BA:92:20
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
            X509v3 Subject Alternative Name:  
                DirName:/CN=admin-example  
    Signature Algorithm: sha1WithRSAEncryption
        0d:c4:74:6c:7a:fe:1f:61:f9:c7:3b:d9:18:70:7a:38:51:e2:
        bb:a3:03:7e:7e:af:76:82:5e:fa:89:11:d1:9e:1c:e4:3e:58:
        56:2f:eb:95:da:dc:aa:18:6f:73:24:04:8e:5f:ea:84:0c:ea:
        8d:e6:c5:40:07:88:8d:41:30:c6:89:46:ca:cf:be:7b:8a:00:
        f6:86:c4:38:7b:0b:fd:56:ad:d0:b6:76:a3:5a:77:dd:69:46:
        47:f7:5f:46:81:6b:34:f4:4b:60:ea:e7:2c:2b:08:1f:c7:57:
        ea:8d:24:4b:05:b3:a8:95:9b:af:05:36:11:38:e5:fa:5b:6b:
        ca:5f

14.15.2. The Structure of Entitlement Certificates

An entitlement is analogous to an assigned software license. Entitlement certificates contain a list of available products for a system — software that the system has been granted rights to download and update. When a system is subscribed to a subscription pool, the system pulls down the entitlement certificate from the subscription service, which contains all of the information about available products.
An entitlement certificate contains a list of every potential product from every potential content source. The structure of the entitlement certificate, then, allows multiple namespaces, each, for products, content servers, roles, orders, and systems. An entitlement certificate also contains complete information about the subscribed pool, even for products which may not be compatible with the specific system. In an entitlement certificate, the architecture and version definitions contain all of the allowed architectures and versions.

Note

The local Subscription Manager polls the subscription service routinely (every four hours by default) to check for changes in the entitlements. When a subscription is changed in some way, then the original entitlement certificate is revoked and is replaced with a new entitlement certificate.
The entitlement certificate is a *.pem file stored in the entitlement certificates directory, /etc/pki/entitlement. The name of the *.pem file is a generated numeric identifier that is generated by the subscription service. This ID is an inventory number that is used to associate a subscription quantity with the system in the software inventory.
The heading of the certificate contains the name of the subscription service which issued it, the validity period of the certificate (which is tied to the installation date of the product), and then the serial number of the installation of the product.
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            3c:da:6c:06:90:7f:ff
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: CN=candlepin1.devlab.phx1.redhat.com, C=US, L=Raleigh
        Validity
            Not Before: Oct  8 17:55:28 2010 GMT
            Not After : Oct  2 23:59:59 2011 GMT
        Subject: CN=8a878c912b875189012b8cfbc3f2264a
... [snip] ...
The key definition of the product is given in custom certificate extensions that are appended to the certificate. Each namespace defines certain information about a product, including its name, content servers which can deliver it, the format of delivery, and a GPG key to identify the release. Every individual entry is identified by a numeric object identifier (OID) with the same basic format:
1.3.6.1.4.1.2312.9.2.product_#.config_#:
   ..config_value
The 2 indicates that it is a product entry. product_# is a unique ID which identifies the specific product or variant. config_# relates to the installation information for that product, like its content server or the quantity available.

Note

Every entitlements-related extension begins with the OID base 1.3.6.1.4.1.2312.9. The subsequent numbers identify different subscription areas:
  • .2. is the product-specific information
  • .1. is the subscription information
  • .4. contains the contract information, like its ID number and start and end dates
  • .5. contains the consumer information, like the consumer ID which installed a product
A product definition contains a series of entries which configure all of the information required to identify and install the product. Each type of information has its own ID, the config_# in the OID, that is used consistently for all products. An example product is listed in Beispiel 14.14, „Annotated Red Hat Enterprise Linux High Availability Product Extensions in an Entitlement Certificate“.
Beispiel 14.14. Annotated Red Hat Enterprise Linux High Availability Product Extensions in an Entitlement Certificate
            content repository type  
            1.3.6.1.4.1.2312.9.2.30393.1:
                ..yum
            product  
            1.3.6.1.4.1.2312.9.2.30393.1.1:
                .HRed Hat Enterprise Linux High Availability (for RHEL Entitlement) (RPMs)
            channel name  
            1.3.6.1.4.1.2312.9.2.30393.1.2:
                .Dred-hat-enterprise-linux-high-availability-for-rhel-entitlement-rpms
            vendor  
            1.3.6.1.4.1.2312.9.2.30393.1.5:
                ..Red Hat
            download URL  
            1.3.6.1.4.1.2312.9.2.30393.1.6:
                .Q/content/dist/rhel/entitlement/releases/$releasever/$basearch/highavailability/os
            key download URL  
            1.3.6.1.4.1.2312.9.2.30393.1.7:
                .2file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
            flex quantity  
            1.3.6.1.4.1.2312.9.2.30393.1.4:
                ..0
            quantity  
            1.3.6.1.4.1.2312.9.2.30393.1.3:
                ..25
            repo enabled setting  
            1.3.6.1.4.1.2312.9.2.30393.1.8:
                ..1

14.15.3. The Structure of Product Certificates

The products that are installed on a system through the subscriptions assigned to a system are identified by X.509 certificates. When an available product is installed, the subscription service generates a product certificate, which contains the information about the product contract and the specific installation.
Structurally, entitlement certificates and product certificates are very similar, because they both provide much of the same information about products. The main difference is that a product certificate contains information about a single product that has been installed, so no other subscription information (like other available products or other product versions) is included in a product certificate the way that it is in an entitlement certificate.
A product certificate contains a single product namespace (meaning, a single product definition) which shows only what is actually installed on the system. The architecture and version definitions in a product certificate reflect the architecture and version of the product that is actually installed.
The product certificate is a *.pem file stored in the entitlement certificates directory, /etc/pki/product/product_serial#.pem. The name of the *.pem file is a generated numeric identifier that is generated by the subscription service. As with entitlement tracking, the generated ID is an inventory number, used to track installed products and associate them with systems within the subscription service.

14.15.4. Anatomy of Satellite Certificates

Important

Satellite certificates are used by Satellite 5.x deployments. They are not used on Red Hat Enterprise Linux 5.7 or by the subscription service.
Every system has to have a secure, authoritative way to identify what subscriptions are available. For Satellite 5.x systems, this identification is done through a digitally-signed XML document that lists the products and quantities that a customer has purchased.
As with entitlement certificates, a Satellite certificate contains the information about the subscription that was purchased, including the total number of systems that can be registered against that subscription and its start and end dates.
There are two types of subscriptions:
  • System entitlements are subscriptions for services that can be performed, such as monitoring, provisioning, and virtualization.
  • Channel entitlements, or content entitlements, provide access to the different software product download channels on Red Hat Network. These include Red Hat Enterprise Linux add-ons like Supplementary and FastTrack and layered products like Red Hat Directory Server.
Both types can be included in a single Satellite certificate.
A system entitlement and the metadata for an entitlement are both configured similarly in the certificate:
<rhn-cert-field name="configuration_area">value</rhn-cert-field>
The name argument identifies what entity is being configured. This can be the organization which ordered the subscription (name="owner"), the start and end dates for the entitlement (name="issued" and name="expires"), or the entitlement itself. A system entitlement uses the name argument to set the service being entitled; every content entitlement is set as a name="channel-family" type, with the specific product identified in an additional family argument.
The first section of the Satellite certificate is the metadata. The metadata identifies the organization which purchased it and the start and end dates of the entitlement. The field being set is in the name argument, while the value is between the tags. The last lines of the certificate also set metadata for the subscription, including the version of the Satellite and the signature that signs the XML document (and allows the XML file to be used as a certificate).
  <rhn-cert-field name="product">RHN-SATELLITE-001</rhn-cert-field>
  <rhn-cert-field name="owner">Example Corp</rhn-cert-field>
  <rhn-cert-field name="issued">2009-04-07 10:18:33</rhn-cert-field>
  <rhn-cert-field name="expires">2009-11-25 00:00:00</rhn-cert-field>

... [snip] ...

  <rhn-cert-field name="satellite-version">5.3</rhn-cert-field>
  <rhn-cert-field name="generation">2</rhn-cert-field>
  <rhn-cert-signature>
-----BEGIN PGP SIGNATURE-----
Version: Crypt::OpenPGP 1.03

iQBGBAARAwAGBQJJ22C+AAoJEJ5ynaAAAAkyyZ0An18+4hK5Ozt4HWieFvahsTnF
aPcaAJ0e5neOfdDZRLOgDE+Tp/Im3Hc3Rg==
=gqP7
-----END PGP SIGNATURE-----
</rhn-cert-signature>
The name="slot" field lists how many total systems are allowed to use this Satellite certificate to receive content. It is a global quantity.
  <rhn-cert-field name="slots">119</rhn-cert-field>
The system entitlements are set by identifying the service type in the name argument and then setting the quantity as the value within the tags.
  <rhn-cert-field name="provisioning-slots">117</rhn-cert-field>
  <rhn-cert-field name="monitoring-slots">20</rhn-cert-field>
  <rhn-cert-field name="virtualization_host">67</rhn-cert-field>
The content entitlements can include any combination of products, including base Red Hat Enterprise Linux subscriptions, variations of Red Hat Enterprise Linux, Red Hat Enterprise Linux add-ons, and general software products. General Red Hat Enterprise Linux server subscriptions are listed in the rhel-server family, while a specific Virtualization Server subscription provides an additional rhel-server-vt family..
  <rhn-cert-field name="channel-families" quantity="95" family="rhel-server"/>
  <rhn-cert-field name="channel-families" quantity="67" family="rhel-server-vt"/>
Add-ons and products for Red Hat Enterprise Linux systems (but not necessarily operating system products) are also in a rhel-* family, because that refers to the platform the product is supported on. In this example, Red Hat Directory Server is in the rhel-rhdirserv family.
  <rhn-cert-field name="channel-families" quantity="3" family="rhel-rhdirserv"/>
Most subscriptions will also include a subscription tool set to manage and enable within clients features such as provisioning or configuration management when registered to RHN Classic or Satellite 5.x.
  <rhn-cert-field name="channel-families" quantity="212" family="rhn-tools"/>

Teil IV. Systemkonfiguration

Part of a system administrator's job is configuring the system for various tasks, types of users, and hardware configurations. This section explains how to configure a Red Hat Enterprise Linux system.

Inhaltsverzeichnis

29. Konsolenzugriff
29.1. Disabling Shutdown Via Ctrl+Alt+Del
29.2. Deaktivieren des Zugriffs auf das Konsolenprogramm
29.3. Definieren der Konsole
29.4. Den Zugriff auf Dateien von der Konsole ermöglichen
29.5. Aktivieren des Konsolenzugriffs für andere Anwendungen
29.6. The floppy Group
30. The sysconfig Directory
30.1. Files in the /etc/sysconfig/ Directory
30.1.1. /etc/sysconfig/amd
30.1.2. /etc/sysconfig/apmd
30.1.3. /etc/sysconfig/arpwatch
30.1.4. /etc/sysconfig/authconfig
30.1.5. /etc/sysconfig/autofs
30.1.6. /etc/sysconfig/clock
30.1.7. /etc/sysconfig/desktop
30.1.8. /etc/sysconfig/dhcpd
30.1.9. /etc/sysconfig/exim
30.1.10. /etc/sysconfig/firstboot
30.1.11. /etc/sysconfig/gpm
30.1.12. /etc/sysconfig/hwconf
30.1.13. /etc/sysconfig/i18n
30.1.14. /etc/sysconfig/init
30.1.15. /etc/sysconfig/ip6tables-config
30.1.16. /etc/sysconfig/iptables-config
30.1.17. /etc/sysconfig/irda
30.1.18. /etc/sysconfig/keyboard
30.1.19. /etc/sysconfig/kudzu
30.1.20. /etc/sysconfig/named
30.1.21. /etc/sysconfig/network
30.1.22. /etc/sysconfig/nfs
30.1.23. /etc/sysconfig/ntpd
30.1.24. /etc/sysconfig/radvd
30.1.25. /etc/sysconfig/samba
30.1.26. /etc/sysconfig/selinux
30.1.27. /etc/sysconfig/sendmail
30.1.28. /etc/sysconfig/spamassassin
30.1.29. /etc/sysconfig/squid
30.1.30. /etc/sysconfig/system-config-securitylevel
30.1.31. /etc/sysconfig/system-config-selinux
30.1.32. /etc/sysconfig/system-config-users
30.1.33. /etc/sysconfig/system-logviewer
30.1.34. /etc/sysconfig/tux
30.1.35. /etc/sysconfig/vncservers
30.1.36. /etc/sysconfig/xinetd
30.2. Directories in the /etc/sysconfig/ Directory
30.3. Zusätzliche Ressourcen
30.3.1. Installierte Dokumentation
31. Datums- und Zeitkonfiguration
31.1. Time and Date Properties
31.2. Eigenschaften des Netzwerk-Zeitprotokolls (NTP)
31.3. Konfiguration der Zeitzone
32. Tastatur-Konfiguration
33. Das X Window System
33.1. The X11R7.1 Release
33.2. Desktop-Umgebungen und Window Manager
33.2.1. Desktop-Umgebungen
33.2.2. Window Manager
33.3. X-Server-Konfigurationsdateien
33.3.1. xorg.conf
33.4. Fonts
33.4.1. Fontconfig
33.4.2. Core X Font-System
33.5. Runlevels und X
33.5.1. Runlevel 3
33.5.2. Runlevel 5
33.6. Zusätzliche Ressourcen
33.6.1. Installierte Dokumentation
33.6.2. Nützliche Webseiten
34. X Window System Konfiguration
34.1. Display Settings
34.2. Display Hardware Settings
34.3. Dual Head Display Settings
35. Benutzer und Gruppen
35.1. Benutzer- und Gruppenkonfiguration
35.1.1. Einen neuen Benutzer hinzufügen
35.1.2. Benutzereigenschaften ändern
35.1.3. Eine neue Gruppe hinzufügen
35.1.4. Gruppeneigenschaften ändern
35.2. Tools zum Management von Benutzern und Gruppen
35.2.1. Befehlszeilenkonfiguration
35.2.2. Einen Benutzer hinzufügen
35.2.3. Eine Gruppe hinzufügen
35.2.4. Passwörter-Alterung
35.2.5. Erklärung des Vorgangs
35.3. Standardbenutzer
35.4. Standardgruppen
35.5. Benutzereigene Gruppen
35.5.1. Gruppenverzeichnisse
35.6. Shadow-Utilities
35.7. Zusätzliche Informationsquellen
35.7.1. Installierte Dokumentation
36. Druckerkonfiguration
36.1. Einen lokalen Drucker hinzufügen
36.2. Einen IPP-Drucker hinzufügen
36.3. Einen Samba (SMB) Drucker hinzufügen
36.4. Adding a JetDirect Printer
36.5. Auswahl des Druckermodells und Fertigstellung
36.5.1. Bestätigung der Druckerkonfiguration
36.6. Eine Testseite drucken
36.7. Vorhandene Drucker ändern
36.7.1. Das Settings-Tab
36.7.2. Das Policies-Tab
36.7.3. Das Access Control-Tab
36.7.4. Das Printer und Job Options-Tab
36.8. Druckaufträge verwalten
36.9. Zusätzliche Ressourcen
36.9.1. Installierte Dokumentation
36.9.2. Hilfreiche Websites
37. Automated Tasks
37.1. Cron
37.1.1. Konfigurieren von Cron-Tasks
37.1.2. Zugriffskontrolle auf Cron
37.1.3. Starten und Beenden des Dienstes
37.2. At und Batch
37.2.1. Konfigurieren von At-Jobs
37.2.2. Konfigurieren von Batch Jobs
37.2.3. Anzeigen von anstehenden Jobs
37.2.4. Zusätzliche Optionen der Befehlszeile
37.2.5. Zugriffskontrolle für At und Batch
37.2.6. Starten und Beenden des Dienstes
37.3. Zusätzliche Ressourcen
37.3.1. Installierte Dokumentation
38. Protokoll-Dateien
38.1. Lokalisieren von Log-Dateien
38.2. Log-Dateien anzeigen
38.3. Adding a Log File
38.4. Kontrolle von Protokolldateien

Kapitel 29. Konsolenzugriff

Wenn sich normale Benutzer (keine root-Accounts) an einem Computer lokal anmelden, verfügen sie über zwei Arten von Sonderberechtigungen:
  1. Sie können bestimmte Programme ausführen, die sie andernfalls nicht ausführen könnten.
  2. Sie können auf bestimmte Dateien zugreifen (in der Regel besondere Gerätedateien, die für den Zugriff auf Disketten, CD-ROMs, usw. verwendet werden), auf die sie andernfalls nicht zugreifen könnten.
Da auf einem einzelnen Computer mehrere Konsolen vorhanden sind und sich mehrere Benutzer gleichzeitig lokal am Computer anmelden können, muss einer der Benutzer das Rennen um den Dateuzugang "gewinnen". Der Benutzer, der sich zuerst an der Konsole anmeldet, besitzt diese Dateien. Meldet sich der erste Benutzer ab, wird der nächste Benutzer, der sich anmeldet, zum Besitzer der Dateien.
In contrast, every user who logs in at the console is allowed to run programs that accomplish tasks normally restricted to the root user. If X is running, these actions can be included as menu items in a graphical user interface. As shipped, these console-accessible programs include halt, poweroff, and reboot.

29.1. Disabling Shutdown Via Ctrl+Alt+Del

By default, /etc/inittab specifies that your system is set to shutdown and reboot in response to a Ctrl+Alt+Del key combination used at the console. To completely disable this ability, comment out the following line in /etc/inittab by putting a hash mark (#) in front of it:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Alternatively, you may want to allow certain non-root users the right to shutdown or reboot the system from the console using Ctrl+Alt+Del . You can restrict this privilege to certain users, by taking the following steps:
  1. Add the -a option to the /etc/inittab line shown above, so that it reads:
    ca::ctrlaltdel:/sbin/shutdown -a -t3 -r now
    The -a flag tells shutdown to look for the /etc/shutdown.allow file.
  2. Create a file named shutdown.allow in /etc. The shutdown.allow file should list the usernames of any users who are allowed to shutdown the system using Ctrl+Alt+Del . The format of the shutdown.allow file is a list of usernames, one per line, like the following:
    stephen
    jack
    sophie
According to this example shutdown.allow file, the users stephen, jack, and sophie are allowed to shutdown the system from the console using Ctrl+Alt+Del . When that key combination is used, the shutdown -a command in /etc/inittab checks to see if any of the users in /etc/shutdown.allow (or root) are logged in on a virtual console. If one of them is, the shutdown of the system continues; if not, an error message is written to the system console instead.
For more information on shutdown.allow, refer to the shutdown man page.

29.2. Deaktivieren des Zugriffs auf das Konsolenprogramm

Um den Benutzerzugriff auf Konsolenprogramme zu deaktivieren, müssen Sie diesen Befehl als root-Benutzer ausführen:
rm -f /etc/security/console.apps/*
In environments where the console is otherwise secured (BIOS and boot loader passwords are set, Ctrl+Alt+Delete is disabled, the power and reset switches are disabled, and so forth), you may not want to allow any user at the console to run poweroff, halt, and reboot, which are accessible from the console by default.
Melden Sie sich als root an, und führen Sie folgende Befehle aus, um diese Funktionen zu deaktivieren:
rm -f /etc/security/console.apps/poweroff
rm -f /etc/security/console.apps/halt
rm -f /etc/security/console.apps/reboot

29.3. Definieren der Konsole

The pam_console.so module uses the /etc/security/console.perms file to determine the permissions for users at the system console. The syntax of the file is very flexible; you can edit the file so that these instructions no longer apply. However, the default file has a line that looks like this:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :[0-9]\.[0-9] :[0-9]
When users log in, they are attached to some sort of named terminal, which can be either an X server with a name like :0 or mymachine.example.com:1.0, or a device like /dev/ttyS0 or /dev/pts/2. The default is to define that local virtual consoles and local X servers are considered local, but if you want to consider the serial terminal next to you on port /dev/ttyS1 to also be local, you can change that line to read:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :[0-9]\.[0-9] :[0-9] /dev/ttyS1

29.4. Den Zugriff auf Dateien von der Konsole ermöglichen

Die Standardeinstellungen für individuelle Geräteklassen und Berechtigungsdefinitionen sind in /etc/security/console.perms.d/50-default.perms definiert. Um Änderungen an Datei- und Geräteberechtigungen vorzunehmen ist es ratsam, eine neue Standarddatei in /etc/security/console.perms.d/ zu erstellen, die Ihre bevorzugten Einstellungen für einen bestimmten Satz von Dateien oder Geräten enthält. Der Name der Standarddatei muss mit einer Zahl über 50 beginnen (z.B. 51-default.perms), um 50-default.perms außer Kraft zu setzen.
Um dies zu tun, erstellen Sie eine neue Datei mit dem Namen 51-default.perms in /etc/security/console.perms.d/:
touch /etc/security/console.perms.d/51-default.perms
Öffnen Sie die ursprüngliche Standarddatei perms file, 50-default.perms. Der erste Abschnitt definiert device classes mit Zeilen, die in etwa wie folgt aussehen:
<floppy>=/dev/fd[0-1]* \
          /dev/floppy/* /mnt/floppy*
<sound>=/dev/dsp* /dev/audio* /dev/midi* \ 
	  /dev/mixer* /dev/sequencer \ 
	  /dev/sound/* /dev/beep \ 
	  /dev/snd/*
<cdrom>=/dev/cdrom* /dev/cdroms/* /dev/cdwriter* /mnt/cdrom*
Items enclosed in brackets name the device; in the above example, <cdrom> refers to the CD-ROM drive. To add a new device, do not define it in the default 50-default.perms file; instead, define it in 51-default.perms. For example, to define a scanner, add the following line to 51-default.perms:
<scanner>=/dev/scanner /dev/usb/scanner*
Of course, you must use the appropriate name for the device. Ensure that /dev/scanner is really your scanner and not some other device, such as your hard drive.
Nachdem Sie ein Gerät oder eine Datei ordnungsgemäß definiert haben, besteht der zweite Schritt darin festzulegen, was mit diesen Dateien geschehen soll. Der zweite Abschnitt von /etc/security/console.perms.d/50-default.perms definiert dies mit den folgenden oder ähnlichen Zeilen:
<console> 0660 <floppy> 0660 root.floppy
<console> 0600 <sound>  0640 root
<console> 0600 <cdrom>  0600 root.disk
Um Genehmigungen für einen Scanner zu definieren fügen Sie eine Zeile wie die folgende zu 51-default.perms hinzu:
<console> 0600 <scanner> 0600 root
Then, when you log in at the console, you are given ownership of the /dev/scanner device with the permissions of 0600 (readable and writable by you only). When you log out, the device is owned by root, and still has the permissions 0600 (now readable and writable by root only).

Warnung

Die Standarddatei 50-default.perms darf niemals editiert werden. Um Berechtigungen für ein bereits in 50-default.perms definiertes Gerät zu verändern, fügen Sie die gewünschte Berechtigungsdefinition für das Gerät in 51-default.perms ein. Dadurch werden bereits in 50-default.perms definierte Berechtigungen außer Kraft gesetzt.

29.5. Aktivieren des Konsolenzugriffs für andere Anwendungen

Wenn Sie Konsolenbenutzern den Zugriff auf weitere Applikationen gewähren möchten, müssen Sie mehrere Schritte ausführen.
First of all, console access only works for applications which reside in /sbin/ or /usr/sbin/, so the application that you wish to run must be there. After verifying that, perform the following steps:
  1. Create a link from the name of your application, such as our sample foo program, to the /usr/bin/consolehelper application:
    cd /usr/bin
    ln -s consolehelper foo
  2. Create the file /etc/security/console.apps/foo:
    touch /etc/security/console.apps/foo
  3. Create a PAM configuration file for the foo service in /etc/pam.d/. An easy way to do this is to copy the PAM configuration file of the halt service, and then modify the copy if you want to change the behavior:
    cp /etc/pam.d/halt /etc/pam.d/foo
Now, when /usr/bin/foo is executed, consolehelper is called, which authenticates the user with the help of /usr/sbin/userhelper. To authenticate the user, consolehelper asks for the user's password if /etc/pam.d/foo is a copy of /etc/pam.d/halt (otherwise, it does precisely what is specified in /etc/pam.d/foo) and then runs /usr/sbin/foo with root permissions.
In the PAM configuration file, an application can be configured to use the pam_timestamp module to remember (or cache) a successful authentication attempt. When an application is started and proper authentication is provided (the root password), a timestamp file is created. By default, a successful authentication is cached for five minutes. During this time, any other application that is configured to use pam_timestamp and run from the same session is automatically authenticated for the user — the user does not have to enter the root password again.
This module is included in the pam package. To enable this feature, add the following lines to your PAM configuration file in etc/pam.d/:
auth            include         config-util
account         include         config-util
session         include         config-util
These lines can be copied from any of the /etc/pam.d/system-config-* configuration files. Note that these lines must be added below any other auth sufficient session optional lines in your PAM configuration file.
If an application configured to use pam_timestamp is successfully authenticated from the Applications (the main menu on the panel), the icon is displayed in the notification area of the panel if you are running the GNOME or KDE desktop environment. After the authentication expires (the default is five minutes), the icon disappears.
Der Benutzer kann auswählen, dass die zwischengespeicherte Authentifizierung gelöscht wird, indem er auf das Symbol klickt und die Option zum Löschen der Authentifizierungsinformationen auswählt.

29.6. The floppy Group

If, for whatever reason, console access is not appropriate for you and your non-root users require access to your system's diskette drive, this can be done using the floppy group. Add the user(s) to the floppy group using the tool of your choice. For example, the gpasswd command can be used to add user fred to the floppy group:
gpasswd -a fred floppy
Now, user fred is able to access the system's diskette drive from the console.

Kapitel 30. The sysconfig Directory

The /etc/sysconfig/ directory contains a variety of system configuration files for Red Hat Enterprise Linux.
This chapter outlines some of the files found in the /etc/sysconfig/ directory, their function, and their contents. The information in this chapter is not intended to be complete, as many of these files have a variety of options that are only used in very specific or rare circumstances.

30.1. Files in the /etc/sysconfig/ Directory

The following sections offer descriptions of files normally found in the /etc/sysconfig/ directory. Files not listed here, as well as extra file options, are found in the /usr/share/doc/initscripts-<version-number>/sysconfig.txt file (replace <version-number> with the version of the initscripts package). Alternatively, looking through the initscripts in the /etc/rc.d/ directory can prove helpful.

Anmerkung

If some of the files listed here are not present in the /etc/sysconfig/ directory, then the corresponding program may not be installed.

30.1.1. /etc/sysconfig/amd

The /etc/sysconfig/amd file contains various parameters used by amd; these parameters allow for the automatic mounting and unmounting of file systems.

30.1.2. /etc/sysconfig/apmd

The /etc/sysconfig/apmd file is used by apmd to configure what power settings to start/stop/change on suspend or resume. This file configures how apmd functions at boot time, depending on whether the hardware supports Advanced Power Management (APM) or whether the user has configured the system to use it. The apm daemon is a monitoring program that works with power management code within the Linux kernel. It is capable of alerting users to low battery power on laptops and other power-related settings.

30.1.3. /etc/sysconfig/arpwatch

The /etc/sysconfig/arpwatch file is used to pass arguments to the arpwatch daemon at boot time. The arpwatch daemon maintains a table of Ethernet MAC addresses and their IP address pairings. By default, this file sets the owner of the arpwatch process to the user pcap and sends any messages to the root mail queue. For more information regarding available parameters for this file, refer to the arpwatch man page.

30.1.4. /etc/sysconfig/authconfig

The /etc/sysconfig/authconfig file sets the authorization to be used on the host. It contains one or more of the following lines:
  • USEMD5=<value>, where <value> is one of the following:
    • yes — MD5 is used for authentication.
    • no — MD5 is not used for authentication.
  • USEKERBEROS=<value>, where <value> is one of the following:
    • yes — Kerberos is used for authentication.
    • no — Kerberos is not used for authentication.
  • USELDAPAUTH=<value>, where <value> is one of the following:
    • yes — LDAP is used for authentication.
    • no — LDAP is not used for authentication.

30.1.5. /etc/sysconfig/autofs

The /etc/sysconfig/autofs file defines custom options for the automatic mounting of devices. This file controls the operation of the automount daemons, which automatically mount file systems when you use them and unmount them after a period of inactivity. File systems can include network file systems, CD-ROMs, diskettes, and other media.
The /etc/sysconfig/autofs file may contain the following:
  • LOCALOPTIONS="<value>", where <value> is a string for defining machine-specific automount rules. The default value is an empty string ("").
  • DAEMONOPTIONS="<value>", where <value> is the timeout length in seconds before unmounting the device. The default value is 60 seconds ("--timeout=60").
  • UNDERSCORETODOT=<value>, where <value> is a binary value that controls whether to convert underscores in file names into dots. For example, auto_home to auto.home and auto_mnt to auto.mnt. The default value is 1 (true).
  • DISABLE_DIRECT=<value>, where <value> is a binary value that controls whether to disable direct mount support, as the Linux implementation does not conform to the Sun Microsystems' automounter behavior. The default value is 1 (true), and allows for compatibility with the Sun automounter options specification syntax.

30.1.6. /etc/sysconfig/clock

The /etc/sysconfig/clock file controls the interpretation of values read from the system hardware clock.
Derzeit gelten die folgenden Werte:
  • UTC=<value>, where <value> is one of the following boolean values:
    • true or yes — The hardware clock is set to Universal Time.
    • false or no — The hardware clock is set to local time.
  • ARC=<value>, where <value> is the following:
    • false or no — This value indicates that the normal UNIX epoch is in use. Other values are used by systems not supported by Red Hat Enterprise Linux.
  • SRM=<value>, where <value> is the following:
    • false or no — This value indicates that the normal UNIX epoch is in use. Other values are used by systems not supported by Red Hat Enterprise Linux.
  • ZONE=<filename> — The time zone file under /usr/share/zoneinfo that /etc/localtime is a copy of. The file contains information such as:
    ZONE="America/New York"
    Bitte beachten Sie, dass der ZONE Parameter durchTime and Date Properties Tool (system-config-date) gelesen wird und eine manuelle Änderung keinen Einfluss auf die Zeitzone des Systems hat.
Frühere Versionen von Red Hat Enterprise Linux haben die folgenden Werte benutzt (die nicht länger verwendet werden):
  • CLOCKMODE=<value>, where <value> is one of the following:
    • GMT — The clock is set to Universal Time (Greenwich Mean Time).
    • ARC — The ARC console's 42-year time offset is in effect (for Alpha-based systems only).

30.1.7. /etc/sysconfig/desktop

The /etc/sysconfig/desktop file specifies the desktop for new users and the display manager to run when entering runlevel 5.
Die korrekten Werte sind:
  • DESKTOP="<value>", where "<value>" is one of the following:
    • GNOME — Selects the GNOME desktop environment.
    • KDE — Selects the KDE desktop environment.
  • DISPLAYMANAGER="<value>", where "<value>" is one of the following:
    • GNOME — Selects the GNOME Display Manager.
    • KDE — Selects the KDE Display Manager.
    • XDM — Selects the X Display Manager.
For more information, refer to Kapitel 33, Das X Window System.

30.1.8. /etc/sysconfig/dhcpd

The /etc/sysconfig/dhcpd file is used to pass arguments to the dhcpd daemon at boot time. The dhcpd daemon implements the Dynamic Host Configuration Protocol (DHCP) and the Internet Bootstrap Protocol (BOOTP). DHCP and BOOTP assign hostnames to machines on the network. For more information about what parameters are available in this file, refer to the dhcpd man page.

30.1.9. /etc/sysconfig/exim

The /etc/sysconfig/exim file allows messages to be sent to one or more clients, routing the messages over whatever networks are necessary. The file sets the default values for exim to run. Its default values are set to run as a background daemon and to check its queue each hour in case something has backed up.
Die Werte beinhalten:
  • DAEMON=<value>, where <value> is one of the following:
    • yesexim should be configured to listen to port 25 for incoming mail. yes implies the use of the Exim's -bd options.
    • noexim should not be configured to listen to port 25 for incoming mail.
  • QUEUE=1h which is given to exim as -q$QUEUE. The -q option is not given to exim if /etc/sysconfig/exim exists and QUEUE is empty or undefined.

30.1.10. /etc/sysconfig/firstboot

The first time the system boots, the /sbin/init program calls the etc/rc.d/init.d/firstboot script, which in turn launches the Setup Agent. This application allows the user to install the latest updates as well as additional applications and documentation.
The /etc/sysconfig/firstboot file tells the Setup Agent application not to run on subsequent reboots. To run it the next time the system boots, remove /etc/sysconfig/firstboot and execute chkconfig --level 5 firstboot on.

30.1.11. /etc/sysconfig/gpm

The /etc/sysconfig/gpm file is used to pass arguments to the gpm daemon at boot time. The gpm daemon is the mouse server which allows mouse acceleration and middle-click pasting. For more information about what parameters are available for this file, refer to the gpm man page. By default, the DEVICE directive is set to /dev/input/mice.

30.1.12. /etc/sysconfig/hwconf

The /etc/sysconfig/hwconf file lists all the hardware that kudzu detected on the system, as well as the drivers used, vendor ID, and device ID information. The kudzu program detects and configures new and/or changed hardware on a system. The /etc/sysconfig/hwconf file is not meant to be manually edited. If edited, devices could suddenly show up as being added or removed.

30.1.13. /etc/sysconfig/i18n

The /etc/sysconfig/i18n file sets the default language, any supported languages, and the default system font. For example:
LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"

30.1.14. /etc/sysconfig/init

The /etc/sysconfig/init file controls how the system appears and functions during the boot process.
Folgende Werte können verwendet werden:
  • BOOTUP=<value>, where <value> is one of the following:
    • color — The standard color boot display, where the success or failure of devices and services starting up is shown in different colors.
    • verbose — An old style display which provides more information than purely a message of success or failure.
    • Alle anderen Werte erzeugen ein neues Display, aber ohne ANSI-Formatierung.
  • RES_COL=<value>, where <value> is the number of the column of the screen to start status labels. The default is set to 60.
  • MOVE_TO_COL=<value>, where <value> moves the cursor to the value in the RES_COL line via the echo -en command.
  • SETCOLOR_SUCCESS=<value>, where <value> sets the success color via the echo -en command. The default color is set to green.
  • SETCOLOR_FAILURE=<value>, where <value> sets the failure color via the echo -en command. The default color is set to red.
  • SETCOLOR_WARNING=<value>, where <value> sets the warning color via the echo -en command. The default color is set to yellow.
  • SETCOLOR_NORMAL=<value>, where <value> resets the color to "normal" via the echo -en.
  • LOGLEVEL=<value>, where <value> sets the initial console logging level for the kernel. The default is 3; 8 means everything (including debugging), while 1 means only kernel panics. The syslogd daemon overrides this setting once started.
  • PROMPT=<value>, where <value> is one of the following boolean values:
    • yes — Enables the key check for interactive mode.
    • no — Disables the key check for interactive mode.

30.1.15. /etc/sysconfig/ip6tables-config

The /etc/sysconfig/ip6tables-config file stores information used by the kernel to set up IPv6 packet filtering at boot time or whenever the ip6tables service is started.
Do not modify this file by hand unless familiar with how to construct ip6tables rules. Rules also can be created manually using the /sbin/ip6tables command. Once created, add the rules to the /etc/sysconfig/ip6tables file by typing the following command:
service ip6tables save
Existiert diese Datei, so bestehen Firewall-Regeln auch über einen System-Reboot oder einen Service-Neustart hinweg fort.
For more information on ip6tables, refer to Abschnitt 46.9, „IPTables“.

30.1.16. /etc/sysconfig/iptables-config

The /etc/sysconfig/iptables-config file stores information used by the kernel to set up packet filtering services at boot time or whenever the service is started.
Do not modify this file by hand unless you are familiar with constructing iptables rules. The easiest way to add rules is to use the Security Level Configuration Tool (system-config-securitylevel) application to create a firewall. These applications automatically edit this file at the end of the process.
Rules can also be created manually using the /sbin/iptables command. Once created, add the rule(s) to the /etc/sysconfig/iptables file by typing the following command:
service iptables save
Existiert diese Datei, so bestehen Firewall-Regeln auch über einen System-Reboot oder einen Service-Neustart hinweg fort.
For more information on iptables, refer to Abschnitt 46.9, „IPTables“.

30.1.17. /etc/sysconfig/irda

The /etc/sysconfig/irda file controls how infrared devices on the system are configured at startup.
Folgende Werte können verwendet werden:
  • IRDA=<value>, where <value> is one of the following boolean values:
    • yesirattach runs and periodically checks to see if anything is trying to connect to the infrared port, such as another notebook computer trying to make a network connection. For infrared devices to work on the system, this line must be set to yes.
    • noirattach does not run, preventing infrared device communication.
  • DEVICE=<value>, where <value> is the device (usually a serial port) that handles infrared connections. A sample serial device entry could be /dev/ttyS2.
  • DONGLE=<value>, where <value> specifies the type of dongle being used for infrared communication. This setting exists for people who use serial dongles rather than real infrared ports. A dongle is a device that is attached to a traditional serial port to communicate via infrared. This line is commented out by default because notebooks with real infrared ports are far more common than computers with add-on dongles. A sample dongle entry could be actisys+.
  • DISCOVERY=<value>, where <value> is one of the following boolean values:
    • yes — Starts irattach in discovery mode, meaning it actively checks for other infrared devices. This must be turned on for the machine to actively look for an infrared connection (meaning the peer that does not initiate the connection).
    • no — Does not start irattach in discovery mode.

30.1.18. /etc/sysconfig/keyboard

The /etc/sysconfig/keyboard file controls the behavior of the keyboard. The following values may be used:
  • KEYBOARDTYPE="sun|pc" where sun means a Sun keyboard is attached on /dev/kbd, or pc means a PS/2 keyboard connected to a PS/2 port.
  • KEYTABLE="<file>", where <file> is the name of a keytable file.
    For example: KEYTABLE="us". The files that can be used as keytables start in /lib/kbd/keymaps/i386 and branch into different keyboard layouts from there, all labeled <file>.kmap.gz. The first file found beneath /lib/kbd/keymaps/i386 that matches the KEYTABLE setting is used.

30.1.19. /etc/sysconfig/kudzu

The /etc/sysconfig/kuzdu file triggers a safe probe of the system hardware by kudzu at boot time. A safe probe is one that disables serial port probing.
  • SAFE=<value>, where <value> is one of the following:
    • yeskuzdu does a safe probe.
    • nokuzdu does a normal probe.

30.1.20. /etc/sysconfig/named

The /etc/sysconfig/named file is used to pass arguments to the named daemon at boot time. The named daemon is a Domain Name System (DNS) server which implements the Berkeley Internet Name Domain (BIND) version 9 distribution. This server maintains a table of which hostnames are associated with IP addresses on the network.
Verwenden Sie bitte bis auf weiteres nur die folgenden Werte:
  • ROOTDIR="</some/where>", where </some/where> refers to the full directory path of a configured chroot environment under which named runs. This chroot environment must first be configured. Type info chroot for more information.
  • OPTIONS="<value>", where <value> is any option listed in the man page for named except -t. In place of -t, use the ROOTDIR line above.
For more information about available parameters for this file, refer to the named man page. For detailed information on how to configure a BIND DNS server, refer to Kapitel 18, Berkeley Internet Name Domain (BIND). By default, the file contains no parameters.

30.1.21. /etc/sysconfig/network

The /etc/sysconfig/network file is used to specify information about the desired network configuration. The following values may be used:
  • NETWORKING=<value>, where <value> is one of the following boolean values:
    • yes — Networking should be configured.
    • no — Networking should not be configured.
  • HOSTNAME=<value>, where <value> should be the Fully Qualified Domain Name (FQDN), such as hostname.expample.com, but can be whatever hostname is necessary.
  • GATEWAY=<value>, where <value> is the IP address of the network's gateway.
  • GATEWAYDEV=<value>, where <value> is the gateway device, such as eth0. Configure this option if you have multiple interfaces on the same subnet, and require one of those interfaces to be the preferred route to the default gateway.
  • NISDOMAIN=<value>, where <value> is the NIS domain name.
  • NOZEROCONF=<value>, where setting <value> to true disables the zeroconf route.
    By default, the zeroconf route (169.254.0.0) is enabled when the system boots. For more information about zeroconf, refer to http://www.zeroconf.org/.

Warning

Do not use custom initscripts to configure network settings. When performing a post-boot network service restart, custom initscripts configuring network settings that are run outside of the network init script lead to unpredictable results.

30.1.22. /etc/sysconfig/nfs

NFS requires portmap, which dynamically assigns ports for RPC services. This causes problems for configuring firewall rules. To overcome this problem, use the /etc/sysconfig/nfs file to control which ports the required RPC services run on.
The /etc/sysconfig/nfs may not exist by default on all systems. If it does not exist, create it and add the following variables (alternatively, if the file exists, un-comment and change the default entries as required):
MOUNTD_PORT=x
control which TCP and UDP port mountd (rpc.mountd) uses. Replace x with an unused port number.
STATD_PORT=x
control which TCP and UDP port status (rpc.statd) uses. Replace x with an unused port number.
LOCKD_TCPPORT=x
control which TCP port nlockmgr (rpc.lockd) uses. Replace x with an unused port number.
LOCKD_UDPPORT=x
control which UDP port nlockmgr (rpc.lockd) uses. Replace x with an unused port number.
If NFS fails to start, check /var/log/messages. Normally, NFS will fail to start if you specify a port number that is already in use. After editing /etc/sysconfig/nfs restart the NFS service by running the service nfs restart command. Run the rpcinfo -p command to confirm the changes.
To configure a firewall to allow NFS:
  1. Allow TCP and UDP port 2049 for NFS.
  2. Allow TCP and UDP port 111 (portmap/sunrpc).
  3. Allow the TCP and UDP port specified with MOUNTD_PORT="x"
  4. Allow the TCP and UDP port specified with STATD_PORT="x"
  5. Allow the TCP port specified with LOCKD_TCPPORT="x"
  6. Allow the UDP port specified with LOCKD_UDPPORT="x"

30.1.23. /etc/sysconfig/ntpd

The /etc/sysconfig/ntpd file is used to pass arguments to the ntpd daemon at boot time. The ntpd daemon sets and maintains the system clock to synchronize with an Internet standard time server. It implements version 4 of the Network Time Protocol (NTP). For more information about what parameters are available for this file, use a Web browser to view the following file: /usr/share/doc/ntp-<version>/ntpd.htm (where <version> is the version number of ntpd). By default, this file sets the owner of the ntpd process to the user ntp.

30.1.24. /etc/sysconfig/radvd

The /etc/sysconfig/radvd file is used to pass arguments to the radvd daemon at boot time. The radvd daemon listens for router requests and sends router advertisements for the IP version 6 protocol. This service allows hosts on a network to dynamically change their default routers based on these router advertisements. For more information about available parameters for this file, refer to the radvd man page. By default, this file sets the owner of the radvd process to the user radvd.

30.1.25. /etc/sysconfig/samba

The /etc/sysconfig/samba file is used to pass arguments to the smbd and the nmbd daemons at boot time. The smbd daemon offers file sharing connectivity for Windows clients on the network. The nmbd daemon offers NetBIOS over IP naming services. For more information about what parameters are available for this file, refer to the smbd man page. By default, this file sets smbd and nmbd to run in daemon mode.

30.1.26. /etc/sysconfig/selinux

The /etc/sysconfig/selinux file contains the basic configuration options for SELinux. This file is a symbolic link to /etc/selinux/config.

30.1.27. /etc/sysconfig/sendmail

The /etc/sysconfig/sendmail file allows messages to be sent to one or more clients, routing the messages over whatever networks are necessary. The file sets the default values for the Sendmail application to run. Its default values are set to run as a background daemon and to check its queue each hour in case something has backed up.
Werte beinhalten:
  • DAEMON=<value>, where <value> is one of the following:
    • yesSendmail should be configured to listen to port 25 for incoming mail. yes implies the use of Sendmail's -bd options.
    • noSendmail should not be configured to listen to port 25 for incoming mail.
  • QUEUE=1h which is given to Sendmail as -q$QUEUE. The -q option is not given to Sendmail if /etc/sysconfig/sendmail exists and QUEUE is empty or undefined.

30.1.28. /etc/sysconfig/spamassassin

The /etc/sysconfig/spamassassin file is used to pass arguments to the spamd daemon (a daemonized version of Spamassassin) at boot time. Spamassassin is an email spam filter application. For a list of available options, refer to the spamd man page. By default, it configures spamd to run in daemon mode, create user preferences, and auto-create whitelists (allowed bulk senders).
For more information about Spamassassin, refer to Abschnitt 25.5.2.6, „Spam Filter“.

30.1.29. /etc/sysconfig/squid

The /etc/sysconfig/squid file is used to pass arguments to the squid daemon at boot time. The squid daemon is a proxy caching server for Web client applications. For more information on configuring a squid proxy server, use a Web browser to open the /usr/share/doc/squid-<version>/ directory (replace <version> with the squid version number installed on the system). By default, this file sets squid to start in daemon mode and sets the amount of time before it shuts itself down.

30.1.30. /etc/sysconfig/system-config-securitylevel

The /etc/sysconfig/system-config-securitylevel file contains all options chosen by the user the last time the Security Level Configuration Tool (system-config-securitylevel) was run. Users should not modify this file by hand. For more information about the Security Level Configuration Tool, refer to Abschnitt 46.8.2, „Basic Firewall Configuration“.

30.1.31. /etc/sysconfig/system-config-selinux

The /etc/sysconfig/system-config-selinux file contains all options chosen by the user the last time the SELinux Administration Tool (system-config-selinux) was run. Users should not modify this file by hand. For more information about the SELinux Administration Tool and SELinux in general, refer to Abschnitt 47.2, „Einführung in SELinux“.

30.1.32. /etc/sysconfig/system-config-users

The /etc/sysconfig/system-config-users file is the configuration file for the graphical application, User Manager. This file is used to filter out system users such as root, daemon, or lp. This file is edited by the Preferences > Filter system users and groups pull-down menu in the User Manager application and should never be edited by hand. For more information on using this application, refer to Abschnitt 35.1, „Benutzer- und Gruppenkonfiguration“.

30.1.33. /etc/sysconfig/system-logviewer

The /etc/sysconfig/system-logviewer file is the configuration file for the graphical, interactive log viewing application, Log Viewer. This file is edited by the Edit > Preferences pull-down menu in the Log Viewer application and should not be edited by hand. For more information on using this application, refer to Kapitel 38, Protokoll-Dateien.

30.1.34. /etc/sysconfig/tux

The /etc/sysconfig/tux file is the configuration file for the Red Hat Content Accelerator (formerly known as TUX), the kernel-based Web server. For more information on configuring the Red Hat Content Accelerator, use a Web browser to open the /usr/share/doc/tux-<version>/tux/index.html file (replace <version> with the version number of TUX installed on the system). The parameters available for this file are listed in /usr/share/doc/tux-<version>/tux/parameters.html.

30.1.35. /etc/sysconfig/vncservers

The /etc/sysconfig/vncservers file configures the way the Virtual Network Computing (VNC) server starts up.
Bei VNC handelt es sich um ein Remote-System für die Anzeige, das es Benutzern ermöglicht, die Desktop-Umgebung nicht nur von der Maschine auf der diese läuft, sondern auch über verschiedene Netzwerke hinweg und auf unterschiedlichen Architekturen anzusehen.
Folgende Werte können enthalten sein:
  • VNCSERVERS=<value>, where <value> is set to something like "1:fred", to indicate that a VNC server should be started for user fred on display :1. User fred must have set a VNC password using the vncpasswd command before attempting to connect to the remote VNC server.

30.1.36. /etc/sysconfig/xinetd

The /etc/sysconfig/xinetd file is used to pass arguments to the xinetd daemon at boot time. The xinetd daemon starts programs that provide Internet services when a request to the port for that service is received. For more information about available parameters for this file, refer to the xinetd man page. For more information on the xinetd service, refer to Abschnitt 46.5.3, „xinetd“.

30.2. Directories in the /etc/sysconfig/ Directory

The following directories are normally found in /etc/sysconfig/.
apm-scripts/
This directory contains the APM suspend/resume script. Do not edit the files directly. If customization is necessary, create a file called /etc/sysconfig/apm-scripts/apmcontinue which is called at the end of the script. It is also possible to control the script by editing /etc/sysconfig/apmd.
cbq/
This directory contains the configuration files needed to do Class Based Queuing for bandwidth management on network interfaces. CBQ divides user traffic into a hierarchy of classes based on any combination of IP addresses, protocols, and application types.
networking/
This directory is used by the Network Administration Tool (system-config-network), and its contents should not be edited manually. For more information about configuring network interfaces using the Network Administration Tool, refer to Kapitel 16, Netzwerkkonfiguration.
network-scripts/
This directory contains the following network-related configuration files:
  • Network configuration files for each configured network interface, such as ifcfg-eth0 for the eth0 Ethernet interface.
  • Scripts used to bring network interfaces up and down, such as ifup and ifdown.
  • Scripts used to bring ISDN interfaces up and down, such as ifup-isdn and ifdown-isdn.
  • Verschiedene Skripte zu gemeinsam genutzten Netzwerk-Funktionen, die nicht unmittelbar bearbeitet werden sollten.
For more information on the network-scripts directory, refer to Kapitel 15, Netzwerk-Schnittstellen.
rhn/
Deprecated. This directory contains the configuration files and GPG keys used by the RHN Classic content service. No files in this directory should be edited by hand.
This directory is available for legacy systems which are still managed by RHN Classic. Systems which are registered against the Certificate-Based Red Hat Network do not use this directory.

30.3. Zusätzliche Ressourcen

This chapter is only intended as an introduction to the files in the /etc/sysconfig/ directory. The following source contains more comprehensive information.

30.3.1. Installierte Dokumentation

  • /usr/share/doc/initscripts-<version-number>/sysconfig.txt — This file contains a more authoritative listing of the files found in the /etc/sysconfig/ directory and the configuration options available for them. The <version-number> in the path to this file corresponds to the version of the initscripts package installed.

Kapitel 31. Datums- und Zeitkonfiguration

The Time and Date Properties Tool allows the user to change the system date and time, to configure the time zone used by the system, and to setup the Network Time Protocol (NTP) daemon to synchronize the system clock with a time server.
Sie müssen das X-Window-System gestartet haben und Berechtigung als Root besitzen, um dieses Werkzeug zu nutzen. Es gibt drei Möglichkeiten, die Anwendung zu starten:
  • From the desktop, go to Applications (the main menu on the panel) > System Settings > Date & Time
  • From the desktop, right-click on the time in the toolbar and select Adjust Date and Time.
  • Type the command system-config-date, system-config-time, or dateconfig at a shell prompt (for example, in an XTerm or a GNOME terminal).

31.1. Time and Date Properties

As shown in Abbildung 31.1, „Time and Date Properties“, the first tabbed window that appears is for configuring the system date and time.
Time and Date Properties
Time and Date Properties
Abbildung 31.1. Time and Date Properties

Um das Datum zu ändern, verwenden Sie die Pfeile links und rechts neben dem Monat, um den Monat zu ändern. Mit den Pfeilen links und rechts neben dem Jahr, um das Jahr zu ändern. Klicken Sie auf den Wochentag, um diesen zu ändern.
To change the time, use the up and down arrow buttons beside the Hour, Minute, and Second in the Time section.
Clicking the OK button applies any changes made to the date and time, the NTP daemon settings, and the time zone settings. It also exits the program.

31.2. Eigenschaften des Netzwerk-Zeitprotokolls (NTP)

As shown in Abbildung 31.2, „NTP Properties“, the second tabbed window that appears is for configuring NTP.
NTP Properties
NTP Properties
Abbildung 31.2. NTP Properties

The Network Time Protocol (NTP) daemon synchronizes the system clock with a remote time server or time source. The application allows you to configure an NTP daemon to synchronize your system clock with a remote server. To enable this feature, select Enable Network Time Protocol. This enables the NTP Servers list and other options. You can choose one of the predefined servers, edit a predefined server by clicking the Edit or add a new server name by clicking Add. Your system does not start synchronizing with the NTP server until you click OK. After clicking OK, the configuration is saved and the NTP daemon is started (or restarted if it is already running).
Clicking the OK button applies any changes made to the date and time, the NTP daemon settings, and the time zone settings. It also exits the program.

31.3. Konfiguration der Zeitzone

As shown in Abbildung 31.3, „Timezone Properties“, the third tabbed window that appears is for configuring the system time zone.
To configure the system time zone, click the Time Zone tab. The time zone can be changed by either using the interactive map or by choosing the desired time zone from the list below the map. To use the map, click on the desired region. The map zooms into the region selected, after which you may choose the city specific to your time zone. A red X appears and the time zone selection changes in the list below the map.
Alternativ können Sie auch die Liste unterhalb der Karte verwenden. Genau wie bei der Karte können Sie hier erst eine Region und dann eine Stadt auswählen. Hierfür erscheint die Liste der Zeitzonen nun als Baumliste, die Städte und Länder innerhalb ihres spezifischen Kontinents gruppiert. Nicht-geographische Zeitzonen wurden ebenfalls hinzugefügt, um den Anforderungen innerhalb der wissenschaftlichen Gemeinschaft zu entsprechen.
Click OK to apply the changes and exit the program.
Timezone Properties
Timezone Properties
Abbildung 31.3. Timezone Properties

If your system clock is set to use UTC, select the System clock uses UTC option. UTC stands for the Universal Time, Coordinated, also known as Greenwich Mean Time (GMT). Other time zones are determined by adding or subtracting from the UTC time.

Kapitel 32. Tastatur-Konfiguration

The installation program allows you to configure a keyboard layout for your system. To configure a different keyboard layout after installation, use the Keyboard Configuration Tool.
To start the Keyboard Configuration Tool, select System (on the panel) > Administration > Keyboard, or type the command system-config-keyboard at a shell prompt.
Keyboard Configuration Tool
Keyboard Configuration Tool
Abbildung 32.1. Keyboard Configuration Tool

Select a keyboard layout from the list (for example, U.S. English) and click OK.
Änderungen werden sofort wirksam.

Kapitel 33. Das X Window System

Während der Kernel das Herz von Red Hat Enterprise Linux darstellt, ist die vom X Window System, kurz X genannt, bereitgestellte grafische Umgebung für viele Benutzer das Gesicht des Betriebssystems.
In der UNIX-Welt gibt es schon seit Jahrzehnten Umgebungen mit Fenstergestaltung, darunter einige, die der Release des X Window Systems im Juni 1984 vorausgehen. X ist die nunmehr gebräuchlichste grafische Umgebung für die meisten Unix-ähnlichen Betriebssysteme einschließlich Red Hat Enterprise Linux.
Die grafische Umgebung von Red Hat Enterprise Linux wird von der X.Org Foundation bereitgestellt, einer Open Source Vereinigung, die zum Management der Entwicklung und der Strategie des X Window Systems und ähnlichen, in Beziehung stehenden Technologien gegründet wurde. X.Org ist ein sich mit enormer Geschwindigkeit entwickelndes Projekt in großem Umfang, an dem Hunderte von Entwicklern in der ganzen Welt beteiligt sind. Es zeichnet sich durch eine schnelle Entwicklung, einen umfangreichen Support für verschiedenste Hardware-Geräte und Architekturen sowie durch die Fähigkeit aus, unter verschiedenen Betriebssystemen und Plattformen zu laufen. Diese Red Hat Enterprise Linux-Release beinhaltet die X11R7.1 Release des X Window Systems.
The X Window System uses a client-server architecture. The X server (the Xorg binary) listens for connections from X client applications via a network or local loopback interface. The server communicates with the hardware, such as the video card, monitor, keyboard, and mouse. X client applications exist in the user-space, creating a graphical user interface (GUI) for the user and passing user requests to the X server.

33.1. The X11R7.1 Release

Red Hat Enterprise Linux 5.8 verwendet jetzt die X11R7.1 Release als Basis-X Window System, die unter anderem über mehrere Video-Treiber, EXA und verbesserten Palttform-Support als die frühere Release verfügt. Desweiteren besitzt diese Release mehrere automatische Konfigurations-Features für den X-Server.
X11R7.1 is the first release to take specific advantage of the modularization of the X Window System. This modularization, which splits X into logically distinct modules, makes it easier for open source developers to contribute code to the system.

Wichtig

Red Hat Enterprise Linux no longer provides the XFree86™ server packages. Before upgrading a system to the latest version of Red Hat Enterprise Linux, be sure that the system's video card is compatible with the X11R7.1 release by checking the Red Hat Hardware Compatibility List located online at http://hardware.redhat.com/.
In the X11R7.1 release, all libraries, headers, and binaries now live under /usr/ instead of /usr/X11R6. The /etc/X11/ directory contains configuration files for X client and server applications. This includes configuration files for the X server itself, the xfs font server, the X display managers, and many other base components.
The configuration file for the newer Fontconfig-based font architecture is still /etc/fonts/fonts.conf. For more on configuring and adding fonts, refer to Abschnitt 33.4, „Fonts“.
Da der X-Server anspruchsvolle Aufgaben an einer breit gefächerten Palette von Hardware durchführt, benötigt er genaue Informationen zur Hardware, mit der er arbeitet. Einige Informationen findet der X-Server automatisch, während andere konfiguriert werden müssen.
The installation program installs and configures X automatically, unless the X11R7.1 release packages are not selected for installation. However, if there are any changes to the monitor, video card or other devices managed by the X server, X must be reconfigured. The best way to do this is to use the X Configuration Tool (system-config-display), particularly for devices that are not detected manually.
In Red Hat Enterprise Linux's default graphical environment, the X Configuration Tool is available at System (on the panel) > Administration > Display.
Changes made with the X Configuration Tool take effect after logging out and logging back in.
For more information about X Configuration Tool, refer to Kapitel 34, X Window System Konfiguration.
In some situations, reconfiguring the X server may require manually editing its configuration file, /etc/X11/xorg.conf. For information about the structure of this file, refer to Abschnitt 33.3, „X-Server-Konfigurationsdateien“.

33.2. Desktop-Umgebungen und Window Manager

Wenn der X-Server erst einmal läuft, können X-Client-Applikationen zu diesem verbinden und eine GUI für den Benutzer erzeugen. Eine Anzahl von GUIs sind in Red Hat Enterprise Linux möglich, vom rudimentären Tab Window Manager zur hoch entwickelten, interaktiven GNOME Desktop-Umgebung, mit der die meisten Red Hat Enterprise Linux Benutzer vertraut sind.
Um die letztere, fortgeschrittenere GUI zu erzeugen, müssen zwei X-Client-Applikationen zum X-Server verbinden: Eine Desktop-Umgebung und ein Window Manager.

33.2.1. Desktop-Umgebungen

Eine Desktop-Umgebung umfasst eine Anzahl verschiedenster X-Clients. Diese zusammengenommen stellen die grafische Benutzeroberfläche und Entwicklungsplattform dar.
Desktop-Umgebungen enthalten erweiterte Merkmale, die es X-Clients und anderen laufenden Prozessen ermöglichen, miteinander zu kommunizieren. Auf diese Weise können alle Applikationen, die für diese Umgebung geschrieben wurden, integriert und auf weitere Arten verwendet werden, wie beispielsweise die Drag-and-Drop Funktionen.
Red Hat Enterprise Linux liefert zwei Desktop-Umgebungen:
  • GNOME — Die standardmäßige Desktop-Umgebung für Red Hat Enterprise Linux, die auf dem GTK+ 2 grafischen Toolkit basiert.
  • KDE — Eine weitere Desktop-Umgebung, welche auf dem Qt 3 grafischen Toolkit basiert.
Sowohl GNOME als auch KDE besitzen erweiterte Applikationen wie textverarbeitende Prozessoren, elektronische Kalkulationstabellen und Web-Browser, mit denen Sie das Look and Feel vollständig steuern können. Wenn die GTK+ 2 und die Qt-Bibliotheken vorhanden sind, können KDE-Anwendungen auch in GNOME ausgeführt werden und umgekehrt.

33.2.2. Window Manager

Window Manager sind X-Clientprogramme, die entweder Teil einer Desktop-Umgebung oder aber eigenständig sind. Sie steuern die Art und Weise, in der grafische Fenster positioniert, in ihrer Größe verändert oder bewegt werden. Window Manager liefern darüber hinaus auch Steuerung der Titelleisten, Tastaturspezifizierung nach Tastatur oder Maus sowie benutzerspezifische Tasten- und Maustastenbindungen.
Vier Window-Manager sind in Red Hat Enterprise Linux enthalten:
kwin
Der KWin Window Manager ist der Standard bei der Auswahl der KDE Desktop-Umgebung. Dies ist ein effizienter Window Manager, der benutzerdefinierte Themen unterstützt.
metacity
Der Metacity Window Manager ist der Standard bei der Auswahl der GNOME Desktop-Umgebung. Es ist ein einfacher und effizienter Window Manager, der benutzerdefinierte Themen unterstützt. Um ihn auszuführen, müssen Sie das metacity-Paket installieren.
mwm
Beim Motif Window Manager handelt es sich um einen eigenständigen Window Manager. Er sollte weder mit GNOME noch mit KDE ausgeführt werden. Um diesen Window Manager auszuführen, müssen Sie das openmotif-Paket installieren.
twm
Beim Tab Window Manager (twm) handelt es sich um einen minimalistischen Window Manager, der im Vergleich am wenigsten Funktionalität bietet. Er kann eigenständig oder zusammen mit einer Desktop-Umgebung ausgeführt werden und wird als Teil der X11R7.1 Release installiert.
To run any of the aforementioned window managers, you will first need to boot into Runlevel 3. For instructions on how to do this, refer to Abschnitt 17.1, „Runlevel“.
Once you are logged in to Runlevel 3, you will be presented with a terminal prompt, not a graphical environment. To start a window manager, type xinit -e <path-to-window-manager> at the prompt.
<path-to-window-manager> is the location of the window manager binary file. The binary file can be located by typing which window-manager-name, where window-manager-name is the name of the window manager you want to run.
Zum Beispiel:
~]# which twm
/usr/bin/twm
~]# xinit -e /usr/bin/twm
Der erste Befehl oben gibt den absoluten Pfad zum twm Window Manager an, der zweite Befehl startet twm.
Um einen Window Manager zu verlassen, schließen Sie das letzte Fenster oder drücken Sie Ctrl+Alt+Backspace. Nachdem Sie den Window Manager verlassen haben, können Sie sich wieder im Runlevel 5 anmelden, indem Sie startx im Prompt eingeben.

33.3. X-Server-Konfigurationsdateien

Der X Server ist eine einzelne, ausführbare Binärdatei (/usr/bin/Xorg). Zugehörige Konfigurationsdateien befinden sich im /etc/X11/-Verzeichnis (dort befindet sich auch ein symbolisches Link — X — dasauf /usr/bin/Xorg weist). Die Konfigurationsdatei für den X Server ist /etc/X11/xorg.conf.
Das Verzeichnis /usr/lib/xorg/modules/ enthält X Server Module, die zur Runtime dynamisch geladen werden können. In der Standardeinstellung werden nur einige der Module in /usr/lib/xorg/modules/ automatisch vom X Server geladen.
To load optional modules, they must be specified in the X server configuration file, /etc/X11/xorg.conf. For more information about loading modules, refer to Abschnitt 33.3.1.5, „Module.
When Red Hat Enterprise Linux 5.8 is installed, the configuration files for X are created using information gathered about the system hardware during the installation process.

33.3.1. xorg.conf

While there is rarely a need to manually edit the /etc/X11/xorg.conf file, it is useful to understand the various sections and optional parameters available, especially when troubleshooting.

33.3.1.1. Die Struktur

The /etc/X11/xorg.conf file is comprised of many different sections which address specific aspects of the system hardware.
Each section begins with a Section "<section-name>" line (where <section-name> is the title for the section) and ends with an EndSection line. Each section contains lines that include option names and one or more option values. These are sometimes enclosed in double quotes (").
Lines beginning with a hash mark (#) are not read by the X server and are used for human-readable comments.
Some options within the /etc/X11/xorg.conf file accept a boolean switch which turns the feature on or off. Acceptable boolean values are:
  • 1, on, true, or yes — Turns the option on.
  • 0, off, false, or no — Turns the option off.
The following are some of the more important sections in the order in which they appear in a typical /etc/X11/xorg.conf file. More detailed information about the X server configuration file can be found in the xorg.conf man page.

33.3.1.2. ServerFlags

The optional ServerFlags section contains miscellaneous global X server settings. Any settings in this section may be overridden by options placed in the ServerLayout section (refer to Abschnitt 33.3.1.3, „ServerLayout for details).
Each entry within the ServerFlags section is on its own line and begins with the term Option followed by an option enclosed in double quotation marks (").
The following is a sample ServerFlags section:
Section "ServerFlags"
	Option "DontZap" "true"
EndSection
Folgendes ist eine Liste der nützlichsten Optionen:
  • "DontZap" "<boolean>" — When the value of <boolean> is set to true, this setting prevents the use of the Ctrl+Alt+Backspace key combination to immediately terminate the X server.
  • "DontZoom" "<boolean>" — When the value of <boolean> is set to true, this setting prevents cycling through configured video resolutions using the Ctrl+Alt+Keypad-Plus and Ctrl+Alt+Keypad-Minus key combinations.

33.3.1.3. ServerLayout

The ServerLayout section binds together the input and output devices controlled by the X server. At a minimum, this section must specify one output device and one input device. By default, a monitor (output device) and keyboard (input device) are specified.
The following example illustrates a typical ServerLayout section:
Section  "ServerLayout"
	Identifier     "Default Layout"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
The following entries are commonly used in the ServerLayout section:
  • Identifier — Specifies a unique name for this ServerLayout section.
  • Screen — Specifies the name of a Screen section to be used with the X server. More than one Screen option may be present.
    The following is an example of a typical Screen entry:
    Screen      0  "Screen0" 0 0
    The first number in this example Screen entry (0) indicates that the first monitor connector or head on the video card uses the configuration specified in the Screen section with the identifier "Screen0".
    An example of a Screen section with the identifier "Screen0" can be found in Abschnitt 33.3.1.9, „Screen.
    If the video card has more than one head, another Screen entry with a different number and a different Screen section identifier is necessary .
    The numbers to the right of "Screen0" give the absolute X and Y coordinates for the upper-left corner of the screen (0 0 by default).
  • InputDevice — Specifies the name of an InputDevice section to be used with the X server.
    It is advisable that there be at least two InputDevice entries: one for the default mouse and one for the default keyboard. The options CorePointer and CoreKeyboard indicate that these are the primary mouse and keyboard.
  • Option "<option-name>" — An optional entry which specifies extra parameters for the section. Any options listed here override those listed in the ServerFlags section.
    Replace <option-name> with a valid option listed for this section in the xorg.conf man page.
Es ist möglich, mehr als einen ServerLayout-Abschnitt in die /etc/X11/xorg.conf-Datei zu legen. In der Standardeinstellung liest der Server aber nur den ersten, den er findet.
Falls ein alternativer ServerLayout-Abschnitt existiert, kann er beim Start einer X-Session als ein Befehlszeilenargument spezifiziert werden.

33.3.1.4. Files

The Files section sets paths for services vital to the X server, such as the font path. This is an optional section, these paths are normally detected automatically. This section may be used to override any automatically detected defaults.
The following example illustrates a typical Files section:
Section "Files"
	RgbPath      "/usr/share/X11/rgb.txt"
	FontPath     "unix/:7100"
EndSection
The following entries are commonly used in the Files section:
  • RgbPath — Specifies the location of the RGB color database. This database defines all valid color names in X and ties them to specific RGB values.
  • FontPath — Specifies where the X server must connect to obtain fonts from the xfs font server.
    By default, the FontPath is unix/:7100. This tells the X server to obtain font information using UNIX-domain sockets for inter-process communication (IPC) on port 7100.
    Refer to Abschnitt 33.4, „Fonts“ for more information concerning X and fonts.
  • ModulePath — An optional parameter which specifies alternate directories which store X server modules.

33.3.1.5. Module

Standardmäßig lädt der X-Server automatisch die folgenden Module aus dem /usr/lib/xorg/modules/-Verzeichnis:
  • extmod
  • dbe
  • glx
  • freetype
  • type1
  • record
  • dri
The default directory for loading these modules can be changed by specifying a different directory with the optional ModulePath parameter in the Files section. Refer to Abschnitt 33.3.1.4, „Files for more information on this section.
Durch das Hinzufügen eines Module-Abschnitts zu /etc/X11/xorg.conf wird der X-Server angewiesen, die in diesem Abschnitt gelisteten Module anstelle der Standard-Module zu laden.
For example, the following typical Module section:
Section "Module"
	Load  "fbdevhw"
EndSection
instructs the X server to load the fbdevhw instead of the default modules.
Wenn Sie einen Module-Abschnitt zu /etc/X11/xorg.conf hinzufügen, werden Sie Standard-Module sowie zusätzliche Module, die Sie laden möchten, spezifizieren müssen.

33.3.1.6. InputDevice

Each InputDevice section configures one input device for the X server. Systems typically have at least one InputDevice section for the keyboard. It is perfectly normal to have no entry for a mouse, as most mouse settings are automatically detected.
The following example illustrates a typical InputDevice section for a keyboard:
Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
        Option      "XkbModel" "pc105"
        Option      "XkbLayout" "us"
EndSection
The following entries are commonly used in the InputDevice section:
  • Identifier — Specifies a unique name for this InputDevice section. This is a required entry.
  • Driver — Specifies the name of the device driver X must load for the device.
  • Option — Specifies necessary options pertaining to the device.
    Für eine Maus kann auch festgelegt werden, dass jegliche von selbst aufgefundene Standards für das Gerät außer Kraft gesetzt werden. Die folgenden Optionen werden in der Regel eingeschlossen, wenn eine Maus xorg.conf hinzugefügt wird:
    • Protocol — Specifies the protocol used by the mouse, such as IMPS/2.
    • Device — Specifies the location of the physical device.
    • Emulate3Buttons — Specifies whether to allow a two-button mouse to act like a three-button mouse when both mouse buttons are pressed simultaneously.
    Consult the xorg.conf man page for a list of valid options for this section.

33.3.1.7. Monitor

Each Monitor section configures one type of monitor used by the system. This is an optional entry as well, as most monitors are now automatically detected.
The easiest way to configure a monitor is to configure X during the installation process or by using the X Configuration Tool. For more information about using the X Configuration Tool, refer to Kapitel 34, X Window System Konfiguration.
This example illustrates a typical Monitor section for a monitor:
Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "DDC Probed Monitor - ViewSonic G773-2"
	DisplaySize  320	240
	HorizSync    30.0 - 70.0
	VertRefresh  50.0 - 180.0
EndSection

Warnung

Be careful when manually editing values in the Monitor section of /etc/X11/xorg.conf. Inappropriate values can damage or destroy a monitor. Consult the monitor's documentation for a listing of safe operating parameters.
The following are commonly entries used in the Monitor section:
  • Identifier — Specifies a unique name for this Monitor section. This is a required entry.
  • VendorName — An optional parameter which specifies the vendor of the monitor.
  • ModelName — An optional parameter which specifies the monitor's model name.
  • DisplaySize — An optional parameter which specifies, in millimeters, the physical size of the monitor's picture area.
  • HorizSync — Specifies the range of horizontal sync frequencies compatible with the monitor in kHz. These values help the X server determine the validity of built-in or specified Modeline entries for the monitor.
  • VertRefresh — Specifies the range of vertical refresh frequencies supported by the monitor, in kHz. These values help the X server determine the validity of built in or specified Modeline entries for the monitor.
  • Modeline — An optional parameter which specifies additional video modes for the monitor at particular resolutions, with certain horizontal sync and vertical refresh resolutions. Refer to the xorg.conf man page for a more detailed explanation of Modeline entries.
  • Option "<option-name>" — An optional entry which specifies extra parameters for the section. Replace <option-name> with a valid option listed for this section in the xorg.conf man page.

33.3.1.8. Device

Each Device section configures one video card on the system. While one Device section is the minimum, additional instances may occur for each video card installed on the machine.
The best way to configure a video card is to configure X during the installation process or by using the X Configuration Tool. For more about using the X Configuration Tool, refer to Kapitel 34, X Window System Konfiguration.
The following example illustrates a typical Device section for a video card:
Section "Device"
	Identifier  "Videocard0"
	Driver      "mga"
	VendorName  "Videocard vendor"
	BoardName   "Matrox Millennium G200"
	VideoRam    8192
	Option      "dpms"
EndSection
The following entries are commonly used in the Device section:
  • Identifier — Specifies a unique name for this Device section. This is a required entry.
  • Driver — Specifies which driver the X server must load to utilize the video card. A list of drivers can be found in /usr/share/hwdata/videodrivers, which is installed with the hwdata package.
  • VendorName — An optional parameter which specifies the vendor of the video card.
  • BoardName — An optional parameter which specifies the name of the video card.
  • VideoRam — An optional parameter which specifies the amount of RAM available on the video card in kilobytes. This setting is only necessary for video cards the X server cannot probe to detect the amount of video RAM.
  • BusID — An entry which specifies the bus location of the video card. On systems with only one video card a BusID entry is optional and may not even be present in the default /etc/X11/xorg.conf file. On systems with more than one video card, however, a BusID entry must be present.
  • Screen — An optional entry which specifies which monitor connector or head on the video card the Device section configures. This option is only useful for video cards with multiple heads.
    If multiple monitors are connected to different heads on the same video card, separate Device sections must exist and each of these sections must have a different Screen value.
    Values for the Screen entry must be an integer. The first head on the video card has a value of 0. The value for each additional head increments this value by one.
  • Option "<option-name>" — An optional entry which specifies extra parameters for the section. Replace <option-name> with a valid option listed for this section in the xorg.conf man page.
    One of the more common options is "dpms" (for Display Power Management Signaling, a VESA standard), which activates the Service Star energy compliance setting for the monitor.

33.3.1.9. Screen

Each Screen section binds one video card (or video card head) to one monitor by referencing the Device section and the Monitor section for each. While one Screen section is the minimum, additional instances may occur for each video card and monitor combination present on the machine.
The following example illustrates a typical Screen section:
Section "Screen"
	Identifier "Screen0"
	Device     "Videocard0"
	Monitor    "Monitor0"
	DefaultDepth     16
	SubSection "Display"
		Depth     24
		Modes    "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"
	EndSubSection
	SubSection "Display"
		Depth     16
		Modes    "1152x864" "1024x768" "800x600" "640x480"
	EndSubSection
EndSection
The following entries are commonly used in the Screen section:
  • Identifier — Specifies a unique name for this Screen section. This is a required entry.
  • Device — Specifies the unique name of a Device section. This is a required entry.
  • Monitor — Specifies the unique name of a Monitor section. This is only required if a specific Monitor section is defined in the xorg.conf file. Normally, monitors are automatically detected.
  • DefaultDepth — Specifies the default color depth in bits. In the previous example, 16 (which provides thousands of colors) is the default. Only one DefaultDepth is permitted, although this can be overridden with the Xorg command line option -depth <n>,where <n> is any additional depth specified.
  • SubSection "Display" — Specifies the screen modes available at a particular color depth. The Screen section can have multiple Display subsections, which are entirely optional since screen modes are automatically detected.
    Dieser Unterabschnitt wird in der Regel dazu verwendet, automatisch aufgefundene Modi außer Kraft zu setzen.
  • Option "<option-name>" — An optional entry which specifies extra parameters for the section. Replace <option-name> with a valid option listed for this section in the xorg.conf man page.

33.3.1.10. DRI

The optional DRI section specifies parameters for the Direct Rendering Infrastructure (DRI). DRI is an interface which allows 3D software applications to take advantage of 3D hardware acceleration capabilities built into most modern video hardware. In addition, DRI can improve 2D performance via hardware acceleration, if supported by the video card driver.
Dieser Abschnitt erscheint selten, da DRI Gruppe und Modus automatisch gemäß den Standardwerten initialisiert werden. Werden eine andere Gruppe oder Modus gewünscht, so setzt das Hinzufügen dieses Abschnitts zur xorg.conf-Datei diese Standardeinstellungen außer Kraft.
The following example illustrates a typical DRI section:
Section "DRI"
	Group        0
	Mode         0666
EndSection
Unterschiedliche Grafikkarten verwenden DRI auf unterschiedliche Weise. Ehe Sie Änderungen hier vornehmen, lesen Sie bitte zuerst den Abschnitt http://dri.sourceforge.net/.

33.4. Fonts

Red Hat Enterprise Linux uses two subsystems to manage and display fonts under X: Fontconfig and xfs.
Das neuere Fontconfig Font-Untersystem vereinfacht die Font-Verwaltung und bietet verbesserte Features für die Anzeige, darunter "Anti-Aliasing". Dieses System wird automatisch für mittels des Qt 3 oder GTK+ 2 grafischen Toolkit programmierte Anwendungen verwendet.
Aus Gründen der Kompatibilität, enthält Red Hat Enterprise Linux auch das originale, Core X, Font-Subsystem. Dieses System, das mehr als 15 Jahre alt ist, ist um den X Font Server (xfs) basiert.
Dieser Abschnitt beschreibt das Konfigurieren von Fonts unter Verwendung beider Systeme.

33.4.1. Fontconfig

Das Fontconfig Font-Subsystem erlaubt Applikationen den Zugriff auf Fonts des Systems und die Verwendung von Xft oder eines anderen Render-Mechanismus, um Fontconfig Fonts mit einem fortgeschrittenen Anti-Aliasing zu versehen. Graphische Applikationen können die Xft-Library mit Fontconfig dazu benutzen, Text auf dem Bildschirm darzustellen.
Mit der Zeit wird das Fontconfig/Xft Font-Subsystem das Core X Font-Subsystem vollständig ablösen.

Wichtig

The Fontconfig font subsystem does not yet work for OpenOffice.org, which uses its own font rendering technology.
It is important to note that Fontconfig uses the /etc/fonts/fonts.conf configuration file, which should not be edited by hand.

Tip

Due to the transition to the new font system, GTK+ 1.2 applications are not affected by any changes made via the Font Preferences dialog (accessed by selecting System (on the panel) > Preferences > Fonts). For these applications, a font can be configured by adding the following lines to the file ~/.gtkrc.mine:
style "user-font" {
	fontset = "<font-specification>"
}

widget_class "*" style "user-font"
Replace <font-specification> with a font specification in the style used by traditional X applications, such as -adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*. A full list of core fonts can be obtained by running xlsfonts or created interactively using the xfontsel command.

33.4.1.1. Hinzufügen von Fonts zu Fontconfig

Das Hinzufügen von neuen Fonts zum Fontconfig-Subsystem ist ein einfacher und direkter Vorgang.
  1. To add fonts system-wide, copy the new fonts into the /usr/share/fonts/ directory. It is a good idea to create a new subdirectory, such as local/ or similar, to help distinguish between user-installed and default fonts.
    To add fonts for an individual user, copy the new fonts into the .fonts/ directory in the user's home directory.
  2. Use the fc-cache command to update the font information cache, as in the following example:
    fc-cache <path-to-font-directory>
    In this command, replace <path-to-font-directory> with the directory containing the new fonts (either /usr/share/fonts/local/ or /home/<user>/.fonts/).

Tip

Individual users may also install fonts graphically, by typing fonts:/// into the Nautilus address bar, and dragging the new font files there.

Wichtig

If the font file name ends with a .gz extension, it is compressed and cannot be used until uncompressed. To do this, use the gunzip command or double-click the file and drag the font to a directory in Nautilus.

33.4.2. Core X Font-System

For compatibility, Red Hat Enterprise Linux provides the core X font subsystem, which uses the X Font Server (xfs) to provide fonts to X client applications.
The X server looks for a font server specified in the FontPath directive within the Files section of the /etc/X11/xorg.conf configuration file. Refer to Abschnitt 33.3.1.4, „Files for more information about the FontPath entry.
The X server connects to the xfs server on a specified port to acquire font information. For this reason, the xfs service must be running for X to start. For more about configuring services for a particular runlevel, refer to Kapitel 17, Zugriffskontrolle für Dienste.

33.4.2.1. xfs Configuration

The /etc/rc.d/init.d/xfs script starts the xfs server. Several options can be configured within its configuration file, /etc/X11/fs/config.
Die Folgende ist eine Liste der häufiger verwendeten Optionen:
  • alternate-servers — Specifies a list of alternate font servers to be used if this font server is not available. A comma must separate each font server in a list.
  • catalogue — Specifies an ordered list of font paths to use. A comma must separate each font path in a list.
    Use the string :unscaled immediately after the font path to make the unscaled fonts in that path load first. Then specify the entire path again, so that other scaled fonts are also loaded.
  • client-limit — Specifies the maximum number of clients the font server services. The default is 10.
  • clone-self — Allows the font server to clone a new version of itself when the client-limit is hit. By default, this option is on.
  • default-point-size — Specifies the default point size for any font that does not specify this value. The value for this option is set in decipoints. The default of 120 corresponds to a 12 point font.
  • default-resolutions — Specifies a list of resolutions supported by the X server. Each resolution in the list must be separated by a comma.
  • deferglyphs — Specifies whether to defer loading glyphs (the graphic used to visually represent a font). To disable this feature use none, to enable this feature for all fonts use all, or to turn this feature on only for 16-bit fonts use 16.
  • error-file — Specifies the path and file name of a location where xfs errors are logged.
  • no-listen — Prevents xfs from listening to particular protocols. By default, this option is set to tcp to prevent xfs from listening on TCP ports for security reasons.

    Tip

    If xfs is used to serve fonts over the network, remove this line.
  • port — Specifies the TCP port that xfs listens on if no-listen does not exist or is commented out.
  • use-syslog — Specifies whether to use the system error log.

33.4.2.2. Adding Fonts to xfs

To add fonts to the core X font subsystem (xfs), follow these steps:
  1. If it does not already exist, create a directory called /usr/share/fonts/local/ using the following command as root:
    mkdir /usr/share/fonts/local/
    If creating the /usr/share/fonts/local/ directory is necessary, it must be added to the xfs path using the following command as root:
    chkfontpath --add /usr/share/fonts/local/
  2. Copy the new font file into the /usr/share/fonts/local/ directory
  3. Aktualisieren Sie die Font-Information durch Ausführen des folgenden Befehls als root:
    ttmkfdir -d /usr/share/fonts/local/ -o /usr/share/fonts/local/fonts.scale
  4. Reload the xfs font server configuration file by issuing the following command as root:
    service xfs reload

33.5. Runlevels und X

In den meisten Fällen konfiguriert der Installer von Red Hat Enterprise Linux einen Rechner zum Booten in die grafische Oberfläche, auch als Runlevel 5 bekannt. Es ist allerdings möglich, in einen Text-basierten Multi-User-Modus namens Runlevel 3 zu booten und eine X-Session von dort zu beginnen.
For more information about runlevels, refer to Abschnitt 17.1, „Runlevel“.
Dieser Abschnitt behandelt das Starten von X in beide, Runlevel 3 und Runlevel 5.

33.5.1. Runlevel 3

When in runlevel 3, the best way to start an X session is to log in and type startx. The startx command is a front-end to the xinit command, which launches the X server (Xorg) and connects X client applications to it. Because the user is already logged into the system at runlevel 3, startx does not launch a display manager or authenticate users. Refer to Abschnitt 33.5.2, „Runlevel 5“ for more information about display managers.
When the startx command is executed, it searches for the .xinitrc file in the user's home directory to define the desktop environment and possibly other X client applications to run. If no .xinitrc file is present, it uses the system default /etc/X11/xinit/xinitrc file instead.
The default xinitrc script then searches for user-defined files and default system files, including .Xresources, .Xmodmap, and .Xkbmap in the user's home directory, and Xresources, Xmodmap, and Xkbmap in the /etc/X11/ directory. The Xmodmap and Xkbmap files, if they exist, are used by the xmodmap utility to configure the keyboard. The Xresources file is read to assign specific preference values to applications.
After setting these options, the xinitrc script executes all scripts located in the /etc/X11/xinit/xinitrc.d/ directory. One important script in this directory is xinput.sh, which configures settings such as the default language.
Next, the xinitrc script attempts to execute .Xclients in the user's home directory and turns to /etc/X11/xinit/Xclients if it cannot be found. The purpose of the Xclients file is to start the desktop environment or, possibly, just a basic window manager. The .Xclients script in the user's home directory starts the user-specified desktop environment in the .Xclients-default file. If .Xclients does not exist in the user's home directory, the standard /etc/X11/xinit/Xclients script attempts to start another desktop environment, trying GNOME first and then KDE followed by twm.
Wenn der Benutzer sich aus X abmeldet, befindet er sich wieder im Textmodus des Runlevel 3.

33.5.2. Runlevel 5

Wenn das System in den Runlevel 5 bootet, wird eine spezielle X-Client-Applikation mit dem Namen display manager gestartet. Ein Benutzer muss sich gegen den Display-Manager authentifizieren, bevor Desktop-Umgebungen oder Window-Manager gestartet werden.
Je nach den auf Ihrem System installierten Desktop-Umgebungen stehen drei verschiedene Display Manager für die Benutzer-Authentifizierung zur Verfügung.
  • GNOME — The default display manager for Red Hat Enterprise Linux, GNOME allows the user to configure language settings, shutdown, restart or log in to the system.
  • KDE — KDE's display manager which allows the user to shutdown, restart or log in to the system.
  • xdm — A very basic display manager which only lets the user log in to the system.
When booting into runlevel 5, the prefdm script determines the preferred display manager by referencing the /etc/sysconfig/desktop file. A list of options for this file is available in this file:
/usr/share/doc/initscripts-<version-number>/sysconfig.txt
where <version-number> is the version number of the initscripts package.
Each of the display managers reference the /etc/X11/xdm/Xsetup_0 file to set up the login screen. Once the user logs into the system, the /etc/X11/xdm/GiveConsole script runs to assign ownership of the console to the user. Then, the /etc/X11/xdm/Xsession script runs to accomplish many of the tasks normally performed by the xinitrc script when starting X from runlevel 3, including setting system and user resources, as well as running the scripts in the /etc/X11/xinit/xinitrc.d/ directory.
Users can specify which desktop environment they want to utilize when they authenticate using the GNOME or KDE display managers by selecting it from the Sessions menu item (accessed by selecting System (on the panel) > Preferences > More Preferences > Sessions). If the desktop environment is not specified in the display manager, the /etc/X11/xdm/Xsession script checks the .xsession and .Xclients files in the user's home directory to decide which desktop environment to load. As a last resort, the /etc/X11/xinit/Xclients file is used to select a desktop environment or window manager to use in the same way as runlevel 3.
When the user finishes an X session on the default display (:0) and logs out, the /etc/X11/xdm/TakeConsole script runs and reassigns ownership of the console to the root user. The original display manager, which continues running after the user logged in, takes control by spawning a new display manager. This restarts the X server, displays a new login window, and starts the entire process over again.
Wenn sich der Benutzer aus X (Runlevel 5) abmeldet, wird dieser sich wieder im Display Manager befinden.
For more information on how display managers control user authentication, refer to the /usr/share/doc/gdm-<version-number>/README (where <version-number> is the version number for the gdm package installed) and the xdm man page.

33.6. Zusätzliche Ressourcen

Über den X-Server, die damit verbundenen Clients und die entsprechenden Desktop-Umgebungen sowie Window Manager ist noch lange nicht alles gesagt. Für erfahrene Benutzer können daher die zusätzlichen Ressourcen von großem Nutzen sein.

33.6.1. Installierte Dokumentation

  • /usr/share/X11/doc/ — contains detailed documentation on the X Window System architecture, as well as how to get additional information about the Xorg project as a new user.
  • man xorg.conf — Contains information about the xorg.conf configuration files, including the meaning and syntax for the different sections within the files.
  • man Xorg — Describes the Xorg display server.

33.6.2. Nützliche Webseiten

  • http://www.X.org/ — Die Home-Page der X.Org-Vereinigung, die die X11R7.1-Release des X-Window-Systems produziert. Die X11R7.1-Release steuert gemeinsam mit Red Hat Enterprise Linux die notwendige Hardware und stellt die grafische Umgebung zur Verfügung.
  • http://dri.sourceforge.net/ — Home-Page des DRI-Projekts (Direct Rendering Infrastructure). DRI ist die wesentliche 3D-Hardwarebeschleunigungskomponente von X.
  • http://www.gnome.org/ — Home-Page des GNOME Projekts.
  • http://www.kde.org/ — Home-Page für die KDE Desktop-Umgebung.

Kapitel 34. X Window System Konfiguration

During installation, the system's monitor, video card, and display settings are configured. To change any of these settings after installation, use the X Configuration Tool.
To start the X Configuration Tool, go to System (on the panel) > Administration > Display, or type the command system-config-display at a shell prompt (for example, in an XTerm or GNOME terminal). If the X Window System is not running, a small version of X is started to run the program.
Nachdem Sie die Einstellungen geändert haben, melden Sie sich am grafischen Desktop ab und wieder an, damit die Änderungen wirksam werden.

34.1. Display Settings

The Settings tab allows users to change the resolution and color depth. The display of a monitor consists of tiny dots called pixels. The number of pixels displayed at one time is called the resolution. For example, the resolution 1024x768 means that 1024 horizontal pixels and 768 vertical pixels are used. The higher the resolution values, the more images the monitor can display at one time.
Die Farbtiefe der Anzeige gibt an, wieviele mögliche Farben angezeigt werden können. Je höher die Farbtiefe, desto besser der Kontrast zwischen den Farben.
Display Settings
Display Settings
Abbildung 34.1. Display Settings

34.2. Display Hardware Settings

When the X Configuration Tool is started, it probes the monitor and video card. If the hardware is probed properly, the information for it is shown on the Hardware tab as shown in Abbildung 34.2, „Display Hardware Settings“.
Display Hardware Settings
Display Hardware Settings
Abbildung 34.2. Display Hardware Settings

To change the monitor type or any of its settings, click the corresponding Configure button. To change the video card type or any of its settings, click the Configure button beside its settings.

34.3. Dual Head Display Settings

If multiple video cards are installed on the system, dual head monitor support is available and is configured via the Dual head tab, as shown in Abbildung 34.3, „Dual Head Display Settings“.
Dual Head Display Settings
Dual Head Display Settings
Abbildung 34.3. Dual Head Display Settings

To enable use of Dual head, check the Use dual head checkbox.
To configure the second monitor type, click the corresponding Configure button. You can also configure the other Dual head settings by using the corresponding drop-down list.
For the Desktop layout option, selecting Spanning Desktops allows both monitors to use an enlarged usable workspace. Selecting Individual Desktops shares the mouse and keyboard among the displays, but restricts windows to a single display.

Kapitel 35. Benutzer und Gruppen

Die users- und groups-Kontrolle ist ein Kernelement der Red Hat Enterprise Linux-Systemadministration.
Users können sowohl Personen sein (d.h. Accounts, die an einen bestimmten Benutzer gebunden sind) als auch Accounts, die für bestimmte Anwendungen gedacht sind.
Gruppen sind logische Ausdrücke einer Gliederung, die einzelne Benutzer zu einem gemeinsamen Zweck zusammenfasst. Alle Benutzer innerhalb einer Gruppe, können Dateien, die dieser Gruppe gehören, lesen, schreiben und ausführen.
Jeder Benutzer und jede Gruppe besitzt eine eindeutige numerische Identifikationsnummer, eine userid (UID) bzw. eine groupid (GID).
Der Benutzer, der eine Datei erstellt, ist gleichzeitig Besitzer und Gruppenbesitzer dieser Datei. Darüber hinaus werden dem Dateibesitzer, der Gruppe und anderen eigene Berechtigungen zum Lesen, Schreiben und Ausführen zugewiesen. Der Besitzer einer Datei kann nur durch den root-User geändert werden, wobei Zugangsrechte vom root-User und auch dem Besitzer der Datei geändert werden können.
Red Hat Enterprise Linux also supports access control lists (ACLs) for files and directories which allow permissions for specific users outside of the owner to be set. For more information about ACLs, refer to Kapitel 9, Access Control Lists.

35.1. Benutzer- und Gruppenkonfiguration

The User Manager allows you to view, modify, add, and delete local users and groups.
To use the User Manager, you must be running the X Window System, have root privileges, and have the system-config-users RPM package installed. To start the User Manager from the desktop, go to System (on the panel) > Administration > Users & Groups. You can also type the command system-config-users at a shell prompt (for example, in an XTerm or a GNOME terminal).
User Manager
User Manager
Abbildung 35.1. User Manager

To view a list of local users on the system, click the Users tab. To view a list of local groups on the system, click the Groups tab.
To find a specific user or group, type the first few letters of the name in the Search filter field. Press Enter or click the Apply filter button. The filtered list is displayed.
Um die Benutzer bzw. Gruppen zu sortieren, klicken Sie auf den Spaltennamen. Die Benutzer bzw. Gruppen werden gemäß dem Wert der entsprechenden Spalte sortiert.
Red Hat Enterprise Linux reserves user IDs below 500 for system users. By default, User Manager does not display system users. To view all users, including the system users, go to Edit > Preferences and uncheck Hide system users and groups from the dialog box.

35.1.1. Einen neuen Benutzer hinzufügen

To add a new user, click the Add User button. A window as shown in Abbildung 35.2, „Neuer Benutzer“ appears. Type the username and full name for the new user in the appropriate fields. Type the user's password in the Password and Confirm Password fields. The password must be at least six characters.

Tip

Es empfiehlt sich jedoch, ein wesentlich längeres Passwort zu verwenden, da das die Wahrscheinlichkeit eines unberechtigten Zugriffs maßgeblich senkt. Das Passwort sollte außerdem kein reguläres Wort sein, sondern aus einer Kombination von Buchstaben, Zahlen und Sonderzeichen bestehen.
Select a login shell. If you are not sure which shell to select, accept the default value of /bin/bash. The default home directory is /home/<username>/. You can change the home directory that is created for the user, or you can choose not to create the home directory by unselecting Create home directory.
If you select to create the home directory, default configuration files are copied from the /etc/skel/ directory into the new home directory.
Red Hat Enterprise Linux uses a user private group (UPG) scheme. The UPG scheme does not add or change anything in the standard UNIX way of handling groups; it offers a new convention. Whenever you create a new user, by default, a unique group with the same name as the user is created. If you do not want to create this group, unselect Create a private group for the user.
To specify a user ID for the user, select Specify user ID manually. If the option is not selected, the next available user ID above 500 is assigned to the new user. Because Red Hat Enterprise Linux reserves user IDs below 500 for system users, it is not advisable to manually assign user IDs 1-499.
Click OK to create the user.
Neuer Benutzer
Einen neuen Benutzer erstellen
Abbildung 35.2. Neuer Benutzer

To configure more advanced user properties, such as password expiration, modify the user's properties after adding the user. Refer to Abschnitt 35.1.2, „Benutzereigenschaften ändern“ for more information.

35.1.2. Benutzereigenschaften ändern

To view the properties of an existing user, click on the Users tab, select the user from the user list, and click Properties from the menu (or choose File > Properties from the pulldown menu). A window similar to Abbildung 35.3, „Benutzereigenschaften“ appears.
Benutzereigenschaften
Benutzereigenschaften ändern
Abbildung 35.3. Benutzereigenschaften

The User Properties window is divided into multiple tabbed pages:
  • User Data — Shows the basic user information configured when you added the user. Use this tab to change the user's full name, password, home directory, or login shell.
  • Account Info Select Enable account expiration if you want the account to expire on a certain date. Enter the date in the provided fields. Select Local password is locked to lock the user account and prevent the user from logging into the system.
  • Password Info — Displays the date that the user's password last changed. To force the user to change passwords after a certain number of days, select Enable password expiration and enter a desired value in the Days before change required: field. The number of days before the user's password expires, the number of days before the user is warned to change passwords, and days before the account becomes inactive can also be changed.
  • Groups — Allows you to view and configure the Primary Group of the user, as well as other groups that you want the user to be a member of.

35.1.3. Eine neue Gruppe hinzufügen

To add a new user group, click the Add Group button. A window similar to Abbildung 35.4, „Neue Gruppe“ appears. Type the name of the new group to create. To specify a group ID for the new group, select Specify group ID manually and select the GID. Note that Red Hat Enterprise Linux also reserves group IDs lower than 500 for system groups.
Neue Gruppe
Eine neue Gruppe erstellen
Abbildung 35.4. Neue Gruppe

Click OK to create the group. The new group appears in the group list.

35.1.4. Gruppeneigenschaften ändern

To view the properties of an existing group, select the group from the group list and click Properties from the menu (or choose File > Properties from the pulldown menu). A window similar to Abbildung 35.5, „Gruppeneigenschaften“ appears.
Gruppeneigenschaften
Gruppeneigenschaften ändern
Abbildung 35.5. Gruppeneigenschaften

The Group Users tab displays which users are members of the group. Use this tab to add or remove users from the group. Click OK to save your changes.

35.2. Tools zum Management von Benutzern und Gruppen

Die Verwaltung von Benutzern und Gruppen kann sehr mühsam sein, daher liefert Red Hat Enterprise Linux Tools und Konventionen, die diese Aufgabe erleichtern sollen.
The easiest way to manage users and groups is through the graphical application, User Manager (system-config-users). For more information on User Manager, refer to Abschnitt 35.1, „Benutzer- und Gruppenkonfiguration“.
Auch können die folgenden Befehlszeilentools zum Verwalten von Benutzern und Gruppen verwendet werden:
  • useradd, usermod, and userdel — Industry-standard methods of adding, deleting and modifying user accounts
  • groupadd, groupmod, and groupdel — Industry-standard methods of adding, deleting, and modifying user groups
  • gpasswd — Industry-standard method of administering the /etc/group file
  • pwck, grpck — Tools used for the verification of the password, group, and associated shadow files
  • pwconv, pwunconv — Tools used for the conversion of passwords to shadow passwords and back to standard passwords

35.2.1. Befehlszeilenkonfiguration

Falls Sie Befehlszeilen-Tools vorziehen oder das X-Window-System nicht installiert haben, verwenden Sie diesen Abschnitt um Benutzer und Gruppen zu konfigurieren.

35.2.2. Einen Benutzer hinzufügen

Um einen neuen Benutzer zum System hinzuzufügen:
  1. Issue the useradd command to create a locked user account:
    useradd <username>
  2. Unlock the account by issuing the passwd command to assign a password and set password aging guidelines:
    passwd <username>
Command line options for useradd are detailed in Tabelle 35.1, „useradd Command Line Options“.
Tabelle 35.1. useradd Command Line Options
Option Beschreibung
-c '<comment>' <comment> can be replaced with any string. This option is generally used to specify the full name of a user.
-d <home-dir> Home directory to be used instead of default /home/<username>/
-e <date> Das zu deaktivierende Datum für das Konto im Format JJJJ-MM-TT
-f <days> Number of days after the password expires until the account is disabled. If 0 is specified, the account is disabled immediately after the password expires. If -1 is specified, the account is not be disabled after the password expires.
-g <group-name> Group name or group number for the user's default group. The group must exist prior to being specified here.
-G <group-list> Durch Kommas getrennte Liste zusätzlicher (nicht standardmäßiger) Gruppennamen oder Gruppennummern, deren Mitglied der Benutzer ist. Die Gruppen müssen existieren, ehe sie hier bestimmt werden.
-m Erstellen Sie das Heimverzeichnis, falls es nicht existiert.
-M Kein Heimverzeichnis erstellen.
-n Keine Benutzer-Privatgruppe für den Benutzer erstellen.
-r Erstellen Sie ein Systemkonto mit einer UID unter 500 und ohne ein Heimverzeichnis
-p <password> The password encrypted with crypt
-s User's login shell, which defaults to /bin/bash
-u <uid> Benutzer-ID für den Benutzer, die eindeutig und größer als 499 sein muss

35.2.3. Eine Gruppe hinzufügen

To add a group to the system, use the command groupadd:
groupadd <group-name>
Command line options for groupadd are detailed in Tabelle 35.2, „groupadd Command Line Options“.
Tabelle 35.2. groupadd Command Line Options
Option Beschreibung
-g <gid> Gruppen-ID für die Gruppe, die größer als 499 sein muss
-r Eine Systemgruppe mit einer GID von unter 500 erstellen
-f When used with -g <gid> and <gid> already exists, groupadd will choose another unique <gid> for the group.

35.2.4. Passwörter-Alterung

For security reasons, it is advisable to require users to change their passwords periodically. This can be done when adding or editing a user on the Password Info tab of the User Manager.
To configure password expiration for a user from a shell prompt, use the chage command with an option from Tabelle 35.3, „chage Command Line Options“, followed by the username.

Wichtig

Shadow passwords must be enabled to use the chage command. For more information, see Abschnitt 35.6, „Shadow-Utilities“.
Tabelle 35.3. chage Command Line Options
Option Beschreibung
-m <days> Bestimmt die Mindestanzahl von Tagen zwischen denen der Benutzer sein Passwort ändern muss. Ist der Wert 0, so verfällt die Gültigkeit des Passworts nie.
-M <days> Bestimmt die maximale Anzahl von Tagen, die das Passwort gültig ist. Ist die in dieser Option festgelegte Anzahl von Tagen plus die in der -d-Option festgelegte Anzahl von Tagen niedriger als das aktuelle Datum, so muss der Benutzer das Passwort ändern, ehe das Konto benutzt.
-d <days> Bestimmt die Anzahl von Tagen seit dem 1. Januar 1970, das Passwort wurde geändert
-I <days> Bestimmt die Anzahl inaktiver Tage nach Ablauf der Gültigkeit des Passworts ehe das Konto gesperrt wird. Falls der Wert 0 ist, so wird das Konto nach Ablauf der Gültigkeit des Passworts nicht gesperrt.
-E <date> Bestimmt im Format JJJJ-MM-TT das Datum, an dem das Konto gesperrt wird. Statt des Datums kann auch die Anzahl von Tagen seit dem 1. Januar 1970 verwendet werden.
-W <days> Bestimmt die Anzahl von Tagen vor dem Ablauf der Passwortgültigkeit als Warnhinweis an den Benutzer.
-l Lists current account aging settings.

Tip

If the chage command is followed directly by a username (with no options), it displays the current password aging values and allows them to be changed interactively.
You can configure a password to expire the first time a user logs in. This forces users to change passwords immediately.
  1. Set up an initial password — There are two common approaches to this step. The administrator can assign a default password or assign a null password.
    To assign a default password, use the following steps:
    • Start the command line Python interpreter with the python command. It displays the following:
      Python 2.4.3 (#1, Jul 21 2006, 08:46:09)
      [GCC 4.1.1 20060718 (Red Hat 4.1.1-9)] on linux2
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
    • At the prompt, type the following commands. Replace <password> with the password to encrypt and <salt> with a random combination of at least 2 of the following: any alphanumeric character, the slash (/) character or a dot (.):
      import crypt
      print crypt.crypt("<password>","<salt>")
      The output is the encrypted password, similar to '12CsGd8FRcMSM'.
    • Press Ctrl-D to exit the Python interpreter.
    • At the shell, enter the following command (replacing <encrypted-password> with the encrypted output of the Python interpreter):
      usermod -p "<encrypted-password>" <username>
    Alternativ können Sie ein Null-Passwort statt eines erstmaligen Passworts zuordnen. Um dies zu tun, verwenden Sie den folgenden Befehl:
    usermod -p "" username

    Achtung

    Die Verwendung eines Null-Passworts ist zwar bequem, aber eine sehr unsichere Sache, da jede dritte Partei sich zuerst anmelden und mittels des ungesicherten Benutzernamens auf das System zugreifen kann. Vergewissern Sie sich stets, dass der Benutzer zur Anmeldung bereit ist, ehe Sie ein Konto mit Null-Passwort entsperren.
  2. Sofortigen Ablauf der Gültigkeit des Passworts erzwingen — Geben Sie folgenden Befehl ein:
    chage -d 0 username
    Dieser Befehl setzt den Wert für das Datum an dem das Passwort das letzte Mal geändert wurde auf die Epoche (1. Januar 1970). Dieser Wert erzwingt den sofortigen Ablauf der Gültigkeit des Passworts, unabhängig von eventuell geltenden Richtlinien für die Passwort-Alterung.
Upon the initial log in, the user is now prompted for a new password.

35.2.5. Erklärung des Vorgangs

The following steps illustrate what happens if the command useradd juan is issued on a system that has shadow passwords enabled:
  1. A new line for juan is created in /etc/passwd. The line has the following characteristics:
    • It begins with the username juan.
    • There is an x for the password field indicating that the system is using shadow passwords.
    • Eine UID über 499 wird erstellt. (In Red Hat Enterprise Linux sind UIDs und GIDs unter 500 der Systembenutzung vorbehalten).
    • Eine GID über 499 wird erstellt.
    • Die optionale GECOS-Information wird ausgelassen.
    • The home directory for juan is set to /home/juan/.
    • The default shell is set to /bin/bash.
  2. A new line for juan is created in /etc/shadow. The line has the following characteristics:
    • It begins with the username juan.
    • Two exclamation points (!!) appear in the password field of the /etc/shadow file, which locks the account.

      Hinweis

      If an encrypted password is passed using the -p flag, it is placed in the /etc/shadow file on the new line for the user.
    • Das Passwort ist so eingestellt, dass es seine Gültigkeit nie abläuft.
  3. A new line for a group named juan is created in /etc/group. A group with the same name as a user is called a user private group. For more information on user private groups, refer to Abschnitt 35.1.1, „Einen neuen Benutzer hinzufügen“.
    The line created in /etc/group has the following characteristics:
    • It begins with the group name juan.
    • An x appears in the password field indicating that the system is using shadow group passwords.
    • The GID matches the one listed for user juan in /etc/passwd.
  4. A new line for a group named juan is created in /etc/gshadow. The line has the following characteristics:
    • It begins with the group name juan.
    • An exclamation point (!) appears in the password field of the /etc/gshadow file, which locks the group.
    • Alle anderen Felder sind leer.
  5. A directory for user juan is created in the /home/ directory. This directory is owned by user juan and group juan. However, it has read, write, and execute privileges only for the user juan. All other permissions are denied.
  6. The files within the /etc/skel/ directory (which contain default user settings) are copied into the new /home/juan/ directory.
At this point, a locked account called juan exists on the system. To activate it, the administrator must next assign a password to the account using the passwd command and, optionally, set password aging guidelines.

35.3. Standardbenutzer

Tabelle 35.4, „Standardbenutzer“ lists the standard users configured in the /etc/passwd file by an Everything installation. The groupid (GID) in this table is the primary group for the user. See Abschnitt 35.4, „Standardgruppen“ for a listing of standard groups.
Tabelle 35.4. Standardbenutzer
Benutzer UID GID Benutzer-Verzeichnis Shell
root 0 0 /root /bin/bash
bin 1 1 /bin /sbin/nologin
daemon 2 2 /sbin /sbin/nologin
adm 3 4 /var/adm /sbin/nologin
lp 4 7 /var/spool/lpd /sbin/nologin
sync 5 0 /sbin /bin/sync
shutdown 6 0 /sbin /sbin/shutdown
halt 7 0 /sbin /sbin/halt
mail 8 12 /var/spool/mail /sbin/nologin
news 9 13 /etc/news
uucp 10 14 /var/spool/uucp /sbin/nologin
operator 11 0 /root /sbin/nologin
games 12 100 /usr/games /sbin/nologin
gopher 13 30 /var/gopher /sbin/nologin
ftp 14 50 /var/ftp /sbin/nologin
nobody 99 99 / /sbin/nologin
rpm 37 37 /var/lib/rpm /sbin/nologin
vcsa 69 69 /dev /sbin/nologin
dbus 81 81 / /sbin/nologin
ntp 38 38 /etc/ntp /sbin/nologin
canna 39 39 /var/lib/canna /sbin/nologin
nscd 28 28 / /sbin/nologin
rpc 32 32 / /sbin/nologin
postfix 89 89 /var/spool/postfix /sbin/nologin
mailman 41 41 /var/mailman /sbin/nologin
named 25 25 /var/named /bin/false
amanda 33 6 var/lib/amanda/ /bin/bash
postgres 26 26 /var/lib/pgsql /bin/bash
exim 93 93 /var/spool/exim /sbin/nologin
sshd 74 74 /var/empty/sshd /sbin/nologin
rpcuser 29 29 /var/lib/nfs /sbin/nologin
nsfnobody 65534 65534 /var/lib/nfs /sbin/nologin
pvm 24 24 /usr/share/pvm3 /bin/bash
apache 48 48 /var/www /sbin/nologin
xfs 43 43 /etc/X11/fs /sbin/nologin
gdm 42 42 /var/gdm /sbin/nologin
htt 100 101 /usr/lib/im /sbin/nologin
mysql 27 27 /var/lib/mysql /bin/bash
webalizer 67 67 /var/www/usage /sbin/nologin
mailnull 47 47 /var/spool/mqueue /sbin/nologin
smmsp 51 51 /var/spool/mqueue /sbin/nologin
squid 23 23 /var/spool/squid /sbin/nologin
ldap 55 55 /var/lib/ldap /bin/false
netdump 34 34 /var/crash /bin/bash
pcap 77 77 /var/arpwatch /sbin/nologin
radiusd 95 95 / /bin/false
radvd 75 75 / /sbin/nologin
Quagga 92 92 /var/run/quagga /sbin/login
wnn 49 49 /var/lib/wnn /sbin/nologin
dovecot 97 97 /usr/libexec/dovecot /sbin/nologin

35.4. Standardgruppen

Tabelle 35.5, „Standardgruppen“ lists the standard groups configured by an Everything installation. Groups are stored in the /etc/group file.
Tabelle 35.5. Standardgruppen
Gruppe GID Mitglieder
root 0 root
bin 1 root, bin, daemon
daemon 2 root, bin, daemon
sys 3 root, bin, adm
adm 4 root, adm, daemon
tty 5
disk 6 root
lp 7 daemon, lp
mem 8
kmem 9
wheel 10 root
mail 12 mail, postfix, exim
news 13 news
uucp 14 uucp
man 15
games 20
gopher 30
dip 40
ftp 50
lock 54
nobody 99
users 100
rpm 37
utmp 22
floppy 19
vcsa 69
dbus 81
ntp 38
canna 39
nscd 28
rpc 32
postdrop 90
postfix 89
mailman 41
exim 93
named 25
postgres 26
sshd 74
rpcuser 29
nfsnobody 65534
pvm 24
apache 48
xfs 43
gdm 42
htt 101
mysql 27
webalizer 67
mailnull 47
smmsp 51
squid 23
ldap 55
netdump 34
pcap 77
quaggavt 102
Quagga 92
radvd 75
slocate 21
wnn 49
dovecot 97
radiusd 95

35.5. Benutzereigene Gruppen

Red Hat Enterprise Linux verwendet ein Schema für user private group (UPG), das die Verwaltung von UNIX-Gruppen vereinfacht.
Eine UPG wird erzeugt, wenn ein neuer Benutzer zum System hinzugefügt wird. UPGs haben den selben Namen wie der Benutzer, für welchen diese erzeugt wurden und lediglich dieser Benutzer ist Mitglied der Gruppe.
UGPs ermöglichen die sichere Einstellung von Standard-Genehmigungen für eine neu erstellte Datei oder ein Verzeichnis, was sowohl dem Benutzer als auch der Gruppe dieses Benutzers gestattet, Veränderungen an der Datei oder am Verzeichnis vorzunehmen.
The setting which determines what permissions are applied to a newly created file or directory is called a umask and is configured in the /etc/bashrc file. Traditionally on UNIX systems, the umask is set to 022, which allows only the user who created the file or directory to make modifications. Under this scheme, all other users, including members of the creator's group, are not allowed to make any modifications. However, under the UPG scheme, this "group protection" is not necessary since every user has their own private group.

35.5.1. Gruppenverzeichnisse

Many IT organizations like to create a group for each major project and then assign people to the group if they need to access that project's files. Using this traditional scheme, managing files has been difficult; when someone creates a file, it is associated with the primary group to which they belong. When a single person works on multiple projects, it is difficult to associate the right files with the right group. Using the UPG scheme, however, groups are automatically assigned to files created within a directory with the setgid bit set. The setgid bit makes managing group projects that share a common directory very simple because any files a user creates within the directory are owned by the group which owns the directory.
Let us say, for example, that a group of people need to work on files in the /usr/share/emacs/site-lisp/ directory. Some people are trusted to modify the directory, but certainly not everyone is trusted. First create an emacs group, as in the following command:
groupadd emacs
To associate the contents of the directory with the emacs group, type:
chown -R root.emacs /usr/share/emacs/site-lisp
Now, it is possible to add the proper users to the group with the gpasswd command:
gpasswd -a <username> emacs
Um Benutzern zu gestatten, Dateien im Verzeichnis zu erstellen, verwenden Sie folgenden Befehl:
chmod 775 /usr/share/emacs/site-lisp
When a user creates a new file, it is assigned the group of the user's default private group. Next, set the setgid bit, which assigns everything created in the directory the same group permission as the directory itself (emacs). Use the following command:
chmod 2775 /usr/share/emacs/site-lisp
At this point, because the default umask of each user is 002, all members of the emacs group can create and edit files in the /usr/share/emacs/site-lisp/ directory without the administrator having to change file permissions every time users write new files.

35.6. Shadow-Utilities

In multiuser environments it is very important to use shadow passwords (provided by the shadow-utils package). Doing so enhances the security of system authentication files. For this reason, the installation program enables shadow passwords by default.
Im Folgenden werden die Vorteile aufgelistet, die pf-Shadow-Passwörter im Vergleich zu der traditionellen Speichermethode von Passwörten auf UNIX-basierten Systemen haben:
  • Improves system security by moving encrypted password hashes from the world-readable /etc/passwd file to /etc/shadow, which is readable only by the root user.
  • Liefern Informationen über das Altern von Passwörtern.
  • Allows the use the /etc/login.defs file to enforce security policies.
Most utilities provided by the shadow-utils package work properly whether or not shadow passwords are enabled. However, since password aging information is stored exclusively in the /etc/shadow file, any commands which create or modify password aging information do not work.
Im Folgenden finden Sie eine Auflistung von Befehlen, die nicht ausgeführt werden können, ohne dass zuvor Shadow-Passwörter aktiviert wurden:
  • chage
  • gpasswd
  • /usr/sbin/usermod -e or -f options
  • /usr/sbin/useradd -e or -f options

35.7. Zusätzliche Informationsquellen

Für weitere Informationen über Benutzer und Gruppen sowie über die Tools zu ihrer Verwaltung, siehe die folgenden Informationsquellen:

35.7.1. Installierte Dokumentation

  • Man-Seiten zu diesem Thema — Es gibt eine Reihe von man-Seiten zu die verschiedenen Anwendungen und Konfigurationsdateien, die beim Verwalten von Benutzern und Gruppen verwendet werden. Im Folgenden finden Sie eine Liste der wichtigsten man-Seiten:
    Anwendungen zur Benutzer- und Gruppenverwaltung
    • man chage — A command to modify password aging policies and account expiration.
    • man gpasswd — A command to administer the /etc/group file.
    • man groupadd — A command to add groups.
    • man grpck — A command to verify the /etc/group file.
    • man groupdel — A command to remove groups.
    • man groupmod — A command to modify group membership.
    • man pwck — A command to verify the /etc/passwd and /etc/shadow files.
    • man pwconv — A tool to convert standard passwords to shadow passwords.
    • man pwunconv — A tool to convert shadow passwords to standard passwords.
    • man useradd — A command to add users.
    • man userdel — A command to remove users.
    • man usermod — A command to modify users.
    Konfigurationsdateien
    • man 5 group — The file containing group information for the system.
    • man 5 passwd — The file containing user information for the system.
    • man 5 shadow — The file containing passwords and account expiration information for the system.

Kapitel 36. Druckerkonfiguration

Mit der Anwendung Printer Configuration Tool können Benutzer einen Drucker konfigurieren. Mit diesem Tool können Sie die Drucker-Konfigurationsdatei, Drucker-Spool-Verzeichnisse, Druckfilter und Druckerklassen warten.
Red Hat Enterprise Linux 5.8 uses the Common Unix Printing System (CUPS). If a system was upgraded from a previous Red Hat Enterprise Linux version that used CUPS, the upgrade process preserves the configured queues.
Using Printer Configuration Tool requires root privileges. To start the application, select System (on the panel) > Administration > Printing, or type the command system-config-printer at a shell prompt.
Printer Configuration Tool
Hauptfenster
Abbildung 36.1. Printer Configuration Tool

Die folgenden Druckerwarteschlangen-Typen können konfiguriert werden:
  • AppSocket/HP JetDirect — Ein Drucker, der direkt über HP JetDirect oder Appsocket anstelle eines Computers an das Netzwerk angeschlossen ist.
  • Internet Printing Protocol (IPP) — Ein Drucker, auf den über ein TCP/IP Netzwerk mittels Internet Printing Protocol zugegriffen werden kann (zum Beispiel ein Drucker, der an ein anderes Red Hat Enterprise Linux System angeschlossen ist, und bei dem CUPS übers Netzwerk läuft).
  • LPD/LPR Host or Printer — Ein Drucker, der an ein anderes UNIX-System angeschlossen ist, auf den über ein TCP/IP Netzwerk zugegriffen werden kann (zum Beispiel ein Drucker, der an ein anderes Red Hat Enterprise Linux System angeschlossen ist, und bei dem LPD übers Netzwerk läuft).
  • Networked Windows (SMB) — Ein Drucker, der an ein anderes System angeschlossen ist, das einen Drucker über ein SMB-Netzwerk gemeinsam verwendet (zum Beispiel ein Drucker, der an einen Microsoft Windows™ Computer angeschlossen ist).
  • Networked JetDirect — Ein Drucker, der direkt über HP JetDirect anstelle eines Computers an das Netzwerk angeschlossen ist.

Wichtig

Wenn Sie eine neue Druckwarteschlange hinzufügen oder eine vorhandene Warteschlange modifizieren, müssen Sie die Änderungen übernehmen, damit diese wirksam werden.
Beim Klicken auf die Apply-Schaltfläche startet der Drucker-Daemon mit den von Ihnen konfigurierten Änderungen neu.
Beim Klicken auf die Revert-Schaltfläche werden nicht angewendete Änderungen verworfen.

36.1. Einen lokalen Drucker hinzufügen

To add a local printer, such as one attached through a parallel port or USB port on your computer, click the New Printer button in the main Printer Configuration Tool window to display the window in Abbildung 36.2, „Adding a Printer.
Adding a Printer
Einen Drucker hinzufügen
Abbildung 36.2. Adding a Printer

Klicken Sie auf Forward um fortzufahren.
Geben Sie einen einmaligen Namen für den Drucker im Feld Printer Name-Feld ein. Der Name kann Buchstaben, Zahlen, Bindestriche (-) und Unterstriche (_) enthalten. Er darf keine Leerstellen enthalten.
Sie können auch die Description und Location-Felder benutzen, um diesen Drucker weiter von anderen möglicherweise auf Ihrem System konfigurierten Druckern zu unterscheiden. Beide Felder sind optional und können Leerstellen enthalten.
Click Forward to open the New Printer dialogue (refer to Abbildung 36.3, „Einen lokalen Drucker hinzufügen“). If the printer has been automatically detected, the printer model appears in Select Connection. Select the printer model and click Forward to continue.
Falls das Gerät nicht automatisch erscheint, so wählen Sie das Gerät mit dem der Drucker verbunden ist (wie LPT #1 oder Serial Port #1) in Select Connection.
Einen lokalen Drucker hinzufügen
Einen lokalen Drucker hinzufügen
Abbildung 36.3. Einen lokalen Drucker hinzufügen

Next, select the printer type. Refer to Abschnitt 36.5, „Auswahl des Druckermodells und Fertigstellung“ for details.

36.2. Einen IPP-Drucker hinzufügen

Bei einem IPP-Drucker handelt es sich um einen Drucker, der an ein anderes System an demselben TCP/IP-Netzwerk angeschlossen ist. Das System, an dem dieser Drucker angeschlossen ist, kann für CUPS oder zur Verwendung von IPP konfiguriert sein.
If a firewall is enabled on the printer server, then the firewall should be configured to allow send / receive connections on the incoming UDP port 631. If a firewall is enabled on the client (the system sending the print request) then the firewall should be configured to allow accept and create connections through port 631.
You can add a networked IPP printer by clicking the New Printer button in the main Printer Configuration Tool window to display the window in Abbildung 36.2, „Adding a Printer. Enter the Printer Name (printer names cannot contain spaces and may contain letters, numbers, dashes (-), and underscores (_)), Description, and Location to distinguish this printer from others that you may configure on your system. Click Forward to proceed.
In the window shown in Abbildung 36.4, „Einen IPP-Drucker hinzufügen“, enter the hostname of the IPP printer in the Hostname field as well as a unique name for the printer in the Printername field.
Einen IPP-Drucker hinzufügen
CUPS Netzwerkdrucker
Abbildung 36.4. Einen IPP-Drucker hinzufügen

Klicken Sie auf Forward um fortzufahren.
Next, select the printer type. Refer to Abschnitt 36.5, „Auswahl des Druckermodells und Fertigstellung“ for details.

36.3. Einen Samba (SMB) Drucker hinzufügen

You can add a Samba (SMB) based printer share by clicking the New Printer button in the main Printer Configuration Tool window to display the window in Abbildung 36.2, „Adding a Printer. Enter a unique name for the printer in the Printer Name field. The printer name can contain letters, numbers, dashes (-), and underscores (_); it must not contain any spaces.
Sie können auch die Description und Location-Felder benutzen, um diesen Drucker weiter von anderen möglicherweise auf Ihrem System konfigurierten Druckern zu unterscheiden. Beide Felder sind optional und können Leerstellen enthalten.
Einen SMB-Drucker hinzufügen
SMB-Drucker
Abbildung 36.5. Einen SMB-Drucker hinzufügen

As shown in Abbildung 36.5, „Einen SMB-Drucker hinzufügen“, available SMB shares are automatically detected and listed in the Share column. Click the arrow ( ) beside a Workgroup to expand it. From the expanded list, select a printer.
If the printer you are looking for does not appear in the list, enter the SMB address in the smb:// field. Use the format computer name/printer share. In Abbildung 36.5, „Einen SMB-Drucker hinzufügen“, the computer name is dellbox, while the printer share is r2.
Im Username-Feld geben Sie den Benutzernamen ein, der den Drucker benutzen soll. Dieser Benutzer muss im SMB-System vorhanden sein und der Benutzer muss eine Genehmigung zum Zugriff auf den Drucker besitzen. Der Standard-Benutzername ist in der Regel guest für Windows-Server oder nobody für Samba-Server.
Geben Sie das Password für den im Username-Feld festgelegten Benutzer ein (falls erforderlich).
Sie können die Verbindung dann durch Klicken auf Verify testen. Bei erfolgreicher Verifizierung erscheint eine Dialog-Box, die die Verfügbarkeit des Druckeranteils bestätigt.
Next, select the printer type. Refer to Abschnitt 36.5, „Auswahl des Druckermodells und Fertigstellung“ for details.

Warnung

Benutzernamen und Passwörter von Samba-Druckern werden auf dem Drucker-Server gespeichert, die als nicht verschlüsselte Dateien durch den Root und lpd gelesen werden können. Andere Benutzer mit Root-Zugriff können also Benutzernamen und Passwörter einsehen, wenn Samba-Drucker verwendet werden.
Es empfiehlt sich daher bei der Wahl von Benutzernamen und Passwort für den Zugriff auf einen Samba-Drucker einen anderen Benutzernamen sowie Passwort als für den Zugriff auf das lokale Red Hat Enterprise Linux Sstem zu wählen.
Falls Dateien auf dem Samba-Drucker-Server geteilt werden, sollten auch diese ein anderes Passwort als das der Drucker-Warteschlange verwenden.

36.4. Adding a JetDirect Printer

To add a JetDirect or AppSocket connected printer share, click the New Printer button in the main Printer Configuration Tool window to display the window in Abbildung 36.2, „Adding a Printer. Enter a unique name for the printer in the Printer Name field. The printer name can contain letters, numbers, dashes (-), and underscores (_); it must not contain any spaces.
Sie können auch die Description und Location-Felder benutzen, um diesen Drucker weiter von anderen möglicherweise auf Ihrem System konfigurierten Druckern zu unterscheiden. Beide Felder sind optional und können Leerstellen enthalten.
Adding a JetDirect Printer
Adding a JetDirect Printer
Abbildung 36.6. Adding a JetDirect Printer

Klicken Sie auf Forward um fortzufahren.
Die Textfelder für die folgenden Optionen werden angezeigt:
  • Hostname — Der Hostname oder die IP-Adresse des JetDirect-Druckers.
  • Port Number — Der Port auf dem JetDirect-Drucker, der auf Druckaufträge horcht. Der Standard-Port ist 9100.
Next, select the printer type. Refer to Abschnitt 36.5, „Auswahl des Druckermodells und Fertigstellung“ for details.

36.5. Auswahl des Druckermodells und Fertigstellung

Wenn Sie ordnungsgemäß einen Warteschlangetyp für den Drucker gewählt haben, haben Sie unter folgenden Optionen die Wahl:
  • Wählen Sie einen Drucker aus der Datenbank - falls Sie sich für diese Option entscheiden, wählen Sie Ihr Druckermodell aus der Liste der Makes. Falls das Modell nicht aufgeführt ist, wählen Sie Generic.
  • Provide PPD file - A PostScript Printer Description (PPD) file may also be provided with your printer. This file is normally provided by the manufacturer. If you are provided with a PPD file, you can choose this option and use the browser bar below the option description to select the PPD file.
Selecting a Printer Model
Selecting a Printer Model
Abbildung 36.7. Selecting a Printer Model

After choosing an option, click Forward to continue. Abbildung 36.7, „Selecting a Printer Model“ appears. You now have to choose the corresponding model and driver for the printer.
Der empfohlene Druckertreiber wird je nach ausgewähltem Drucker automatisch ausgewählt. Der Druckertreiber verarbeitet die Daten, die Sie drucken möchten in ein Format, dass der Drucker versteht. Da ein lokaler Drucker direkt an Ihren Computer angeschlossen ist, benötigen Sie einen Druckertreiber zum Verarbeiten der Daten, die an den Drucker gesendet werden.
Falls Sie eine PPD-Datei für das Gerät besitzen (in der Regel vom Hersteller bereitgestellt), können Sie diese mit Provide PPD file auswählen. Sie können dann das Dateisystem nach der PPD-Datei durchsuchen, indem Sie auf Browse klicken.

36.5.1. Bestätigung der Druckerkonfiguration

Der letzte Schritt besteht in der Bestätigung der Druckerkonfiguration. Klicken Sie auf Apply, um die Druckerwarteschlange hinzuzufügen, wenn die Einstellungen richtig sind. Klicken Sie auf Back, um die Druckerkonfiguration zu ändern.
After applying the changes, print a test page to ensure the configuration is correct. Refer to Abschnitt 36.6, „Eine Testseite drucken“ for details.

36.6. Eine Testseite drucken

After you have configured your printer, you should print a test page to make sure the printer is functioning properly. To print a test page, select the printer that you want to try out from the printer list, then click Print Test Page from the printer's Settings tab.
Wenn Sie den Druckertreiber oder die Treiberoptionen ändern, sollten Sie eine Testseite drucken, um die geänderte Konfiguration zu testen.

36.7. Vorhandene Drucker ändern

Wählen Sie zum Löschen eines vorhandenen Druckers den jeweiligen Drucker aus, und klicken Sie auf der Symbolleiste auf den Button Delete. Der Drucker wird aus der Druckerliste entfernt, nachdem Sie das Löschen der Druckerkonfiguration bestätigt haben.
Um den Standarddrucker einzustellen, wählen Sie den Drucker aus der Druckerliste, und klicken Sie auf die Make Default Printer-Schaltfläche im Settings-Tab.

36.7.1. Das Settings-Tab

Um Änderungen an der Konfiguration des Druckertreibers vorzunehmen, klicken Sie auf den entsprechenden Namen in der Printer-Liste und anschließend auf das Settings-Tab.
Sie können Änderungen an Druckereinstellungen wie Marke und Modell vornehmen, den Drucker als Standard einstellen, eine Testseite drucken, die "Device Location" (URI) ändern u.v.m..
Settings Tab
Settings Tab
Abbildung 36.8. Settings Tab

36.7.2. Das Policies-Tab

Um Einstellungen in der Druckausgabe zu ändern, klicken Sie auf das Policies-Tab.
Um etwa eine banner page zu erstellen (eine Seite, die über bestimmte Aspekte des Druckauftrags wie z.B. den betreffenden Drucker und den Sicherheitsstatus des zu druckenden Dokuments informiert) klicken Sie auf das Drop-Menü von Starting Banner oder Ending Banner und wählen Sie die Option, die den Druckauftrag am besten beschreibt (z.B. topsecret, classified oder confidential).
Policies Tab
Policies Tab
Abbildung 36.9. Policies Tab

Sie können auch die Error Policy des Druckers einstellen, indem Sie eine Option aus dem Drop-Down-Menü wählen. Sie können den Druckauftrag abbrechen, erneut durchführen oder anhalten.

36.7.3. Das Access Control-Tab

Sie können den Zugriff von der Benutzerebene auf den konfigurierten Drucker ändern, indem Sie auf Access Control klicken.
Fügen Sie mittels der Text-Box Benutzer hinzu, und klicken Sie auf die Add-Schaltfläche daneben. Sie können dann festlegen, dass nur dieser Teil der Benutzer den Drucker verwenden kann und anderen Benutzern der Zugriff verweigert wird.
Access Control Tab
Access Control Tab
Abbildung 36.10. Access Control Tab

36.7.4. Das Printer und Job Options-Tab

Das Printer Options-Tab enthält verschiedene Konfigurationsoptionen für die Printmedien und die Ausgabe.
Druckeroptionen-Tab
Druckaufträge-Tab
Abbildung 36.11. Druckeroptionen-Tab

  • Page Size — Ermöglicht die Auswahl der Papiergröße. Die Optionen beinhalten US-Letter, US-Legal, A3 und A4
  • Media Source — im Standard auf Automatic eingestellt. Ändern Sie diese Option, um Papier aus einer anderen Quelle zu verwenden.
  • Media Type — Ermöglicht den Wechsel des Papiertyps. Die Optionen beinhalten: "Plain", "thick", "bond" und "transparency".
  • Resolution — Configure the quality and detail of the printout. Default is 300 dots per inch (dpi).
  • Toner Saving — Einstellung der Toner-Menge des Druckers, um Ressourcen zu schonen.
Sie können die Optionen für Druckaufträge auch mittels Job Options-Tab einstellen. Verwenden Sie das Drop-Menü und wählen Sie die Auftragsoptionen, die Sie verwenden möchten, z.B. Landscape-Modi (horizontaler oder vertikaler Ausdruck), copies oder scaling (die bedruckbare Fläche vergrößern oder verkleinern, um etwa eine Druckfläche mit Übergröße auf eine kleinere Fläche zu drucken).

36.8. Druckaufträge verwalten

When you send a print job to the printer daemon, such as printing a text file from Emacs or printing an image from The GIMP, the print job is added to the print spool queue. The print spool queue is a list of print jobs that have been sent to the printer and information about each print request, such as the status of the request, the job number, and more.
During the printing process, the Printer Status icon appears in the Notification Area on the panel. To check the status of a print job, double click the Printer Status, which displays a window similar to Abbildung 36.12, „GNOME Print Status“.
GNOME Print Status
GNOME Print Status
Abbildung 36.12. GNOME Print Status

To cancel a specific print job listed in the GNOME Print Status, select it from the list and select Edit > Cancel Documents from the pulldown menu.
Um die Liste der Druckaufträge im Drucker-Spooler vom Shell-Prompt aus anzuzeigen, geben Sie den Befehl lpq ein. Die letzten Zeilen sehen dann wie folgt oder ähnlich aus:
Beispiel 36.1. Beispiel der Ausgabe mit lpq
Rank   Owner/ID              Class  Job Files       Size Time 
active user@localhost+902    A      902 sample.txt  2050 01:20:46

If you want to cancel a print job, find the job number of the request with the command lpq and then use the command lprm job number. For example, lprm 902 would cancel the print job in Beispiel 36.1, „Beispiel der Ausgabe mit lpq. You must have proper permissions to cancel a print job. You can not cancel print jobs that were started by other users unless you are logged in as root on the machine to which the printer is attached.
Sie können eine Datei auch direkt von einem Shell-Prompt aus drucken. So druckt zum Beispiel der Befehl lpr sample.txt die Textdatei sample.txt. Der Druckerfilter legt den Dateityp fest und konvertiert die Datei in ein für den Drucker lesbares Format.

36.9. Zusätzliche Ressourcen

Weitere Informationen über das Drucken unter Red Hat Enterprise Linux finden Sie in den folgenden Ressourcen.

36.9.1. Installierte Dokumentation

  • map lpr — The manual page for the lpr command that allows you to print files from the command line.
  • man lprm — Die man-Seite über das Befehlszeilen-Dienstprogramm zum Entfernen von Druckaufträgen aus der Druck-Warteschlange.
  • man mpage — Die man-Seite über das Befehlszeilen-Dienstprogramm zum Drucken mehrerer Seiten auf einem Blatt Papier.
  • man cupsd — Die man-Seite für den CUPS-Drucker-Daemon.
  • man cupsd.conf — Die man-Seite für die Konfigurationsdatei des CUPS-Drucker-Daemons.
  • man classes.conf — Die man-Seite für die Klassenkonfigurationsdatei für CUPS.

36.9.2. Hilfreiche Websites

Kapitel 37. Automated Tasks

In Linux, tasks can be configured to run automatically within a specified period of time, on a specified date, or when the system load average is below a specified number. Red Hat Enterprise Linux is pre-configured to run important system tasks to keep the system updated. For example, the slocate database used by the locate command is updated daily. A system administrator can use automated tasks to perform periodic backups, monitor the system, run custom scripts, and more.
Red Hat Enterprise Linux comes with several automated tasks utilities: cron, at, and batch.

37.1. Cron

Cron ist ein Daemon zum Ausführen wiederkehrender Tasks nach einer festgelegten Kombination aus Zeit, Kalendertag, Monat, Wochentag und Woche.
Cron assumes that the system is on continuously. If the system is not on when a task is scheduled, it is not executed. To schedule one-time tasks, refer to Abschnitt 37.2, „At und Batch“.
To use the cron service, the vixie-cron RPM package must be installed and the crond service must be running. To determine if the package is installed, use the rpm -q vixie-cron command. To determine if the service is running, use the command /sbin/service crond status.

37.1.1. Konfigurieren von Cron-Tasks

The main configuration file for cron, /etc/crontab, contains the following lines:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
The first four lines are variables used to configure the environment in which the cron tasks are run. The SHELL variable tells the system which shell environment to use (in this example the bash shell), while the PATH variable defines the path used to execute commands. The output of the cron tasks are emailed to the username defined with the MAILTO variable. If the MAILTO variable is defined as an empty string (MAILTO=""), email is not sent. The HOME variable can be used to set the home directory to use when executing commands or scripts.
Each line in the /etc/crontab file represents a task and has the following format:
minute   hour   day   month   dayofweek   command
  • minute — any integer from 0 to 59
  • hour — any integer from 0 to 23
  • day — any integer from 1 to 31 (must be a valid day if a month is specified)
  • month — any integer from 1 to 12 (or the short name of the month such as jan or feb)
  • dayofweek — any integer from 0 to 7, where 0 or 7 represents Sunday (or the short name of the week such as sun or mon)
  • command — the command to execute (the command can either be a command such as ls /proc >> /tmp/proc or the command to execute a custom script)
Für alle oben angegebenen Werte kann der Stern (*) verwendet werden, um alle gültigen Werte anzugeben. Wenn Sie zum Beispiel den Stern für den Monatswert eingeben wird der Befehl jeden Monat innerhalb der Einschränkungen der anderen Werte ausgeführt.
A hyphen (-) between integers specifies a range of integers. For example, 1-4 means the integers 1, 2, 3, and 4.
A list of values separated by commas (,) specifies a list. For example, 3, 4, 6, 8 indicates those four specific integers.
The forward slash (/) can be used to specify step values. The value of an integer can be skipped within a range by following the range with /<integer>. For example, 0-59/2 can be used to define every other minute in the minute field. Step values can also be used with an asterisk. For instance, the value */3 can be used in the month field to run the task every third month.
Alle Zeilen, die mit einem Nummernzeichen (Hash) (#) beginnen, sind Kommentare und werden nicht verarbeitet.
As shown in the /etc/crontab file, the run-parts script executes the scripts in the /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, and /etc/cron.monthly/ directories on an hourly, daily, weekly, or monthly basis respectively. The files in these directories should be shell scripts.
If a cron task is required to be executed on a schedule other than hourly, daily, weekly, or monthly, it can be added to the /etc/cron.d/ directory. All files in this directory use the same syntax as /etc/crontab. Refer to Beispiel 37.1, „Beispiele für crontabs“ for examples.
Beispiel 37.1. Beispiele für crontabs
# record the memory usage of the system every monday
# at 3:30AM in the file /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# run custom script the first day of every month at 4:10AM
10 4 1 * * /root/scripts/backup.sh

Users other than root can configure cron tasks by using the crontab utility. All user-defined crontabs are stored in the /var/spool/cron/ directory and are executed using the usernames of the users that created them. To create a crontab as a user, login as that user and type the command crontab -e to edit the user's crontab using the editor specified by the VISUAL or EDITOR environment variable. The file uses the same format as /etc/crontab. When the changes to the crontab are saved, the crontab is stored according to username and written to the file /var/spool/cron/username.
The cron daemon checks the /etc/crontab file, the /etc/cron.d/ directory, and the /var/spool/cron/ directory every minute for any changes. If any changes are found, they are loaded into memory. Thus, the daemon does not need to be restarted if a crontab file is changed.

37.1.2. Zugriffskontrolle auf Cron

The /etc/cron.allow and /etc/cron.deny files are used to restrict access to cron. The format of both access control files is one username on each line. Whitespace is not permitted in either file. The cron daemon (crond) does not have to be restarted if the access control files are modified. The access control files are read each time a user tries to add or delete a cron task.
Der root-Benutzer kann Cron immer verwenden, unabhängig von den in den Zugriffskontroll-Dateien aufgelisteten Benutzernamen.
If the file cron.allow exists, only users listed in it are allowed to use cron, and the cron.deny file is ignored.
If cron.allow does not exist, users listed in cron.deny are not allowed to use cron.

37.1.3. Starten und Beenden des Dienstes

To start the cron service, use the command /sbin/service crond start. To stop the service, use the command /sbin/service crond stop. It is recommended that you start the service at boot time. Refer to Kapitel 17, Zugriffskontrolle für Dienste for details on starting the cron service automatically at boot time.

37.2. At und Batch

While cron is used to schedule recurring tasks, the at command is used to schedule a one-time task at a specific time and the batch command is used to schedule a one-time task to be executed when the systems load average drops below 0.8.
To use at or batch, the at RPM package must be installed, and the atd service must be running. To determine if the package is installed, use the rpm -q at command. To determine if the service is running, use the command /sbin/service atd status.

37.2.1. Konfigurieren von At-Jobs

To schedule a one-time job at a specific time, type the command at time, where time is the time to execute the command.
Das Argument time kann wie folgt aussehen:
  • HH:MM format — z.B. 04:00 bedeutet 04:00 Uhr morgens. Ist dieser Zeitpunkt bereits verstrichen, wird der Job am nächsten Tag zur angegebenen Zeit ausgeführt.
  • midnight — bedeutet 24:00 Uhr (Mitternacht).
  • noon — bedeutet 12:00 Uhr (Mittag).
  • teatime — bedeutet 16:00 Uhr.
  • month-name day year format — zum Beispiel January 15 2002 bedeutet der 15. Tag im Januar des Jahres 2002. Das Jahr kann, muss aber nicht angegeben werden.
  • MMDDYY, MM/DD/YY, or MM.DD.YY formats — z.B. 011502 für den 15. Tag im Januar des Jahres 2002 (Amerikanisches Datumsformat).
  • now + time — Zeit in Minuten, Stunden, Tagen oder Wochen. Z.B. bedeutet now (jetzt) + 5 Tage, dass der Befehl in fünf Tagen zur gleichen Zeit ausgeführt wird.
The time must be specified first, followed by the optional date. For more information about the time format, read the /usr/share/doc/at-<version>/timespec text file.
After typing the at command with the time argument, the at> prompt is displayed. Type the command to execute, press Enter, and type Ctrl+D . Multiple commands can be specified by typing each command followed by the Enter key. After typing all the commands, press Enter to go to a blank line and type Ctrl+D . Alternatively, a shell script can be entered at the prompt, pressing Enter after each line in the script, and typing Ctrl+D on a blank line to exit. If a script is entered, the shell used is the shell set in the user's SHELL environment, the user's login shell, or /bin/sh (whichever is found first).
Ausgaben der Befehle oder Skripten werden an den Benutzer gemailt.
Use the command atq to view pending jobs. Refer to Abschnitt 37.2.3, „Anzeigen von anstehenden Jobs“ for more information.
Usage of the at command can be restricted. For more information, refer to Abschnitt 37.2.5, „Zugriffskontrolle für At und Batch“ for details.

37.2.2. Konfigurieren von Batch Jobs

To execute a one-time task when the load average is below 0.8, use the batch command.
After typing the batch command, the at> prompt is displayed. Type the command to execute, press Enter, and type Ctrl+D . Multiple commands can be specified by typing each command followed by the Enter key. After typing all the commands, press Enter to go to a blank line and type Ctrl+D . Alternatively, a shell script can be entered at the prompt, pressing Enter after each line in the script, and typing Ctrl+D on a blank line to exit. If a script is entered, the shell used is the shell set in the user's SHELL environment, the user's login shell, or /bin/sh (whichever is found first). As soon as the load average is below 0.8, the set of commands or script is executed.
Ausgaben der Befehle oder Skripten werden an den Benutzer gemailt.
Use the command atq to view pending jobs. Refer to Abschnitt 37.2.3, „Anzeigen von anstehenden Jobs“ for more information.
Usage of the batch command can be restricted. For more information, refer to Abschnitt 37.2.5, „Zugriffskontrolle für At und Batch“ for details.

37.2.3. Anzeigen von anstehenden Jobs

To view pending at and batch jobs, use the atq command. The atq command displays a list of pending jobs, with each job on a line. Each line follows the job number, date, hour, job class, and username format. Users can only view their own jobs. If the root user executes the atq command, all jobs for all users are displayed.

37.2.4. Zusätzliche Optionen der Befehlszeile

Additional command line options for at and batch include:
Tabelle 37.1. at and batch Command Line Options
Option Beschreibung
-f Liest die Befehle oder Shell-Skripten von einer Datei anstatt sie am Prompt festzulegen.
-m Verschickt eine Mail an den Benutzer, wenn der Job abgeschlossen ist.
-v Zeigt die Zeit an, zu der der Job ausgeführt wird.

37.2.5. Zugriffskontrolle für At und Batch

The /etc/at.allow and /etc/at.deny files can be used to restrict access to the at and batch commands. The format of both access control files is one username on each line. Whitespace is not permitted in either file. The at daemon (atd) does not have to be restarted if the access control files are modified. The access control files are read each time a user tries to execute the at or batch commands.
The root user can always execute at and batch commands, regardless of the access control files.
If the file at.allow exists, only users listed in it are allowed to use at or batch, and the at.deny file is ignored.
If at.allow does not exist, users listed in at.deny are not allowed to use at or batch.

37.2.6. Starten und Beenden des Dienstes

To start the at service, use the command /sbin/service atd start. To stop the service, use the command /sbin/service atd stop. It is recommended that you start the service at boot time. Refer to Kapitel 17, Zugriffskontrolle für Dienste for details on starting the cron service automatically at boot time.

37.3. Zusätzliche Ressourcen

Weitere Informationen über das Konfigurieren automatisierter Tasks finden Sie in folgenden Ressourcen.

37.3.1. Installierte Dokumentation

  • cron man page — overview of cron.
  • crontab man pages in sections 1 and 5 — The man page in section 1 contains an overview of the crontab file. The man page in section 5 contains the format for the file and some example entries.
  • /usr/share/doc/at-<version>/timespec contains more detailed information about the times that can be specified for cron jobs.
  • at man page — description of at and batch and their command line options.

Kapitel 38. Protokoll-Dateien

Log-Dateien sind Dateien, die Systemnachrichten enthalten, einschließlich Kernel, Dienste und Anwendungen. Unterschiedliche Informationen haben unterschiedliche Log-Dateien. Es gibt zum Beispiel eine Standard-Systemlogdatei, eine Log-Datei nur für Sicherheitsnachrichten und eine Log-Datei für Cron-Tasks.
Log-Dateien sind sehr nützlich, wenn Sie Probleme mit dem System lösen möchten, wie das Laden eines Kernel-Treibers oder wenn Sie nach nicht authorisierten Anmeldeversuchen im System suchen. Dieses Kapitel beschreibt, wie man Log-Dateien findet, wie diese angezeigt werden und nach was in Log-Dateien zu suchen ist.
Some log files are controlled by a daemon called syslogd. A list of log messages maintained by syslogd can be found in the /etc/syslog.conf configuration file.

38.1. Lokalisieren von Log-Dateien

Most log files are located in the /var/log/ directory. Some applications such as httpd and samba have a directory within /var/log/ for their log files.
You may notice multiple files in the log file directory with numbers after them. These are created when the log files are rotated. Log files are rotated so their file sizes do not become too large. The logrotate package contains a cron task that automatically rotates log files according to the /etc/logrotate.conf configuration file and the configuration files in the /etc/logrotate.d/ directory. By default, it is configured to rotate every week and keep four weeks worth of previous log files.

38.2. Log-Dateien anzeigen

Most log files are in plain text format. You can view them with any text editor such as Vi or Emacs. Some log files are readable by all users on the system; however, root privileges are required to read most log files.
To view system log files in an interactive, real-time application, use the System Log Viewer. To start the application, go to Applications (the main menu on the panel) > System > System Logs, or type the command gnome-system-log at a shell prompt.
The application only displays log files that exist; thus, the list might differ from the one shown in Abbildung 38.1, „System Log Viewer.
System Log Viewer
System Log Viewer
Abbildung 38.1. System Log Viewer

To filter the contents of the selected log file, click on View from the menu and select Filter as illustrated below.
System Log Viewer - View Menu
System Log Viewer - View Menu
Abbildung 38.2. System Log Viewer - View Menu

Selecting the Filter menu item will display the Filter text field where you can type the keywords you wish to use for your filter. To clear your filter click on the Clear button.The figure below illustrates a sample filter.
System Log Viewer - Filter
System Log Viewer - Filter
Abbildung 38.3. System Log Viewer - Filter

38.3. Adding a Log File

To add a log file you wish to view in the list, select File > Open. This will display the Open Log window where you can select the directory and filename of the log file you wish to view.The figure below illustrates the Open Log window.
Adding a Log File
Adding a Log File
Abbildung 38.4. Adding a Log File

Click on the Open button to open the file. The file is immediately added to the viewing list where you can select it and view the contents.
Please also note that the System Log Viewer also allows you to open zipped logs whose filenames end in ".gz".

38.4. Kontrolle von Protokolldateien

System Log Viewer monitors all opened logs by default. If a new line is added to a monitored log file, the log name appears in bold in the log list. If the log file is selected or displayed, the new lines appear in bold at the bottom of the log file and after five seconds are displayed in normal format. This is illustrated in the figures below. The figure below illustrates a new alert in the messages log file. The log file is listed in bold text.
Log File Alert
Log File Alert
Abbildung 38.5. Log File Alert

Clicking on the messages log file displays the logs in the file with the new lines in bold as illustrated below.
Log file contents
Log file contents
Abbildung 38.6. Log file contents

Die neuen Zeilen erscheinen fünf Sekunden lang fett gedruckt und wechseln anschließend in das normale Schriftbild.
Log file contents after five seconds
Log file contents after five seconds
Abbildung 38.7. Log file contents after five seconds

Teil V. Systemüberwachung

Kapitel 39. SystemTap

39.1. Introduction

SystemTap provides a simple command line interface and scripting language to simplify the gathering of information about the running Linux kernel so that it can be further analyzed. Data may be extracted, filtered, and summarized quickly and safely, to enable diagnoses of complex performance or functional problems.
SystemTap allows scripts to be written in the SystemTap scripting language, which are then compiled to C-code kernel modules and inserted into the kernel.
The essential idea behind a systemtap script is to name events, and to give them handlers. Whenever a specified event occurs, the Linux kernel runs the handler as if it were a quick subroutine, then resumes. There are several kind of events, such as entering or exiting a function, a timer expiring, or the entire systemtap session starting or stopping. A handler is a series of script language statements that specify the work to be done whenever the event occurs. This work normally includes extracting data from the event context, storing them into internal variables, or printing results.

39.2. Implementierung

SystemTap takes a compiler-oriented approach to generating instrumentation. Refer to Abbildung 39.1, „Datenfluss in SystemTap“ "Flow of data in SystemTap" for an overall diagram of SystemTap used in this discussion. In the upper right hand corner of the diagram is the probe.stp, the probe script the developer has written. This is parsed by the translator into parse trees. During this time the input is checked for syntax errors. The translator then performs elaboration, pulling in additional code from the script library and determining locations of probe points and variables from the debug information. After the elaboration is complete the translator can generate the probe.c, the kernel module in C.
The probe.c file is compiled into a regular kernel module, probe.ko, using the GCC compiler. The compilation may pull in support code from the runtime libraries. After GCC has generated the probe.ko, the SystemTap daemon is started to collect the output of the instrumentation module. The instrumentation module is loaded into the kernel, and data collection is started. Data from the instrumentation module is transferred to user-space via relayfs and displayed by the daemon. When the user hits Control-C the daemon unloads the module, which also shuts down the data collection process.
Datenfluss in SystemTap
Datenfluss in SystemTap.
Abbildung 39.1. Datenfluss in SystemTap

39.3. Die Verwendung von SystemTap

Systemtap funktioniert, indem ein SystemTap Skript in C übersetzt, der System C Kompilierer ausgeführt und daraus ein Kernel-Modul erstellt wird. Ist das Modul geladen, so aktiviert es alle geprüften Ereignisse durch Einstieg in den Kernel. Wenn Ereignisse in einem der Prozessoren auftreten, laufen die kompilierten Behandlungsroutinen. Ist die Sitzung beendet, werden die Programmeinstiegspunkt gelöst und das Modul entfernt. Der gesamte Vorgang wird von einem einzigen Befehlszeilenprogramm gelenkt, stap.

39.3.1. Tracing

The simplest kind of probe is simply to trace an event. This is the effect of inserting strategically located print statements into a program. This is often the first step of problem solving: explore by seeing a history of what has happened.
This style of instrumentation is the simplest. It just asks systemtap to print something at each event. To express this in the script language, you need to say where to probe and what to print there.

39.3.1.1. Where to Probe

Systemtap supports a number of built-in events. The library of scripts that comes with systemtap, each called a "tapset", may define additional ones defined in terms of the built-in family. See the stapprobes man page for details. All these events are named using a unified syntax that looks like dot-separated parameterized identifiers:
Tabelle 39.1. SystemTap Events
Event Description
begin The startup of the systemtap session.
end The end of the systemtap session.
kernel.function("sys_open") The entry to the function named sys_open in the kernel.
syscall.close.return The return from the close system call..
module("ext3").statement(0xdeadbeef) The addressed instruction in the ext3 filesystem driver.
timer.ms(200) A timer that fires every 200 milliseconds.

We will use as a demonstration case that you would like to trace all function entries and exits in a source file, for example net/socket.c in the kernel. The kernel.function probe point lets you express that easily, since systemtap examines the kernel's debugging information to relate object code to source code. It works like a debugger: if you can name or place it, you can probe it. Use kernel.function("*@net/socket.c") for the function entries, and kernel.function("*@net/socket.c").return for the exits. Note the use of wildcards in the function name part, and the subsequent @FILENAME part. You can also put wildcards into the file name, and even add a colon (:) and a line number, if you want to restrict the search that precisely. Since systemtap will put a separate probe in every place that matches a probe point, a few wildcards can expand to hundreds or thousands of probes, so be careful what you ask for.
Once you identify the probe points, the skeleton of the systemtap script appears. The probe keyword introduces a probe point, or a comma-separated list of them. The following { and } braces enclose the handler for all listed probe points.
You can run this script as is, though with empty handlers there will be no output. Put the two lines into a new file. Run stap -v FILE. Terminate it any time with ^C. (The -v option tells systemtap to print more verbose messages during its processing. Try the -h option to see more options.)

39.3.1.2. What to Print

Since you are interested in each function that was entered and exited, a line should be printed for each, containing the function name. In order to make that list easy to read, systemtap should indent the lines so that functions called by other traced functions are nested deeper. To tell each single process apart from any others that may be running concurrently, systemtap should also print the process ID in the line.

Kapitel 40. Informationen über das System

Bevor Sie in Erfahrung bringen, wie Sie Ihr System konfigurieren, sollten Sie sich zunächst darüber informieren, wie Sie wichtige Systeminformationen abrufen können. Sie sollten z.B. wissen, wie Sie herausfinden, wie viel freien Speicherplatz Sie haben, wie viel Speicherplatz auf Ihrer Festplatte zur Verfügung steht und wie sie partitioniert ist, als auch, welche Prozesse gerade ausgeführt werden. In diesem Kapitel wird beschrieben, wie Sie diese Angaben mithilfe von kurzen Befehlen und einigen einfachen Programmen von Ihrem Red Hat Enterprise Linux-Systems abrufen können.

40.1. Systemprozesse

The ps ax command displays a list of current system processes, including processes owned by other users. To display the owner alongside each process, use the ps aux command. This list is a static list; in other words, it is a snapshot of what was running when you invoked the command. If you want a constantly updated list of running processes, use top as described below.
The ps output can be long. To prevent it from scrolling off the screen, you can pipe it through less:
ps aux | less
You can use the ps command in combination with the grep command to see if a process is running. For example, to determine if Emacs is running, use the following command:
ps ax | grep emacs
The top command displays currently running processes and important information about them including their memory and CPU usage. The list is both real-time and interactive. An example of output from the top command is provided as follows:
top - 15:02:46 up 35 min,  4 users,  load average: 0.17, 0.65, 1.00
Tasks: 110 total,   1 running, 107 sleeping,   0 stopped,   2 zombie
Cpu(s): 41.1% us,  2.0% sy,  0.0% ni, 56.6% id,  0.0% wa,  0.3% hi,  0.0% si
Mem:    775024k total,   772028k used,     2996k free,    68468k buffers
Swap:  1048568k total,      176k used,  1048392k free,   441172k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4624 root      15   0 40192  18m 7228 S 28.4  2.4   1:23.21 X
 4926 mhideo    15   0 55564  33m 9784 S 13.5  4.4   0:25.96 gnome-terminal
 6475 mhideo    16   0  3612  968  760 R  0.7  0.1   0:00.11 top
 4920 mhideo    15   0 20872  10m 7808 S  0.3  1.4   0:01.61 wnck-applet
    1 root      16   0  1732  548  472 S  0.0  0.1   0:00.23 init
    2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    3 root       5 -10     0    0    0 S  0.0  0.0   0:00.03 events/0
    4 root       6 -10     0    0    0 S  0.0  0.0   0:00.02 khelper
    5 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 kacpid
   29 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 kblockd/0
   47 root      16   0     0    0    0 S  0.0  0.0   0:01.74 pdflush
   50 root      11 -10     0    0    0 S  0.0  0.0   0:00.00 aio/0
   30 root      15   0     0    0    0 S  0.0  0.0   0:00.05 khubd
   49 root      16   0     0    0    0 S  0.0  0.0   0:01.44 kswapd0
To exit top, press the q key.
Tabelle 40.1, „Interactive top commands“ contains useful interactive commands that you can use with top. For more information, refer to the top(1) manual page.
Tabelle 40.1. Interactive top commands
Befehl Beschreibung
Space Bildschirm sofort auffrischen
h Hilfebildschirm anzeigen
k Prozess beenden. Sie werden aufgefordert, die Prozess-ID und das zu sendende Signal anzugeben.
n Anzahl der angezeigten Prozesse ändern. Sie werden aufgefordert, die gewünschte Anzahl einzugeben.
u Nach Benutzer anordnen.
M Nach Speichernutzung anordnen.
P Nach CPU-Nutzung anordnen.

If you prefer a graphical interface for top, you can use the GNOME System Monitor. To start it from the desktop, select System > Administration > System Monitor or type gnome-system-monitor at a shell prompt (such as an XTerm). Select the Process Listing tab.
The GNOME System Monitor allows you to search for a process in the list of running processes. Using the Gnome System Monitor, you can also view all processes, your processes, or active processes.
The Edit menu item allows you to:
  • Einen Prozess stoppen.
  • Einen Prozess fortsetzen oder starten.
  • Einen Prozess beenden.
  • Einen Prozess killen.
  • Die Priorität eines ausgewählten Prozesses ändern.
  • Die Präferenzen der Systemüberwachung bearbeiten. Diese umfassen das Ändern des Zeitabstands in Sekunden zur Erneuerung der Liste und die Auswahl von Prozessfeldern, die im Fenster Systemüberwachung angezeigt werden.
The View menu item allows you to:
  • Nur aktive Prozesse anzeigen.
  • Alle Prozesse ansehen.
  • Meine Prozesse anzeigen.
  • Prozessabhängigkeiten ansehen.
  • Einen Prozess verstecken.
  • Versteckte Prozesse ansehen.
  • Speicherabbild ansehen.
  • Die von den ausgewählten Prozessen geöffneten Dateien anzeigen.
To stop a process, select it and click End Process. Alternatively you can also stop a process by selecting it, clicking Edit on your menu and selecting Stop Process.
Um nach den Informationen einer bestimmten Spalte zu sortieren, klicken Sie auf den Namen der Spalte. Dies sortiert die Informationen der entsprechenden Spalte in aufsteigender Reihenfolge. Klicken Sie erneut auf den Namen der Spalte, um zwischen auf- und absteigender Sortierung hin- und her zu wechseln.
GNOME System Monitor
Prozesse des GNOME System-Monitors anzeigen
Abbildung 40.1. GNOME System Monitor

40.2. Speichernutzung

The free command displays the total amount of physical memory and swap space for the system as well as the amount of memory that is used, free, shared, in kernel buffers, and cached.
             total       used       free     shared    buffers     cached
 Mem:        645712     549720      95992          0     176248     224452
 -/+ buffers/cache:     149020     496692
 Swap:      1310712          0    1310712
The command free -m shows the same information in megabytes, which are easier to read.
             total       used       free     shared    buffers     cached
Mem:           630        536         93          0        172        219
-/+ buffers/cache:        145        485
Swap:         1279          0       1279
If you prefer a graphical interface for free, you can use the GNOME System Monitor. To start it from the desktop, go to System > Administration > System Monitor or type gnome-system-monitor at a shell prompt (such as an XTerm). Click on the Resources tab.
GNOME System Monitor - Resources tab
Reiter Ressourcenüberwachung von gnome-system-monitor
Abbildung 40.2. GNOME System Monitor - Resources tab

40.3. Dateisysteme

The df command reports the system's disk space usage. If you type the command df at a shell prompt, the output looks similar to the following:
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       11675568   6272120   4810348  57% / /dev/sda1
	                 100691      9281     86211  10% /boot
none                     322856         0    322856   0% /dev/shm
By default, this utility shows the partition size in 1 kilobyte blocks and the amount of used and available disk space in kilobytes. To view the information in megabytes and gigabytes, use the command df -h. The -h argument stands for human-readable format. The output looks similar to the following:
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                        12G  6.0G  4.6G  57% / /dev/sda1
			99M  9.1M   85M  10% /boot
none 			316M     0  316M   0% /dev/shm
In the list of mounted partitions, there is an entry for /dev/shm. This entry represents the system's virtual memory file system.
The du command displays the estimated amount of space being used by files in a directory. If you type du at a shell prompt, the disk usage for each of the subdirectories is displayed in a list. The grand total for the current directory and subdirectories are also shown as the last line in the list. If you do not want to see the totals for all the subdirectories, use the command du -hs to see only the grand total for the directory in human-readable format. Use the du --help command to see more options.
To view the system's partitions and disk space usage in a graphical format, use the Gnome System Monitor by clicking on System > Administration > System Monitor or type gnome-system-monitor at a shell prompt (such as an XTerm). Select the File Systems tab to view the system's partitions. The figure below illustrates the File Systems tab.
GNOME System Monitor - File Systems
Reiter Dateisysteme von gnome-system-monitor
Abbildung 40.3. GNOME System Monitor - File Systems

40.4. Hardware

If you are having trouble configuring your hardware or just want to know what hardware is in your system, you can use the Hardware Browser application to display the hardware that can be probed. To start the program from the desktop, select System (the main menu on the panel) > Administration > Hardware or type hwbrowser at a shell prompt. As shown in Abbildung 40.4, „Hardware Browser, it displays your CD-ROM devices, diskette drives, hard drives and their partitions, network devices, pointing devices, system devices, and video cards. Click on the category name in the left menu, and the information is displayed.
Hardware Browser
hwbrowser
Abbildung 40.4. Hardware Browser

The Device Manager application can also be used to display your system hardware. This application can be started by selecting System (the main menu on the panel) > Administration > Hardware like the Hardware Browser. To start the application from a terminal, type hal-device-manager. Depending on your installation preferences, the graphical menu above may start this application or the Hardware Browser when clicked. The figure below illustrates the Device Manager window.
Device Manager
Device Manager
Abbildung 40.5. Device Manager

You can also use the lspci command to list all PCI devices. Use the command lspci -v for more verbose information or lspci -vv for very verbose output.
For example, lspci can be used to determine the manufacturer, model, and memory size of a system's video card:
00:00.0 Host bridge: ServerWorks CNB20LE Host Bridge (rev 06)
00:00.1 Host bridge: ServerWorks CNB20LE Host Bridge (rev 06)
00:01.0 VGA compatible controller: S3 Inc. Savage 4 (rev 04)
00:02.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 08)
00:0f.0 ISA bridge: ServerWorks OSB4 South Bridge (rev 50)
00:0f.1 IDE interface: ServerWorks OSB4 IDE Controller
00:0f.2 USB Controller: ServerWorks OSB4/CSB5 OHCI USB Controller (rev 04)
01:03.0 SCSI storage controller: Adaptec AIC-7892P U160/m (rev 02)
01:05.0 RAID bus controller: IBM ServeRAID Controller
The lspci is also useful to determine the network card in your system if you do not know the manufacturer or model number.

40.5. Zusätzliche Ressourcen

Um noch mehr darüber zu erfahren, wie Sie Systeminformationen sammeln können, stehen Ihnen die folgenden Ressourcen zur Verfügung.

40.5.1. Installierte Dokumentation

  • ps --help — Displays a list of options that can be used with ps.
  • top manual page — Type man top to learn more about top and its many options.
  • free manual page — type man free to learn more about free and its many options.
  • df manual page — Type man df to learn more about the df command and its many options.
  • du manual page — Type man du to learn more about the du command and its many options.
  • lspci manual page — Type man lspci to learn more about the lspci command and its many options.
  • /proc/ directory — The contents of the /proc/ directory can also be used to gather more detailed system information.

Kapitel 41. OProfile

OProfile is a low overhead, system-wide performance monitoring tool. It uses the performance monitoring hardware on the processor to retrieve information about the kernel and executables on the system, such as when memory is referenced, the number of L2 cache requests, and the number of hardware interrupts received. On a Red Hat Enterprise Linux system, the oprofile RPM package must be installed to use this tool.
Many processors include dedicated performance monitoring hardware. This hardware makes it possible to detect when certain events happen (such as the requested data not being in cache). The hardware normally takes the form of one or more counters that are incremented each time an event takes place. When the counter value, essentially rolls over, an interrupt is generated, making it possible to control the amount of detail (and therefore, overhead) produced by performance monitoring.
OProfile verwendet diese Hardware (oder einen auf einer Zeituhr basierenden Ersatz, wenn keine Leistungsüberwachungs-Hardware vorhanden ist), um samples (Proben) von leistungsbezogenen Daten einzuholen, und zwar jedes Mal, wenn ein Zähler eine Unterbrechung verursacht. Diese Proben werden in regelmäßigen Abständen auf Diskette geschrieben. Später können die in den Proben enthaltenen Daten dazu verwendet werden, Berichte über die Leistung auf System-Level und auf Anwendungs-Level zu erstellen.
OProfile ist ein nützliches Tool, aber bitte beachten Sie bei der Verwendung folgende Einschränkungen:
  • Verwendung von gemeinsamen Bibliotheken — Proben für Codes in gemeinsamen Bibliotheken sind nicht mit der gegenständlichen Anwendung verbunden, außer es wird die --separate=library Option verwendet.
  • Leistungsüberwachungs-Proben sind ungenau — Wenn ein Leistungsüberwachungs-Register eine Probe auslöst, ist die Handhabung der Unterbrechungen nicht so präzise wie eine Ausnahme mit Nullunterteilung. Wegen der außer-Betrieb-Ausführung von Anordnungen durch den Prozessor ist es möglich, dass die Probe auf einer nahegelegenen Anordnung aufgezeichnet wird.
  • opreport does not associate samples for inline functions' properlyopreport uses a simple address range mechanism to determine which function an address is in. Inline function samples are not attributed to the inline function but rather to the function the inline function was inserted into.
  • OProfile accumulates data from multiple runs — OProfile is a system-wide profiler and expects processes to start up and shut down multiple times. Thus, samples from multiple runs accumulate. Use the command opcontrol --reset to clear out the samples from previous runs.
  • Leistungsprobleme, die nicht CPU-limitiert sind — OProfile ist darauf ausgerichtet, Probleme bei CPU-limitierten Prozessen zu finden. OProfile kann keine schlafenden Prozesse identifizieren, weil diese an Sperrungen in Warteposition sind oder auf andere Ereignisse warten (z.B. dass ein I/O-Gerät einen Vorgang beendet).

41.1. Übersicht der Tools

Tabelle 41.1, „OProfile-Befehle“ provides a brief overview of the tools provided with the oprofile package.
Tabelle 41.1. OProfile-Befehle
Befehl Beschreibung
ophelp
Displays available events for the system's processor along with a brief description of each.
opimport
Wandelt Dateien von Probe-Datenbanken von einer fremden Binärdatei in das Heimformat des Systems um. Verwenden Sie diese Option nur, wenn Sie eine Probe-Datenbank von einer anderen Architektur analysieren.
opannotate Creates annotated source for an executable if the application was compiled with debugging symbols. Refer to Abschnitt 41.5.4, „Using opannotate for details.
opcontrol
Configures what data is collected. Refer to Abschnitt 41.2, „Konfiguration von OProfile“ for details.
opreport
Retrieves profile data. Refer to Abschnitt 41.5.1, „Using opreport for details.
oprofiled
Führt einen Daemon aus, um Probedaten in regelmäßigen Abständen auf Diskette zu schreiben

41.2. Konfiguration von OProfile

Before OProfile can be run, it must be configured. At a minimum, selecting to monitor the kernel (or selecting not to monitor the kernel) is required. The following sections describe how to use the opcontrol utility to configure OProfile. As the opcontrol commands are executed, the setup options are saved to the /root/.oprofile/daemonrc file.

41.2.1. Bestimmung des Kernels

Stellen Sie zuerst ein, ob OProfile den Kernel beobachten soll. Das ist die einzige Konfigurationsoption, die nötig ist, um OProfile zu starten. Alle anderen Einstellungen sind fakultativ.
Um den Kernel zu beobachten, führen Sie folgenden Befehl als Root aus:
opcontrol --setup --vmlinux=/usr/lib/debug/lib/modules/`uname -r`/vmlinux

Anmerkung

The debuginfo package must be installed (which contains the uncompressed kernel) in order to monitor the kernel.
Um einzustellen, dass OProfile den Kernel nicht beobachten soll, führen Sie den folgenden Befehl als Root aus:
opcontrol --setup --no-vmlinux
This command also loads the oprofile kernel module, if it is not already loaded, and creates the /dev/oprofile/ directory, if it does not already exist. Refer to Abschnitt 41.6, „Understanding /dev/oprofile/ for details about this directory.

Anmerkung

Even if OProfile is configured not to profile the kernel, the SMP kernel still must be running so that the oprofile module can be loaded from it.
Setting whether samples should be collected within the kernel only changes what data is collected, not how or where the collected data is stored. To generate different sample files for the kernel and application libraries, refer to Abschnitt 41.2.3, „Trennung von Kernel- und Benutzerspeicher-Profilen“.

41.2.2. Einstellung der zu beobachtenden Ereignisse

Most processors contain counters, which are used by OProfile to monitor specific events. As shown in Tabelle 41.2, „OProfile Prozessoren und Zähler“, the number of counters available depends on the processor.
Tabelle 41.2. OProfile Prozessoren und Zähler
Prozessor cpu_type Anzahl der Zähler
Pentium Pro i386/ppro 2
Pentium II i386/pii 2
Pentium III i386/piii 2
Pentium 4 (Non-Hyper-Threaded) i386/p4 8
Pentium 4 (Hyper-Threaded) i386/p4-ht 4
Athlon i386/athlon 4
AMD64 x86-64/hammer 4
Itanium ia64/itanium 4
Itanium 2 ia64/itanium2 4
TIMER_INT Timer 1
IBM eServer iSeries and pSeries Timer 1
ppc64/power4 8
ppc64/power5 6
ppc64/970 8
IBM eServer S/390 and S/390x Timer 1
IBM eServer zSeries Timer 1

Use Tabelle 41.2, „OProfile Prozessoren und Zähler“ to verify that the correct processor type was detected and to determine the number of events that can be monitored simultaneously. timer is used as the processor type if the processor does not have supported performance monitoring hardware.
If timer is used, events cannot be set for any processor because the hardware does not have support for hardware performance counters. Instead, the timer interrupt is used for profiling.
If timer is not used as the processor type, the events monitored can be changed, and counter 0 for the processor is set to a time-based event by default. If more than one counter exists on the processor, the counters other than counter 0 are not set to an event by default. The default events monitored are shown in Tabelle 41.3, „Standard-Ereignisse“.
Tabelle 41.3. Standard-Ereignisse
Prozessor Default Event for Counter Beschreibung
Pentium Pro, Pentium II, Pentium III, Athlon, AMD64 CPU_CLK_UNHALTED The processor's clock is not halted
Pentium 4 (HT and non-HT) GLOBAL_POWER_EVENTS Die Zeit, in der der Prozessor nicht gestoppt wird.
Itanium 2 CPU_CYCLES CPU Cycles
TIMER_INT (keine) Probe für jede Zeituhr-Unterbrechung
ppc64/power4 CYCLES Processor Cycles
ppc64/power5 CYCLES Processor Cycles
ppc64/970 CYCLES Processor Cycles

Die Anzahl der Ereignisse, die zugleich beobachtet werden können, wird durch die Anzahl der Zähler für den Prozessor bestimmt. Allerdings ist dies keine direkte Beziehung. Bei manchen Prozessoren müssen gewisse Ereignisse zu bestimmten Zählern vorgezeichnet werden.
ls -d /dev/oprofile/[0-9]*
The events available vary depending on the processor type. To determine the events available for profiling, execute the following command as root (the list is specific to the system's processor type):
ophelp
The events for each counter can be configured via the command line or with a graphical interface. For more information on the graphical interface, refer to Abschnitt 41.8, „Grafische Schnittstelle“. If the counter cannot be set to a specific event, an error message is displayed.
To set the event for each configurable counter via the command line, use opcontrol:
opcontrol --event=<event-name>:<sample-rate>
Replace <event-name> with the exact name of the event from ophelp, and replace <sample-rate> with the number of events between samples.

41.2.2.1. Proberate

By default, a time-based event set is selected. It creates a sample every 100,000 clock cycles per processor. If the timer interrupt is used, the timer is set to whatever the jiffy rate is and is not user-settable. If the cpu_type is not timer, each event can have a sampling rate set for it. The sampling rate is the number of events between each sample snapshot.
Wenn das Ereignis für den Zähler eingestellt wird, können Sie auch eine Proberate bestimmen:
opcontrol --event=<event-name>:<sample-rate>
Replace <sample-rate> with the number of events to wait before sampling again. The smaller the count, the more frequent the samples. For events that do not happen frequently, a lower count may be needed to capture the event instances.

Achtung

Seien Sie extrem vorsichtig, wenn Sie die Proberate einstellen. Zu häufige Proben können das System überladen. Das System reagiert dann wie eingefroren oder es friert tatsächlich ein.

41.2.2.2. Unit-Masken

Some user performance monitoring events may also require unit masks to further define the event.
Unit masks for each event are listed with the ophelp command. The values for each unit mask are listed in hexadecimal format. To specify more than one unit mask, the hexadecimal values must be combined using a bitwise or operation.
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>

41.2.3. Trennung von Kernel- und Benutzerspeicher-Profilen

By default, kernel mode and user mode information is gathered for each event. To configure OProfile to ignore events in kernel mode for a specific counter, execute the following command:
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:0
Führen Sie den folgenden Befehl aus, um für den Zähler wieder Proben im Kernel-Modus zu starten:
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:1
To configure OProfile to ignore events in user mode for a specific counter, execute the following command:
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:<kernel>:0
Führen Sie den folgenden Befehl aus, um für den Zähler wieder Proben im Benutzer-Modus zu starten:
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:<kernel>:1
Wenn der OProfile-Daemon die Profildaten in Probedateien schreibt, kann er die Kernel- und Bibliotheks-Profildaten in jeweils unterschiedliche Probedateien schreiben. Konfigurieren Sie, wie der Daemon die Probedateien schreibt, mit dem folgenden Root- Befehl:
opcontrol --separate=<choice>
<choice> can be one of the following:
  • none — do not separate the profiles (default)
  • library — generate per-application profiles for libraries
  • kernel — generate per-application profiles for the kernel and kernel modules
  • all — generate per-application profiles for libraries and per-application profiles for the kernel and kernel modules
Wenn --separate=library verwendet wird, enthält der Probedateiname den Namen der ausführbaren Datei und den Namen der Bibliothek.

Anmerkung

These configuration changes will take effect when oprofile is restarted.

41.3. Starten und Anhalten von OProfile

Um das Beobachten des Systems mit OProfile zu starten, führen Sie folgenden Befehl als Root aus:
opcontrol --start
Eine Anzeige ähnlich der folgenden wird angezeigt:
Using log file /var/lib/oprofile/oprofiled.log Daemon started. Profiler running.
The settings in /root/.oprofile/daemonrc are used.
The OProfile daemon, oprofiled, is started; it periodically writes the sample data to the /var/lib/oprofile/samples/ directory. The log file for the daemon is located at /var/lib/oprofile/oprofiled.log.
To stop the profiler, execute the following command as root:
opcontrol --shutdown

41.4. Speicherung von Daten

Manchmal ist es nützlich, Proben zu einer bestimmten Zeit zu speichern. Wenn z.B. das Profil für eine ausführbare Datei erstellt wird, kann es nützlich sein, verschiedene Proben, die auf verschiedenen Eingabedatenreihen beruhen, einzuholen. Wenn die Anzahl der Ereignisse, die beobachtet werden soll, die Anzahl der für den Prozessor verfügbaren Zähler übersteigt, können mehrere Durchläufe von OProfile zur Datensammlung verwendet werden. Die Probedateien werden dabei jedes Mal in eine andere Datei gespeichert.
To save the current set of sample files, execute the following command, replacing <name> with a unique descriptive name for the current session.
opcontrol --save=<name>
The directory /var/lib/oprofile/samples/name/ is created and the current sample files are copied to it.

41.5. Datenanalyse

Periodically, the OProfile daemon, oprofiled, collects the samples and writes them to the /var/lib/oprofile/samples/ directory. Before reading the data, make sure all data has been written to this directory by executing the following command as root:
opcontrol --dump
Each sample file name is based on the name of the executable. For example, the samples for the default event on a Pentium III processor for /bin/bash becomes:
\{root\}/bin/bash/\{dep\}/\{root\}/bin/bash/CPU_CLK_UNHALTED.100000
Zur Profilerstellung der bereits eingeholten Daten stehen folgende Tools zur Verfügung:
  • opreport
  • opannotate
Verwenden Sie diese Tools gemeinsam mit den Binärdateien, für die Profile erstellt wurden, um Berichte zu erstellen, die noch weiter analysiert werden können.

Warnung

The executable being profiled must be used with these tools to analyze the data. If it must change after the data is collected, backup the executable used to create the samples as well as the sample files. Please note that the sample file and the binary have to agree. Making a backup isn't going to work if they do not match. oparchive can be used to address this problem.
Samples for each executable are written to a single sample file. Samples from each dynamically linked library are also written to a single sample file. While OProfile is running, if the executable being monitored changes and a sample file for the executable exists, the existing sample file is automatically deleted. Thus, if the existing sample file is needed, it must be backed up, along with the executable used to create it before replacing the executable with a new version. The oprofile analysis tools use the executable file that created the samples during analysis. If the executable changes the analysis tools will be unable to analyze the associated samples. Refer to Abschnitt 41.4, „Speicherung von Daten“ for details on how to backup the sample file.

41.5.1. Using opreport

The opreport tool provides an overview of all the executables being profiled.
The following is part of a sample output:
Profiling through timer interrupt
TIMER:0|
samples|      %|
------------------
25926 97.5212 no-vmlinux
359  1.3504 pi
65  0.2445 Xorg
62  0.2332 libvte.so.4.4.0
56  0.2106 libc-2.3.4.so
34  0.1279 libglib-2.0.so.0.400.7
19  0.0715 libXft.so.2.1.2
17  0.0639 bash
8  0.0301 ld-2.3.4.so
8  0.0301 libgdk-x11-2.0.so.0.400.13
6  0.0226 libgobject-2.0.so.0.400.7
5  0.0188 oprofiled
4  0.0150 libpthread-2.3.4.so
4  0.0150 libgtk-x11-2.0.so.0.400.13
3  0.0113 libXrender.so.1.2.2
3  0.0113 du
1  0.0038 libcrypto.so.0.9.7a
1  0.0038 libpam.so.0.77
1  0.0038 libtermcap.so.2.0.8
1  0.0038 libX11.so.6.2
1  0.0038 libgthread-2.0.so.0.400.7
1  0.0038 libwnck-1.so.4.9.0
Each executable is listed on its own line. The first column is the number of samples recorded for the executable. The second column is the percentage of samples relative to the total number of samples. The third column is the name of the executable.
Refer to the opreport man page for a list of available command line options, such as the -r option used to sort the output from the executable with the smallest number of samples to the one with the largest number of samples.

41.5.2. Using opreport on a Single Executable

To retrieve more detailed profiled information about a specific executable, use opreport:
opreport <mode> <executable>
<executable> must be the full path to the executable to be analyzed. <mode> must be one of the following:
-l
List sample data by symbols. For example, the following is part of the output from running the command opreport -l /lib/tls/libc-<version>.so:
samples  %        symbol name
12       21.4286  __gconv_transform_utf8_internal
5         8.9286  _int_malloc
4         7.1429  malloc
3         5.3571  __i686.get_pc_thunk.bx
3         5.3571  _dl_mcount_wrapper_check
3         5.3571  mbrtowc
3         5.3571  memcpy
2         3.5714  _int_realloc
2         3.5714  _nl_intern_locale_data
2         3.5714  free
2         3.5714  strcmp
1         1.7857  __ctype_get_mb_cur_max
1         1.7857  __unregister_atfork
1         1.7857  __write_nocancel
1         1.7857  _dl_addr
1         1.7857  _int_free
1         1.7857  _itoa_word
1         1.7857  calc_eclosure_iter
1         1.7857  fopen@@GLIBC_2.1
1         1.7857  getpid
1         1.7857  memmove
1         1.7857  msort_with_tmp
1         1.7857  strcpy
1         1.7857  strlen
1         1.7857  vfprintf
1         1.7857  write
The first column is the number of samples for the symbol, the second column is the percentage of samples for this symbol relative to the overall samples for the executable, and the third column is the symbol name.
Um die Ausgabe von der größten Anzahl der Proben zu der kleinsten zu sortieren (verkehrte Reihenfolge), verwenden Sie -r in Verbindung mit der -l Option.
-i <symbol-name>
List sample data specific to a symbol name. For example, the following output is from the command opreport -l -i __gconv_transform_utf8_internal /lib/tls/libc-<version>.so:
samples  %        symbol name
12       100.000  __gconv_transform_utf8_internal
Die erste Line ist eine Zusammenfassung für die Kombination Symbol/ausführbare Datei.
The first column is the number of samples for the memory symbol. The second column is the percentage of samples for the memory address relative to the total number of samples for the symbol. The third column is the symbol name.
-d
List sample data by symbols with more detail than -l. For example, the following output is from the command opreport -l -d __gconv_transform_utf8_internal /lib/tls/libc-<version>.so:
vma      samples  %        symbol name
00a98640 12       100.000  __gconv_transform_utf8_internal
00a98640 1         8.3333
00a9868c 2        16.6667
00a9869a 1         8.3333
00a986c1 1         8.3333
00a98720 1         8.3333
00a98749 1         8.3333
00a98753 1         8.3333
00a98789 1         8.3333
00a98864 1         8.3333
00a98869 1         8.3333
00a98b08 1         8.3333
Die Daten sind die gleichen wie bei der -l Option, außer dass für jedes Symbol jede verwendete virtuelle Speicheradresse gezeigt wird. Für jede virtuelle Speicheradresse wird die Nummer der Proben sowie der Prozentsatz der Proben in Relation zu der Anzahl der Proben für das Symbol gezeigt.
-x<symbol-name>
Schließen Sie die Liste der Komma-getrennten Symbole von der Ausgabe aus.
session:<name>
Specify the full path to the session or a directory relative to the /var/lib/oprofile/samples/ directory.

41.5.3. Getting more detailed output on the modules

OProfile collects data on a system-wide basis for kernel- and user-space code running on the machine. However, once a module is loaded into the kernel, the information about the origin of the kernel module is lost. The module could have come from the initrd file on boot up, the directory with the various kernel modules, or a locally created kernel module. As a result when OProfile records sample for a module, it just lists the samples for the modules for an executable in the root directory, but this is unlikely to be the place with the actual code for the module. You will need to take some steps to make sure that analysis tools get the executable.
For example on an AMD64 machine the sampling is set up to record "Data cache accesses" and "Data cache misses" and assuming you would like to see the data for the ext3 module:
~]$ opreport /ext3
CPU: AMD64 processors, speed 797.948 MHz (estimated)
Counted DATA_CACHE_ACCESSES events (Data cache accesses) with a unit mask of 0x00 (No unit mask) count 500000
Counted DATA_CACHE_MISSES events (Data cache misses) with a unit mask of 0x00 (No unit mask) count 500000
DATA_CACHE_ACC...|DATA_CACHE_MIS...|
samples|      %|  samples|      %|
------------------------------------
148721 100.000      1493 100.000 ext3
To get a more detailed view of the actions of the module, you will need to either have the module unstripped (e.g. installed from a custom build) or have the debuginfo RPM installed for the kernel.
Find out which kernel is running, "uname -a", get the appropriate debuginfo rpm, and install on the machine.
Then make a symbolic link so oprofile finds the code for the module in the correct place:
~]# ln -s /lib/modules/`uname -r`/kernel/fs/ext3/ext3.ko /ext3
Then the detailed information can be obtained with:
~]# opreport image:/ext3 -l|more
warning: could not check that the binary file /ext3 has not been modified since the profile was taken. Results may be inaccurate.
CPU: AMD64 processors, speed 797.948 MHz (estimated)
Counted DATA_CACHE_ACCESSES events (Data cache accesses) with a unit mask of 0x00 (No unit mask) count 500000
Counted DATA_CACHE_MISSES events (Data cache misses) with a unit mask of 0x00 (No unit mask) count 500000
samples  %        samples  %        symbol name
16728    11.2479  7         0.4689  ext3_group_sparse
16454    11.0637  4         0.2679  ext3_count_free_blocks
14583     9.8056  51        3.4159  ext3_fill_super
8281      5.5681  129       8.6403  ext3_ioctl
7810      5.2514  62        4.1527  ext3_write_info
7286      4.8991  67        4.4876  ext3_ordered_writepage
6509      4.3767  130       8.7073  ext3_new_inode
6378      4.2886  156      10.4488  ext3_new_block
5932      3.9887  87        5.8272  ext3_xattr_block_list
...

41.5.4. Using opannotate

The opannotate tool tries to match the samples for particular instructions to the corresponding lines in the source code. The resulting files generated should have the samples for the lines at the left. It also puts in a comment at the beginning of each function listing the total samples for the function.
For this utility to work, the executable must be compiled with GCC's -g option. By default, Red Hat Enterprise Linux packages are not compiled with this option.
The general syntax for opannotate is as follows:
opannotate --search-dirs <src-dir> --source <executable>
The directory containing the source code and the executable to be analyzed must be specified. Refer to the opannotate man page for a list of additional command line options.

41.6. Understanding /dev/oprofile/

The /dev/oprofile/ directory contains the file system for OProfile. Use the cat command to display the values of the virtual files in this file system. For example, the following command displays the type of processor OProfile detected:
cat /dev/oprofile/cpu_type
A directory exists in /dev/oprofile/ for each counter. For example, if there are 2 counters, the directories /dev/oprofile/0/ and dev/oprofile/1/ exist.
Jedes Zählerverzeichnis beinhaltet die folgenden Dateien:
  • count — The interval between samples.
  • enabled — If 0, the counter is off and no samples are collected for it; if 1, the counter is on and samples are being collected for it.
  • event — The event to monitor.
  • kernel — If 0, samples are not collected for this counter event when the processor is in kernel-space; if 1, samples are collected even if the processor is in kernel-space.
  • unit_mask — Defines which unit masks are enabled for the counter.
  • user — If 0, samples are not collected for the counter event when the processor is in user-space; if 1, samples are collected even if the processor is in user-space.
The values of these files can be retrieved with the cat command. For example:
cat /dev/oprofile/0/count

41.7. Beispielsverwendung

OProfile kann von Entwicklern verwendet werden, um die Leistung von Anwendungen zu überprüfen, aber auch von Systemadministratoren, um eine Systemanalyse durchzuführen. Zum Beispiel:
  • Determine which applications and services are used the most on a systemopreport can be used to determine how much processor time an application or service uses. If the system is used for multiple services but is under performing, the services consuming the most processor time can be moved to dedicated systems.
  • Determine processor usage — The CPU_CLK_UNHALTED event can be monitored to determine the processor load over a given period of time. This data can then be used to determine if additional processors or a faster processor might improve system performance.

41.8. Grafische Schnittstelle

Some OProfile preferences can be set with a graphical interface. To start it, execute the oprof_start command as root at a shell prompt. To use the graphical interface, you will need to have the oprofile-gui package installed.
After changing any of the options, save them by clicking the Save and quit button. The preferences are written to /root/.oprofile/daemonrc, and the application exits. Exiting the application does not stop OProfile from sampling.
On the Setup tab, to set events for the processor counters as discussed in Abschnitt 41.2.2, „Einstellung der zu beobachtenden Ereignisse “, select the counter from the pulldown menu and select the event from the list. A brief description of the event appears in the text box below the list. Only events available for the specific counter and the specific architecture are displayed. The interface also displays whether the profiler is running and some brief statistics about it.
Einstellung von OProfile
oprof_start interface
Abbildung 41.1. Einstellung von OProfile

On the right side of the tab, select the Profile kernel option to count events in kernel mode for the currently selected event, as discussed in Abschnitt 41.2.3, „Trennung von Kernel- und Benutzerspeicher-Profilen“. If this option is unselected, no samples are collected for the kernel.
Select the Profile user binaries option to count events in user mode for the currently selected event, as discussed in Abschnitt 41.2.3, „Trennung von Kernel- und Benutzerspeicher-Profilen“. If this option is unselected, no samples are collected for user applications.
Use the Count text field to set the sampling rate for the currently selected event as discussed in Abschnitt 41.2.2.1, „Proberate“.
If any unit masks are available for the currently selected event, as discussed in Abschnitt 41.2.2.2, „Unit-Masken“, they are displayed in the Unit Masks area on the right side of the Setup tab. Select the checkbox beside the unit mask to enable it for the event.
On the Configuration tab, to profile the kernel, enter the name and location of the vmlinux file for the kernel to monitor in the Kernel image file text field. To configure OProfile not to monitor the kernel, select No kernel image.
OProfile Configuration
OProfile Configuration
Abbildung 41.2. OProfile Configuration

If the Verbose option is selected, the oprofiled daemon log includes more information.
If Per-application kernel samples files is selected, OProfile generates per-application profiles for the kernel and kernel modules as discussed in Abschnitt 41.2.3, „Trennung von Kernel- und Benutzerspeicher-Profilen“. This is equivalent to the opcontrol --separate=kernel command. If Per-application shared libs samples files is selected, OProfile generates per-application profiles for libraries. This is equivalent to the opcontrol --separate=library command.
To force data to be written to samples files as discussed in Abschnitt 41.5, „Datenanalyse“, click the Flush profiler data button. This is equivalent to the opcontrol --dump command.
To start OProfile from the graphical interface, click Start profiler. To stop the profiler, click Stop profiler. Exiting the application does not stop OProfile from sampling.

41.9. Zusätzliche Informationsquellen

Dieses Kapitel bezieht sich nur auf OProfile, seine Konfiguration und Verwendung. Um mehr zu erfahren, siehe folgende Informationsquellen.

41.9.1. Installierte Dokumente

  • /usr/share/doc/oprofile-<version>/oprofile.htmlOProfile Manual
  • oprofile man page — Discusses opcontrol, opreport, opannotate, and ophelp

41.9.2. Hilfreiche Websites

Teil VI. Kernel- und Treiber-Konfiguration

Systemadministratoren können etwas lernen und ihre Kernel entsprechend anpassen. Red Hat Enterprise Linux enthält Kernel-Tools, die Systemadministratoren bei derartigen Anpassungen unterstützen.

Kapitel 42. Manuelles Aktualisieren des Kernels

Der Red Hat Enterprise Linux-Kernel wurde vom Red Hat Enterprise Linux Kernel-Team benutzerdefiniert entwickelt, um Integrität und Kompatibilität mit der unterstützten Hardware sicherzustellen. Bevor eine neue Version eines Kernels von Red Hat freigegeben wird, muss dieser erst umfangreichen Tests zur Qualitätssicherung unterzogen werden.
Red Hat Enterprise Linux kernels are packaged in RPM format so that they are easy to upgrade and verify using the Package Management Tool, or the yum command. The Package Management Tool automatically queries the Red Hat Enterprise Linux servers and determines which packages need to be updated on your machine, including the kernel. This chapter is only useful for those individuals that require manual updating of kernel packages, without using the yum command.

Warnung

Das Erstellen eines benutzerdefinierten Kernels wird nicht vom Red Hat Global Services Support Team unterstützt und wird daher auch nicht in diesem Handbuch behandelt.

Tip

The use of yum is highly recommended by Red Hat for installing upgraded kernels.
For more information on Red Hat Network, the Package Management Tool, and yum, refer to Kapitel 14, Product Subscriptions and Entitlements.

42.1. Überblick über Kernel-Pakete

Red Hat Enterprise Linux enthält die folgenden Kernel-Pakete (einige sind ggf. nicht relevant für Ihre Architektur):
  • kernel — Contains the kernel for multi-processor systems. For x86 system, only the first 4GB of RAM is used. As such, x86 systems with over 4GB of RAM should use the kernel-PAE.
  • kernel-devel — Contains the kernel headers and makefiles sufficient to build modules against the kernel package.
  • kernel-PAE (only for i686 systems) — This package offers the following key configuration option (in addition to the options already enabled for the kernel package):
    • PAE (Physical Address Extension) support for systems with more than 4GB of RAM, and reliably up to 16GB.

      Wichtig

      Physical Address Extension allows x86 processors to address up to 64GB of physical RAM, but due to differences between the Red Hat Enterprise Linux 4 and 5 kernels, only Red Hat Enterprise Linux 4 (with the kernel-hugemem package) is able to reliably address all 64GB of memory. Additionally, the Red Hat Enterprise Linux 5 PAE variant does not allow 4GB of addressable memory per-process like the Red Hat Enterprise Linux 4 kernel-hugemem variant does. However, the x86_64 kernel does not suffer from any of these limitations, and is the suggested Red Hat Enterprise Linux 5 architecture to use with large-memory systems.
  • kernel-PAE-devel — Contains the kernel headers and makefiles required to build modules against the kernel-PAE package.
  • kernel-doc — Contains documentation files from the kernel source. Various portions of the Linux kernel and the device drivers shipped with it are documented in these files. Installation of this package provides a reference to the options that can be passed to Linux kernel modules at load time.
    By default, these files are placed in the /usr/share/doc/kernel-doc-<version>/ directory.
  • kernel-headers — Beinhaltet die C-Header-Dateien, die die Schnittstelle zwischen dem Linux-Kernel und den Userspace-Bibliotheken und Programmen spezifizieren. Die Header-Dateien definieren Strukturen und Konstanten, die für das Erstellen der meisten Standardprogramme benötigt werden.
  • kernel-xen — Beinhaltet eine Version des Linux-Kernels, die zum Ausführen von Virtualisierung benötigt wird.
  • kernel-xen-devel — Enthält die Kernel-Headers und Makefiles, die benötigt werden, um Module für das Paket kernel-xen zu erstellen

Anmerkung

The kernel-source package has been removed and replaced with an RPM that can only be retrieved from Red Hat Network. This *.src.rpm package must then be rebuilt locally using the rpmbuild command. For more information on obtaining and installing the kernel source package, refer to the latest updated Release Notes (including all updates) at http://www.redhat.com/docs/manuals/enterprise/

42.2. Vorbereiten einer Aktualisierung

Bevor Sie Ihren Kernel aktualisieren, müssen Sie im Vorfeld einige Schritte zur Vorbereitung durchführen. Zuerst müssen Sie sicherstellen, dass Sie über eine funktionsfähige Bootdiskette für Ihr System verfügen, falls Probleme auftreten sollten. Wenn der Bootloader zum Booten des neuen Kernels nicht richtig konfiguriert ist, können Sie Ihr Red Hat Enterprise Linux-System nicht booten, es sei denn, Sie verfügen über eine Bootdiskette.
To create a boot diskette, login as root, and run the command /sbin/mkbootdisk `uname -r` at a shell prompt.

Tip

Refer to the mkbootdisk man page for more options. You can create bootable media via CD-Rs, CD-RWs, and USB flash drives, provided that your system BIOS also supports it.
Starten Sie den Rechner mit den Boot-Medien neu und stellen Sie sicher, dass diese funktionieren, bevor Sie fortfahren.
To determine which kernel packages are installed, execute the command rpm -qa | grep kernel at a shell prompt:
The output contains some or all of the following packages, depending on the system's architecture (the version numbers and packages may differ):
kernel-2.6.9-5.EL
kernel-devel-2.6.9-5.EL
kernel-utils-2.6.9-5.EL
kernel-doc-2.6.9-5.EL
kernel-smp-2.6.9-5.EL
kernel-smp-devel-2.6.9-5.EL
kernel-hugemem-devel-2.6.9-5.EL
From the output, determine which packages need to be download for the kernel upgrade. For a single processor system, the only required package is the kernel package. Refer to Abschnitt 42.1, „Überblick über Kernel-Pakete“ for descriptions of the different packages.
In the file name, each kernel package contains the architecture for which the package was built. The format is kernel-<variant>-<version>.<arch>.rpm, where <variant> is one of either PAE, xen, and so forth. The <arch> is one of the following:
  • x86_64 for the AMD64 and Intel EM64T architectures
  • ia64 for the Intel® Itanium™ architecture
  • ppc64 for the IBM® eServerpSeries™ architecture
  • s390 for the IBM® S/390® architecture
  • s390x for the IBM® eServerSystem z® architecture
  • i686 for Intel® Pentium® II, Intel® Pentium® III, Intel® Pentium® 4, AMD Athlon®, and AMD Duron® systems

42.3. Herunterladen des aktualisierten Kernels

Es gibt verschiedene Möglichkeiten, um festzustellen, ob ein aktualisierter Kernel für das System zur Verfügung steht.
  • Security Errata — Refer to http://www.redhat.com/security/updates/ for information on security errata, including kernel upgrades that fix security issues.
  • Via Red Hat Network — Laden Sie Kernel-RPM-Pakete herunter und installieren diese. Mit Hilfe von Red Hat Network können Sie den neuesten Kernel herunterladen, den Kernel auf dem System aktualisieren, wenn nötig ein RAM-Disk-Image erstellen und den Bootloader zum Laden des neuen Kernels konfigurieren. Weitere Informationen finden Sie unter http://www.redhat.com/docs/manuals/RHNetwork/.
If Red Hat Network was used to download and install the updated kernel, follow the instructions in Abschnitt 42.5, „Bestätigen des Initial RAM Disk Image“ and Abschnitt 42.6, „Überprüfen des Bootloader“, only do not change the kernel to boot by default. Red Hat Network automatically changes the default kernel to the latest version. To install the kernel manually, continue to Abschnitt 42.4, „Durchführen einer Aktualisierung“.

42.4. Durchführen einer Aktualisierung

Nachdem Sie alle nötigen Pakete erhalten haben, können Sie nun den Kernel aktualisieren.

Wichtig

Bewahren Sie den alten Kernel unbedingt für den Fall auf, dass mit dem neuen Kernel Probleme auftreten.
At a shell prompt, change to the directory that contains the kernel RPM packages. Use -i argument with the rpm command to keep the old kernel. Do not use the -U option, since it overwrites the currently installed kernel, which creates boot loader problems. For example:
rpm -ivh kernel-<kernel version>.<arch>.rpm
The next step is to verify that the initial RAM disk image has been created. Refer to Abschnitt 42.5, „Bestätigen des Initial RAM Disk Image“ for details.

42.5. Bestätigen des Initial RAM Disk Image

If the system uses the ext3 file system, a SCSI controller, or labels to reference partitions in /etc/fstab, an initial RAM disk is needed. The initial RAM disk allows a modular kernel to have access to modules that it might need to boot from before the kernel has access to the device where the modules normally reside.
On architectures other than IBM eServer iSeries, the initial RAM disk can be created with the mkinitrd command. However, this step is performed automatically if the kernel and its associated packages are installed or upgraded from the RPM packages distributed by Red Hat; in such cases, you do not need to create the initial RAM disk manually. To verify that an initial RAM disk already exists, use the command ls -l /boot to make sure the initrd-<version>.img file was created (the version should match the version of the kernel just installed).
On iSeries systems, the initial RAM disk file and vmlinux file are combined into one file, which is created with the addRamDisk command. This step is performed automatically if the kernel and its associated packages are installed or upgraded from the RPM packages distributed by Red Hat, Inc.; thus, it does not need to be executed manually. To verify that it was created, use the command ls -l /boot to make sure the /boot/vmlinitrd-<kernel-version> file already exists (the <kernel-version> should match the version of the kernel just installed).
The next step is to verify that the boot loader has been configured to boot the new kernel. Refer to Abschnitt 42.6, „Überprüfen des Bootloader“ for details.

42.6. Überprüfen des Bootloader

The kernel RPM package configures the boot loader to boot the newly installed kernel (except for IBM eServer iSeries systems). However, it does not configure the boot loader to boot the new kernel by default.
Sie sollten grundsätzlich überprüfen, ob der Bootloader richtig konfiguriert wurde. Dies ist ein entscheidender Schritt. Wurde der Bootloader nämlich nicht richtig konfiguriert, kann das System nicht ordnungsgemäß in Red Hat Enterprise Linux booten. Tritt dies auf, booten Sie ihr System mit der zuvor erstellten Bootdiskette und versuchen Sie erneut, den Bootloader zu konfigurieren.

42.6.1. x86-Systeme

Alle x86-Systeme (einschließlich aller AMD64-Systeme) verwenden GRUB als Boot-Loader.

42.6.1.1. GRUB

Confirm that the file /boot/grub/grub.conf contains a title section with the same version as the kernel package just installed
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/hda2
#          initrd /initrd-version.img
#boot=/dev/hda
default=1 timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Enterprise Linux (2.6.9-5.EL)
         root (hd0,0)
	 kernel /vmlinuz-2.6.9-5.EL ro root=LABEL=/
	 initrd /initrd-2.6.9-5.EL.img
title Red Hat Enterprise Linux (2.6.9-1.906_EL)
         root (hd0,0)
	 kernel /vmlinuz-2.6.9-1.906_EL ro root=LABEL=/
	 initrd /initrd-2.6.9-1.906_EL.img
If a separate /boot/ partition was created, the paths to the kernel and initrd image are relative to /boot/.
Notice that the default is not set to the new kernel. To configure GRUB to boot the new kernel by default, change the value of the default variable to the title section number for the title section that contains the new kernel. The count starts with 0. For example, if the new kernel is the first title section, set default to 0.
Testen Sie den neuen Kernel, indem Sie den Computer neu booten, und die Systemmitteilungen überprüfen, um sicherzustellen, dass die Hardware richtig erkannt wurde.

42.6.2. Itanium-Systeme

Itanium systems use ELILO as the boot loader, which uses /boot/efi/EFI/redhat/elilo.conf as the configuration file. Confirm that this file contains an image section with the same version as the kernel package just installed:
prompt timeout=50 default=old  image=vmlinuz-2.6.9-5.EL
         label=linux
	 initrd=initrd-2.6.9-5.EL.img         read-only
	 append="root=LABEL=/" image=vmlinuz-2.6.9-1.906_EL
	 label=old
	 initrd=initrd-2.6.9-1.906.img         read-only
	 append="root=LABEL=/"
Notice that the default is not set to the new kernel. To configure ELILO to boot the new kernel, change the value of the default variable to the value of the label for the image section that contains the new kernel.
Testen Sie den neuen Kernel, indem Sie den Computer neu booten, und die Systemmitteilungen überprüfen, um sicherzustellen, dass die Hardware richtig erkannt wurde.

42.6.3. IBM S/390 und IBM System z Systems

The IBM S/390 and IBM System z systems use z/IPL as the boot loader, which uses /etc/zipl.conf as the configuration file. Confirm that the file contains a section with the same version as the kernel package just installed:
[defaultboot] default=old target=/boot/
[linux]
         image=/boot/vmlinuz-2.6.9-5.EL
	 ramdisk=/boot/initrd-2.6.9-5.EL.img
	 parameters="root=LABEL=/"
[old]
         image=/boot/vmlinuz-2.6.9-1.906_EL
	 ramdisk=/boot/initrd-2.6.9-1.906_EL.img
	 parameters="root=LABEL=/"
Notice that the default is not set to the new kernel. To configure z/IPL to boot the new kernel by default, change the value of the default variable to the name of the section that contains the new kernel. The first line of each section contains the name in brackets.
After modifying the configuration file, run /sbin/zipl as root to enable the changes.
Testen Sie den neuen Kernel, indem Sie den Computer neu booten, und die Systemmitteilungen überprüfen, um sicherzustellen, dass die Hardware richtig erkannt wurde.

42.6.4. IBM eServer iSeries Systeme

The /boot/vmlinitrd-<kernel-version> file is installed when you upgrade the kernel. However, you must use the dd command to configure the system to boot the new kernel:
  1. As root, issue the command cat /proc/iSeries/mf/side to determine the default side (either A, B, or C).
  2. As root, issue the following command, where <kernel-version> is the version of the new kernel and <side> is the side from the previous command:
    dd if=/boot/vmlinitrd-<kernel-version> of=/proc/iSeries/mf/<side>/vmlinux bs=8k
Testen Sie den neuen Kernel, indem Sie den Computer neu booten, und die Systemmitteilungen überprüfen, um sicherzustellen, dass die Hardware richtig erkannt wurde.

42.6.5. IBM eServer pSeries Systeme

IBM eServer pSeries systems use YABOOT as the boot loader, which uses /etc/aboot.conf as the configuration file. Confirm that the file contains an image section with the same version as the kernel package just installed:
boot=/dev/sda1 init-message=Welcome to Red Hat Enterprise Linux! Hit <TAB> for boot options
partition=2 timeout=30 install=/usr/lib/yaboot/yaboot delay=10 nonvram
image=/vmlinux--2.6.9-5.EL
         label=old
	 read-only
	 initrd=/initrd--2.6.9-5.EL.img
	 append="root=LABEL=/"
image=/vmlinux-2.6.9-5.EL
	 label=linux
	 read-only
	 initrd=/initrd-2.6.9-5.EL.img
	 append="root=LABEL=/"
Notice that the default is not set to the new kernel. The kernel in the first image is booted by default. To change the default kernel to boot either move its image stanza so that it is the first one listed or add the directive default and set it to the label of the image stanza that contains the new kernel.
Testen Sie den neuen Kernel, indem Sie den Computer neu booten, und die Systemmitteilungen überprüfen, um sicherzustellen, dass die Hardware richtig erkannt wurde.

Kapitel 43. Allgemeine Parameter und Module

This chapter is provided to illustrate some of the possible parameters available for common hardware device drivers [9], which under Red Hat Enterprise Linux are called kernel modules. In most cases, the default parameters do work. However, there may be times when extra module parameters are necessary for a device to function properly or to override the module's default parameters for the device.
Während der Installation verwendet Red Hat Enterprise Linux eine eingeschränkte Untergruppe von Gerätetreibern, um eine stabile Installationsumgebung zu erzeugen. Obwohl das Installationsprogramm die Installation auf vielen verschiedenen Typen von Hardware unterstützt, sind manche Treiber (einschließlich der Treiber für SCSI-Adapter und Netzwerk-Adapter) nicht im Installations-Kernel integriert. Stattdessen sind sie als Module verfügbar, die während des Bootvorgangs vom Benutzer geladen werden müssen.
Haben Sie die Installation einmal abgeschlossen, erhalten Sie Unterstützung für eine große Anzahl von Geräten durch Kernel-Module.

Wichtig

Red Hat provides a large number of unsupported device drivers in groups of packages called kernel-smp-unsupported-<kernel-version> and kernel-hugemem-unsupported-<kernel-version> . Replace <kernel-version> with the version of the kernel installed on the system. These packages are not installed by the Red Hat Enterprise Linux installation program, and the modules provided are not supported by Red Hat, Inc.

43.1. Kernel-Modul-Hilfsprogramme

Eine Reihe von Befehlen zur Verwaltung von Kernel-Modulen ist verfügbar, wenn das module-init-tools-Paket installiert ist. Verwenden Sie diese Befehle, um zu bestimmen, ob ein Modul erfolgreich geladen wurde oder wenn Sie verschiedene Module für ein neues Hardware-Gerät testen.
Der Befehl /sbin/lsmod zeigt eine Liste der aktuell geladenen Module an. Zum Beispiel:
Module                  Size  Used by
tun                    11585  1
autofs4                21573  1
hidp                   16193  2
rfcomm                 37849  0
l2cap                  23873  10 hidp,rfcomm
bluetooth              50085  5 hidp,rfcomm,l2cap
sunrpc                153725  1
dm_mirror              29073  0
dm_mod                 57433  1 dm_mirror
video                  17221  0
sbs                    16257  0
i2c_ec                  5569  1 sbs
container               4801  0
button                  7249  0
battery                10565  0
asus_acpi              16857  0
ac                      5701  0
ipv6                  246113  12
lp                     13065  0
parport_pc             27493  1
parport                37001  2 lp,parport_pc
uhci_hcd               23885  0
floppy                 57317  1
sg                     34653  0
snd_ens1371            26721  1
gameport               16073  1 snd_ens1371
snd_rawmidi            24897  1 snd_ens1371
snd_ac97_codec         91360  1 snd_ens1371
snd_ac97_bus            2753  1 snd_ac97_codec
snd_seq_dummy           4293  0
snd_seq_oss            32705  0
serio_raw               7493  0
snd_seq_midi_event      8001  1 snd_seq_oss
snd_seq                51633  5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
snd_seq_device          8781  4 snd_rawmidi,snd_seq_dummy,snd_seq_oss,snd_seq
snd_pcm_oss            42849  0
snd_mixer_oss          16833  1 snd_pcm_oss
snd_pcm                76485  3 snd_ens1371,snd_ac97_codec,snd_pcm_oss
snd_timer              23237  2 snd_seq,snd_pcm
snd                    52933  12 snd_ens1371,snd_rawmidi,snd_ac97_codec,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer
soundcore              10145  1 snd
i2c_piix4               8909  0
ide_cd                 38625  3
snd_page_alloc         10569  1 snd_pcm
i2c_core               21697  2 i2c_ec,i2c_piix4
pcnet32                34117  0
cdrom                  34913  1 ide_cd
mii                     5825  1 pcnet32
pcspkr                  3521  0
ext3                  129737  2
jbd                    58473  1 ext3
mptspi                 17353  3
scsi_transport_spi     25025  1 mptspi
mptscsih               23361  1 mptspi
sd_mod                 20929  16
scsi_mod              134121  5 sg,mptspi,scsi_transport_spi,mptscsih,sd_mod
mptbase                52193  2 mptspi,mptscsih
In jeder Zeile ist die erste Spalte der Name des Moduls, die zweite Spalte ist die Größe des Moduls und die dritte Zeile ist die Nutzungszahl.
Die /sbin/lsmod-Ausgabe ist weniger lang und einfacher zu lesen als die Ausgabe von /proc/modules.
To load a kernel module, use the /sbin/modprobe command followed by the kernel module name. By default, modprobe attempts to load the module from the /lib/modules/<kernel-version>/kernel/drivers/ subdirectories. There is a subdirectory for each type of module, such as the net/ subdirectory for network interface drivers. Some kernel modules have module dependencies, meaning that other modules must be loaded first for it to load. The /sbin/modprobe command checks for these dependencies and loads the module dependencies before loading the specified module.
Zum Beispiel der Befehl
modprobe e100
lädt sämtliche Modul-Abhängigkeiten und dann das e100-Modul.
Um alle Befehle auf dem Bildschirm auszugeben, während /sbin/modprobe diese ausführt, verwenden Sie die Option -v. Zum Beispiel:
modprobe -v e100
Eine Ausgabe ähnlich der Folgenden wird angezeigt:
insmod /lib/modules/2.6.9-5.EL/kernel/drivers/net/e100.ko
Using /lib/modules/2.6.9-5.EL/kernel/drivers/net/e100.ko
Symbol version prefix 'smp_'
Der /sbin/insmod-Befehl ist auch zum Laden von Kernel-Modulen vorhanden, löst jedoch keine Abhängigkeiten auf. Es wird daher empfohlen, den /sbin/modprobe-Befehl zu verwenden.
Um Kernelmodule zu entladen, verwenden Sie den Befehl /sbin/rmmod, gefolgt vom Namen des Moduls. Das Dienstprogramm rmmod entlädt lediglich Module, die nicht verwendet werden und von denen keine aktiven Module abhängen.
Zum Beispiel der Befehl
rmmod e100
entlädt das e100-Kernel-Modul.
Ein weiteres nützliches Kernel-Modul Hilfsprogramm ist modinfo. Verwenden Sie den Befehl /sbin/modinfo, um Informationen zu einem Kernel-Modul anzuzeigen. Die allgemeine Syntax lautet:
modinfo [options] <module>
Optionen beinhalten -d, das eine Kurzbeschreibung des Moduls anzeigt und -p, das die Parameter auflistet, die das Modul unterstützt. Eine vollständige Liste von Optionen finden Sie auf der modinfo man-Seite (man modinfo).

43.2. Persistentes Modul-Laden

Kernel-Module werden in der Regel direkt von der Facility, die sie benötigt, geladen, der die korrekten Einstellungen in der /etc/modprobe.conf-Datei gegeben werden. Es ist jedoch manchmal notwendig, das Laden eines Moduls zum Zeitpunkt des Bootens zu erzwingen.
Red Hat Enterprise Linux überprüft die Existenz der Datei /etc/rc.modules zum Zeitpunkt des Bootens, welche verschiedene Befehle zum Laden von Modulen enthält. Die Datei rc.modules sollte verwendet werden und nicht rc.local, da rc.modules zu einem früheren Zeitpunkt während des Bootprozesses ausgeführt wird.
Die folgenden Befehle etwa Konfigurieren das Laden des foo-Moduls zum Zeitpunkt des Bootens (als Root):
echo modprobe foo >> /etc/rc.modules
chmod +x /etc/rc.modules

Tip

Diese Vorgehensweise ist für Netzwerk- und SCSI-Schnittstellen nicht notwendig, da diese ihre eigenen speziellen Mechanismen besitzen.

43.3. Spezifizieren der Modulparameter

In einigen Situationen kann es notwendig sein, Parameter für ein Modul beim Laden desselben anzugeben, damit es richtig funktioniert.
Wenn Sie zum Beispiel für eine Intel Ether Express/100 Karte volle Duplex-Kapazität bei einer Verbindungsgeschwindigkeit von 100Mbps ermöglichen wollen, laden Sie den e100 Treiber mit der e100_speed_duplex=4 Option.

Achtung

Wenn ein Parameter Kommas beinhaltet, achten Sie darauf, dass Sie nach dem Komma KEIN Leerzeichen setzen.

Tip

The modinfo command is also useful for listing various information about a kernel module, such as version, dependencies, parameter options, and aliases.

43.4. Speicher-Parameter

Tabelle 43.1. Speicher-Modulparameter
Hardware Modul Parameter
3ware Storage-Controller und 9000-Serie 3w-xxxx.ko, 3w-9xxx.ko
Adaptec Advanced Raid Products, Dell PERC2, 2/Si, 3/Si, 3/Di, HP NetRAID-4M, IBM ServeRAID, and ICP SCSI driver aacraid.ko
nondasd — Kontroll-Scan von hba für nondasd Geräte. 0=off, 1=on
dacmode — Kontrolliert, ob die DMA-Adressierung 64 bit DAC verwendet. 0=off, 1=on
commit — Steuert, ob ein COMMIT_CONFIG an den Adapter für fremde Arrays herausgegeben wird. Dies wird in der Regel für Systeme benötigt, die kein BIOS besitzen. 0=off, 1=on
startup_timeout — The duration of time in seconds to wait for adapter to have it's kernel up and running. This is typically adjusted for large systems that do not have a BIOS
aif_timeout — Die Zeitdauer in Sekunden, die gewartet werden muss, bis Applikationen AIFs aufnehmen, bevor sie diese im Register löschen. Dies wird typischerweise bei stark beanspruchten Systemen angepasst.
numacb — Fordert eine Begrenzung der Anzahl zugewiesener Adapter-Kontrollblöcke (FIB). Gültige Werte sind 512 und niedriger. Firmware empfiehlt die Verwendung der Standardeinstellung.
acbsize — Erfordert eine spezielle Größe des Adapter-Kontrollblocks (FIB). Gültige Werte sind 512, 2048, 4096 und 8192. Standardmäßig sollte die Vorgabe der Firmaware verwendet werden.
Adaptec 28xx, R9xx, 39xx AHA-284x, AHA-29xx, AHA-394x, AHA-398x, AHA-274x, AHA-274xT, AHA-2842, AHA-2910B, AHA-2920C, AHA-2930/U/U2, AHA-2940/W/U/UW/AU/, U2W/U2/U2B/, U2BOEM, AHA-2944D/WD/UD/UWD, AHA-2950U2/W/B, AHA-3940/U/W/UW/, AUW/U2W/U2B, AHA-3950U2D, AHA-3985/U/W/UW, AIC-777x, AIC-785x, AIC-786x, AIC-787x, AIC-788x , AIC-789x, AIC-3860 aic7xxx.ko
verbose — Aktiviert verbose/diagnostische Protokollierung
allow_memio — Ermöglicht das Verwenden von Geräteverzeichnissen als Speicherabbild
debug — Bitmaske von Debug-Werten, die aktiviert werden können
no_probe — Hin- und Herschalten zwischen EISA/VLB Kontroller Probing
probe_eisa_vl — Hin- und Herschalten zwischen EISA/VLB Kontroller Probing
no_reset — Anfängliche Bus-Resets unterdrücken
extended — Erweiterte Geometrie auf allen Kontrollern aktivieren
periodic_otag — Eine geordnete, gekennzeichnete Transaktion periodisch senden, um eine Unterversorgung von Tags zu verhindern. Dies wird ggf. von einigen älteren Plattentreibern oder RAID-Arrays benötigt.
tag_info:<tag_str> — Set per-target tag depth
global_tag_depth:<int> — Global tag depth for every target on every bus
seltime:<int> — Selection Timeout (0/256ms,1/128ms,2/64ms,3/32ms)
IBM ServeRAID ips.ko
LSI Logic MegaRAID Mailbox-Treiber megaraid_mbox.ko
unconf_disks — Zum Aufdecken von nicht konfigurierten Platten für den Kernel setzen (default=0)
busy_wait — Max Wartezeit auf Mailbox in Mikrosekunden falls belegt (default=10)
max_sectors — Maximale Anzahl von Sektoren pro IO-Befehl (default=128)
cmd_per_lun — Maximale Anzahl von Befehlen pro logischer Einheit (default=64)
fast_load — Schnelleres Laden des Treibers, überspringt technische Geräte! (default=0)
debug_level — Debug-Level für Treiber (default=0)
Emulex LightPulse Fibre Channel SCSI-Treiber lpfc.ko
lpfc_poll — FCP-Ring Polling-Modus Kontrolle: 0 - keine, 1 - mit aktivierten Interrupts abrufen 3 - FCP-Ring Interrupts abrufen und deaktivieren
lpfc_log_verbose — Bitmaske für ausführliches Protokollieren
lpfc_lun_queue_depth — Maximale Anzahl von FCP-Befehlen, die an ein spezielles LUN angehängt werden können
lpfc_hba_queue_depth — Maximale Anzahl an FCP-Befehlen, die an ein lpfc-HBA angehängt werden können
lpfc_scan_down — Absuchen nach Geräten von dem höchsten ALPA zum niedrigsten
lpfc_nodev_tmo — Anzahl der Sekunden, die der Treiber I/O aussetzt und darauf wartet, bis ein Gerät wieder aktiv ist
lpfc_topology — Fibre-Channel Topologie auswählen
lpfc_link_speed — Link-Geschwindigkeit wählen
lpfc_fcp_class — Fibre-Channel Klasse des Dienstes für FCP-Sequenzen auswählen
lpfc_use_adisc — ADISC bei Wiederentdeckung zur Authentifizierung von FCP-Geräten verwenden
lpfc_ack0 — ACK0-Support aktivieren
lpfc_cr_delay — Eine Anzahl von Millisekunden nach der eine Interrupt-Antwort generiert wird
lpfc_cr_count — Eine Anzahl an I/O-Fertigstellungen, nach denen eine Interrupt-Antwort generiert wird
lpfc_multi_ring_support — Bestimmt die Anzahl der primären SLI-Rings, um IOCB-Einträge zu verteilen
lpfc_fdmi_on — FDMI-Support aktivieren
lpfc_discovery_threads — Maximale Anzahl an ELS-Befehlen während der Entdeckung
lpfc_max_luns — Maximal erlaubte LUN
lpfc_poll_tmo — Die Anzahl an Millisekunden, die der Treiber zwischen der Abfrage des FCP-Rings wartet
HP Smart Array cciss.ko
LSI Logic MPT Fusion mptbase.ko mptctl.ko mptfc.ko mptlan.ko mptsas.ko mptscsih.ko mptspi.ko
mpt_msi_enable — MSI-Support aktivieren
mptfc_dev_loss_tmo — Anfangszeit, in der der Treiber den Transport programmiert, um darauf zu warten, dass ein rport nach einem Geräteverlustereignis zurückkommt.
mpt_pt_clear — Persistenztabelle räumen
mpt_saf_te — Aktivierung des SEP-Prozessors erzwingen
QLogic Fibre Channel-Treiber qla2xxx.ko
ql2xlogintimeout — Timeout-Wert der Anmeldung in Sekunden.
qlport_down_retry — Maximale Anzahl erneuter Befehlsversuche an einem Port der mit dem PORT-DOWN-Status antwortet
ql2xplogiabsentdevice — Option zur Aktivierung von PLOGI für Geräte, die nach einem Fabric-Scan nicht vorhanden sind.
ql2xloginretrycount — Angabe eines alternativen Wertes für die Anzahl der Wiederholungsversuche eines NVRAM Logins.
ql2xallocfwdump — Option zur Zuweisung von Speicher für einen Firmware-Auszug während der HBA-Initialisierung. Standard ist 1 - Speicher zuweisen.
extended_error_logging — Option zur Aktivierung erweiterter Fehlerprotokollierung.
ql2xfdmienable — Enables FDMI registrations.
NCR, Symbios und LSI 8xx und 1010 sym53c8xx
cmd_per_lun — Die maximale, in der Standardeinstellung zu verwendende Anzahl von Tags
tag_ctrl — Detailliertere Kontrolle über Tags pro LUN
burst — Maximaler Impuls. 0 zur Deaktivierung, 255, um aus den Registern zu lesen
led — Auf 1, um LED-Support zu aktivieren
diff — 0 für keinen differentiellen Modus, 1 für BIOS, 2 für immer, 3 für kein GPIO3
irqm — 0 zum Öffnen des Kanals, 1 zum Beibehalten des Status Quo, 2 für den Totempfahl
buschk — 0, um nicht zu prüfen, 1 zum Abbruch bei Fehler, 2 zum Warnen bei Fehler
hostid — Die zu verwendende SCSI-ID für die Host-Adapter
verb — 0 für minimale Verbosität, 1 für normale, 2 für hohe
debug — Setzt die Bits, um Debugging zu aktivieren
settle — Settle-Verzögerung in Sekunden. Standard ist 3
nvram — Option aktuell nicht in Gebrauch
excl — ioport-Adressen hier auflisten, um zu verhindern, das Kontroller angehängt werden
safe — Set other settings to a "safe mode"

43.5. Ethernet-Parameter

Wichtig

Most modern Ethernet-based network interface cards (NICs), do not require module parameters to alter settings. Instead, they can be configured using ethtool or mii-tool. Only after these tools fail to work should module parameters be adjusted. Module parameters can be viewed using the modinfo command.

Anmerkung

For information about using these tools, consult the man pages for ethtool, mii-tool, and modinfo.
Tabelle 43.2. Ethernet-Modulparameter
Hardware Modul Parameter
3Com EtherLink PCI III/XL Vortex (3c590, 3c592, 3c595, 3c597) Boomerang (3c900, 3c905, 3c595) 3c59x.ko
debug — 3c59x Debug-Ebene (0-6)
options — 3c59x: Bits 0-3: media type, bit 4: bus mastering, bit 9: full duplex
global_options — 3c59x: wie options, trifft jedoch auf alle NICs zu, falls die options deaktiviert wird
full_duplex — 3c59x Full Duples Einstellung(en) (1)
global_full_duplex — 3c59x: wie full_duplex, trifft jedoch auf alle NICs zu, falls full_duplex deaktiviert wird
hw_checksums — 3c59x Überprüfung der Harware-Prüfsumme von den Adapter(n) (0-1)
flow_ctrl — 3c59x 802.3x Flußkontroll-Verwendung (nur PAUSE) (0-1)
enable_wol — 3c59x: Wake-on-LAN für Adapter aktivieren (0-1)
global_enable_wol — 3c59x: wie enable_wol, trifft jedoch auf alle NICs zu, wenn enable_wol deaktiviert wird
rx_copybreak — 3c59x Kopier-Messpunkt für copy-only-tiny-frames
max_interrupt_work — 3c59x Maximale per Interrupt gehandhabte Ereignisse
compaq_ioaddr — 3c59x PCI I/O Basisadresse (Compaq BIOS Problem-Abhilfe)
compaq_irq — 3c59x PCI IRQ-Nummer (Compaq BIOS Problem-Abhilfe)
compaq_device_id — 3c59x PCI Geräte-ID (Compaq BIOS Problem-Abhilfe)
watchdog — 3c59x Übertragungs-Timeout in Millisekunden
global_use_mmio — 3c59x: wie use_mmio, trifft jedoch auf alle NICs zu, wenn die Option deaktiviert wird
use_mmio — 3c59x: Speicher-gemappte PCI I/O Ressource verwenden (0-1)
RTL8139, SMC EZ Karte Fast Ethernet, RealTek Karten, die RTL8129 oder RTL8139 Fast Ethernet Chipsets verwenden. 8139too.ko
Broadcom 4400 10/100 PCI Ethernet-Treiber b44.ko
b44_debug — Wert zur Aktivierung der B44 Bitmap-Debugging-Meldung
Broadcom NetXtreme II BCM5706/5708 Treiber bnx2.ko
disable_msi — Message Signaled Interrupt (MSI) deaktivieren
Intel Ether Express/100-Treiber e100.ko
debug — Debug-Ebene (0=none,...,16=all)
eeprom_bad_csum_allow — Unzureichende EEprom-Prüfsummen erlauben
Intel EtherExpress/1000 Gigabit e1000.ko
TxDescriptors — Anzahl der Übertragungs-Deskriptoren
RxDescriptors — Anzahl der Empfangs-Deskriptoren
Speed — Geschwindigkeitseinstellung
Duplex — Duplex-Einstellung
AutoNeg — Angekündigte auto-negotiation Einstellung
FlowControl — Einstellung zur Flusskontrolle
XsumRX — Den Erhalt von Prüsumme-Offload deaktivieren oder aktivieren
TxIntDelay — Transmit Interrupt Delay
TxAbsIntDelay — Transmit Absolute Interrupt Delay
RxIntDelay — Receive Interrupt Delay
RxAbsIntDelay — Receive Absolute Interrupt Delay
InterruptThrottleRate — Interrupt Throttling Rate
SmartPowerDownEnable — PHY Smart Power Down aktivieren
KumeranLockLoss — Kumeran lock loss Workaround aktivieren
Myricom 10G Treiber (10GbE) myri10ge.ko
myri10ge_fw_name — Name des Firmware-Images
myri10ge_ecrc_enable — Erweitertes CRC aufPCI-E aktivieren
myri10ge_max_intr_slots — Interrupt Queue Slots
myri10ge_small_bytes — Schwellenwert von schmalen Paketen
myri10ge_msi — Message Signalled Interrupts aktivieren
myri10ge_intr_coal_delay — Interrupt Coalescing Verzögerung
myri10ge_flow_control — Pause-Parameter
myri10ge_deassert_wait — Beim Entwerten von Legacy-Interrupts
myri10ge_force_firmware — Firmware dazu bringen, ausgerichtete Abschlüsse anzunehmen
myri10ge_skb_cross_4k — Kann eine kleine skb eine 4 KB Grenze überschreiten?
myri10ge_initial_mtu — Initial-MTU
myri10ge_napi_weight — NAPI-Gewicht setzen
myri10ge_watchdog_timeout — Watchdog-Timeout setzen
myri10ge_max_irq_loops — Hängengebliebene Legacy IRQ-Detection-Schwellenwerte setzen
NatSemi DP83815 Fast Ethernet natsemi.ko
mtu — DP8381x MTU (alle Platinen)
debug — DP8381x Standard Debug-Level
rx_copybreak — DP8381x Kopier-Messpunkt für copy-only-tiny-frames
options — DP8381x: Bits 0-3: media type, bit 17: full duplex
full_duplex — DP8381x Full-Duplex Einstellung(en) (1)
AMD PCnet32 und AMD PCnetPCI pcnet32.ko
PCnet32 and PCnetPCI pcnet32.ko
debug — pcnet32 Debug-Level
max_interrupt_work — pcnet32 Maximale per Interrupt gehandhabten Ereignisse
rx_copybreak — pcnet32 Kopier-Messpunkt für copy-only-tiny-frames
tx_start_pt — pcnet32 Übertragungsstartpunkt (0-3)
pcnet32vlb — pcnet32 Vesa Local Bus (VLB) Unterstützung (0/1)
options — pcnet32 initiale Option-Einstellung(en) (0-15)
full_duplex — pcnet32 Full-Duplex-Einstellung(en) (1)
homepna — pcnet32 Modus für 79C978 Karten (1 für HomePNA, 0 für Ethernet, standardmäßig Ethernet)
RealTek RTL-8169 Gigabit Ethernet-Treiber r8169.ko
media — phy Betrieb erzwingen. Durch die Verwendung von ethtool (8) veraltet.
rx_copybreak — Kopie-Messpunkt für copy-only-tiny-frames
use_dac — PCI DAC aktivieren. Unsicher auf 32-Bit-PCI Slot.
debug — Debug-Verbosity-Level (0=kein, ..., 16=alles)
Neterion Xframe 10GbE Server-Adapter s2io.ko
SIS 900/701G PCI Fast Ethernet sis900.ko
multicast_filter_limit — SiS 900/7016 maximale Anzahl gefilterter Multicast-Adressen
max_interrupt_work — SiS 900/7016 Maximale per Interrupt gehandhabte Ereignisse
sis900_debug — SiS 900/7016 Bitmap-Debug-Meldungs-Level
Adaptec Starfire Ethernet-Treiber starfire.ko
max_interrupt_work — Maximale per Interrupt gehandhabte Ereignisse
mtu — MTU (alle Platinen)
debug — Debug-Level (0-6)
rx_copybreak — Kopie-Messpunkt für copy-only-tiny-frames
intr_latency — Maximale Interrupt-Latenz in Mikrosekunden
small_frames — Maximale Größe empfangener Rahmen die die Interrupt-Latenz umgehen (0,64,128,256,512)
options — Veraltet: Bits 0-3: media type, bit 17: full duplex
full_duplex — Veraltet: Erzwingt full-duplex Einstellung (0/1)
enable_hw_cksum — Aktivieren/deaktivieren des cksum-Supports der Hardware (0/1)
Broadcom Tigon3 tg3.ko
tg3_debug — Tigon3 Wert zur Aktivierung der Bitmap-Debug-Meldung
ThunderLAN PCI tlan.ko
aui — ThunderLAN AUI Port(s) verwenden (0-1)
duplex — ThunderLAN Duplex-Einstellung(en) (0-Standard, 1-half, 2-full)
speed — ThunderLAN Port Geschwindigkeitseinstellungen (0,10,100)
debug — ThunderLAN Debug-Maske
bbuf — ThunderLAN großen Puffer verwenden (0-1)
Digital 21x4x Tulip PCI Ethernet cards SMC EtherPower 10 PCI(8432T/8432BT) SMC EtherPower 10/100 PCI(9332DST) DEC EtherWorks 100/10 PCI(DE500-XA) DEC EtherWorks 10 PCI(DE450) DEC QSILVER's, Znyx 312 etherarray Allied Telesis LA100PCI-T Danpex EN-9400, Cogent EM110 tulip.ko io io_port
VIA Rhine PCI Fast Ethernetkarten mit VIA VT86c100A Rhine-II PCI oder 3043 Rhine-I D-Link DFE-930-TX PCI 10/100 via-rhine.ko
max_interrupt_work — VIA Rhine Maximale per Interrupt gehandhabten Ereignisse
debug — VIA Rhine Debug-Level (0-7)
rx_copybreak — VIA Rhine Kopie-Messpunkte für copy-only-tiny-frames
avoid_D3 — Power-Status D3 vermeiden (Workaround für defekte BIOSe)

43.5.1. Verwendung mehrerer Ethernet-Karten

It is possible to use multiple Ethernet cards on a single machine. For each card there must be an alias and, possibly, options lines for each card in /etc/modprobe.conf.
Weitere Informationen zur Verwendung mehrerer Ethernet-Karten finden Sie unter Linux Ethernet-HOWTO online unter http://www.redhat.com/mirrors/LDP/HOWTO/Ethernet-HOWTO.html.

43.5.2. Die Kanal-Verbindungsmodule

Red Hat Enterprise Linux allows administrators to bind NICs together into a single channel using the bonding kernel module and a special network interface, called a channel bonding interface. Channel bonding enables two or more network interfaces to act as one, simultaneously increasing the bandwidth and providing redundancy.
Um eine Kanalverbindung zwischen mehreren Netzwerk-Schnittstellen herzustellen, muss der Administrator folgende Schritte ausführen:
  1. Fügen Sie die folgende Zeile zu /etc/modprobe.conf hinzu:
    alias bond<N> bonding
    Replace <N> with the interface number, such as 0. For each configured channel bonding interface, there must be a corresponding entry in /etc/modprobe.conf.
  2. Configure a channel bonding interface as outlined in Abschnitt 15.2.3, „Channel-Bonding-Schnittstellen“.
  3. To enhance performance, adjust available module options to ascertain what combination works best. Pay particular attention to the miimon or arp_interval and the arp_ip_target parameters. Refer to Abschnitt 43.5.2.1, „bonding Module Directives“ for a list of available options and how to quickly determine the best ones for your bonded interface.

43.5.2.1. bonding Module Directives

It is a good idea to test which channel bonding module parameters work best for your bonded interfaces before adding them to the BONDING_OPTS="<bonding parameters>" directive in your bonding interface configuration file (ifcfg-bond0 for example). Parameters to bonded interfaces can be configured without unloading (and reloading) the bonding module by manipulating files in the sysfs file system.
sysfs is a virtual file system that represents kernel objects as directories, files and symbolic links. sysfs can be used to query for information about kernel objects, and can also manipulate those objects through the use of normal file system commands. The sysfs virtual file system has a line in /etc/fstab, and is mounted under /sys. All bonded interfaces can be configured dynamically by interacting with and manipulating files under the /sys/class/net/ directory.
After you have created a channel bonding interface file such as ifcfg-bond0 and inserted SLAVE=yes and MASTER=bond0 directives in the bonded interfaces following the instructions in Abschnitt 15.2.3, „Channel-Bonding-Schnittstellen“, you can proceed to testing and determining the best parameters for your bonded interface.
First, bring up the bond you created by running ifconfig bond<N>  up as root:
ifconfig bond0 up
If you have correctly created the ifcfg-bond0 bonding interface file, you will be able to see bond0 listed in the output of running ifconfig (without any options):
~]# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
eth0      Link encap:Ethernet  HWaddr 52:54:00:26:9E:F1
          inet addr:192.168.122.251  Bcast:192.168.122.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fe26:9ef1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:207 errors:0 dropped:0 overruns:0 frame:0
          TX packets:205 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:70374 (68.7 KiB)  TX bytes:25298 (24.7 KiB)
[output truncated]
To view all existing bonds, even if they are not up, run:
~]# cat /sys/class/net/bonding_masters
bond0
You can configure each bond individually by manipulating the files located in the /sys/class/net/bond<N>/bonding/ directory. First, the bond you are configuring must be taken down:
ifconfig bond0 down
As an example, to enable MII monitoring on bond0 with a 1 second interval, you could run (as root):
echo 1000 > /sys/class/net/bond0/bonding/miimon
To configure bond0 for balance-alb mode, you could run either:
echo 6 > /sys/class/net/bond0/bonding/mode
...or, using the name of the mode:
echo balance-alb > /sys/class/net/bond0/bonding/mode
After configuring some options for the bond in question, you can bring it up and test it by running ifconfig bond<N> up . If you decide to change the options, take the interface down, modify its parameters using sysfs, bring it back up, and re-test.
Once you have determined the best set of parameters for your bond, add those parameters as a space-separated list to the BONDING_OPTS= directive of the /etc/sysconfig/network-scripts/ifcfg-bond<N> file for the bonded interface you are configuring. Whenever that bond is brought up (for example, by the system during the boot sequence if the ONBOOT=yes directive is set), the bonding options specified in the BONDING_OPTS will take effect for that bond. For more information on configuring bonded interfaces (and BONDING_OPTS), refer to Abschnitt 15.2.3, „Channel-Bonding-Schnittstellen“.
The following is a list of available channel bonding module parameters for the bonding module. For more in-depth information on configuring channel bonding and the exhaustive list of bonding module parameters, install the kernel-doc package and then locating and opening the included bonding.txt file:
yum -y install kernel-doc
nano -w $(rpm -ql kernel-doc | grep bonding.txt)
Bonding Interface Parameters
arp_interval=<time_in_milliseconds>
Specifies (in milliseconds) how often ARP monitoring occurs.

Wichtig

It is essential that both arp_interval and arp_ip_target parameters are specified, or, alternatively, the miimon parameter is specified. Failure to do so can cause degradation of network performance in the event that a link fails.
If using this setting while in mode=0 or mode=1 (the two load-balancing modes), the network switch must be configured to distribute packets evenly across the NICs. For more information on how to accomplish this, refer to /usr/share/doc/kernel-doc-<kernel_version>/Documentation/networking/bonding.txt
The value is set to 0 by default, which disables it.
arp_ip_target=<ip_address> [,<ip_address_2>,...<ip_address_16> ]
Specifies the target IP address of ARP requests when the arp_interval parameter is enabled. Up to 16 IP addresses can be specified in a comma separated list.
arp_validate=<value>
Validate source/distribution of ARP probes; default is none. Other valid values are active, backup, and all.
debug=<number>
Enables debug messages. Possible values are:
  • 0 — Debug messages are disabled. This is the default.
  • 1 — Debug messages are enabled.
downdelay=<time_in_milliseconds>
Specifies (in milliseconds) how long to wait after link failure before disabling the link. The value must be a multiple of the value specified in the miimon parameter. The value is set to 0 by default, which disables it.
lacp_rate=<value>
Specifies the rate at which link partners should transmit LACPDU packets in 802.3ad mode. Possible values are:
  • slow or 0 — Default setting. This specifies that partners should transmit LACPDUs every 30 seconds.
  • fast or 1 — Specifies that partners should transmit LACPDUs every 1 second.
miimon=<time_in_milliseconds>
Specifies (in milliseconds) how often MII link monitoring occurs. This is useful if high availability is required because MII is used to verify that the NIC is active. To verify that the driver for a particular NIC supports the MII tool, type the following command as root:
ethtool <interface_name> | grep "Link detected:"
In this command, replace <interface_name> with the name of the device interface, such as eth0, not the bond interface. If MII is supported, the command returns:
Link gefunden: ja
If using a bonded interface for high availability, the module for each NIC must support MII. Setting the value to 0 (the default), turns this feature off. When configuring this setting, a good starting point for this parameter is 100.

Wichtig

It is essential that both arp_interval and arp_ip_target parameters are specified, or, alternatively, the miimon parameter is specified. Failure to do so can cause degradation of network performance in the event that a link fails.
mode=<value>
...where <value> is one of:
  • balance-rr or 0 — Sets a round-robin policy for fault tolerance and load balancing. Transmissions are received and sent out sequentially on each bonded slave interface beginning with the first one available.
  • active-backup or 1 — Sets an active-backup policy for fault tolerance. Transmissions are received and sent out via the first available bonded slave interface. Another bonded slave interface is only used if the active bonded slave interface fails.
  • balance-xor or 2 — Sets an XOR (exclusive-or) policy for fault tolerance and load balancing. Using this method, the interface matches up the incoming request's MAC address with the MAC address for one of the slave NICs. Once this link is established, transmissions are sent out sequentially beginning with the first available interface.
  • broadcast or 3 — Sets a broadcast policy for fault tolerance. All transmissions are sent on all slave interfaces.
  • 802.3ad or 4 — Sets an IEEE 802.3ad dynamic link aggregation policy. Creates aggregation groups that share the same speed and duplex settings. Transmits and receives on all slaves in the active aggregator. Requires a switch that is 802.3ad compliant.
  • balance-tlb or 5 — Sets a Transmit Load Balancing (TLB) policy for fault tolerance and load balancing. The outgoing traffic is distributed according to the current load on each slave interface. Incoming traffic is received by the current slave. If the receiving slave fails, another slave takes over the MAC address of the failed slave.
  • balance-alb or 6 — Sets an Active Load Balancing (ALB) policy for fault tolerance and load balancing. Includes transmit and receive load balancing for IPV4 traffic. Receive load balancing is achieved through ARP negotiation.
num_unsol_na=<number>
Specifies the number of unsolicited IPv6 Neighbor Advertisements to be issued after a failover event. One unsolicited NA is issued immediately after the failover.
The valid range is 0 - 255; the default value is 1. This option affects only the active-backup mode.
primary=<interface_name>
Specifies the interface name, such as eth0, of the primary device. The primary device is the first of the bonding interfaces to be used and is not abandoned unless it fails. This setting is particularly useful when one NIC in the bonding interface is faster and, therefore, able to handle a bigger load.
This setting is only valid when the bonding interface is in active-backup mode. Refer to /usr/share/doc/kernel-doc-<kernel-version>/Documentation/networking/bonding.txt for more information.
primary_reselect=<value>
Specifies the reselection policy for the primary slave. This affects how the primary slave is chosen to become the active slave when failure of the active slave or recovery of the primary slave occurs. This option is designed to prevent flip-flopping between the primary slave and other slaves. Possible values are:
  • always or 0 (default) — The primary slave becomes the active slave whenever it comes back up.
  • better or 1 — The primary slave becomes the active slave when it comes back up, if the speed and duplex of the primary slave is better than the speed and duplex of the current active slave.
  • failure or 2 — The primary slave becomes the active slave only if the current active slave fails and the primary slave is up.
The primary_reselect setting is ignored in two cases:
  • If no slaves are active, the first slave to recover is made the active slave.
  • When initially enslaved, the primary slave is always made the active slave.
Changing the primary_reselect policy via sysfs will cause an immediate selection of the best active slave according to the new policy. This may or may not result in a change of the active slave, depending upon the circumstances
updelay=<time_in_milliseconds>
Specifies (in milliseconds) how long to wait before enabling a link. The value must be a multiple of the value specified in the miimon parameter. The value is set to 0 by default, which disables it.
use_carrier=<number>
Specifies whether or not miimon should use MII/ETHTOOL ioctls or netif_carrier_ok() to determine the link state. The netif_carrier_ok() function relies on the device driver to maintains its state with netif_carrier_on/off ; most device drivers support this function.
The MII/ETHROOL ioctls tools utilize a deprecated calling sequence within the kernel. However, this is still configurable in case your device driver does not support netif_carrier_on/off .
Gültige Werte sind:
  • 1 — Default setting. Enables the use of netif_carrier_ok().
  • 0 — Enables the use of MII/ETHTOOL ioctls.

Tip

If the bonding interface insists that the link is up when it should not be, it is possible that your network device driver does not support netif_carrier_on/off .
xmit_hash_policy=<value>
Selects the transmit hash policy used for slave selection in balance-xor and 802.3ad modes. Possible values are:
  • 0 or layer2 — Default setting. This option uses the XOR of hardware MAC addresses to generate the hash. The formula used is:
    (<source_MAC_address> XOR <destination_MAC>) MODULO <slave_count>
    This algorithm will place all traffic to a particular network peer on the same slave, and is 802.3ad compliant.
  • 1 or layer3+4 — Uses upper layer protocol information (when available) to generate the hash. This allows for traffic to a particular network peer to span multiple slaves, although a single connection will not span multiple slaves.
    Die Formel für unfragmentierte TCP- und UDP-Pakete lautet:
    ((<source_port> XOR <dest_port>) XOR
      ((<source_IP> XOR <dest_IP>) AND 0xffff)
        MODULO <slave_count>
    Für fragmentierte TCP- oder UDP-Pakete und allen anderen IP-Protokoll-Datenverkehr werden die Quell- und Ziel-Port-Informationen übergangen. Für Nicht-IP-Datenverkehr lautet die Formel wie die der layer2 Übertragungs-Hash-Richtlinie.
    Diese Richtlinie hat die Absicht, das Verhalten bestimmter Switches zu imitieren. Insbesondere Cisco-Switches mit PFC2, sowie einige Foundry und IBM Produkte.
    Der von dieser Richtlinie verwendete Algorithmus entspricht nicht dem 802.3ad Standard.
  • 2 or layer2+3 — Uses a combination of layer2 and layer3 protocol information to generate the hash.
    Uses XOR of hardware MAC addresses and IP addresses to generate the hash. The formula is:
    (((<source_IP> XOR <dest_IP>) AND 0xffff) XOR
      ( <source_MAC> XOR <destination_MAC> ))
        MODULO <slave_count>
    This algorithm will place all traffic to a particular network peer on the same slave. For non-IP traffic, the formula is the same as for the layer2 transmit hash policy.
    This policy is intended to provide a more balanced distribution of traffic than layer2 alone, especially in environments where a layer3 gateway device is required to reach most destinations.
    This algorithm is 802.3ad compliant.

43.6. Weitere Ressourcen

Weitere Informationen zu Kernel-Modulen und deren Hilfsprogrammen finden Sie in den nachfolgenden Ressourcen.

43.6.1. Installierte Dokumentation

  • lsmod man page — Beschreibung und Erläuterung der Ausgabe.
  • insmod man page — Beschreibung und Liste von Befehlszeilenoptionen.
  • modprobe man page — Beschreibung und Liste von Befehlszeilenoptionen.
  • rmmod man page — Beschreibung und Liste von Befehlszeilenoptionen.
  • modinfo man page — Beschreibung und Liste von Befehlszeilenoptionen.
  • /usr/share/doc/kernel-doc-<version>/Documentation/kbuild/modules.txt — how to compile and use kernel modules. Note you must have the kernel-doc package installed to read this file.

43.6.2. Nützliche Websites



[9] A driver is software which enables Linux to use a particular hardware device. Without a driver, the kernel cannot communicate with attached devices.

Kapitel 44. The kdump Crash Recovery Service

kdump is an advanced crash dumping mechanism. When enabled, the system is booted from the context of another kernel. This second kernel reserves a small amount of memory, and its only purpose is to capture the core dump image in case the system crashes. Since being able to analyze the core dump helps significantly to determine the exact cause of the system failure, it is strongly recommended to have this feature enabled.
This chapter explains how to configure, test, and use the kdump service in Red Hat Enterprise Linux, and provides a brief overview of how to analyze the resulting core dump using the crash debugging utility.

44.1. Configuring the kdump Service

Note

To use the kdump service, you must have the kexec-tools package installed. Refer to Teil II, „Paketverwaltung“ for more information on how to install new packages in Red Hat Enterprise Linux.
This section covers three common means of configuring the kdump service: at the first boot, using the Kernel Dump Configuration graphical utility, and doing so manually on the command line. It also describes how to test the configuration to verify that everything works as expected.

44.1.1. Configuring the kdump at First Boot

When the system boots for the first time, a firstboot application is launched allowing you to perform a basic configuration. This includes the kdump service.
The kdump configuration screen
The kdump configuration screen
Abbildung 44.1. The kdump configuration screen

Important

Unless the system has enough memory, this option will not be available. For the information on minimum memory requirements, refer to the Required minimums section of the Red Hat Enterprise Linux comparison chart. Note that when the kdump crash recovery is enabled, the minimum memory requirements increase by the amount of memory reserved for it. This value is determined by a user, and defaults to 128 MB.

44.1.1.1. Enabling the Service

To start the kdump daemon at boot time, select the Enable kdump? check box. This will enable the service for runlevels 2, 3, 4, and 5, and start it for the current session. Similarly, unselecting the check box will disable it for all runlevels and stop the service immediately.

44.1.1.2. Configuring the Memory Usage

To configure the amount of memory that is reserved for the kdump kernel, click the up and down arrow buttons next to the Kdump Memory field to increase or decrease the value. Notice that the Usable System Memory field changes accordingly showing you the remaining memory that will be available to the system.

44.1.2. Using the Kernel Dump Configuration Utility

To start the Kernel Dump Configuration utility, select ApplicationsSystem ToolsKdump from the panel, or type system-config-kdump at a shell prompt (for example, xterm or GNOME Terminal). Unless you are already authenticated, you will be prompted to enter the superuser password.
The Kernel Dump Configuration utility
Kernel Dump Configuration
Abbildung 44.2. The Kernel Dump Configuration utility

The utility allows you to configure kdump as well as to enable or disable starting the service at boot time. When you are done, click OK to save the changes. The system reboot will be requested.

Important

Unless the system has enough memory, the utility will not start, and you will be presented with an error message. For the information on minimum memory requirements, refer to the Required minimums section of the Red Hat Enterprise Linux comparison chart. Note that when the kdump crash recovery is enabled, the minimum memory requirements increase by the amount of memory reserved for it. This value is determined by a user, and defaults to 128 MB.

44.1.2.1. Enabling the Service

To start the kdump daemon at boot time, select the Enable kdump check box. This will enable the service for runlevels 2, 3, 4, and 5, and start it for the current session. Similarly, unselecting the check box will disable it for all runlevels and stop the service immediately.

44.1.2.2. Configuring the Memory Usage

To configure the amount of memory that is reserved for the kdump kernel, click the up and down arrow buttons next to the New kdump Memory field to increase or decrease the value. Notice that the Usable Memory field changes accordingly showing you the remaining memory that will be available to the system.

44.1.2.3. Configuring the Target Type

When a kernel crash is captured, the core dump can be either stored as a file in a local file system, written directly to a device, or sent over a network using the NFS (Network File System) or SSH (Secure Shell) protocol. To change this, click the Edit Location button, and select a location type as described below.
The Edit Location dialog
Edit Location
Abbildung 44.3. The Edit Location dialog

To save the dump to the local file system, select file from the pulldown list. Optionally, if you wish to write the file to a different partition, select ext3 or ext2 from the pulldown list according to the file system you are using, and enter a valid device name to the Enter location field. Note that after clicking OK, you can then customize the destination directory by changing the value in the Path field at the bottom.
To write the dump directly to a device, select raw from the pulldown list, and enter a valid device name (for example, /dev/sdb1). When you are done, click OK to confirm your choice.
To store the dump to a remote machine using the NFS protocol, select nfs from the pulldown list, and enter a valid target in the hostname:directory form (for example, penguin.example.com:/export). Clicking the OK button will confirm your changes. Finally, edit the value of the Path field to customize the destination directory (for instance, cores).
To store the dump to a remote machine using the SSH protocol, select ssh from the pulldown list, and enter a valid username and hostname in the username@hostname form (for example, john@penguin.example.com). Clicking the OK button will confirm your changes. Finally, edit the value of the Path field to customize the destination directory (for instance, /export/cores).
Refer to Kapitel 19, OpenSSH for information on how to configure an SSH server, and how to set up a key-based authentication.

44.1.2.4. Configuring the Core Collector

To reduce the size of the vmcore dump file, kdump allows you to specify an external application (that is, a core collector) to compress the data, and optionally leave out all irrelevant information. Currently, the only fully supported core collector is makedumpfile.
To enable the dump file compression, make sure the -c parameter is listed after the makedumpfile command in the Core Collector field (for example, makedumpfile -c).
To remove certain pages from the dump, add the -d value parameter after the makedumpfile command in the Core Collector field. The value is a sum of values of pages you want to omit as described in Tabelle 44.1, „Supported filtering levels“. For example, to remove both zero and free pages, use makedumpfile -d 17.
Refer to the manual page for makedumpfile for a complete list of available options.

44.1.2.5. Changing the Default Action

To choose what action to perform when kdump fails to create a core dump, select the appropriate option from the Default Action pulldown list. Available options are mount rootfs and run /sbin/init (the default action), reboot (to reboot the system), shell (to present a user with an interactive shell prompt), and halt (to halt the system).

44.1.3. Configuring kdump on the Command Line

To perform actions described in this section, you have to be logged in as a superuser:
~]$ su -
Password:

44.1.3.1. Configuring the Memory Usage

To configure the amount of memory that is reserved for the kdump kernel, open the /boot/grub/grub.conf file in a text editor and add the crashkernel=<size>M@16M parameter to the list of kernel options as shown in Beispiel 44.1, „A sample /boot/grub/grub.conf file“.
Beispiel 44.1. A sample /boot/grub/grub.conf file
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-274.3.1.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-274.3.1.el5 ro root=/dev/sda3 crashkernel=128M@16M
        initrd /initrd-2.6.18-274.3.1.el5.img

Important

When the kdump crash recovery is enabled, the minimum memory requirements increase by the amount of memory reserved for it. This value is determined by a user, and defaults to 128 MB, as lower values proved to be unreliable. For more information on minimum memory requirements for Red Hat Enterprise Linux, refer to the Required minimums section of the Red Hat Enterprise Linux comparison chart.

44.1.3.2. Configuring the Target Type

When a kernel crash is captured, the core dump can be either stored as a file in a local file system, written directly to a device, or sent over a network using the NFS (Network File System) or SSH (Secure Shell) protocol. Note that only one of these options can be set at the moment. The default option is to store the vmcore file in the /var/crash/ directory of the local file system. To change this, open the /etc/kdump.conf configuration file in a text editor and edit the options as described below.
To change the local directory in which the core dump is to be saved, remove the hash sign (#) from the beginning of the #path /var/crash line, and replace the value with a desired directory path. Optionally, if you wish to write the file to a different partition, follow the same procedure with the #ext3 /dev/sda3 line as well, and change both the file system type and the device (a device name, a file system label, and UUID are all supported) accordingly. For example:
ext3 /dev/sda4
path /usr/local/cores
To write the dump directly to a device, remove the hash sign (#) from the beginning of the #raw /dev/sda5 line, and replace the value with a desired device name. For example:
raw /dev/sdb1
To store the dump to a remote machine using the NFS protocol, remove the hash sign (#) from the beginning of the #net my.server.com:/export/tmp line, and replace the value with a valid hostname and directory path. For example:
net penguin.example.com:/export/cores
To store the dump to a remote machine using the SSH protocol, remove the hash sign (#) from the beginning of the #net user@my.server.com line, and replace the value with a valid username and hostname. For example:
net john@penguin.example.com
Refer to Kapitel 19, OpenSSH for information on how to configure an SSH server, and how to set up a key-based authentication.

44.1.3.3. Configuring the Core Collector

To reduce the size of the vmcore dump file, kdump allows you to specify an external application (that is, a core collector) to compress the data, and optionally leave out all irrelevant information. Currently, the only fully supported core collector is makedumpfile.
To enable the core collector, open the /etc/kdump.conf configuration file in a text editor, remove the hash sign (#) from the beginning of the #core_collector makedumpfile -c --message-level 1 line, and edit the command line options as described below.
To enable the dump file compression, add the -c parameter. For example:
core_collector makedumpfile -c
To remove certain pages from the dump, add the -d value parameter, where value is a sum of values of pages you want to omit as described in Tabelle 44.1, „Supported filtering levels“. For example, to remove both zero and free pages, use the following:
core_collector makedumpfile -d 17 -c
Refer to the manual page for makedumpfile for a complete list of available options.
Tabelle 44.1. Supported filtering levels
Option Description
1 Zero pages
2 Cache pages
4 Cache private
8 User pages
16 Free pages

44.1.3.4. Changing the Default Action

By default, when kdump fails to create a core dump, the root file system is mounted and /sbin/init is run. To change this behavior, open the /etc/kdump.conf configuration file in a text editor, remove the hash sign (#) from the beginning of the #default shell line, and replace the value with a desired action as described in Tabelle 44.2, „Supported actions“. For example:
default halt
Tabelle 44.2. Supported actions
Option Action
reboot Reboot the system, losing the core in the process.
halt After failing to capture a core, halt the system.
shell Run the msh session from within the initramfs, allowing a user to record the core manually.

44.1.3.5. Enabling the Service

To start the kdump daemon at boot time, type the following at a shell prompt:
~]# chkconfig kdump on
This will enable the service for runlevels 2, 3, 4, and 5. Similarly, typing chkconfig kdump off will disable it for all runlevels. To start the service in the current session, use the following command:
~]# service kdump start
No kdump initial ramdisk found.                            [WARNING]
Rebuilding /boot/initrd-2.6.18-194.8.1.el5kdump.img
Starting kdump:                                            [  OK  ]
For more information on runlevels and configuring services in general, refer to Kapitel 17, Zugriffskontrolle für Dienste.

44.1.4. Testing the Configuration

Caution

The commands below will cause the kernel to crash. Use caution when following these steps, and by no means use them on a production machine.
To test the configuration, reboot the system with kdump enabled, and make sure that the service is running:
~]# service kdump status
Kdump is operational
Then type the following commands at a shell prompt:
~]# echo 1 > /proc/sys/kernel/sysrq
~]# echo c > /proc/sysrq-trigger
This will force the Linux kernel to crash, and the YYYY-MM-DD-HH:MM/vmcore file will be copied to the location you have selected in the configuration (that is, to /var/crash/ by default).

44.2. Analyzing the Core Dump

Note

To analyze the vmcore dump file, you must have the crash and kernel-debuginfo packages installed. To do so, type the following at a shell prompt:
~]# yum install --enablerepo=rhel-debuginfo crash kernel-debuginfo
Refer to Teil II, „Paketverwaltung“ for more information on how to install new packages in Red Hat Enterprise Linux.
To determine the cause of the system crash, you can use the crash utility. This utility allows you to interactively analyze a running Linux system as well as a core dump created by netdump, diskdump, xendump, or kdump. When started, it presents you with an interactive prompt very similar to the GNU Debugger (GDB).
To start the utility, type the command in the following form at a shell prompt:
crash /var/crash/timestamp/vmcore /usr/lib/debug/lib/modules/kernel/vmlinux
Note that the kernel version should be the same as the one that was captured by kdump. To find out which kernel you are currently running, use the uname -r command.
Beispiel 44.2. Running the crash utility
~]# crash /var/crash/2010-08-04-17\:55/vmcore \
/usr/lib/debug/lib/modules/2.6.18-194.8.1.el5/vmlinux

crash 4.1.2-4.el5_5.1
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009  Red Hat, Inc.
Copyright (C) 2004, 2005, 2006  IBM Corporation
Copyright (C) 1999-2006  Hewlett-Packard Co
Copyright (C) 2005, 2006  Fujitsu Limited
Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
Copyright (C) 2005  NEC Corporation
Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions.  Enter "help copying" to see the conditions.
This program has absolutely no warranty.  Enter "help warranty" for details.
 
GNU gdb 6.1
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...

      KERNEL: /usr/lib/debug/lib/modules/2.6.18-194.8.1.el5/vmlinux
    DUMPFILE: /var/crash/2010-08-04-17:55/vmcore
        CPUS: 1
        DATE: Wed Aug  4 17:50:41 2010
      UPTIME: 00:56:53
LOAD AVERAGE: 0.47, 0.47, 0.55
       TASKS: 128
    NODENAME: localhost.localdomain
     RELEASE: 2.6.18-194.el5
     VERSION: #1 SMP Tue Mar 16 21:52:43 EDT 2010
     MACHINE: i686  (2702 Mhz)
      MEMORY: 1 GB
       PANIC: "SysRq : Trigger a crashdump"
         PID: 6042
     COMMAND: "bash"
        TASK: f09c7000  [THREAD_INFO: e1ba9000]
         CPU: 0
       STATE: TASK_RUNNING (SYSRQ)

crash>

To exit the interactive prompt and terminate crash, type exit.

44.2.1. Displaying the Message Buffer

To display the kernel message buffer, type the log command at the interactive prompt.
Beispiel 44.3. Displaying the kernel message buffer
crash> log
Linux version 2.6.18-194.el5 (mockbuild@x86-007.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Tue Mar 16 21:52:43 EDT 2010
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000010000 - 000000000009fc00 (usable)
 BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000003fff0000 (usable)
 BIOS-e820: 000000003fff0000 - 0000000040000000 (ACPI data)
 BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
127MB HIGHMEM available.
896MB LOWMEM available.
Using x86 segment limits to approximate NX protection
On node 0 totalpages: 262128
  DMA zone: 4096 pages, LIFO batch:0
  Normal zone: 225280 pages, LIFO batch:31
  HighMem zone: 32752 pages, LIFO batch:7
DMI 2.5 present.
Using APIC driver default
... several lines omitted ...
SysRq : Trigger a crashdump

Type help log for more information on the command usage.

44.2.2. Displaying a Backtrace

To display the kernel stack trace, type the bt command at the interactive prompt. You can use bt pid to display the backtrace of the selected process.
Beispiel 44.4. Displaying the kernel stack trace
crash> bt
PID: 6042   TASK: f09c7000  CPU: 0   COMMAND: "bash"
 #0 [e1ba9d10] schedule at c061c738
 #1 [e1ba9d28] netlink_getsockopt at c05d50bb
 #2 [e1ba9d34] netlink_queue_skip at c05d40d5
 #3 [e1ba9d40] netlink_sock_destruct at c05d506d
 #4 [e1ba9d84] sock_recvmsg at c05b6cc8
 #5 [e1ba9dd4] enqueue_task at c041eed5
 #6 [e1ba9dec] try_to_wake_up at c041f798
 #7 [e1ba9e10] vsnprintf at c04efef2
 #8 [e1ba9ec0] machine_kexec at c0419bf0
 #9 [e1ba9f04] sys_kexec_load at c04448a1
#10 [e1ba9f4c] tty_audit_exit at c0549f06
#11 [e1ba9f50] tty_audit_add_data at c0549d5d
#12 [e1ba9f84] do_readv_writev at c0476055
#13 [e1ba9fb8] system_call at c0404f10
    EAX: ffffffda  EBX: 00000001  ECX: b7f7f000  EDX: 00000002 
    DS:  007b      ESI: 00000002  ES:  007b      EDI: b7f7f000
    SS:  007b      ESP: bf83f478  EBP: bf83f498
    CS:  0073      EIP: 009ac402  ERR: 00000004  EFLAGS: 00000246

Type help bt for more information on the command usage.

44.2.3. Displaying a Process Status

To display a status of processes in the system, type the ps command at the interactive prompt. You can use ps pid to display the status of the selected process.
Beispiel 44.5. Displaying status of processes in the system
crash> ps
   PID    PPID  CPU   TASK    ST  %MEM     VSZ    RSS  COMM
      0      0   0  c068a3c0  RU   0.0       0      0  [swapper]
      1      0   0  f7c81aa0  IN   0.1    2152    616  init
... several lines omitted ...
   6017      1   0  e39f6550  IN   1.2   40200  13000  gnome-terminal
   6019   6017   0  e39f6000  IN   0.1    2568    708  gnome-pty-helpe
   6020   6017   0  f0421550  IN   0.1    4620   1480  bash
   6021      1   0  f7f69aa0  ??   1.2   40200  13000  gnome-terminal
   6039   6020   0  e7e84aa0  IN   0.1    5004   1300  su
>  6042   6039   0  f09c7000  RU   0.1    4620   1464  bash

Type help ps for more information on the command usage.

44.2.4. Displaying Virtual Memory Information

To display basic virtual memory information, type the vm command at the interactive prompt. You can use vm pid to display information on the selected process.
Beispiel 44.6. Displaying virtual memory information of the current context
crash> vm
PID: 6042   TASK: f09c7000  CPU: 0   COMMAND: "bash"
   MM       PGD      RSS    TOTAL_VM
e275ee40  e2b08000  1464k    4620k  
  VMA       START      END    FLAGS  FILE
e315d764    1fe000    201000     75  /lib/libtermcap.so.2.0.8
e315de9c    201000    202000 100073  /lib/libtermcap.so.2.0.8
c9b040d4    318000    46a000     75  /lib/libc-2.5.so
e315da04    46a000    46c000 100071  /lib/libc-2.5.so
e315d7b8    46c000    46d000 100073  /lib/libc-2.5.so
e315de48    46d000    470000 100073  
e315dba8    9ac000    9ad000 8040075  
c9b04a04    a2f000    a4a000    875  /lib/ld-2.5.so
c9b04374    a4a000    a4b000 100871  /lib/ld-2.5.so
e315d6bc    a4b000    a4c000 100873  /lib/ld-2.5.so
e315d908    fa1000    fa4000     75  /lib/libdl-2.5.so
e315db00    fa4000    fa5000 100071  /lib/libdl-2.5.so
e315df44    fa5000    fa6000 100073  /lib/libdl-2.5.so
e315d320    ff0000    ffa000     75  /lib/libnss_files-2.5.so
e315d668    ffa000    ffb000 100071  /lib/libnss_files-2.5.so
e315def0    ffb000    ffc000 100073  /lib/libnss_files-2.5.so
e315d374   8048000   80f5000   1875  /bin/bash
c9b045c0   80f5000   80fa000 101873  /bin/bash
... several lines omitted ...

Type help vm for more information on the command usage.

44.2.5. Displaying Open Files

To display information about open files, type the files command at the interactive prompt. You can use files pid to display files opened by the selected process.
Beispiel 44.7. Displaying information about open files of the current context
crash> files
PID: 6042   TASK: f09c7000  CPU: 0   COMMAND: "bash"
ROOT: /    CWD: /root
 FD    FILE     DENTRY    INODE    TYPE  PATH
  0  e33be480  e609bf70  f0e1d880  CHR   /dev/pts/1
  1  e424d8c0  d637add8  f7809b78  REG   /proc/sysrq-trigger
  2  e33be480  e609bf70  f0e1d880  CHR   /dev/pts/1
 10  e33be480  e609bf70  f0e1d880  CHR   /dev/pts/1
255  e33be480  e609bf70  f0e1d880  CHR   /dev/pts/1

Type help files for more information on the command usage.

44.3. Additional Resources

44.3.1. Installed Documentation

man kdump.conf
The manual page for the /etc/kdump.conf configuration file containing the full documentation of available options.
man kexec
The manual page for kexec containing the full documentation on its usage.
man crash
The manual page for the crash utility containing the full documentation on its usage.
/usr/share/doc/kexec-tools-version/kexec-kdump-howto.txt
An overview of the kdump and kexec installation and usage.

44.3.2. Useful Websites

https://access.redhat.com/kb/docs/DOC-6039
The Red Hat Knowledgebase article about the kexec and kdump configuration.
http://people.redhat.com/anderson/
The crash utility homepage.

Teil VII. Sicherheit und Authentifizierung

Egal ob Systemadministratoren ihre missionskritischen Systeme, Daten oder Dienste sichern müssen - Red Hat Enterprise Linux liefert eine Reihe an Tools und Methoden zur Versorgung einer umfassenden Sicherheitsstrategie.
Dieses Kapitel bietet eine allgemeine Einführung zu Sicherheit, insbesondere aus der Perspektive von Red Hat Enterprise Linux. Es liefert konzeptionelle Informationen zu den Bereichen Sicherheitseinschätzung, häufige Exploits und Reaktionen auf Einbruch und IT-Incident-Management. Weiterhin stellt es konzeptionelle und spezifische Informationen zur Verwendung von SELinux zur Absicherung von Workstation, Server, VPN, Firewall und anderen Implementationen zur Verfügung.
Dieses Kapitel setzt eine Grundkenntnis an IT-Sicherheit voraus und liefert daher nur einen minimalen Umfang an allgemeinen Sicherheitspraktiken wie die Kontrolle des physikalischen Zugriffs, korrekte Richtlinien und Prozeduren zur Erhaltung von Accounts, Überwachung, etc.. Falls zutreffend werden hierfür Querverweise zu externen Quellen und verwandten Informationen angegeben.

Inhaltsverzeichnis

45. Überblick über Sicherheit
45.1. Introduction to Security
45.1.1. What is Computer Security?
45.1.2. Security Controls
45.1.3. Conclusion
45.2. Schwachstellenanalyse
45.2.1. Denken wie der Feind
45.2.2. Definition von Analyse und Test
45.2.3. Auswerten der Tools
45.3. Angreifer und Schwachstellen
45.3.1. Ein kurzer geschichtlicher Überblick über Hacker
45.3.2. Bedrohungen der Netzwerksicherheit
45.3.3. Bedrohungen der Serversicherheit
45.3.4. Bedrohungen der Workstation- und Heim-PC-Sicherheit
45.4. Häufige Schwachstellen und Attacken
45.5. Sicherheits-Updates
45.5.1. Pakete aktualisieren
46. Sichern Ihres Netzwerkes
46.1. Workstation-Sicherheit
46.1.1. Auswertung der Workstation-Sicherheit
46.1.2. BIOS und Bootloader Sicherheit
46.1.3. Passwortsicherheit
46.1.4. Administrative Kontrollen
46.1.5. Verfügbare Netzwerkdienste
46.1.6. Persönliche Firewalls
46.1.7. Kommunikationstools mit erhöhter Sicherheit
46.2. Server-Sicherheit
46.2.1. Sichern von Diensten mit TCP-Wrappern und xinetd
46.2.2. Portmap sichern
46.2.3. Sichern von NIS
46.2.4. Sicherung von NFS
46.2.5. Sicherung des Apache HTTP-Server
46.2.6. Sicherung von FTP
46.2.7. Sicherung von Sendmail
46.2.8. Bestätigen, welche Ports auf Verbindungen abhören
46.3. Single Sign-on (SSO)
46.3.1. Introduction
46.3.2. Getting Started with your new Smart Card
46.3.3. How Smart Card Enrollment Works
46.3.4. How Smart Card Login Works
46.3.5. Configuring Firefox to use Kerberos for SSO
46.4. Pluggable Authentication Modules (PAM)
46.4.1. Vorteile von PAM
46.4.2. PAM-Konfigurationsdateien
46.4.3. Format der PAM Konfigurationsdatei
46.4.4. Beispiele für PAM-Konfigurationsdateien
46.4.5. Module erstellen
46.4.6. PAM und Administrative-Credential-Caching
46.4.7. PAM und Besitzrechte von Geräten
46.4.8. Zusätzliche Ressourcen
46.5. TCP-Wrapper und xinetd
46.5.1. TCP Wrappers
46.5.2. TCP-Wrapper Konfigurationsdateien
46.5.3. xinetd
46.5.4. xinetd-Konfigurationsdateien
46.5.5. Zusätzliche Ressourcen
46.6. Kerberos
46.6.1. Was ist Kerberos?
46.6.2. Kerberos-Terminologie
46.6.3. Funktionsweise von Kerberos
46.6.4. Kerberos und PAM
46.6.5. Konfigurieren eines Kerberos 5-Servers
46.6.6. Konfigurieren eines Kerberos 5-Clients
46.6.7. Domain-to-Realm Mapping
46.6.8. Setting Up Secondary KDCs
46.6.9. Setting Up Cross Realm Authentication
46.6.10. Zusätzliche Ressourcen
46.7. Virtuelle Private Netzwerke (VPNs)
46.7.1. Wie funktioniert ein VPN?
46.7.2. VPNs und Red Hat Enterprise Linux
46.7.3. IPsec
46.7.4. Eine IPsec-Verbindung erstellen
46.7.5. Installation von IPsec
46.7.6. Konfiguration von IPsec Host-zu-Host
46.7.7. IPsec Netzwerk-zu-Netzwerk Konfiguration
46.7.8. Starten und Stoppen einer IPsec-Verbindung
46.8. Firewalls
46.8.1. Netfilter and IPTables
46.8.2. Basic Firewall Configuration
46.8.3. Using IPTables
46.8.4. Common IPTables Filtering
46.8.5. FORWARD and NAT Rules
46.8.6. Malicious Software and Spoofed IP Addresses
46.8.7. IPTables and Connection Tracking
46.8.8. IPv6
46.8.9. Zusätzliche Informationsquellen
46.9. IPTables
46.9.1. Paket-Filterung
46.9.2. Unterschiede zwischen IPTables und IPChains
46.9.3. Befehlszeilenoptionen für IPTables
46.9.4. IPTables-Regeln speichern
46.9.5. IPTables Kontrollskripte
46.9.6. IPTables und IPv6
46.9.7. Zusätzliche Informationsquellen
47. Sicherheit und SELinux
47.1. Access Control Mechanisms (ACMs)
47.1.1. Discretionary Access Control (DAC)
47.1.2. Access Control Lists (ACLs)
47.1.3. Mandatory Access Control (MAC)
47.1.4. Role-based Access Control (RBAC)
47.1.5. Multi-Level Security (MLS)
47.1.6. Multi-Category Security (MCS)
47.2. Einführung in SELinux
47.2.1. SELinux Überblick
47.2.2. Dateien, die mit SELinux zusammenhängen
47.2.3. Zusätzliche Ressourcen
47.3. Kurzer Hintergrund und Geschichte von SELinux
47.4. Multi-Category Security (MCS)
47.4.1. Introduction
47.4.2. Applications for Multi-Category Security
47.4.3. SELinux Security Contexts
47.5. Getting Started with Multi-Category Security (MCS)
47.5.1. Introduction
47.5.2. Comparing SELinux and Standard Linux User Identities
47.5.3. Configuring Categories
47.5.4. Assigning Categories to Users
47.5.5. Assigning Categories to Files
47.6. Multi-Level Security (MLS)
47.6.1. Why Multi-Level?
47.6.2. Security Levels, Objects and Subjects
47.6.3. MLS Policy
47.6.4. LSPP Certification
47.7. SELinux Policy Overview
47.7.1. What is the SELinux Policy?
47.7.2. Where is the Policy?
47.7.3. The Role of Policy in the Boot Process
47.7.4. Object Classes and Permissions
47.8. Targeted Policy Overview
47.8.1. What is the Targeted Policy?
47.8.2. Files and Directories of the Targeted Policy
47.8.3. Understanding the Users and Roles in the Targeted Policy
48. Arbeiten mit SELinux
48.1. End User Control of SELinux
48.1.1. Moving and Copying Files
48.1.2. Checking the Security Context of a Process, User, or File Object
48.1.3. Relabeling a File or Directory
48.1.4. Creating Archives That Retain Security Contexts
48.2. Administrator Control of SELinux
48.2.1. Viewing the Status of SELinux
48.2.2. Relabeling a File System
48.2.3. Managing NFS Home Directories
48.2.4. Granting Access to a Directory or a Tree
48.2.5. Backing Up and Restoring the System
48.2.6. Enabling or Disabling Enforcement
48.2.7. Enable or Disable SELinux
48.2.8. Changing the Policy
48.2.9. Specifying the Security Context of Entire File Systems
48.2.10. Changing the Security Category of a File or User
48.2.11. Running a Command in a Specific Security Context
48.2.12. Useful Commands for Scripts
48.2.13. Changing to a Different Role
48.2.14. When to Reboot
48.3. Analyst Control of SELinux
48.3.1. Enabling Kernel Auditing
48.3.2. Dumping and Viewing Logs
49. Anpassen einer SELinux-Richtlinie (policy)
49.1. Einführung
49.1.1. Modulare Richtlinie (policy)
49.2. Erstellen eines lokalen Richtlinienmoduls
49.2.1. Verwendung von audit2allow zum Erstellen eines lokalen Richtlinienmoduls
49.2.2. Analyse der Datei "Type Enforcement (TE)"
49.2.3. Laden des Pakets mit der Richtlinie
50. References

Kapitel 45. Überblick über Sicherheit

Durch die wachsende Abhängigkeit von leistungsstarken, vernetzten Computern für das Führen von Unternehmen und Aufzeichnen unserer persönlichen Daten haben sich ganze Industriezweige um die Netzwerk- und Computersicherheit herum gebildet. Große Unternehmen haben das Wissen und die Fähigkeiten von Sicherheitsexperten zu Rate gezogen, um Systeme zu prüfen und maßgeschneiderte Lösungen für die Anforderungen des Unternehmens zu erstellen. Dadurch, dass die meisten Unternehmen dynamisch arbeiten, mit Mitarbeitern, die auf IT-Ressourcen der Firma intern und extern zugreifen, wird der Bedarf an sicheren EDV-Umgebungen immer deutlicher.
Leider betrachten viele Unternehmen (sowie auch Einzelbenutzer) die Sicherheit immer erst im Nachhinein, ein Prozess, der zu Gunsten erhöhter Leistung, Produktivität und Kostenfaktoren gerne übersehen wird. Angemessene Sicherheitsimplementierung wird oftmals postmortem durchgeführt — erst nachdem ein unberechtigter Zugriff erfolgte. Sicherheitsexperten sind sich einig, dass das Ergreifen richtiger Maßnahmen vor dem Verbinden mit einem unzuverlässigen Netzwerk wie dem Internet ein sicheres Mittel zum Verhindern von unerlaubten Zugriffen ist.

45.1. Introduction to Security

45.1.1. What is Computer Security?

Computer security is a general term that covers a wide area of computing and information processing. Industries that depend on computer systems and networks to conduct daily business transactions and access crucial information regard their data as an important part of their overall assets. Several terms and metrics have entered our daily business vocabulary, such as total cost of ownership (TCO) and quality of service (QoS). In these metrics, industries calculate aspects such as data integrity and high-availability as part of their planning and process management costs. In some industries, such as electronic commerce, the availability and trustworthiness of data can be the difference between success and failure.

45.1.1.1. How did Computer Security Come about?

Information security has evolved over the years due to the increasing reliance on public networks not to disclose personal, financial, and other restricted information. There are numerous instances such as the Mitnick and the Vladimir Levin cases that prompted organizations across all industries to rethink the way they handle information transmission and disclosure. The popularity of the Internet was one of the most important developments that prompted an intensified effort in data security.
An ever-growing number of people are using their personal computers to gain access to the resources that the Internet has to offer. From research and information retrieval to electronic mail and commerce transaction, the Internet has been regarded as one of the most important developments of the 20th century.
The Internet and its earlier protocols, however, were developed as a trust-based system. That is, the Internet Protocol was not designed to be secure in itself. There are no approved security standards built into the TCP/IP communications stack, leaving it open to potentially malicious users and processes across the network. Modern developments have made Internet communication more secure, but there are still several incidents that gain national attention and alert us to the fact that nothing is completely safe.

45.1.1.2. Security Today

In February of 2000, a Distributed Denial of Service (DDoS) attack was unleashed on several of the most heavily-trafficked sites on the Internet. The attack rendered yahoo.com, cnn.com, amazon.com, fbi.gov, and several other sites completely unreachable to normal users, as it tied up routers for several hours with large-byte ICMP packet transfers, also called a ping flood. The attack was brought on by unknown assailants using specially created, widely available programs that scanned vulnerable network servers, installed client applications called Trojans on the servers, and timed an attack with every infected server flooding the victim sites and rendering them unavailable. Many blame the attack on fundamental flaws in the way routers and the protocols used are structured to accept all incoming data, no matter where or for what purpose the packets are sent.
Currently, an estimated 945 million people use or have used the Internet worldwide (Computer Industry Almanac, 2004). At the same time:
  • On any given day, there are approximately 225 major incidences of security breach reported to the CERT Coordination Center at Carnegie Mellon University.[10]
  • In 2003, the number of CERT reported incidences jumped to 137,529 from 82,094 in 2002 and from 52,658 in 2001.[11]
  • The worldwide economic impact of the three most dangerous Internet Viruses of the last three years was estimated at US$13.2 Billion.[12]
Computer security has become a quantifiable and justifiable expense for all IT budgets. Organizations that require data integrity and high availability elicit the skills of system administrators, developers, and engineers to ensure 24x7 reliability of their systems, services, and information. Falling victim to malicious users, processes, or coordinated attacks is a direct threat to the success of the organization.
Unfortunately, system and network security can be a difficult proposition, requiring an intricate knowledge of how an organization regards, uses, manipulates, and transmits its information. Understanding the way an organization (and the people that make up the organization) conducts business is paramount to implementing a proper security plan.

45.1.1.3. Standardizing Security

Enterprises in every industry rely on regulations and rules that are set by standards making bodies such as the American Medical Association (AMA) or the Institute of Electrical and Electronics Engineers (IEEE). The same ideals hold true for information security. Many security consultants and vendors agree upon the standard security model known as CIA, or Confidentiality, Integrity, and Availability. This three-tiered model is a generally accepted component to assessing risks of sensitive information and establishing security policy. The following describes the CIA model in further detail:
  • Confidentiality — Sensitive information must be available only to a set of pre-defined individuals. Unauthorized transmission and usage of information should be restricted. For example, confidentiality of information ensures that a customer's personal or financial information is not obtained by an unauthorized individual for malicious purposes such as identity theft or credit fraud.
  • Integrity — Information should not be altered in ways that render it incomplete or incorrect. Unauthorized users should be restricted from the ability to modify or destroy sensitive information.
  • Availability — Information should be accessible to authorized users any time that it is needed. Availability is a warranty that information can be obtained with an agreed-upon frequency and timeliness. This is often measured in terms of percentages and agreed to formally in Service Level Agreements (SLAs) used by network service providers and their enterprise clients.

45.1.2. Security Controls

Computer security is often divided into three distinct master categories, commonly referred to as controls:
  • Physical
  • Technical
  • Administrative
These three broad categories define the main objectives of proper security implementation. Within these controls are sub-categories that further detail the controls and how to implement them.

45.1.2.1. Physical Controls

Physical control is the implementation of security measures in a defined structure used to deter or prevent unauthorized access to sensitive material. Examples of physical controls are:
  • Closed-circuit surveillance cameras
  • Motion or thermal alarm systems
  • Security guards
  • Picture IDs
  • Locked and dead-bolted steel doors
  • Biometrics (includes fingerprint, voice, face, iris, handwriting, and other automated methods used to recognize individuals)

45.1.2.2. Technical Controls

Technical controls use technology as a basis for controlling the access and usage of sensitive data throughout a physical structure and over a network. Technical controls are far-reaching in scope and encompass such technologies as:
  • Encryption
  • Smart cards
  • Network authentication
  • Access control lists (ACLs)
  • File integrity auditing software

45.1.2.3. Administrative Controls

Administrative controls define the human factors of security. It involves all levels of personnel within an organization and determines which users have access to what resources and information by such means as:
  • Training and awareness
  • Disaster preparedness and recovery plans
  • Personnel recruitment and separation strategies
  • Personnel registration and accounting

45.1.3. Conclusion

Now that you have learned about the origins, reasons, and aspects of security, you can determine the appropriate course of action with regard to Red Hat Enterprise Linux. It is important to know what factors and conditions make up security in order to plan and implement a proper strategy. With this information in mind, the process can be formalized and the path becomes clearer as you delve deeper into the specifics of the security process.

45.2. Schwachstellenanalyse

Mit genügend Zeit, Ressourcen und Motivation kann ein Cracker in fast jedes System einbrechen. Schlussendlich stellen alle derzeit erhältlichen Technologien und Sicherheitsprozeduren keine Garantie dar, dass irgendein System vor Eindringlingen sicher ist. Router können bei der Sicherung Ihrer Gateways zum Internet helfen. Firewalls helfen bei der Sicherung des Netzwerks. Virtuelle Private Netzwerke können auf sichere Art Daten verschlüsselt übertragen. Intrusion-Detection-Systeme können Sie vor böswilligen Aktivitäten warnen. Der Erfolg jeder dieser Technologien hängt jedoch von einer Reihe von Variablen ab. Diese sind unter anderem:
  • Die Kompetenz der Mitarbeiter, die für die Konfiguration, Überwachung und Wartung dieser Technologien verantwortlich sind.
  • Die Fähigkeit, Services und Kernel schnell und effizient mit Patches versehen und aktualisieren zu können.
  • Die Fähigkeit der Verantwortlichen, konstante Wachsamkeit im Netzwerk auszuüben.
Durch den dynamischen Zustand von Datensystemen und Technologien kann das Sichern Ihrer Ressourcen ziemlich komplex werden. Aufgrund dieser Komplexität kann es sich schwierig gestalten, Experten für Ihre Ressourcen zu finden. Es ist zwar möglich, Mitarbeiter mit reichhaltigem Wissen auf vielen Gebieten der Informationssicherheit zu beschäftigen, aber es ist relativ schwierig, Experten auf nur wenigen Gebieten zu behalten. Dies liegt hauptsächlich daran, dass die Informationssicherheit ständige Aufmerksamkeit und Fokus verlangt. Informationssicherheit ist ein ständig im Wandel begriffener Prozess.

45.2.1. Denken wie der Feind

Suppose that you administer an enterprise network. Such networks are commonly comprised of operating systems, applications, servers, network monitors, firewalls, intrusion detection systems, and more. Now imagine trying to keep current with each of these. Given the complexity of today's software and networking environments, exploits and bugs are a certainty. Keeping current with patches and updates for an entire network can prove to be a daunting task in a large organization with heterogeneous systems.
Wenn Sie nun diese gewaltigen Anforderungen an das Wissen mit der Aufgabe, immer auf dem neuesten Stand zu sein, kombinieren, sind Vorfälle, Systemeinbrüche, Datenkorruption und Serviceunterbrechungen unvermeidbar.
Um den Nutzen dieser Sicherheitstechnologien zu erhöhen und dabei zu helfen, Systeme, Netzwerke und Daten zu schützen, sollten Sie sich in die Lage eines Crackers versetzen und die Sicherheit der Systeme durch das Suchen von Schwachstellen testen. Vorbeugende Schwachstellenanalysen für Ihre eigenen Systeme und Netzwerkressourcen können potentielle Problemstellen aufdecken, bevor ein Cracker diese zu seinem Vorteil ausnutzen kann.
A vulnerability assessment is an internal audit of your network and system security; the results of which indicate the confidentiality, integrity, and availability of your network (as explained in Abschnitt 45.1.1.3, „Standardizing Security“). Typically, vulnerability assessment starts with a reconnaissance phase, during which important data regarding the target systems and resources is gathered. This phase leads to the system readiness phase, whereby the target is essentially checked for all known vulnerabilities. The readiness phase culminates in the reporting phase, where the findings are classified into categories of high, medium, and low risk; and methods for improving the security (or mitigating the risk of vulnerability) of the target are discussed.
Würden Sie zum Beispiel eine Schwachstellenanalyse für Ihr Haus durchführen, würden Sie wahrscheinlich prüfen, ob jede Tür geschlossen und auch abgeschlossen ist. Sie würden auch jedes Fenster prüfen und sicherstellen, dass diese richtig schließen und abgeschlossen werden können. Das gleiche Konzept gilt auch für Systeme, Netzwerke und elektronische Daten. Benutzer mit böswilligen Absichten sind die Diebe und Vandalen Ihrer Daten. Konzentrieren Sie sich auf deren Tools, Mentalität und Beweggründe, denn so können Sie schnell auf deren Taten reagieren.

45.2.2. Definition von Analyse und Test

Schwachstellenanalysen können in zwei Arten klassifiziert werden: von außen innen herumschnüffeln und innen herumschnüffeln.
When performing an outside looking in vulnerability assessment, you are attempting to compromise your systems from the outside. Being external to your company provides you with the cracker's viewpoint. You see what a cracker sees — publicly-routable IP addresses, systems on your DMZ, external interfaces of your firewall, and more. DMZ stands for "demilitarized zone", which corresponds to a computer or small subnetwork that sits between a trusted internal network, such as a corporate private LAN, and an untrusted external network, such as the public Internet. Typically, the DMZ contains devices accessible to Internet traffic, such as Web (HTTP ) servers, FTP servers, SMTP (e-mail) servers and DNS servers.
Wenn Sie eine Schwachstellenanalyse von innen betrachtet durchführen, haben Sie den gewissen Vorteil, das Sie bereits intern sind, und Sie einen Status des vertrauens haben. Dies ist der Blickwinkel, den Sie und Ihre Kollegen haben, wenn Sie sich einmal im System angemeldet haben. Sie sehen Druckserver, Dateiserver, Datenbanken und andere Ressourcen.
Es gibt klare Unterscheidungen zwischen diesen beiden Arten der Schwachstellenanalyse. Als interner Mitarbeiter Ihres Unternehmens besitzen Sie höhere Privilegien; weit mehr als jeder Außenstehende. Entsprechend sind die Sicherheitsrichtlinien in den meisten Unternehmen nach wie vor so konfiguriert, externe Eindringlinge fernzuhalten. Es wird nur sehr wenig für die interne Sicherung des Unternehmens getan (z.B. Firewalls für Abteilungen, Zugangskontrollen auf Benutzerebene, Authentifizierungsvorgänge für interne Ressourcen und so weiter. Üblicherweise gibt es wesentlich mehr Ressourcen, wenn man sich intern umschaut, da die meisten Systeme in einem Unternehmen intern sind. Sobald Sie sich einmal außerhalb eines Unternehmens befinden, erhalten Sie sofort den Status vertrauensunwürdig zu sein. Die extern zugänglichen Systeme und Ressourcen sind für gewöhnlich wesentlich stärker eingeschränkt.
Betrachten Sie die Unterschiede zwischen Schwachstellenanalyse und Eindringungstests. Sehen Sie die Schwachstellenanalyse als ersten Schritt zu einem Eindringungstest an. Die Informationen aus der Schwachstellenanalyse werden im Test angewendet. Mit der Analyse wird nach Löchern und möglichen Schwachstellen im System gesucht, während der Eindringungstest die Ergebnisse in die Tat umsetzt.
Die Einschätzung der Netzwerk-Infrastruktur ist ein dynamischer Prozess. Das Durchführen der Analyse gibt einen Überblick über positive sowie negative Aspekte.
Sicherheits-Administratoren sind nur so gut wie die Tools, die diese benutzen, und das Wissen, das diese bewahren. Nehmen Sie eines der aktuell erhältlichen Analysetools und lassen Sie es über Ihr System laufen Dabei ist fast garantiert, dass einige Schwachstellen gefunden werden, die gar nicht existieren. Ob durch einen Programmfehler oder Benutzerfehler hervorgerugen, das Ergebnis ist das gleiche. Das Tool findet Schwachstellen, die gar nicht existieren, oder schlimmer noch, findet wirklich existierende Schwachstellen nicht.
Da wir nun den Unterschied zwischen Schwachstellenanalyse und Eindringungstest definiert haben, ist es ratsam, die Ergebnisse der Analyse sorgfältig zu prüfen, bevor Sie den Eindringungstest tatsächlich durchführen.

Achtung

Der Versuch, Schwachstellen in Produktionsressourcen aufzudecken, kann einen negativen Effekt auf die Produktivität und Effizienz Ihrer Systeme und Netzwerke haben.
In der folgenden Liste werden einige der Vorteile einer Schwachstellenanalyse aufgezeigt.
  • Proaktiver Fokus auf Informationssicherheit
  • Auffinden potentieller Schwachstellen, bevor diese von Crackern gefunden werden
  • Resultiert normalerweise darin, dass Systeme aktuell gehalten und mit Patches versehen werden
  • Fördert Wachstum und hilft bei der Entwicklung von Mitarbeiter-Kompetenz
  • Vermindert finanzielle Verluste und negative Publicity

45.2.2.1. Entwickeln einer Methode

Um die Auswahl der richtigen Tools für die Schwachstellenanalyse zu unterstützen, ist es sinnvoll, zuerst eine Methode für die Schwachstellenanalyse zu entwickeln. Es gibt zur Zeit leider keine vordefinierten oder industrieweit bewährten Methoden, jedoch reichen meistens gesunder Menschenverstand und optimale Verfahren als Leitfaden aus.
Was ist das Ziel? Betrachten wir nur einen Server, oder das gesamte Netzwerk und alles innerhalb des Netzwerks? Betrachten wir die Firma intern oder extern? Die Antworten auf diese Fragen sind wichtig, da diese Ihnen bei der Entscheidung über die richtigen Tools und den Einsatz derer helfen.
Weitere Informationen zur Entwicklung von Methoden finden Sie auf den folgenden Webseiten:

45.2.3. Auswerten der Tools

Eine typische Analyse beginnt mit dem Einsatz eines Tools für das Sammeln von Informationen. Bei der Analyse des gesamten Netzwerks sollten Sie zuerst das Layout festlegen, um aktive Hosts zu identifizieren. Sobald diese gefunden wurden, sollten Sie jeden Host einzeln untersuchen. Das Untersuchen dieser Hosts bedarf weiterer Tools. Das Wissen, welche Tools für was verwendet werden, ist der wohl bedeutendste Schritt beim Aufdecken von Schwachstellen.
Wie bei jedem Aspekt des täglichen Lebens gibt es viele verschiedene Tools, die die gleiche Arbeit verrichten. Dies trifft auch auf Schwachstellenanalysen zu. Es gibt Tools, die speziell für Betriebssysteme, Applikationen oder Netzwerke (basierend auf Protokollen) eingesetzt werden können. Einige Tools sind kostenlos, andere wiederum nicht. Einige Tools sind intuitiv und benutzerfreundlich, andere eher kryptisch und schlecht dokumentiert oder besitzen Features, die andere Tools wiederum nicht haben.
Das Finden der richtigen Tools kann eine Herausforderung darstellen. Schlussendlich zählt die Erfahrung. Wenn möglich, richten Sie ein Testlabor ein und probieren soviele Tools aus wie nur möglich, und beachten Sie dabei die Stärken und Schwächen. Lesen Sie die README-Datei oder man-Seite zum Tool. Suchen Sie zusätzlich dazu im Internet nach weiteren Informationen wie Artikel, Schritt-für-Schritt-Anleitungen und Mailinglisten für ein Tool.
Die untenstehend beschriebenen Tools sind nur ein kleines Beispiel der erhältlichen Tools.

45.2.3.1. Scannen von Hosts mit Nmap

Nmap ist ein beliebtes Tool, das mit Red Hat Enterprise Linux ausgeliefert wird, und zum Feststellen eines Netzwerk-Layouts verwendet werden kann. Nmap ist schon seit vielen Jahren auf dem Markt und ist das wahrscheinlich am häufigsten verwendete Tool für die Sammlung von Informationen. Es enthält eine ausgezeichnete Manual-Seite, die detaillierte Informationen zu Optionen und Verwendung bietet. Administratoren können Nmap in einem Netzwerk verwenden, um Hosts und offene Ports auf diesen Systemen zu finden.
Nmap ist ein kompetenter, erster Schritt bei der Schwachstellenanalyse. Sie können die Hosts in Ihrem Netzwerk aufzeigen und eine Option angeben, die versucht zu bestimmen, welches Betriebssystem auf einem bestimmten Host läuft. Nmap ist eine gute Grundlage für das Einführen sicherer Services und das Abstellen unbenutzter Services.
45.2.3.1.1. Nmap verwenden
Nmap kann von einem Shell-Prompt aus verwendet werden. Geben Sie an einem Shell-Prompt den Befehl nmap gefolgt vom Hostnamen oder der IP-Adresse des zu scannenden Computers ein.
nmap foo.example.com
Die Ergebnisse des Scannens (die einige Minuten brauchen können, abhängig davon, wo sich der Host befindet), sollten wie folgt aussehen:
Starting nmap V. 3.50 ( www.insecure.org/nmap/ )
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1591 ports scanned but not shown below are in state: closed)
Port       State       Service
22/tcp     open        ssh
25/tcp     open        smtp
111/tcp    open        sunrpc
443/tcp    open        https
515/tcp    open        printer
950/tcp    open        oftep-rpc
6000/tcp   open        X11

Nmap run completed -- 1 IP address (1 host up) scanned in 71.825 seconds
Nmap prüft die häufigsten Ports für die Netzwerkkommunikation auf mithörende oder wartende Services. Dieses Wissen ist sinnvoll für Administratoren, die unnötige Services abschalten möchten.
Weitere Informationen zu Nmap finden Sie auf der offiziellen Homepage unter folgender URL:

45.2.3.2. Nessus

Nessus ist ein Komplett-Service Sicherheitsscanner. Die Plug-In-Architektur von Nessus ermöglicht Benutzern das Anpassen an deren Systeme und Netzwerke. Wie mit jedem Scanner ist Nessus nur so gut wie die Signatur-Datenbank, die verwendet wird. Glücklicherweise wird Nessus häufig aktualisiert und dessen Features beinhalten vollständige Berichterstattung, Host-Scanning und Echtzeit-Schwachstellensuche. Denken Sie jedoch immer daran, dass fehlerhafte Ergebnisse auch bei einem so leistungsstarken und häufig aktualisiertem Tool wie Nessus auftreten können.

Hinweis

Nessus wird nicht mit Red Hat Enterprise Linux mitgeliefert und wird nicht unterstützt. Die Erwähnung in diesem Handbuch gilt nur als Referenz für Benutzer, die eventuell an dieser beliebten Applikation interessiert sind.
Weitere Informationen zu Nessus finden Sie auf der offiziellen Homepage unter folgender URL:

45.2.3.3. Nikto

Nikto ist ein ausgezeichneter CGI-Scanner (Common Gateway Interface). Nikto hat die Fähigkeit, nicht nur CGI-Schwachstellen zu suchen, sondern diese auch so zu prüfen, dass Intrusion-Detection-Systeme umgangen werden. Es wird von ausgezeichneter Dokumentation begleitet, die vor dem Ausführen des Programms sorgfältig gelesen werden sollte. Wenn Sie Webserver mit CGI-Skripten besitzen, ist Nikto eine ausgezeichnete Quelle für das Prüfen der Sicherheit dieser Server.

Hinweis

Nikto wird nicht mit Red Hat Enterprise Linux mitgeliefert und wird nicht unterstützt. Die Erwähnung in diesem Handbuch gilt nur als Referenz für Benutzer, die an dieser beliebten Applikation interessiert sind.
Weitere Informationen zu Nikto finden Sie unter folgender URL:

45.2.3.4. VLAD the Scanner

VLAD ist ein Schwachstellen-Scanner, der vom RAZOR-Team bei Bindview, Inc. entwickelt wurde und für das Prüfen auf Schwachstellen eingesetzt werden kann. Es prüft laut SANS Top Ten Liste der häufigsten Sicherheitsprobleme (SNMP-Probleme, Datei-Sharing Fragen, etc.). Obwohl er nicht soviele Features wie Nessus besitzt, ist VLAD auf jeden Fall wert, genauer betrachtet zu werden.

Hinweis

VLAD wird nicht mit Red Hat Enterprise Linux mitgeliefert und wird nicht unterstützt. Die Erwähnung in diesem Handbuch gilt nur als Referenz für Benutzer, die an dieser beliebten Applikation interessiert sind.
Weitere Informationen zu VLAD finden Sie auf der Webseite des RAZOR-Teams unter folgender URL:

45.2.3.5. Ihre zukünftigen Bedürfnisse vorausplanen

Depending upon your target and resources, there are many tools available. There are tools for wireless networks, Novell networks, Windows systems, Linux systems, and more. Another essential part of performing assessments may include reviewing physical security, personnel screening, or voice/PBX network assessment. New concepts, such as war walking scanning the perimeter of your enterprise's physical structures for wireless network vulnerabilities are some emerging concepts that you can investigate and, if needed, incorporate into your assessments. Imagination and exposure are the only limits of planning and conducting vulnerability assessments.

45.3. Angreifer und Schwachstellen

Um eine gute Sicherheitsstrategie planen und implementieren zu können, müssen Sie als erstes einige der Wege, die entschlossene, motivierte Angreifer auskundschaften, um Systeme zu beeinträchtigen, verstehen. Bevor wir Ihnen diese jedoch im Detail beschreiben, geben wir Ihnen erstmal einen Überblick über die Terminologie, die zur Identifikation eines Angreifers verwendet wird.

45.3.1. Ein kurzer geschichtlicher Überblick über Hacker

Die moderne Bedeutung des Begriffs Hacker geht auf die 60er Jahre und den Massachusetts Institute of Technology (MIT) Tech Model Railroad Club zurück, der Modelleisenbahnen von großem Umfang und kleinstem Detail entwickelte. Als Hacker wurden Clubmitglieder bezeichnet, die einen Trick oder eine Lösung für ein Problem gefunden hatten.
Der Begriff Hacker wurde seitdem verwendet, um alles, angefangen von Computerfreaks bis hin zu talentierten Programmierern, zu beschreiben. Für viele Hacker charakteristisch ist die Bereitschaft, im Detail und mit nur wenig oder ganz ohne Motivation von außen herauszufinden, wie Computersysteme und Netzwerke funktionieren. Open Source Softwareentwickler betrachten sich selbst und ihre Kollegen oftmals als Hacker und verwenden das Wort als einen Respektsbegriff.
Typischerweise folgen Hacker einer Form von Hacker-Ethik, die vorgibt, dass die Suche nach Informationen und Wissen essentiell ist, und das das Teilen dieses Wissens eine Pflicht des Hackers gegenüber der Community ist. Während der Suche nach Wissen genießen einige Hacker die akademische Herausforderung, Sicherheitskontrollen für Computersysteme zu umgehen. Aus diesem Grund verwenden die Medien häufig den Begriff Hacker für jemanden, der unberechtigt mit skrupellosen, bösen oder kriminellen Absichten auf Systeme und Netzwerke zugreift. Ein zutreffenderer Begriff für diese Art von Computerhacker ist Cracker — ein Begriff, der Mitte der 80er Jahre von Hackern geschaffen wurde, um diese beiden Gruppen zu unterscheiden.

45.3.1.1. Grautöne

Within the community of individuals who find and exploit vulnerabilities in systems and networks are several distinct groups. These groups are often described by the shade of hat that they "wear" when performing their security investigations and this shade is indicative of their intent.
Ein White Hat Hacker ist jemand, der Netzwerke und Systeme testet, um deren Leistung zu untersuchen und Anfälligkeiten auf Angriffe herauszufinden. Gewöhnlich cracken White Hat Hackers ihre eigenen Systeme oder die Systeme von Kunden, von denen sie zum Zwecke der Sicherheitsprüfung beauftragt wurden. Akademische Forscher und professionelle Sicherheitsberater sind zwei Beispiele für White Hat Hackers.
Ein Black Hat Hacker ist synonym mit einem Cracker. Im allgemeinen konzentrieren sich Cracker weniger auf das Programmieren und die akademische Seite des Einbruchs in Systeme. Sie verlassen sich häufig auf verfügbare Cracking-Programme und nutzen bekannte Schwachstellen in Systemen zur Aufdeckung empfindlicher Informationen aus, für persönlichen Gewinn oder um Schaden auf dem System oder Netzwerk anzurichten.
Ein Gray Hat Hacker hat andererseits die Fähigkeiten und die Absichten eines White Hat Hackers in den meisten Fällen, nutzt sein Wissen gelegentlich jedoch auch für weniger edle Absichten. Ein Gray Hat Hacker kann also als jemand bezeichnet werden, der grundsätzlich die guten Absichten eines White Hat Hackers hat, jedoch manchmal aus Eigennutz zum Black Hat Hacker wird.
Sogenannte "Gray Hat Hacker" halten sich häufig an eine andere Form von Hacker-Ethik, nach der es akzeptabel ist, in Systeme einzubrechen, solange der Hacker nicht Diebstahl begeht oder den Datenschutz verletzt. Man kann sich jedoch darüber streiten, ob das eigentliche Einbrechen in Systeme nicht bereits unethisch ist.
Unabhängig von der Absicht des Eindringlings ist es wichtig, die Schwachstellen zu kennen, die ein Cracker am ehesten versucht auszunutzen. Das restliche Kapitel behandelt diese Thematik.

45.3.2. Bedrohungen der Netzwerksicherheit

Unzureichende Methoden bei der Konfiguration einiger Netzwerkaspekte kann das Risiko eines Angriffs erheblich erhöhen.

45.3.2.1. Unsichere Architekturen

Ein fehlerhaft konfiguriertes Netzwerk ist der erste Zugangspunkt für unbefugte Benutzer. Wenn Sie ein trust-based, offenes, lokales Netzwerk ungeschützt dem in höchstem Grad unsicheren Internet aussetzen, ist das so, als wenn Sie Ihre Haustür in einem unsicheren Vorort offenlassen — für eine Weile mag nichts passieren, aber eventuell wird sich jemand die Gelegenheit zu Nutze machen.
45.3.2.1.1. Broadcast-Netzwerke
Systemadministratoren vernachlässigen oftmals die Bedeutung vernetzter Hardware in ihren Sicherheitssystemen. Einfache Hardware wie z.B. Hubs und Router arbeiten nach dem Broadcast oder ungeschaltetem Prinzip; d.h. wenn ein Knoten Daten über ein Netzwerk überträgt, sendet die Hub oder der Router die Datenpakete solange, bis der Empfängerknoten die Daten empfangen und verarbeitet hat. Diese Methode ist am anfälligsten für ARP (Address Resolution Protocol) oder MAC (Media Access Control) Spoofing durch außenstehende Angreifer oder unbefugte Benutzer in lokalen Knoten.
45.3.2.1.2. Zentralisierte Server
Eine weitere Netzwerkfalle ist die Verwendung zentralisierter Rechner. Eine beliebte Maßnahme zur Kostensenkung für Firmen ist es, alle Dienste auf einer einzigen, leistungsstarken Maschine zusammenzuführen. Dies ist bequem, da einfacher zu verwalten und es kostet wesentliche weniger als Multiple-Server-Konfigurationen. Ein zentralisierter Server bildet jedoch auch einen Fehlerpunkt im Netzwerk. Wird der zentrale Server beschädigt, kann dadurch das gesamte Netzwerk nutzlos oder gar zur Angriffsfläche für Datenmanipulation oder Diebstahl werden. In diesen Fällen wird ein zentraler Server zur offenen Tür und erlaubt Zugang zum gesamten Netzwerk.

45.3.3. Bedrohungen der Serversicherheit

Server security is as important as network security because servers often hold a great deal of an organization's vital information. If a server is compromised, all of its contents may become available for the cracker to steal or manipulate at will. The following sections detail some of the main issues.

45.3.3.1. Unbenutzte Dienste und offene Ports

Eine Komplettinstallation von Red Hat Enterprise Linux enthält über 1000 Applikationen und Bibliotheken. Die meisten Systemadministratoren wählen jedoch nicht jedes einzelne Paket der Distribution zur Installation aus, sondern bevorzugen eine Basis-Installation von Paketen inklusive mehrerer Serverapplikationen.
A common occurrence among system administrators is to install the operating system without paying attention to what programs are actually being installed. This can be problematic because unneeded services may be installed, configured with the default settings, and possibly turned on. This can cause unwanted services, such as Telnet, DHCP, or DNS, to run on a server or workstation without the administrator realizing it, which in turn can cause unwanted traffic to the server, or even, a potential pathway into the system for crackers. Refer To Abschnitt 46.2, „Server-Sicherheit“ for information on closing ports and disabling unused services.

45.3.3.2. Dienste ohne Patches

Die meisten Serverapplikationen, die in einer Standard-Installation enthalten sind, sind solide, gründlich getestete Softwareapplikationen. Dadurch, dass diese viele Jahre in Produktionsumgebungen eingesetzt wurden, ist ihr Code ausgereift und viele Fehler sind gefunden und behoben worden.
So etwas wie perfekte Software gibt es jedoch nicht, es ist immer Platz für weitere Verbesserungen. Desweiteren ist neuere Software nicht immer so durchgängig getestet wie man erwarten würde, z.B. dadurch, dass diese erst seit kurzem in der Produktionsumgebung eingesetzt wird oder weil diese noch nicht ganz so beliebt ist wie andere Server-Software.
Entwickler und Systemadministratoren finden häufig ausbeutbare Fehler in Serverapplikationen und veröffentlichen diese Informationen auf Bug-Tracking und sicherheitsbezogenen Webseiten wie die Bugtraq-Mailingliste (http://www.securityfocus.com) oder die Webseite des Computer Emergency Response Team (CERT) (http://www.cert.org). Auch wenn diese Mechanismen eine effektive Methode zur Warnung der Community vor Sicherheitsproblemen darstellt, liegt es letztendlich an den Systemadministratoren, ihre Systeme sofort mit einem Patch zu versehen. Dies ist insbesondere wichtig, da Cracker auch Zugang zu den gleichen Tracking-Dienste haben und diese Informationen ausnutzen, um nicht gepatchte Systeme zu cracken. Eine gute Systemadministration verlangt Wachsamkeit, andauerndes Fehlertracking und vernünftige Systemwartung für eine sichere Rechenumgebung.
Refer to Abschnitt 45.5, „Sicherheits-Updates“ for more information about keeping a system up-to-date.

45.3.3.3. Unaufmerksame Administration

Administrators who fail to patch their systems are one of the greatest threats to server security. According to the System Administration Network and Security Institute (SANS), the primary cause of computer security vulnerability is to "assign untrained people to maintain security and provide neither the training nor the time to make it possible to do the job."[13] This applies as much to inexperienced administrators as it does to overconfident or amotivated administrators.
Einige Administratoren vergessen ihre Server oder Workstations zu patchen, während andere vergessen, Log-Mitteilungen vom Systemkernel oder Netzwerkverkehr zu beobachten. Ein weiterer häufiger Fehler ist, standardmäßige Standardpasswörter oder Schlüssel für Dienste so zu belassen, wie sie sind. So haben zum Beispiel einige Datenbanken standardmäßige Administrationspasswörter, weil die Datenbankentwickler annehmen, dass der Systemadministrator diese sofort nach der Installation ändert. Vergisst nun ein Systemadministrator, diese Passwörter zu ändern, können sogar unerfahrene Cracker mit einem weitverbreiteten Standard-Passwort auf administrative Privilegien dieser Datenbank zugreifen. Dies sind nur einige Beispiele dafür, wie unaufmerksame Administration zu unsicheren Servern führen kann.

45.3.3.4. Von Natur aus unsichere Dienste

Auch das wachsamste Unternehmen kann Opfer von Schwachstellen werden, wenn die gewählten Netzwerkdienste von Natur aus unsicher sind. Es werden zum Beispiel viele Dienste unter der Annahme entwickelt, dass diese über sichere Netzwerke verwendet werden; diese Annahme schlägt jedoch fehl, sobald diese Dienste über das Internet verfügbar gemacht werden — welches in sich unsicher und vertrauensunwürdig ist.
Eine Art von unsicheren Netzwerkdienste ist die, die Benutzernamen und Passwörter für die Authentifizierung benötigt, diese Informationen bei der Übertragung über das Netzwerk jedoch nicht verschlüsselt. Telnet und FTP sind solche Dienste. Paket-Sniffing Software, die den Verkehr zwischen entfernten Benutzern und einem solchen Server überwacht, kann dann einfach die Benutzernamen und Passwörter stehlen.
Inherently, such services can also more easily fall prey to what the security industry terms the man-in-the-middle attack. In this type of attack, a cracker redirects network traffic by tricking a cracked name server on the network to point to his machine instead of the intended server. Once someone opens a remote session to the server, the attacker's machine acts as an invisible conduit, sitting quietly between the remote service and the unsuspecting user capturing information. In this way a cracker can gather administrative passwords and raw data without the server or the user realizing it.
Another category of insecure services include network file systems and information services such as NFS or NIS, which are developed explicitly for LAN usage but are, unfortunately, extended to include WANs (for remote users). NFS does not, by default, have any authentication or security mechanisms configured to prevent a cracker from mounting the NFS share and accessing anything contained therein. NIS, as well, has vital information that must be known by every computer on a network, including passwords and file permissions, within a plain text ASCII or DBM (ASCII-derived) database. A cracker who gains access to this database can then access every user account on a network, including the administrator's account.
By default, Red Hat Enterprise Linux is released with all such services turned off. However, since administrators often find themselves forced to use these services, careful configuration is critical. Refer to Abschnitt 46.2, „Server-Sicherheit“ for more information about setting up services in a safe manner.

45.3.4. Bedrohungen der Workstation- und Heim-PC-Sicherheit

Workstations and home PCs may not be as prone to attack as networks or servers, but since they often contain sensitive data, such as credit card information, they are targeted by system crackers. Workstations can also be co-opted without the user's knowledge and used by attackers as "slave" machines in coordinated attacks. For these reasons, knowing the vulnerabilities of a workstation can save users the headache of reinstalling the operating system, or worse, recovering from data theft.

45.3.4.1. Ungeeignete Passwörter

Bad passwords are one of the easiest ways for an attacker to gain access to a system. For more on how to avoid common pitfalls when creating a password, refer to Abschnitt 46.1.3, „Passwortsicherheit“.

45.3.4.2. Anfällige Client-Applikationen

Although an administrator may have a fully secure and patched server, that does not mean remote users are secure when accessing it. For instance, if the server offers Telnet or FTP services over a public network, an attacker can capture the plain text usernames and passwords as they pass over the network, and then use the account information to access the remote user's workstation.
Selbst wenn sichere Protokolle wie z.B. SSH verwendet werden, kann ein Remote-Benutzer anfällig für bestimmte Attacken sein, wenn ihre Client-Applikationen nicht auf dem neuesten Stand sind. So kann zum Beispiel ein v.1 SSH Client anfällig sein für eine X-Forwarding Attacke eines böswilligen SSH-Servers. Sobald dieser mit dem Server verbunden ist, kann der Angreifer leise sämtliche Tastatureingaben und Mausklicks des Benutzers im Netzwerk registrieren. Dieses Problem wurde im v.2 SSH-Protokoll behoben, es liegt jedoch am Benutzer, festzustellen, welche Applikationen solche Anfälligkeiten aufweisen und diese wenn nötig auf den neuesten Stand zu bringen.
Abschnitt 46.1, „Workstation-Sicherheit“ discusses in more detail what steps administrators and home users should take to limit the vulnerability of computer workstations.

45.4. Häufige Schwachstellen und Attacken

Tabelle 45.1, „Häufige Sicherheitslöcher“ details some of the most common exploits and entry points used by intruders to access organizational network resources. Key to these common exploits are the explanations of how they are performed and how administrators can properly safeguard their network against such attacks.
Tabelle 45.1. Häufige Sicherheitslöcher
Sicherheitsloch Beschreibung Hinweise
Null- oder Standardpasswort Das Leerlassen von administrativen Passwörtern oder das Verwenden von Standardpasswörtern, die mit einer Applikation mitgeliefert werden. Dies betrifft häufig Hardware wie Routern und Firewalls, jedoch können auch einige Dienste, die unter Linux laufen, standardmäßige Administratoren-Passwörter enthalten (Red Hat Enterprise Linux 5 wird jedoch nicht mit diesen ausgeliefert).
Häufig verbunden mit Netzwerk-Hardware wie Routern, Firewalls, VPNs und Network-Attached-Storage-Geräte (NAS).
Gebräuchlich in vielen älteren Betriebssystemen, besonders Betriebssysteme, die Dienste kombinieren (wie zum Beispiel UNIX und Windows).
Administratoren kreieren gelegentlich privilegierte Benutzerkonten unter Zeitdruck und lassen Passwörter leer, was einen idealen Einstiegspunkt für böswillige Benutzer, die dieses Benutzerkonto entdecken, bietet.
Standard Shared Keys Sichere Dienste werden manchmal mit standardmäßigen Sicherheitsschlüsseln für Entwicklung oder zu Evaluationszwecken ausgeliefert. Werden diese Schlüssel nicht geändert und auf einer Produktionsumgebung im Internet platziert, kann jeder Benutzer mit dem gleichen Standardschlüssel auf diese Ressourcen mit gemeinsam genutzten Schlüsslen und damit auf alle darin empfindlichen Informationen zugreifen.
Sehr verbreitet in Wireless Access Points und vorkonfigurierten sicheren Servergeräten.
IP-Spoofing A remote machine acts as a node on your local network, finds vulnerabilities with your servers, and installs a backdoor program or Trojan horse to gain control over your network resources.
Spoofing ist relativ schwierig, da es vom Angreifer erfordert, dass er TCP/IP SYN-ACK-Nummern voraussagt, um eine Verbindung zum Zielsystem zu koordinieren. Es sind jedoch verschiedene Tools erhältlich, die dem Cracker bei diesem Angriff helfen können.
Es ist abhängig von den auf dem System laufenden Dienste (wie rsh, telnet, FTP und andere), die Source-basierte Authentifizierungstechniken verwenden, die im Vergleich zu PKI oder anderen Formen der Verschlüsselung wie ssh oder SSL/TLS nicht empfohlen werden.
Lauschen Das Sammeln von Daten zwischen zwei aktiven Knoten auf einem Netzwerk durch das Abhören der Verbindung dieser beiden Knoten.
Diese Art von Attacke funktioniert meistens bei Protokollen, bei denen Text unverschlüsselt übertragen wird, wie zum Beispiel Telnet-, FTP- und HTTP-Übertragungen.
Angreifer von außerhalb müssen Zugriff auf ein kompromittiertes System in einem LAN haben, um einen derartigen Angriff durchzuführen; üblicherweise hat der Cracker einen aktiven Angriff (wie zum Beispiel IP-Spoofing oder Man-In-The-Middle) benutzt, um ein System im LAN zu kompromittieren.
Präventivmaßnahmen umfassen Dienste mit verschlüsseltem Schlüsselaustausch, einmaligen Passwörtern oder verschlüsselter Authentifizierung, um das Erschnüffeln von Passwörtern zu verhindern; hohe Verschlüsselung während der Übertragung ist ebenfalls ratsam.
Schwachstellen von Diensten Ein Angreifer findet einen Fehler oder ein Schlupfloch in einem Dienst, der über das Internet läuft. Durch diese Anfälligkeit kann der Angreifer das gesamte System und alle Daten darauf sowie weitere Systeme im Netzwerk kompromittieren.
HTTP-based services such as CGI are vulnerable to remote command execution and even interactive shell access. Even if the HTTP service runs as a non-privileged user such as "nobody", information such as configuration files and network maps can be read, or the attacker can start a denial of service attack which drains system resources or renders it unavailable to other users.
Services sometimes can have vulnerabilities that go unnoticed during development and testing; these vulnerabilities (such as buffer overflows, where attackers crash a service using arbitrary values that fill the memory buffer of an application, giving the attacker an interactive command prompt from which they may execute arbitrary commands) can give complete administrative control to an attacker.
Administratoren sollten sicherstellen, dass Dienste nicht als root-Benutzer laufen und sollten aufmerksam nach Patches und Fehlerupdates für Anwendungen bei Herstellern oder Sicherheitsorganisationen wie CERT und CVE Ausschau halten.
Schwachstellen von Applikationen Attackers find faults in desktop and workstation applications (such as e-mail clients) and execute arbitrary code, implant Trojan horses for future compromise, or crash systems. Further exploitation can occur if the compromised workstation has administrative privileges on the rest of the network.
Workstations und Desktops sind anfälliger für eine Ausbeutung als Server, die von Administratoren verwaltet werden, da die Benutzer keine Erfahrung oder nicht das Wissen zur Verhinderung oder Aufdeckung von Einbrüchen haben. Es ist zwingend notwendig, Einzelpersonen über die Risiken bei der Installation unberechtigter Software oder beim Öffnen vom E-Mail unbekannter Herkunft zu informieren.
Es können Schutzeinrichtungen installiert werden, so dass z.B. E-Mail-Software nicht automatisch Anhänge öffnen oder ausführen kann. Zusätzlich dazu kann das automatische Aktualisieren der Workstation-Software über das Red Hat Network oder andere System-Management-Services die Last einer vielschichtigen Sicherheitsimplementierung ausgleichen.
Denial-of-Service (DoS) Attacken Attacker or group of attackers coordinate against an organization's network or server resources by sending unauthorized packets to the target host (either server, router, or workstation). This forces the resource to become unavailable to legitimate users.
Der DoS-Fall in den US, über den am meisten berichtet wurde, trat im Jahr 2000 auf. Eine Reihe hoch gehandelter kommerzieller und Regierungs-Web-Sites wurden durch eine koordinierte Ping-Flood Attacke, bei der mehrere, als Zombies agierende, kompromittierte Systeme mit schneller Bandbreitenverbindung benutzt wurden, vorübergehend außer Gefecht gesetzt, bzw. Broadcastknoten weitergeleitet.
Quellpakete werden gewöhnlich gefälscht (und auch versendet), was die Suche zum Beispiel nach dem wahren Ursprung des Angriffs erschwert.
Fortschritte bei Ingress Filtern (IETF rfc2267) durch die Verwendung von iptables und der Netzwerk IDSes wie zum Beispiel snort unterstützen Administratoren beim Aufspüren und Verhindern von verteilten DoS-Attacken.

45.5. Sicherheits-Updates

Wenn Sicherheitslücken in einer Software entdeckt werden, muss die Software aktualisiert werden, um mögliche Sicherheitsrisiken zu minimieren. Ist das Paket Teil einer Red Hat Enterprise Linux Distribution, die derzeit unterstützt wird, liegt es im Interesse von Red Hat Inc., so schnell wie möglich aktualisierte Pakete herauszugeben, die Sicherheitslöcher stopfen. Häufig wird die Mitteilung eines Sicherheitsrisikos von einem Patch begleitet (oder Code, der den Fehler behebt). Dieser Patch wird dann auf das Red Hat Enterprise Linux Paket angewandt, von unserem Qualitätssicherungsteam getestet und als Errata-Update herausgegeben. Enthält die Ankündigung jedoch keinen Patch, arbeitet ein Red Hat Entwickler mit dem Herausgeber des Pakets zusammen, um das Problem zu lösen. Wurde das Problem behoben, wird das Paket getestet und als Errata-Update herausgegeben.
Wenn Sie ein Paket verwenden, für das ein Sicherheits-Errata-Report herausgegeben wurde, wird strengstens empfohlen, dass Sie Ihre Sicherheits-Errata-Pakete sobald wie möglich aktualisieren, um die Zeit, die Ihr System angreifbar ist, zu minimieren..

45.5.1. Pakete aktualisieren

Wenn Sie Pakete auf Ihrem System aktualisieren, ist es wichtig, das Update von einer vertrauenswürdigen Quelle herunterzuladen. Ein Angreifer kann leicht eine Version eines Paketes nachbauen (mit der gleichen Versionsnummer des Pakets, das theoretisch das Problem lösen sollte), jedoch mit einem anderen Sicherheitsrisiko im Paket, und dieses im Internet veröffentlichen. Falls dies geschieht, kann dieses Risiko durch Sicherheitsmaßnahmen wie das Abgleichen der Pakete gegen die ursprünglichen RPMs nicht aufgedeckt werden. Es ist daher wichtig, dass Sie RPMs nur von Quellen wie Red Hat Inc. herunterladen und die Signatur des Pakets prüfen, um dessen Integrität sicherzustellen.
Red Hat bietet zwei Möglichkeiten, um Informationen über Sicherheitsupdates zu erhalten:
  1. Gelistet und erhältlich zum Download von Red Hat Network
  2. Gelistet und ungelinkt auf der Red Hat Errata-Webseite

Hinweis

Mit der Red Hat Enterprise Produktlinie beginnend, können aktualisierte Pakete nur von Red Hat Network heruntergeladen werden. Obwohl die Red Hat Errata Website aktualisierte Informationen enthält, umfasst sie nicht die eigentlichen Download-Pakete.

45.5.1.1. Using Automatic Updates with RHN Classic

Warning: Deprecate Feature

Automatic system updates are only available using RHN Classic, which basis subscription consumption on access to content repository channels. RHN Classic is available as a convenience for customer environments with legacy systems which have not updated to Certificate-Based Red Hat Network.
The update and content stream is different for Certificate-Based Red Hat Network, so automatic updates are not used.
The new Certificate-Based Red Hat Network and the differences between Certificate-Based Red Hat Network and RHN Classic are described in Kapitel 14, Product Subscriptions and Entitlements.
RHN Classic allows the majority of the update process to be automated. It determines which RPM packages are necessary for the system, downloads them from a secure repository, verifies the RPM signature to make sure they have not been tampered with, and updates them. The package install can occur immediately or can be scheduled during a certain time period.
RHN Classic requires a system profile for each machine, which contains hardware and software information about the system. This information is kept confidential and is not given to anyone else. It is only used to determine which errata updates are applicable to each system, and, without it, RHN Classic can not determine whether a given system needs updates. When a security errata (or any type of errata) is released, RHN Classic sends an email with a description of the errata as well as a list of systems which are affected. To apply the update, use the Red Hat Update Agent or schedule the package to be updated through the RHN Classic Subscription Management area of the Customer Portal.

Wichtig

Before installing any security errata, be sure to read any special instructions contained in the errata report and execute them accordingly. Refer to Abschnitt 45.5.1.5, „Anwenden der Änderungen“ for general instructions about applying the changes made by an errata update.

45.5.1.2. Verwenden der Red Hat Errata-Webseite

When security errata reports are released, they are published on the Red Hat Errata website available at http://www.redhat.com/security/. From this page, select the product and version for your system, and then select security at the top of the page to display only Red Hat Enterprise Linux Security Advisories. If the synopsis of one of the advisories describes a package used on your system, click on the synopsis for more details.
Die Detail-Seite beschreibt das Sicherheitsproblem und gibt alle nötigen Anweisungen, die zusätzlich zur Aktualisierung des Pakets befolgt werden müssen, um das Sicherheitsloch zu stopfen.
To download the updated package(s), click on the link to login to Red Hat Network, click the package name(s) and save to the hard drive. It is highly recommended that you create a new directory, such as /tmp/updates, and save all the downloaded packages to it.

45.5.1.3. Signierte Pakete verifizieren

Alle Red Hat Enterprise Linux Pakete sind signiert mit dem Red Hat Inc. GPG-Schlüssel. GPG steht für GNU Privacy Guard oder GnuPG, einem freien Softwarepaket, welches dazu verwendet wird, die Authentizität von Dateien zu gewährleisten. Zum Beispiel: Ein Private Key (Secret Key) von Red Hat hält das Paket verschlossen, wohingegen der Public Key das Paket verifiziert und freischaltet. Falls der von Red Hat vertriebene Public Key während der RPM-Verifizierung nicht mit dem Private Key übereinstimmt, kann dies bedeuten, dass das Paket in irgendeiner Form verändert wurde und daher nicht vertrauenswürdig ist.
Die RPM-Utility in Red Hat Enterprise Linux versucht automatisch, die GPG Signatur eines RPM-Paketes vor der Installation zu verifizieren. Wurde der Red Hat GPG-Schlüssel nicht installiert, sollten Sie diesen von einer sicheren, statischen Quelle wie einer Red Hat Enterprise Linux Installations-CD-ROM installieren.
Assuming the CD-ROM is mounted in /mnt/cdrom, use the following command to import it into the keyring (a database of trusted keys on the system):
rpm --import /mnt/cdrom/RPM-GPG-KEY-redhat-release
Um eine Liste aller installierten Schlüssel für die RPM-Verifikation anzuzeigen, führen Sie folgenden Befehl aus:
rpm -qa gpg-pubkey*
Für den Red Hat Schlüssel enthält die Ausgabe folgendes:
gpg-pubkey-37017186-45761324
To display details about a specific key, use the rpm -qi command followed by the output from the previous command, as in this example:
rpm -qi gpg-pubkey-37017186-45761324
Es ist von größter Wichtigkeit, dass Sie die Signatur der RPM-Dateien verifizieren, bevor Sie diese installieren. Dieser Schritt gewährleistet, dass die RPMs der Red Hat Inc. Version der Pakete nicht verändert wurden. Um alle heruntergeladenen Pakete gleichzeitig zu prüfen, geben Sie folgenden Befehl ein:
rpm -K /tmp/updates/*.rpm
For each package, if the GPG key verifies successfully, the command returns gpg OK. If it doesn't, make sure you are using the correct Red Hat public key, as well as verifying the source of the content. Packages that do not pass GPG verifications should not be installed, as they may have been altered by a third party.
Nachdem der GPG-Schlüssel verifiziert und alle Pakete im Zusammenhang mit dem Errata-Bericht heruntergeladen wurden, können Sie diese als Root angemeldet in einem Shell-Prompt installieren.

45.5.1.4. Signierte Pakete installieren

Die Installation für die meisten Pakete kann sicher durch den folgenden Befehl erfolgen (Kernel-Pakete ausgenommen):
rpm -Uvh /tmp/updates/*.rpm
Für Kernel-Pakete sollten Sie den folgenden Befehl verwenden:
rpm -ivh /tmp/updates/<kernel-package>
Replace <kernel-package> in the previous example with the name of the kernel RPM.
Nachdem die Maschine mithilfe des neuen Kernels sicher neu gestartet ist, kann der alte Kernel mit dem folgenden Befehl entfernt werden:
rpm -e <old-kernel-package>
Replace <old-kernel-package> in the previous example with the name of the older kernel RPM.

Hinweis

Es ist keine Voraussetzung, dass der alte Kernel entfernt wird. Der standardmäßige Boot Loader, GRUB, erlaubt die Installation mehrerer Kernel, welche dann von einem Menü während des Bootvorganges ausgewählt werden können.

Wichtig

Before installing any security errata, be sure to read any special instructions contained in the errata report and execute them accordingly. Refer to Abschnitt 45.5.1.5, „Anwenden der Änderungen“ for general instructions about applying the changes made by an errata update.

45.5.1.5. Anwenden der Änderungen

Nachdem Sie die Sicherheits-Errata über das Red Hat Network oder die Red Hat Errata-Webseite heruntergeladen und installiert haben, ist es wichtig, die ältere Software nicht mehr einzusetzen und die neue Software zu verwenden. Die Vorgehensweise hängt von der Art der Software ab, die aktualisiert wurde. Die folgende Liste stellt die allgemeinen Kategorien der Software dar und gibt Anweisungen für das Verwenden der aktualisierten Versionen nach einem Paket-Upgrade.

Hinweis

Im allgemeinen ist ein Neustart der beste Weg, sicherzustellen, dass die aktuellste Version eines Softwarepakets verwendet wird. Diese Option ist jedoch nicht immer für den Systemadministrator verfügbar.
Applikaitonen
User-Space Applikationen sind alle Programme, die durch einen Systembenutzer eingeführt werden können. Gewöhnlicherweise werden diese Applikationen nur verwendet, wenn ein Benutzer, ein Skript oder ein automatisierter Task diese startet und nicht lange ausführt.
Wird solch eine Applikation aktualisiert, stoppen Sie alle Instanzen dieser Applikation auf dem System und starten Sie das Programm neu, um die aktualisierte Version zu verwenden.
Kernel
Der Kernel ist die Kern-Softwarekomponente für das Red Hat Enterprise Linux Betriebssystem. Er verwaltet den Zugang zum Speicher, zum Prozessor und zu Peripheriegeräten, sowie plant alle Aufgaben.
Durch dessen zentrale Rolle kann der Kernel nur durch ein Herunterfahren des Computers neu gestartet werden. Daher kann eine aktualisierte Version des Kernels nicht verwendet werden, bis das System neu gestartet wird.
Shared-Bibliotheken
Shared libraries are units of code, such as glibc, which are used by a number of applications and services. Applications utilizing a shared library typically load the shared code when the application is initialized, so any applications using the updated library must be halted and relaunched.
To determine which running applications link against a particular library, use the lsof command as in the following example:
lsof /usr/lib/libwrap.so*
This command returns a list of all the running programs which use TCP wrappers for host access control. Therefore, any program listed must be halted and relaunched if the tcp_wrappers package is updated.
SysV Services
SysV services are persistent server programs launched during the boot process. Examples of SysV services include sshd, vsftpd, and xinetd.
Because these programs usually persist in memory as long as the machine is booted, each updated SysV service must be halted and relaunched after the package is upgraded. This can be done using the Services Configuration Tool or by logging into a root shell prompt and issuing the /sbin/service command as in the following example:
service <service-name> restart
In the previous example, replace <service-name> with the name of the service, such as sshd.
Refer to Kapitel 16, Netzwerkkonfiguration for more information on the Services Configuration Tool.
xinetd Services
Services controlled by the xinetd super service only run when a there is an active connection. Examples of services controlled by xinetd include Telnet, IMAP, and POP3.
Because new instances of these services are launched by xinetd each time a new request is received, connections that occur after an upgrade are handled by the updated software. However, if there are active connections at the time the xinetd controlled service is upgraded, they are serviced by the older version of the software.
To kill off older instances of a particular xinetd controlled service, upgrade the package for the service then halt all processes currently running. To determine if the process is running, use the ps command and then use the kill or killall command to halt current instances of the service.
For example, if security errata imap packages are released, upgrade the packages, then type the following command as root into a shell prompt:
ps -aux | grep imap
Dieser Befehl gibt alle aktiven IMAP-Sitzungen aus. Individuelle Sitzungen können dann durch den folgenden Befehl beendet werden:
kill <PID>
Falls das Beenden der Session fehlschlägt, verwenden Sie stattdessen folgenden Befehl:
kill -9 <PID>
In the previous examples, replace <PID> with the process identification number (found in the second column of the ps command) for an IMAP session.
Um alle aktiven IMAP-Sitzungen zu beenden, geben Sie den folgenden Befehl ein:
killall imapd

Kapitel 46. Sichern Ihres Netzwerkes

46.1. Workstation-Sicherheit
46.1.1. Auswertung der Workstation-Sicherheit
46.1.2. BIOS und Bootloader Sicherheit
46.1.3. Passwortsicherheit
46.1.4. Administrative Kontrollen
46.1.5. Verfügbare Netzwerkdienste
46.1.6. Persönliche Firewalls
46.1.7. Kommunikationstools mit erhöhter Sicherheit
46.2. Server-Sicherheit
46.2.1. Sichern von Diensten mit TCP-Wrappern und xinetd
46.2.2. Portmap sichern
46.2.3. Sichern von NIS
46.2.4. Sicherung von NFS
46.2.5. Sicherung des Apache HTTP-Server
46.2.6. Sicherung von FTP
46.2.7. Sicherung von Sendmail
46.2.8. Bestätigen, welche Ports auf Verbindungen abhören
46.3. Single Sign-on (SSO)
46.3.1. Introduction
46.3.2. Getting Started with your new Smart Card
46.3.3. How Smart Card Enrollment Works
46.3.4. How Smart Card Login Works
46.3.5. Configuring Firefox to use Kerberos for SSO
46.4. Pluggable Authentication Modules (PAM)
46.4.1. Vorteile von PAM
46.4.2. PAM-Konfigurationsdateien
46.4.3. Format der PAM Konfigurationsdatei
46.4.4. Beispiele für PAM-Konfigurationsdateien
46.4.5. Module erstellen
46.4.6. PAM und Administrative-Credential-Caching
46.4.7. PAM und Besitzrechte von Geräten
46.4.8. Zusätzliche Ressourcen
46.5. TCP-Wrapper und xinetd
46.5.1. TCP Wrappers
46.5.2. TCP-Wrapper Konfigurationsdateien
46.5.3. xinetd
46.5.4. xinetd-Konfigurationsdateien
46.5.5. Zusätzliche Ressourcen
46.6. Kerberos
46.6.1. Was ist Kerberos?
46.6.2. Kerberos-Terminologie
46.6.3. Funktionsweise von Kerberos
46.6.4. Kerberos und PAM
46.6.5. Konfigurieren eines Kerberos 5-Servers
46.6.6. Konfigurieren eines Kerberos 5-Clients
46.6.7. Domain-to-Realm Mapping
46.6.8. Setting Up Secondary KDCs
46.6.9. Setting Up Cross Realm Authentication
46.6.10. Zusätzliche Ressourcen
46.7. Virtuelle Private Netzwerke (VPNs)
46.7.1. Wie funktioniert ein VPN?
46.7.2. VPNs und Red Hat Enterprise Linux
46.7.3. IPsec
46.7.4. Eine IPsec-Verbindung erstellen
46.7.5. Installation von IPsec
46.7.6. Konfiguration von IPsec Host-zu-Host
46.7.7. IPsec Netzwerk-zu-Netzwerk Konfiguration
46.7.8. Starten und Stoppen einer IPsec-Verbindung
46.8. Firewalls
46.8.1. Netfilter and IPTables
46.8.2. Basic Firewall Configuration
46.8.3. Using IPTables
46.8.4. Common IPTables Filtering
46.8.5. FORWARD and NAT Rules
46.8.6. Malicious Software and Spoofed IP Addresses
46.8.7. IPTables and Connection Tracking
46.8.8. IPv6
46.8.9. Zusätzliche Informationsquellen
46.9. IPTables
46.9.1. Paket-Filterung
46.9.2. Unterschiede zwischen IPTables und IPChains
46.9.3. Befehlszeilenoptionen für IPTables
46.9.4. IPTables-Regeln speichern
46.9.5. IPTables Kontrollskripte
46.9.6. IPTables und IPv6
46.9.7. Zusätzliche Informationsquellen

46.1. Workstation-Sicherheit

Die Sicherung einer Linux-Umgebung beginnt mit der Workstation. Egal ob Sie Ihren persönlichen Rechner oder ein Firmensystem sichern, eine vernünftige Sicherheitsrichtlinie beginnt mit dem einzelnen Computer. Im Endeffekt ist ein Computernetzwerk nur so sicher wie das schwächste Mitglied.

46.1.1. Auswertung der Workstation-Sicherheit

Wenn Sie die Sicherheit einer Red Hat Enterprise Linux Workstation auswerten, sollten Sie folgendes beachten:
  • BIOS und Bootloader-Sicherheit — Kann ein unbefugter Benutzer physisch auf den Rechner zugreifen und in den Einzelbenutzer- oder Rettungsmodus booten, ohne dass nach einem Passwort gefragt wird?
  • Passwort-Sicherheit — Wie sicher sind die Passwörter für die Benutzeraccounts auf dem Computer?
  • Administrative Kontrolle — Wer hat alles einen Account auf dem System, und wieviel administrative Kontrolle ist ihnen zugewiesen?
  • Verfügbare Netzwerk-Dienste — Welche Dienste hören das Netzwerk nach Anfragen ab, und sollten diese wirklich alle aktiv sein?
  • Persönliche Firewalls — Welche Art von Firewall, wenn überhaupt, ist nötig?
  • Kommunikationstools mit erweiterter Sicherheit — Welche Tools sollten zur Kommunikation zwischen Workstations verwendet werden, und welche sollten vermieden werden?

46.1.2. BIOS und Bootloader Sicherheit

Passwort-Schutz für das BIOS (oder BIOS-Äquivalent) und den Bootloader kann unbefugte Benutzer, die physikalischen Zugang zu Ihren Systemen haben, davon abhalten, externe Medien zu booten oder sich durch den Einzelbenutzermodus als root anzumelden. Die Sicherheitsmaßnahmen, die man durchführen sollte, um vor solchen Attacken geschützt zu sein, hängen zum einen von den Informationen ab, die auf der Workstation gespeichert sind und zum anderen vom Aufstellungsort des Rechners.
For example, if a machine is used in a trade show and contains no sensitive information, then it may not be critical to prevent such attacks. However, if an employee's laptop with private, unencrypted SSH keys for the corporate network is left unattended at that same trade show, it could lead to a major security breach with ramifications for the entire company.
Wenn sich die Workstation andererseits an einem Ort befindet, zu dem nur befugte oder vertrauenswürdige Personen Zugang haben, ist das Sichern des BIOS oder des Bootloaders nicht unbedingt von Nöten.

46.1.2.1. BIOS-Passwörter

Die folgenden sind die zwei Hauptgründe für den Schutz des BIOS eines Computers durch Passwörter [14]:
  1. Änderungen an den BIOS-Einstellungen verhindern — Hat ein Eindringling Zugang zum BIOS, kann dieser den Bootvorgang von einer Diskette oder einer CD-ROM festlegen. Dies ermöglicht dann in den Rettungsmodus oder Einzelbenutzermodus zu gelangen und von hier aus schädliche Programme in das System zu pflanzen oder empfindliche Daten zu kopieren.
  2. System-Boot verhindern — Einige BIOS erlauben Ihnen, den Bootvorgang selbst mit einem Passwort zu schützen. Ist dies aktiviert, muss ein Passwort eingegeben werden, bevor das BIOS den Bootloader startet.
Because the methods for setting a BIOS password vary between computer manufacturers, consult the computer's manual for specific instructions.
Sollten Sie das BIOS-Passwort vergessen, kann es oft entweder mit Brücken im Motherboard oder durch das Entfernen der CMOS-Batterie zurückgesetzt werden. Daher ist es sinnvoll, wenn möglich, das Computergehäuse abzuschließen. Bevor Sie jedoch diesen Vorgang versuchen, sollten Sie das Handbuch zu Ihrem Computer oder Motherboard lesen.
46.1.2.1.1. Sicherung von nicht-x86-Plattformen
Andere Plattformen verwenden verschiedene Programme zum Ausführen geringfügiger Aufgaben, die mit denen des BIOS auf einem x86-System äquivalent sind. So verwenden zum Beispiel Intel® Itanium™-basierte Computer die Extensible Firmware Interface (EFI) Shell.
For instructions on password protecting BIOS-like programs on other architectures, refer to the manufacturer's instructions.

46.1.2.2. Bootloader-Passwörter

Hier sind die Hauptgründe, einen Linux-Bootloader mit einem Passwort zu schützen:
  1. Zugang zum Einzelbenutzermodus verhindern — Wenn Eindringlinge in den Einzelbenutzermodus booten können, werden diese automatisch zu root-Benutzern ohne nach dem root-Passwort gefragt zu werden.
  2. Preventing Access to the GRUB Console — If the machine uses GRUB as its boot loader, an attacker can use the GRUB editor interface to change its configuration or to gather information using the cat command.
  3. Zugang zu unsicheren Betriebssystemen verhindern — Haben Sie ein Dual-Boot-System, kann ein Angreifer während des Bootens ein Betriebssystem wie zum Beispiel DOS auswählen, das Zugangskontrollen und Dateiberechtigungen ignoriert.
Red Hat Enterprise Linux ships with the GRUB boot loader on the x86 platform. For a detailed look at GRUB, refer to the Red Hat Installation Guide.
46.1.2.2.1. Passwortschutz für GRUB
You can configure GRUB to address the first two issues listed in Abschnitt 46.1.2.2, „Bootloader-Passwörter“ by adding a password directive to its configuration file. To do this, first choose a strong password, open a shell, log in as root, and then type the following command:
grub-md5-crypt
When prompted, type the GRUB password and press Enter. This returns an MD5 hash of the password.
Next, edit the GRUB configuration file /boot/grub/grub.conf. Open the file and below the timeout line in the main section of the document, add the following line:
password --md5 <password-hash>
Replace <password-hash> with the value returned by /sbin/grub-md5-crypt[15].
The next time the system boots, the GRUB menu prevents access to the editor or command interface without first pressing p followed by the GRUB password.
Unfortunately, this solution does not prevent an attacker from booting into an insecure operating system in a dual-boot environment. For this, a different part of the /boot/grub/grub.conf file must be edited.
Look for the title line of the operating system that you want to secure, and add a line with the lock directive immediately beneath it.
Für ein DOS-System sollte die Zeile ähnlich wie folgt beginnen:
title DOS lock

Achtung

A password line must be present in the main section of the /boot/grub/grub.conf file for this method to work properly. Otherwise, an attacker can access the GRUB editor interface and remove the lock line.
To create a different password for a particular kernel or operating system, add a lock line to the stanza, followed by a password line.
Jeder Abschnitt, den Sie mit einem einzigartigen Passwort schützen möchten, sollte mit Zeilen ähnlich dem folgenden Beispiel beginnen:
title DOS lock password --md5 <password-hash>

46.1.3. Passwortsicherheit

Passwords are the primary method that Red Hat Enterprise Linux uses to verify a user's identity. This is why password security is so important for protection of the user, the workstation, and the network.
Aus Sicherheitsgründen konfiguriert das Installationsprogramm das System so, dass ein Message-Digest Algorithm (MD5) und Shadow-Passwörter verwendet werden. Es wird dringend geraten, diese Einstellungen nicht zu verändern.
Wenn Sie die MD5-Passwörter während der Installation deaktivieren, wird das ältere Data Encryption Standard (DES) Format verwendet. Dieses Format beschränkt Passwörter auf 8 alphanumerische Zeichen (Satzzeichen und andere Sonderzeichen sind nicht erlaubt) und bietet bescheidene 56-bit Verschlüsselung.
If shadow passwords are deselected during installation, all passwords are stored as a one-way hash in the world-readable /etc/passwd file, which makes the system vulnerable to offline password cracking attacks. If an intruder can gain access to the machine as a regular user, they can copy the /etc/passwd file to their own machine and run any number of password cracking programs against it. If there is an insecure password in the file, it is only a matter of time before the password cracker discovers it.
Shadow passwords eliminate this type of attack by storing the password hashes in the file /etc/shadow, which is readable only by the root user.
This forces a potential attacker to attempt password cracking remotely by logging into a network service on the machine, such as SSH or FTP. This sort of brute-force attack is much slower and leaves an obvious trail as hundreds of failed login attempts are written to system files. Of course, if the cracker starts an attack in the middle of the night on a system with weak passwords, the cracker may have gained access before dawn and edited the log files to cover their tracks.
In addition to format and storage considerations is the issue of content. The single most important thing a user can do to protect their account against a password cracking attack is create a strong password.

46.1.3.1. Erstellen sicherer Passwörter

Beim Erstellen von Passwörtern ist es hilfreich, die folgenden Richtlinien zu befolgen:
  • Verwenden Sie nicht nur Wörter oder Zahlen — Sie sollten für ein Passwort nicht nur Wörter oder nur Zahlen verwenden.
    Hier einige Beispiele für schlechte Passwörter:
    • 8675309
    • juan
    • hackme
  • Verwenden Sie keine erkennbaren Wörter — Wörter wie Namen, im Wörterbuch stehende Wörter oder Begriffe aus Fernsehsendungen oder Romanen sollten vermieden werden, auch wenn diese am Ende mit Zahlen versehen werden.
    Hier einige Beispiele für schlechte Passwörter:
    • john1
    • DS-9
    • mentat123
  • Verwenden Sie keine Wörter in anderen Sprachen — Passwort- Knack-Programme prüfen oft gegen Wortlisten, die Wörterbücher in anderen Sprachen umfassen. Das Verlassen auf Fremdsprachen für sichere Passwörter ist häufig wenig hilfreich.
    Hier einige Beispiele für schlechte Passwörter:
    • cheguevara
    • bienvenido1
    • 1dumbKopf
  • Verwenden Sie keine Hacker-Begriffe — Wenn Sie denken, Sie sind auf der sicheren Seite, indem Sie Hacker-Begriffe — auch l337 (LEET) genannt — für Ihre Passwörter verwenden, sollten Sie sich das nocheinmal überlegen. Viele Wortlisten enthalten LEET-Begriffe.
    Hier einige Beispiele für schlechte Passwörter:
    • H4X0R
    • 1337
  • Verwenden Sie keine persönlichen Informationen — Vermeiden Sie die Verwendung von persönlichen Informationen in Ihren Passwörtern. Wenn der Angreifer Sie kennt, kann er Ihr Passwort leichter herausfinden. Nachfolgend ist eine Liste mit zu vermeidenden Informationen beim Erstellen eines Passwortes aufgeführt:
    Hier einige Beispiele für schlechte Passwörter:
    • Ihren Namen
    • Den Namen von Haustieren
    • Die Namen von Familienmitgliedern
    • Geburtstage
    • Ihre Telefonnummer oder Postleitzahl
  • Drehen Sie keine erkennbaren Wörter um — Gute Passwortprogramme drehen gemeinsprachliche Wörter um, das Invertieren von schlechten Passwörtern machen diese also nicht sicherer.
    Hier einige Beispiele für schlechte Passwörter:
    • R0X4H
    • nauj
    • 9-DS
  • Schreiben Sie sich Ihr Passwort nicht auf — Bewahren Sie Ihr Passwort niemals auf Papier auf. Es ist wesentlich sicherer, sich das Passwort zu merken.
  • Verwenden Sie nie das gleiche Passwort für alle Ihre Rechner — Es ist wichtig, dass Sie separate Passwörter für jede Maschine erstellen. So sind nicht alle Maschinen auf einen Schlag betroffen, falls ein System einer Attacke zum Opfer fällt.
Die folgenden Richtlinien unterstützen sie dabei, ein sicheres Passwort zu erstellen:
  • Das Passwort sollte mindestens acht Zeichen enthalten — Je länger das Passwort, desto besser. Wenn Sie MD5-Passwörter verwenden, sollten diese 15 Zeichen oder mehr enthalten. DES-Passwörter sollten die maximale Länge haben (acht Zeichen).
  • Mischen Sie Groß- und Kleinbuchstaben — In Red Hat Enterprise Linuxwerden Groß- und Kleinbuchstaben beachtet, mischen Sie daher Groß- und Kleinschreibung, um die Sicherheit des Passwortes zu erhöhen.
  • Mischen Sie Buchstaben und Zahlen — Das Hinzufügen von Zahlen, insbesondere in der Mitte des Passwortes (nicht nur am Anfang oder Ende), verstärkt die Sicherheit des Passwortes.
  • Include Non-Alphanumeric Characters — Special characters such as &, $, and > can greatly improve the strength of a password (this is not possible if using DES passwords).
  • Wählen Sie ein Passwort, das Sie sich leicht merken können — selbst das beste Passwort hilft Ihnen nicht weiter, wenn Sie sich nicht daran erinnern können. Verwenden Sie daher Akronyme oder andere mnemonische Techniken, um sich das Passwort zu merken.
Durch all diese Regeln erscheint es schwierig, ein Passwort, das all die Kriterien für sichere Passwörter erfüllt und gleichzeitig die Charakteristiken von schlechten Passwörtern vermeidet, festzulegen. Glücklicherweise gibt es einige einfache Schritte, mit deren Hilfe Sie ein leicht zu behaltendes, sicheres Passwort generieren können.
46.1.3.1.1. Methodologie zur Erstellung sicherer Passwörter
Es gibt viele verschiedene Methoden, sichere Passwörter zu erstellen. Eine der beliebtesten umfasst Akronyme. Zum Beispiel:
  • Überlegen Sie sich eine einprägsame Phrase, wie zum Beispiel:
    "over the river and through the woods, to grandmother's house we go."
  • Verwandeln Sie dies als nächstes in ein Akronym (einschließlich der Satzzeichen).
    otrattw,tghwg.
  • Add complexity by substituting numbers and symbols for letters in the acronym. For example, substitute 7 for t and the at symbol (@) for a:
    o7r@77w,7ghwg.
  • Add more complexity by capitalizing at least one letter, such as H.
    o7r@77w,7gHwg.
  • Und bitte verwenden Sie nicht unser Beispielpasswort für Ihre Systeme.
Das Erstellen sicherer Passwörter ist von oberster Wichtigkeit, jedoch genauso wichtig ist das richtige Verwalten der Passwörter, insbesondere für Systemadministratoren in größeren Unternehmen. Im nächsten Abschnitt werden Verfahren für das Erstellen und Verwalten von Benutzerpasswörtern innerhalb eines Unternehmens beschrieben.

46.1.3.2. Erstellen von Benutzerpasswörtern innerhalb eines Unternehmens

Wenn es eine große Anzahl von Benutzern in einem Unternehmen gibt, haben Systemadministratoren zwei grundlegende Optionen, um die Verwendung sicherer Passwörter zu forcieren. Sie können entweder Passwörter für die Benutzer selbst erstellen, oder Benutzer ihre eigenen Passwörter erstellen lassen, und diese dann auf Akzeptanz prüfen.
Das Erstellen von Passwörtern für den Benutzer stellt sicher, dass die Passwörter sicher sind, kann aber schnell zu einer ausufernden Arbeit werden, wenn das Unternehmen wächst. Außerdem erhöht dies das Risiko, dass die Benutzer ihre Passwörter aufschreiben.
Aus diesen Gründen ziehen es Systemadministratoren vor, das die Benutzer ihre eigenen Passwörter erstellen, diese jedoch auf Sicherheit prüfen und in einigen Fällen Benutzer durch Passwort-Aging dazu zu zwingen, ihre Passwörter in periodischen Abständen zu ändern.
46.1.3.2.1. Forcieren sicherer Passwörter
To protect the network from intrusion it is a good idea for system administrators to verify that the passwords used within an organization are strong ones. When users are asked to create or change passwords, they can use the command line application passwd, which is Pluggable Authentication Manager (PAM) aware and therefore checks to see if the password is too short or otherwise easy to crack. This check is performed using the pam_cracklib.so PAM module. Since PAM is customizable, it is possible to add more password integrity checkers, such as pam_passwdqc (available from http://www.openwall.com/passwdqc/) or to write a new module. For a list of available PAM modules, refer to http://www.kernel.org/pub/linux/libs/pam/modules.html. For more information about PAM, refer to Abschnitt 46.4, „Pluggable Authentication Modules (PAM)“.
Es sollte jedoch beachtet werden, dass das Prüfen von Passwörtern zum Erstellungszeitpunkt nicht die effektivste Methode im Vergleich zur Verwendung eines Passwort-Cracking-Programms für alle Passwörter zum Herausfinden unsicherer Passwörter ist.
Es gibt eine Vielzahl an Passwort-Cracking-Programmen, die unter Red Hat Enterprise Linux laufen, jedoch nicht mit dem Betriebssystem ausgeliefert werden. Nachfolgend finden Sie eine kurze Liste der beliebtesten Passwort-Cracking-Programme:

Hinweis

Keines dieser Tools wird mit Red Hat Enterprise Linux ausgeliefert, und auch in keiner Weise von Red Hat, Inc. unterstützt.
  • John The Ripper — A fast and flexible password cracking program. It allows the use of multiple word lists and is capable of brute-force password cracking. It is available online at http://www.openwall.com/john/.
  • Crack — Perhaps the most well known password cracking software, Crack is also very fast, though not as easy to use as John The Ripper. It can be found online at http://www.openwall.com/john/.
  • SlurpieSlurpie is similar to John The Ripper and Crack, but it is designed to run on multiple computers simultaneously, creating a distributed password cracking attack. It can be found along with a number of other distributed attack security evaluation tools online at http://www.ussrback.com/distributed.htm.

Achtung

Bitte holen Sie sich stets eine schriftliche Genehmigung ein, bevor Sie Passwörter innerhalb eines Unternehmens zu knacken versuchen.
46.1.3.2.2. Password Aging
Password aging is another technique used by system administrators to defend against bad passwords within an organization. Password aging means that after a specified period (usually 90 days), the user is prompted to create a new password. The theory behind this is that if a user is forced to change their password periodically, a cracked password is only useful to an intruder for a limited amount of time. The downside to password aging, however, is that users are more likely to write their passwords down.
There are two primary programs used to specify password aging under Red Hat Enterprise Linux: the chage command or the graphical User Manager (system-config-users) application.
The -M option of the chage command specifies the maximum number of days the password is valid. For example, to set a user's password to expire in 90 days, use the following command:
chage -M 90 <username>
In the above command, replace <username> with the name of the user. To disable password expiration, it is traditional to use a value of 99999 after the -M option (this equates to a little over 273 years).
You can also use the chage command in interactive mode to modify multiple password aging and account details. Use the following command to enter interactive mode:
chage <username>
Nachfolgend ist eine interaktive Beispielsession, die diesen Befehl verwendet, aufgeführt:
~]# chage davido
Changing the aging information for davido
Enter the new value, or press ENTER for the default

        Minimum Password Age [0]: 10
        Maximum Password Age [99999]: 90
        Last Password Change (YYYY-MM-DD) [2006-08-18]:
        Password Expiration Warning [7]:
        Password Inactive [-1]:
        Account Expiration Date (YYYY-MM-DD) [1969-12-31]:
~]#
Konsultieren Sie die Handbuch-Seite von chage für mehr Informationen zu verfügbaren Optionen.
You can also use the graphical User Manager application to create password aging policies, as follows. Note: you need Administrator privileges to perform this procedure.
  1. Click the System menu on the Panel, point to Administration and then click Users and Groups to display the User Manager. Alternatively, type the command system-config-users at a shell prompt.
  2. Click the Users tab, and select the required user in the list of users.
  3. Click Properties on the toolbar to display the User Properties dialog box (or choose Properties on the File menu).
  4. Click the Password Info tab, and select the check box for Enable password expiration.
  5. Enter the required value in the Days before change required field, and click OK.
Specifying password aging options
Password Info pane illustration.
Abbildung 46.1. Specifying password aging options

For more information about user and group configuration (including instructions on forcing first time passwords), refer to Kapitel 35, Benutzer und Gruppen.

46.1.4. Administrative Kontrollen

When administering a home machine, the user must perform some tasks as the root user or by acquiring effective root privileges via a setuid program, such as sudo or su. A setuid program is one that operates with the user ID (UID) of the program's owner rather than the user operating the program. Such programs are denoted by an s in the owner section of a long format listing, as in the following example:
-rwsr-xr-x    1 root     root        47324 May  1 08:09 /bin/su

Hinweis

The s may be upper case or lower case. If it appears as upper case, it means that the underlying permission bit has not been set.
For the system administrators of an organization, however, choices must be made as to how much administrative access users within the organization should have to their machine. Through a PAM module called pam_console.so, some activities normally reserved only for the root user, such as rebooting and mounting removable media are allowed for the first user that logs in at the physical console (refer to Abschnitt 46.4, „Pluggable Authentication Modules (PAM)“ for more information about the pam_console.so module.) However, other important system administration tasks, such as altering network settings, configuring a new mouse, or mounting network devices, are not possible without administrative privileges. As a result, system administrators must decide how much access the users on their network should receive.

46.1.4.1. Root-Zugang erlauben

Sind die Benutzer innerhalb eines Unternehmens vertrauenswürdig und kennen sich mit Computern aus, ist das Vergeben von root-Berechtigungen unter Umständen sinnvoll. root-Zugang zu erlauben bedeutet, dass kleinere Probleme wie das Hinzufügen von Geräten oder das Konfigurieren von Netzwerkschnittstellen von den einzelnen Benutzern durchgeführt werden kann und somit Systemadministratoren mehr Zeit für Netzwerksicherheit und andere, wichtige Aufgaben haben.
Auf der anderen Seite kann das Vergeben von root-Rechten zu Einzelbenutzern zu folgenden Problemen führen:
  • Rechner-Fehlkonfigurationen — Benutzer mit root-Rechten, können ihre Computer falsch konfigurieren und benötigen dann Hilfe, oder schlimmer noch, können Sicherheitslöcher öffnen, ohne dies zu merken.
  • Betrieb von unsicheren Diensten — Benutzer mit root-Berechtigungen können unsichere Dienste, wie zum Beispiel FTP oder Telnet auf ihrem Computer laufen lassen, und somit Benutzernamen und Passwörter einem Risiko aussetzen, da diese im Klartext über das Netzwerk verschickt werden.
  • E-Mail-Anhänge als root ansehen — Wenn auch selten, gibt es doch E-Mail-Viren, die Linux betreffen. Dies wird jedoch nur zum Problem, wenn sie als root ausgeführt werden.

46.1.4.2. Root-Zugang sperren

If an administrator is uncomfortable allowing users to log in as root for these or other reasons, the root password should be kept secret, and access to runlevel one or single user mode should be disallowed through boot loader password protection (refer to Abschnitt 46.1.2.2, „Bootloader-Passwörter“ for more information on this topic.)
The following are four different ways that an administrator can further ensure that root logins are disallowed:
Changing the root shell
To prevent users from logging in directly as root, the system administrator can set the root account's shell to /sbin/nologin in the /etc/passwd file.
Tabelle 46.1. Die Root-Shell deaktivieren
Betrifft Betrifft nicht
Prevents access to the root shell and logs any such attempts. The following programs are prevented from accessing the root account:
  • login
  • gdm
  • kdm
  • xdm
  • su
  • ssh
  • scp
  • sftp
Programs that do not require a shell, such as FTP clients, mail clients, and many setuid programs. The following programs are not prevented from accessing the root account:
  • sudo
  • FTP clients
  • Email clients

Disabling root access via any console device (tty)
To further limit access to the root account, administrators can disable root logins at the console by editing the /etc/securetty file. This file lists all devices the root user is allowed to log into. If the file does not exist at all, the root user can log in through any communication device on the system, whether via the console or a raw network interface. This is dangerous, because a user can log in to their machine as root via Telnet, which transmits the password in plain text over the network.
By default, Red Hat Enterprise Linux's /etc/securetty file only allows the root user to log in at the console physically attached to the machine. To prevent the root user from logging in, remove the contents of this file by typing the following command at a shell prompt as root:
echo > /etc/securetty
To enable securetty support in the KDM, GDM, and XDM login managers, add the following line:
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
to the files listed below:
  • /etc/pam.d/gdm
  • /etc/pam.d/gdm-autologin
  • /etc/pam.d/gdm-fingerprint
  • /etc/pam.d/gdm-password
  • /etc/pam.d/gdm-smartcard
  • /etc/pam.d/kdm
  • /etc/pam.d/kdm-np
  • /etc/pam.d/xdm

Achtung

A blank /etc/securetty file does not prevent the root user from logging in remotely using the OpenSSH suite of tools because the console is not opened until after authentication.
Tabelle 46.2. Root-Anmeldungen deaktivieren
Betrifft Betrifft nicht
Verhindert den Zugriff auf den root-Account via Konsole oder Netzwerk. Folgenden Programme ist es untersagt, auf den root-Account zuzugreifen:
  • login
  • gdm
  • kdm
  • xdm
  • Other network services that open a tty
Programs that do not log in as root, but perform administrative tasks through setuid or other mechanisms. The following programs are not prevented from accessing the root account:
  • su
  • sudo
  • ssh
  • scp
  • sftp

Disabling root SSH logins
To prevent root logins via the SSH protocol, edit the SSH daemon's configuration file, /etc/ssh/sshd_config, and change the line that reads:
#PermitRootLogin yes
zu:
PermitRootLogin no
Tabelle 46.3. Root SSH-Anmeldungen deaktivieren
Betrifft Betrifft nicht
Verhindert den root-Zugriff via die OpenSSH-Suite-Tools. Folgenden Programmen ist es untersagt, auf den root-Account zuzugreifen:
  • ssh
  • scp
  • sftp
Programs that are not part of the OpenSSH suite of tools.

Using PAM to limit root access to services
PAM, through the /lib/security/pam_listfile.so module, allows great flexibility in denying specific accounts. The administrator can use this module to reference a list of users who are not allowed to log in. To limit root access to a system service, edit the file for the target service in the /etc/pam.d/ directory and make sure the pam_listfile.so module is required for authentication.
The following is an example of how the module is used for the vsftpd FTP server in the /etc/pam.d/vsftpd PAM configuration file (the \ character at the end of the first line is not necessary if the directive is on a single line):
auth   required   /lib/security/pam_listfile.so   item=user \
 sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
This instructs PAM to consult the /etc/vsftpd.ftpusers file and deny access to the service for any listed user. The administrator can change the name of this file, and can keep separate lists for each service or use one central list to deny access to multiple services.
If the administrator wants to deny access to multiple services, a similar line can be added to the PAM configuration files, such as /etc/pam.d/pop and /etc/pam.d/imap for mail clients, or /etc/pam.d/ssh for SSH clients.
For more information about PAM, refer to Abschnitt 46.4, „Pluggable Authentication Modules (PAM)“.
Tabelle 46.4. PAM für root deaktivieren
Betrifft Betrifft nicht
Prevents root access to network services that are PAM aware. The following services are prevented from accessing the root account:
  • login
  • gdm
  • kdm
  • xdm
  • ssh
  • scp
  • sftp
  • FTP clients
  • Email clients
  • Any PAM aware services
Programme und Dienste, die PAM nicht berücksichtigen.

46.1.4.3. Root-Zugang beschränken

Rather than completely denying access to the root user, the administrator may want to allow access only via setuid programs, such as su or sudo.
46.1.4.3.1. The su Command
When a user executes the su command, they are prompted for the root password and, after authentication, is given a root shell prompt.
Once logged in via the su command, the user is the root user and has absolute administrative access to the system[16]. In addition, once a user has become root, it is possible for them to use the su command to change to any other user on the system without being prompted for a password.
Da dieses Programm sehr mächtig ist, sollten Administratoren innerhalb eines Unternehmens den Zugang zu diesem Befehl beschränken.
Einer der einfachsten Wege ist es, Benutzer zur administrativen Gruppe mit dem Namen wheel hinzuzufügen. Hierzu geben Sie den folgenden Befehl als root ein:
usermod -G wheel <username>
In the previous command, replace <username> with the username you want to add to the wheel group.
You can also use the User Manager to modify group memberships, as follows. Note: you need Administrator privileges to perform this procedure.
  1. Click the System menu on the Panel, point to Administration and then click Users and Groups to display the User Manager. Alternatively, type the command system-config-users at a shell prompt.
  2. Click the Users tab, and select the required user in the list of users.
  3. Click Properties on the toolbar to display the User Properties dialog box (or choose Properties on the File menu).
  4. Click the Groups tab, select the check box for the wheel group, and then click OK. Refer to Abbildung 46.2, „Adding users to the "wheel" group.“.
  5. Open the PAM configuration file for su (/etc/pam.d/su) in a text editor and remove the comment # from the following line:
    auth  required /lib/security/$ISA/pam_wheel.so use_uid
    This change means that only members of the administrative group wheel can use this program.
Adding users to the "wheel" group.
Groups pane illustration
Abbildung 46.2. Adding users to the "wheel" group.

Hinweis

The root user is part of the wheel group by default.
46.1.4.3.2. The sudo Command
The sudo command offers another approach to giving users administrative access. When trusted users precede an administrative command with sudo, they are prompted for their own password. Then, when they have been authenticated and assuming that the command is permitted, the administrative command is executed as if they were the root user.
The basic format of the sudo command is as follows:
sudo <command>
In the above example, <command> would be replaced by a command normally reserved for the root user, such as mount.

Wichtig

Users of the sudo command should take extra care to log out before walking away from their machines since sudoers can use the command again without being asked for a password within a five minute period. This setting can be altered via the configuration file, /etc/sudoers.
The sudo command allows for a high degree of flexibility. For instance, only users listed in the /etc/sudoers configuration file are allowed to use the sudo command and the command is executed in the user's shell, not a root shell. This means the root shell can be completely disabled, as shown in Abschnitt 46.1.4.2, „Root-Zugang sperren“.
The sudo command also provides a comprehensive audit trail. Each successful authentication is logged to the file /var/log/messages and the command issued along with the issuer's user name is logged to the file /var/log/secure.
Another advantage of the sudo command is that an administrator can allow different users access to specific commands based on their needs.
Administrators wanting to edit the sudo configuration file, /etc/sudoers, should use the visudo command.
To give someone full administrative privileges, type visudo and add a line similar to the following in the user privilege specification section:
juan ALL=(ALL) ALL
This example states that the user, juan, can use sudo from any host and execute any command.
The example below illustrates the granularity possible when configuring sudo:
%users  localhost=/sbin/shutdown -h now
This example states that any user can issue the command /sbin/shutdown -h now as long as it is issued from the console.
The man page for sudoers has a detailed listing of options for this file.

46.1.5. Verfügbare Netzwerkdienste

Während Benutzerzugriff zu administrativen Kontrollen ein wichtiges Thema für Systemadministratoren innerhalb eines Unternehmens ist, ist die Kontrolle der Netzwerkdienste von höchster Priorität für jeden, der ein Linux-System administriert und anwendet.
Viele Dienste unter Red Hat Enterprise Linux verhalten sich als Netzwerkserver. Wenn ein Netzwerkdienst auf einem Computer ausgeführt wird, hört eine Server-Applikation, auch Daemon genannt, auf einem oder mehreren Ports die Verbindungen ab. Jeder dieser Server sollte als potentielle Angriffsstelle betrachtet werden.

46.1.5.1. Risiken für Dienste

Netzwerkdienste können viele Risiken für Linux-Systeme bedeuten. Untenstehend finden Sie eine Liste der Hauptprobleme:
  • Denial of Service Attacken (DoS) — In dem ein System mit Anfragen überflutet wird, kann eine Denial of Service Attacke ein System zum völligen Stillstand bringen, da das System versucht, jede Anfrage aufzuzeichnen und zu beantworten.
  • Skript-Anfälligkeits-Attacken — Wenn ein Server Skripte zum Ausführen von serverseitigen Aufgaben verwendet, wie es Webserver gewöhnlich tun, kann ein Cracker durch nicht-sachgemäß erstellte Skripte eine Attacke initiieren. Diese Skript-Anfälligkeits-Attacken können zu einem Buffer-Overflow führen oder es dem Angreifer ermöglichen, Dateien auf dem Server zu ändern.
  • Buffer Overflow Attacken — Dienste, die sich auf Ports 0 bis 1023 verbinden, müssen als administrativer Benutzer ausgeführt werden. Hat die Applikation einen ausbeutbaren Buffer Overflow, kann ein Angreifer Zugang zum System erlangen als der Benutzer, der den Daemon ausführt. Da ausbeutbare Buffer-Overflows existieren, können Cracker mit automatisierten Tools das System auf Anfälligkeiten prüfen. Sobald diese dann Zugang zum System haben, können sie mithilfe automatisierter root-Kits den Zugang zum System aufrecht erhalten.

Hinweis

Die Bedrohung durch Schwachstellen, welche durch Puffer-Overflow entstehen, ist in Red Hat Enterprise Linux durch ExecShield entschärft, einer ausführbaren Speicher-Segmentation und Schutztechnologie, unterstützt durch x86-kompatible Einzelprozessor- und Multiprozessor-Kernels. ExecShield reduziert das Risiko eines Puffer-Overflow indem virtueller Speicher in ausführbare und nicht-ausführbare Segmente unterteilt wird. Jeglicher Progammcode, welcher versucht außerhalb des ausführbaren Segments auszuführen (vorsätzlich und böswillig unter Ausnutzung eines Sicherheitsloches in Zusammenhang mit Puffer-Overflow implementierter Code) löst einen Segmentierungsfehler aus und wird abgebrochen.
Execshield beinhaltet auch Unterstützung für No eXecute (NX) Technologie auf AMD64 Plattformen und eXecute Disable (XD) Technologie auf Itanium und Intel® 64-Systemen. Diese Technologien arbeiten in Zusammenhang mit ExecShield, um böswilligen Code davon abzuhalten, im ausführbaren Bereich des virtuellen Speichers mit einer Granularität von 4 KB ausführbaren Codes abzulaufen, wobei das Risiko eines heimlichen Eindringens in das System unter Ausnutzung eines Puffer-Overflows verringert wird.

Tip

Um die Angriffsfläche des Netzwerks zu verringern, sollten alle nicht-genutzten Dienste ausgeschaltet werden.

46.1.5.2. Identifizieren und Konfigurieren von Diensten

Zur Erhöhung der Sicherheit sind die meisten, mit Red Hat Enterprise Linux installierten Netzwerkdienste standardmäßig deaktiviert. Es gibt jedoch einige nennenswerte Ausnahmen:
  • cupsd — The default print server for Red Hat Enterprise Linux.
  • lpd — An alternative print server.
  • xinetd — A super server that controls connections to a range of subordinate servers, such as gssftp and telnet.
  • sendmail — The Sendmail Mail Transport Agent (MTA) is enabled by default, but only listens for connections from the localhost.
  • sshd — The OpenSSH server, which is a secure replacement for Telnet.
When determining whether to leave these services running, it is best to use common sense and err on the side of caution. For example, if a printer is not available, do not leave cupsd running. The same is true for portmap. If you do not mount NFSv3 volumes or use NIS (the ypbind service), then portmap should be disabled.
Red Hat Enterprise Linux ships with three programs designed to switch services on or off. They are the Services Configuration Tool (system-config-services), ntsysv, and chkconfig. For information on using these tools, refer to Kapitel 17, Zugriffskontrolle für Dienste.
Services Configuration Tool
Services Configuration Tool illustration
Abbildung 46.3. Services Configuration Tool

If unsure of the purpose for a particular service, the Services Configuration Tool has a description field, illustrated in Abbildung 46.3, „Services Configuration Tool, that provides additional information.
Checking which network services are available to start at boot time is only part of the story. You should also check which ports are open and listening. Refer to Abschnitt 46.2.8, „Bestätigen, welche Ports auf Verbindungen abhören“ for more information.

46.1.5.3. Unsichere Dienste

Potentially, any network service is insecure. This is why turning off unused services is so important. Exploits for services are routinely revealed and patched, making it very important to regularly update packages associated with any network service. Refer to Abschnitt 45.5, „Sicherheits-Updates“ for more information.
Einige Netzwerkprotokolle sind von Natur aus unsicherer als andere. Dies umfasst Dienste, die wie folgt eingesetzt werden:
  • Unverschlüsselte Übertragung von Benutzernamen und Passwörtern über ein Netzwerk — Viele ältere Protokolle, wie z.B. Telnet und FTP, verschlüsseln die Authentifizierung nicht, und sollten möglichst deaktiviert werden.
  • Transmit Sensitive Data Over a Network Unencrypted — Many protocols transmit data over the network unencrypted. These protocols include Telnet, FTP, HTTP, and SMTP. Many network file systems, such as NFS and SMB, also transmit information over the network unencrypted. It is the user's responsibility when using these protocols to limit what type of data is transmitted.
    Remote memory dump services, like netdump, transmit the contents of memory over the network unencrypted. Memory dumps can contain passwords or, even worse, database entries and other sensitive information.
    Other services like finger and rwhod reveal information about users of the system.
Examples of inherently insecure services include rlogin, rsh, telnet, and vsftpd.
All remote login and shell programs (rlogin, rsh, and telnet) should be avoided in favor of SSH. Refer to Abschnitt 46.1.7, „Kommunikationstools mit erhöhter Sicherheit“ for more information about sshd.
FTP is not as inherently dangerous to the security of the system as remote shells, but FTP servers must be carefully configured and monitored to avoid problems. Refer to Abschnitt 46.2.6, „Sicherung von FTP“ for more information about securing FTP servers.
Dienste, die sorgfältig implementiert und hinter einer Firewall verwendet werden sollten, umfassen:
  • finger
  • authd (this was called identd in previous Red Hat Enterprise Linux releases.)
  • netdump
  • netdump-server
  • nfs
  • rwhod
  • sendmail
  • smb (Samba)
  • yppasswdd
  • ypserv
  • ypxfrd
More information on securing network services is available in Abschnitt 46.2, „Server-Sicherheit“.
Im nächsten Abschnitt werden Tools für das Einrichten einer Firewall beschrieben.

46.1.6. Persönliche Firewalls

Sobald die notwendigen Netzwerkdienste konfiguriert sind, ist es wichtig, eine Firewall zu implementieren.

Wichtig

Sie sollten die notwendigen Netzwerkdienste konfigurieren und einen Firewall implementieren, bevor Sie sich mit dem Internet oder anderen Netzwerken, denen Sie nicht trauen, verbinden.
Firewalls prevent network packets from accessing the system's network interface. If a request is made to a port that is blocked by a firewall, the request is ignored. If a service is listening on one of these blocked ports, it does not receive the packets and is effectively disabled. For this reason, care should be taken when configuring a firewall to block access to ports not in use, while not blocking access to ports used by configured services.
For most users, the best tool for configuring a simple firewall is the graphical firewall configuration tool which ships with Red Hat Enterprise Linux: the Security Level Configuration Tool (system-config-securitylevel). This tool creates broad iptables rules for a general-purpose firewall using a control panel interface.
Refer to Abschnitt 46.8.2, „Basic Firewall Configuration“ for more information about using this application and its available options.
For advanced users and server administrators, manually configuring a firewall with iptables is probably a better option. Refer to Abschnitt 46.8, „Firewalls“ for more information. Refer to Abschnitt 46.9, „IPTables“ for a comprehensive guide to the iptables command.

46.1.7. Kommunikationstools mit erhöhter Sicherheit

Mit wachsender Verbreitung und Beliebtheit des Internets wächst auch die Bedrohung durch Abfangen von Kommunikation. In den letzten Jahren wurden Tools entwickelt, die jegliche Kommunikation bei der Übertragung über das Netzwerk verschlüsseln.
Red Hat Enterprise Linux wird mit zwei einfachen Tools geliefert, dieVerschlüsselungsalgorithmen auf höchster Ebene, basierend auf öffentlichen Schlüsseln, verwenden, um Informationen während der Übertragung im Netzwerk zu schützen.
  • OpenSSH — Eine frei-erhältliche Implementierung des SSH-Protokolls zur Verschlüsselung von Netzwerkkommunikation.
  • Gnu Privacy Guard (GPG) — Eine frei-erhältliche Implementierung der PGP (Pretty Good Privacy) Verschlüsselungs-Applikation zur Verschlüsselung von Daten.
OpenSSH is a safer way to access a remote machine and replaces older, unencrypted services like telnet and rsh. OpenSSH includes a network service called sshd and three command line client applications:
  • ssh — A secure remote console access client.
  • scp — A secure remote copy command.
  • sftp — A secure pseudo-ftp client that allows interactive file transfer sessions.

Wichtig

Although the sshd service is inherently secure, the service must be kept up-to-date to prevent security threats. Refer to Abschnitt 45.5, „Sicherheits-Updates“ for more information.
GPG ist eine sehr gute Methode, um private Daten privat zu halten. Es kann zum Versenden empfindlicher Daten über öffentliche Netzwerke und desweiteren zum Schutz empfindlicher Daten auf Festplatten eingesetzt werden.

46.2. Server-Sicherheit

Wenn ein System als Server in einem öffentlichen Netzwerk verwendet wird, stellt es ein Angriffsziel dar. Aus diesem Grund ist das Abhärten des Systems und Sperren von Diensten von erheblicher Bedeutung für den Systemadministrator.
Bevor Sie die Details eines bestimmten Themas erforschen, sehen Sie sich die folgenden allgemeinen Hinweise für das Erhöhen der Server-Sicherheit an:
  • Halten Sie alle Dienste auf dem neuesten Stand, um vor den neuesten Bedrohungen geschützt zu sein.
  • Verwenden Sie sichere Protokolle.
  • Wenn möglich, sollte immer nur eine Maschine einen Netzwerkdienst bereitstellen.
  • Überwachen Sie alle Server sorgfältig auf verdächtige Aktivitäten.

46.2.1. Sichern von Diensten mit TCP-Wrappern und xinetd

TCP-Wrapper bieten Zugriffskontrolle für eine Reihe von Diensten. Die meisten modernen Netzwerkdienste, wie z.B. SSH, Telnet und FTP, verwenden TCP-Wrapper, die als Wachposten zwischen einer eingehenden Anfrage und dem angefragten Dienst stehen.
Die Vorteile von TCP-Wrappern werden noch erweitert, wenn diese zusammen mit xinetd, einem Super-Serverdienst, der zusätzliche Zugriffs-, Log-, Binding-, Umleitungs- und Ressourcenkontrolle bietet, verwendet werden.

Tip

It is a good idea to use iptables firewall rules in conjunction with TCP Wrappers and xinetd to create redundancy within service access controls. Refer to Abschnitt 46.8, „Firewalls“ for more information about implementing firewalls with iptables commands.
Refer to Abschnitt 17.2, „TCP-Wrapper“ for more information on configuring TCP Wrappers and xinetd.
In den folgenden Unterkapiteln wird davon ausgegangen, dass Sie ein grundlegendes Wissen über jedes Thema besitzen und sich auf spezielle Sicherheitsoptionen konzentrieren.

46.2.1.1. Erhöhung der Sicherheit mit TCP-Wrappern

TCP-Wrapper können viel mehr als nur Zugriffe auf Dienste verweigern. In diesem Abschnitt wird erläutert, wie TCP-Wrapper zum Versenden von Verbindungs-Bannern, Warnen vor Angriffen von bestimmten Hosts und Erweitern der Log-Funktionalität eingesetzt werden können. Eine ausführliche Liste der Funktionalität und Kontrollsprache der TCP-Wrapper finden Sie auf den Handbuchseiten der hosts_options.
46.2.1.1.1. TCP-Wrapper und Verbindungs-Banner
Benutzern, die sich mit einem Dienst verbinden, ein einschüchterndes Banner anzuzeigen, ist eine gute Methode, um zu verschleiern, welches System der Server verwendet, und im gleichen Zug Angreifer wissen zu lassen, dass sie es mit einem aufmerksamen Systemadministrator zu tun haben. Um ein TCP-Wrapper-Banner für einen Dienst zu implementieren, verwenden Sie die Option banner.
In diesem Beispiel wird ein Banner für vsftpd implementiert. Sie müssen zuerst eine Banner-Datei anlegen. Diese kann sich irgendwo auf dem System befinden, muss aber den gleichen Namen wie der Daemon haben. In diesem Beispiel nennen wir die Datei /etc/banners/vsftpd.
220-Hello, %c
220-All activity on ftp.example.com is logged.
220-Inappropriate use will result in your access privileges being removed.
Der %c-Token liefert eine Reihe von Client-Informationen wie den Benutzernamen und Hostnamen, oder den Benutzernamen und die IP-Adresse, um die Verbindung noch abschreckender zu machen.
Damit dieses Banner bei eingehenden Verbindungen präsentiert wird, fügen Sie die folgende Zeile in die Datei /etc/hosts.allow ein:
vsftpd : ALL : banners /etc/banners/
46.2.1.1.2. TCP-Wrapper und Warnung vor Angriffen
Wenn ein bestimmter Host oder ein Netzwerk bei einem Angriff auf den Server ertappt wurde, können TCP-Wrapper mit der spawn-Direktive vor weiteren Angriffen von diesem Host oder Netzwerk warnen.
In diesem Beispiel gehen wir davon aus, dass ein Cracker vom 206.182.68.0/24 Netzwerk bei einem Angriffsversuch auf den Server erwischt wurde. Indem Sie die folgende Zeile in die Datei /etc/hosts.deny einfügen, wird der Verbindungsversuch abgewiesen und in einer besonderen Datei aufgezeichnet:
ALL : 206.182.68.0 : spawn /bin/ 'date' %c %d >> /var/log/intruder_alert
Das %d-Token liefert den Namen des Dienstes, auf den der Angreifer zugreifen wollte.
Um die Verbindung zu erlauben und diese aufzuzeichnen, fügen Sie die spawn Direktive in die Datei /etc/hosts.allow ein.

Hinweis

Da die spawn-Direktive jeden beliebigen Shell-Befehl ausführt, können Sie ein spezielles Skript schreiben, das den Administrator im Falle eines Verbindungsversuchs eines bestimmten Clients mit dem Server benachrichtigt oder eine Reihe von Befehlen ausführt.
46.2.1.1.3. TCP-Wrapper und erweitertes Logging
Wenn bestimmte Verbindungstypen von größerer Bedeutung sind, als andere, kann das Log-Level für den jeweiligen Dienst über die Option severity angehoben werden.
In diesem Beispiel gehen wir davon aus, dass jeder, der eine Verbindung zu Port 23 (dem Telnet-Port) auf einem FTP-Server herstellen will, ein Cracker ist. Um dies zu kennzeichnen, fügen Sie eine emerg-Flag anstelle des Standard-Flags info in die Log-Datei ein und verweigern Sie die Verbindung.
Hierfür fügen Sie die folgende Zeile in die Datei /etc/hosts.deny ein:
in.telnetd : ALL : severity emerg
Dies verwendet die standardmäßige authpriv Logging-Funktion, jedoch wird die Priorität vom Standardwert info auf emerg hinaufgesetzt, wodurch Log-Nachrichten direkt an die Konsole weitergegeben werden.

46.2.1.2. Erhöhen der Sicherheit mit xinetd

In diesem Abschnitt wird beschrieben, wie xinetd eingesetzt werden kann, um einen so genannten Trap-Service einzurichten und die Anzahl der Ressourcen, die zur Unterbindung von Denial of Service (DoS)-Angriffen in jedem beliebigen xinetd-Dienst zu Verfügung stehen, zu kontrollieren. Eine Liste der verfügbaren Optionen finden Sie auf den Handbuchseiten zu xinetd und xinetd.conf.
46.2.1.2.1. Eine Falle aufstellen
Ein wichtiges Feature von xinetd ist die Fähigkeit, Hosts zu einer globalen no_access-Liste hinzufügen zu können. Den Hosts auf dieser Liste werden Verbindungen zu Diensten, die von xinetd verwaltet werden, für einen bestimmten Zeitraum oder bis xinetd neu gestartet wird, verweigert. Dies wird durch das SENSOR-Attribut erreicht. Durch diese Methode können Sie auf einfache Weise Hosts blockieren, die den Server auf offene Ports absuchen.
Der erste Schritt für das Einrichten des SENSOR ist die Auswahl eines Dienstes, den Sie nicht für eine Nutzung einplanen. In diesem Beispiel wird Telnet verwendet.
Bearbeiten Sie die Datei /etc/xinetd.d/telnet und ändern Sie die Zeile flags in folgendes um:
flags           = SENSOR
Fügen Sie folgende Zeile hinzu:
deny_time       = 30
Hierdurch wird dem Host, der 30 Minuten lang versucht hat, sich mit dem Port zu verbinden, der Zugriff verweigert. Andere Werte für das deny_time-Attribut sind FOREVER, welches solange wirksam ist, bis xinetd neu gestartet wird, und NEVER, welches die Verbindung zulässt und sie dokumentiert.
Die letzte Zeile sollte wie folgt aussehen:
disable         = no
Dies aktiviert die Falle selbst.
Obwohl SENSOR eine gute Methode ist, Verbindungen von böswilligen Hosts zu erkennen und zu stoppen, hat es jedoch zwei Nachteile:
  • Es hilft nicht gegen heimliches Scannen (Stealth Scans).
  • Ein Angreifer, der weiß, dass ein SENSOR aktiviert ist, kann eine DoS-Attacke gegen bestimmte Hosts ausführen, indem er ihre IP-Adressen fälscht und sich mit dem verbotenen Port verbindet.
46.2.1.2.2. Kontrollieren von Server-Ressourcen
Ein weiteres, wichtiges Feature von xinetd ist die Fähigkeit, die Anzahl der Ressourcen, die Dienste zur Verfügung haben, zu kontrollieren.
Dies wird durch die folgenden Direktiven erreicht:
  • cps = <number_of_connections> <wait_period> — Limits the rate of incoming connections. This directive takes two arguments:
    • <number_of_connections> — The number of connections per second to handle. If the rate of incoming connections is higher than this, the service is temporarily disabled. The default value is fifty (50).
    • <wait_period> — The number of seconds to wait before re-enabling the service after it has been disabled. The default interval is ten (10) seconds.
  • instances = <number_of_connections> — Specifies the total number of connections allowed to a service. This directive accepts either an integer value or UNLIMITED.
  • per_source = <number_of_connections> — Specifies the number of connections allowed to a service by each host. This directive accepts either an integer value or UNLIMITED.
  • rlimit_as = <number[K|M]> — Specifies the amount of memory address space the service can occupy in kilobytes or megabytes. This directive accepts either an integer value or UNLIMITED.
  • rlimit_cpu = <number_of_seconds> — Specifies the amount of time in seconds that a service may occupy the CPU. This directive accepts either an integer value or UNLIMITED.
Mithilfe dieser Direktiven kann verhindert werden, dass ein xinetd-Dienst das gesamte System belegt und Denial-of-Service verursacht.

46.2.2. Portmap sichern

Der portmap-Dienst ist ein dynamischer Port-Zuweisungs-Daemon für RPC-Dienste wie NIS und NFS. Er besitzt schwache Authentifizierungsmechanismen und hat die Fähigkeit, eine große Bandbreite an Ports für die von ihm kontrollierten Dienste zuzuweisen. Aus diesen Gründen ist portmap schwer zu sichern.

Hinweis

Das Sichern von portmap betrifft lediglich NFSv2- und NFSv3-Implementationen, da portmap für NFSv4 nicht mehr länger erforderlich ist. Wenn Sie vorhaben, einen NFSv2- oder NFSv3-Server zu implementieren, dann ist portmap erforderlich und der folgende Abschnitt findet Anwendung.
Wenn Sie RPC-Dienste ausführen, sollten Sie diese Grundregeln beachten.

46.2.2.1. Schützen von portmap mit TCP-Wrappern

Es ist wichtig, TCP Wrapper zur Einschränkung des Zugriffs von Netzwerken und Hosts auf den portmap-Dienst einzusetzen, da letzterer keine integrierte Authentifizierungsmöglichkeit bietet.
Desweiteren sollten Sie nur IP-Adressen verwenden, wenn Sie den Zugriff auf den Dienst einschränken wollen. Vermeiden Sie Hostnamen, da sie durch DNS-Poisoning und andere Methoden gefälscht werden können.

46.2.2.2. Schützen von portmap mit IPTables

Um den Zugriff auf den portmap-Dienst weiter einzuschränken, ist es sinnvoll, IPTables-Regeln zum Server hinzuzufügen, die den Zugriff auf bestimmte Netzwerke einschränken.
Unten finden Sie zwei Beispiele für IPTables-Befehle, die TCP-Verbindungen zum portmap-Dienst (auf Port 111) vom 192.168.0/24 Netzwerk und vom Localhost (der für den sgi_fam-Dienst für Nautilus benötigt wird) ermöglichen. Alle anderen Pakete werden abgelehnt.
iptables -A INPUT -p tcp -s! 192.168.0.0/24 --dport 111 -j DROP
iptables -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT
Um auf gleiche Weise UDP-Traffic einzuschränken, verwenden Sie den folgenden Befehl.
iptables -A INPUT -p udp -s! 192.168.0.0/24 --dport 111 -j DROP

Tip

Refer to Abschnitt 46.8, „Firewalls“ for more information about implementing firewalls with iptables commands.

46.2.3. Sichern von NIS

The Network Information Service (NIS) is an RPC service, called ypserv,--> which is used in conjunction with portmap and other related services to distribute maps of usernames, passwords, and other sensitive information to any computer claiming to be within its domain.
Ein NIS-Server besteht aus mehreren Applikationen, unter anderem:
  • /usr/sbin/rpc.yppasswdd — Auch yppasswdd-Dienst genannt. Dieser Daemon ermöglicht Benutzern, ihre NIS-Passwörter zu ändern.
  • /usr/sbin/rpc.ypxfrd — Auch ypxfrd-Dienst genannt. Dieser Daemon ist für den NIS-Map-Transfer über das Netzwerk verantwortlich.
  • /usr/sbin/yppush — Diese Applikation verbreitet geänderte NIS-Datenbanken an mehrere NIS-Server.
  • /usr/sbin/ypserv — Dies ist der NIS-Server-Daemon.
NIS is somewhat insecure by today's standards. It has no host authentication mechanisms and transmits all of its information over the network unencrypted, including password hashes. As a result, extreme care must be taken when setting up a network that uses NIS. This is further complicated by the fact that the default configuration of NIS is inherently insecure.
It is recommended that anyone planning to implement an NIS server first secure the portmap service as outlined in Abschnitt 46.2.2, „Portmap sichern“, then address the following issues, such as network planning.

46.2.3.1. Planen Sie das Netzwerk sorgfältig

Da NIS empfindliche Informationen unverschlüsselt über das Netzwerk überträgt, ist es wichtig, dass dieser Dienst hinter eine Firewall und auf einem segmentierten und sicheren Netzwerk ausgeführt wird. Jedes Mal, wenn NIS-Informationen über ein unsicheres Netzwerk übertragen werden, wird das Abfangen von Daten riskiert. Hier kann ein sorgfältiges Design des Netzwerks schwerwiegende Sicherheitsbrüche verhindern.

46.2.3.2. Verwenden Sie passwortähnliche NIS-Domainnamen und Hostnamen

Any machine within an NIS domain can use commands to extract information from the server without authentication, as long as the user knows the NIS server's DNS hostname and NIS domain name.
Wenn sich zum Beispiel jemand mit einem Laptop in das Netzwerk einklinkt oder von außen ins Netzwerk eindringt (und es schafft, eine interne IP-Adresse vorzutäuschen), enthüllt der folgende Befehl die /etc/passwd-Map:
ypcat -d <NIS_domain> -h <DNS_hostname> passwd
Ist der Angreifer ein Root-Benutzer, kann dieser die Datei /etc/shadow durch folgenden Befehl einsehen:
ypcat -d <NIS_domain> -h <DNS_hostname> shadow

Hinweis

Wenn Kerberos verwendet wird, wird die Datei /etc/shadow nicht innerhalb einer NIS-Map gespeichert.
Um den Zugang zu NIS-Maps für einen Angreifer zu erschweren, erstellen Sie einen zufälligen String für den DNS-Hostnamen, wie zum Beispiel o7hfawtgmhwg.domain.com. Erstellen Sie in gleicher Weise einen anderen, zufallsgenerierten NIS-Domain-Namen. Hierdurch wird es einem Angreifer erheblich erschwert, Zugang zum NIS-Server zu erhalten.

46.2.3.3. Bearbeiten Sie die Datei /var/yp/securenets

NIS hört alle Netzwerke ab, wenn die Datei /var/yp/securenets leer ist oder gar nicht existiert (dies ist z.B: nach einer Standard-Installation der Fall). Als erstes sollten Sie ein Netmask/Netzwerkpaar in der Datei hinterlegen, damit ypserv nur auf Anfragen des richtigen Netzwerks reagiert.
Unten finden Sie einen Beispieleintrag einer /var/yp/securenets-Datei:
255.255.255.0     192.168.0.0

Achtung

Sie sollten niemals einen NIS-Server zum ersten Mal starten, ohne vorher die Datei /var/yp/securenets erstellt zu haben.
Diese Methode schützt nicht vor einer IP-Spoofing-Attacke, schränkt jedoch die Netzwerke, die von NIS bedient werden, zumindest ein.

46.2.3.4. Zuweisung von statischen Ports und Verwendung von IPTables -Regeln

Jedem der zu NIS gehörenden Server kann ein bestimmter Port zugewiesen werden, mit Ausnahme von rpc.yppasswdd — dem Daemon, der Benutzern das Ändern ihrer Login-Passwörter erlaubt. Indem Sie den anderen beiden NIS-Server-Daemons, rpc.ypxfrd und ypserv, Ports zuweisen, können Sie Firewall-Regeln erstellen, um die NIS-Server-Daemons noch mehr vor Eindringlingen zu schützen.
Hierzu fügen Sie die folgenden Zeilen zu /etc/sysconfig/network hinzu:
YPSERV_ARGS="-p 834" YPXFRD_ARGS="-p 835"
Die folgenden IPTables-Regeln können dann verwendet werden, um festzulegen, welches Netzwerk der Server für diese Ports abhören soll:
iptables -A INPUT -p tcp -s! 192.168.0.0/24 --dport 834 -j DROP
iptables -A INPUT -p tcp -s! 192.168.0.0/24 --dport 835 -j DROP
iptables -A INPUT -p udp -s! 192.168.0.0/24 --dport 834 -j DROP
iptables -A INPUT -p udp -s! 192.168.0.0/24 --dport 835 -j DROP
This means that the server only allows connections to ports 834 and 835 if the requests come from the 192.168.0.0/24 network.

Tip

Refer to Abschnitt 46.8, „Firewalls“ for more information about implementing firewalls with iptables commands.

46.2.3.5. Verwenden Sie Kerberos-Authentifizierung

Einer der größten Mängel beim Verwenden von NIS für Authentifizierung ist, dass wenn sich ein Benutzer an einem Computer anmeldet, ein Passwort-Hash der /etc/shadow-Map über das Netzwerk verschickt wird. Wenn ein Angreifer Zugang zu einer NIS-Domain erhält und Verkehr über das Netzwerk durchschnüffelt, können Benutzernamen und Passwort-Hashes unbemerkt gesammelt werden. Mit genügend Zeit kann dann ein Programm zum Knacken von Passwörtern schwache Passwörter ermitteln und ein Angreifer kann dann auf einen gültigen Account im Netzwerk zugreifen.
Since Kerberos uses secret-key cryptography, no password hashes are ever sent over the network, making the system far more secure. Refer to Abschnitt 46.6, „Kerberos“ for more information about Kerberos.

46.2.4. Sicherung von NFS

The Network File System (NFS) is a service that provides network accessible file systems for client machines. Refer to Kapitel 20, Network File System (NFS) for more information about NFS. The following subsections assume a basic knowledge of NFS.

Wichtig

The version of NFS included in Red Hat Enterprise Linux, NFSv4, no longer requires the portmap service as outlined in Abschnitt 46.2.2, „Portmap sichern“. NFS traffic now utilizes TCP in all versions, rather than UDP, and requires it when using NFSv4. NFSv4 now includes Kerberos user and group authentication, as part of the RPCSEC_GSS kernel module. Information on portmap is still included, since Red Hat Enterprise Linux supports NFSv2 and NFSv3, both of which utilize portmap.

46.2.4.1. Planen Sie das Netzwerk sorgfältig

Da nunmehr sämtliche Informationen von NFSv4 verschlüsselt mittels Kerberos über das Netzwerk übertragen werden können, ist es wichtig, dass dieser Dienst richtig konfiguriert wird, sollte sich dieser hinter einer Firewall oder in einem segmentierten Netzwerk befinden. NFSv2 und NFSv3 übergeben Daten noch immer nicht sicher. Dabei besteht immer ein gewisser Grund zur Besorgnis. Hier kann ein sorgfältiges Design des Netzwerks schwerwiegende Sicherheitsbrüche verhindern.

46.2.4.2. Achtung vor Syntax-Fehlern

Der NFS-Server entscheidet über die Datei /etc/exports, welche Dateisysteme für welche Hosts diese Dateisysteme exportiert werden sollen. Achten Sie darauf, dass Sie keine Extra-Leerstellen beim Bearbeiten dieser Datei einfügen.
Die folgende Zeile in der Datei /etc/exports legt fest, dass der Host bob.example.com Lese- und Schreibberechtigung auf das gemeinsame Verzeichnis /tmp/nfs/ erhält.
/tmp/nfs/     bob.example.com(rw)
Folgende Zeile in der Datei /etc/exports dagegen beschreibt, dass der Host bob.example.com lediglich Leseberechtigung besitzt, allerdings jeder Lese- und Schreibberechtigung hat, wegen eines einzelnen Leerzeichens nach dem Hostnamen.
/tmp/nfs/     bob.example.com (rw)
Es ist sehr sinnvoll, alle konfigurierten NFS-Shares mit dem Befehl showmount zu prüfen:
showmount -e <hostname>

46.2.4.3. Verwenden Sie nicht die Option no_root_squash

Standardmäßig ändern NFS-Shares den Root-Benutzer in den Benutzer nfsnobody, einem unprivilegierten Benutzer-Account, um. Auf diese Art gehören alle von Root erstellten Dateien dem User nfsnobody, wodurch das Hochladen von Programmen mit der Setuid-Bit-Einstellung verhindert wird.
If no_root_squash is used, remote root users are able to change any file on the shared file system and leave applications infected by Trojans for other users to inadvertently execute.

46.2.5. Sicherung des Apache HTTP-Server

Der Apache HTTP-Server ist einer der stabilsten und sichersten Dienste, die mit Red Hat Enterprise Linux ausgeliefert werden. Es gibt eine große Anzahl von Optionen und Methoden, um den Apache HTTP-Server zu sichern — zu viele, um sie hier im Detail zu beschreiben.
When configuring the Apache HTTP Server, it is important to read the documentation available for the application. This includes Kapitel 23, Apache HTTP Server, and the Stronghold manuals, available at http://www.redhat.com/docs/manuals/stronghold/.
Systemadministratoren sollten folgende Konfigurationsoptionen mit äußerster Sorgfalt verwenden:

46.2.5.1. FollowSymLinks

Diese Direktive ist standardmäßig aktiviert, seien Sie also vorsichtig, wenn Sie symbolische Links zum Dokument-Root des Webservers erstellen. Es ist zum Beispiel keine gute Idee, einen symbolischen Link zu / zu setzen.

46.2.5.2. Die Indexes-Direktive

Diese Direktive ist standardmäßig aktiviert, ist jedoch unter Umständen nicht wünschenswert. Wenn Sie nicht möchten, dass Benutzer Dateien auf dem Server durchsuchen, ist es sinnvoll, diese Direktive zu entfernen.

46.2.5.3. Die UserDir-Direktive

Die UserDir-Direktive ist standardmäßig deaktiviert, da sie das Bestehen eines Benutzeraccounts im System bestätigen kann. Wenn Sie das Durchsuchen von Verzeichnissen auf dem Server durch Benutzer erlauben möchten, sollten Sie die folgenden Direktiven verwenden:
UserDir enabled
UserDir disabled root
Diese Direktiven aktivieren das Durchsuchen von Verzeichnissen für alle Benutzer-Verzeichnisse außer /root. Wenn Sie Benutzer zu der Liste deaktivierter Accounts hinzufügen möchten, können Sie eine durch Leerstellen getrennte Liste der Benutzer in die Zeile UserDir disabled einfügen.

46.2.5.4. Entfernen Sie nicht die IncludesNoExec-Direktive

Standardmäßig kann das Modul Server-Side Includes (SSI) keine Befehle ausführen. Es wird davon abgeraten, diese Einstellungen zu ändern, außer wenn unbedingt notwendig, da dies einem Angreifer ermöglichen könnte, Befehle auf dem System auszuführen.

46.2.5.5. Schränken Sie Berechtigungen für ausführbare Verzeichnisse ein

Stellen Sie sicher, dass Sie Schreibberechtigungen für Verzeichnisse, die Skripte oder CGIs enthalten, nur für den Root-Benutzer vergeben. Dies erreichen Sie durch die folgenden Befehle:
chown root <directory_name>
chmod 755 <directory_name>

Wichtig

Prüfen Sie außerdem, dass jegliche Skripte, die Sie ausführen, auch wie beabsichtigt funktionieren, bevor sie in Produktion gegeben werden.

46.2.6. Sicherung von FTP

The File Transfer Protocol (FTP) is an older TCP protocol designed to transfer files over a network. Because all transactions with the server, including user authentication, are unencrypted, it is considered an insecure protocol and should be carefully configured.
Red Hat Enterprise Linux bietet drei FTP-Server.
  • gssftpd — Ein für Kerberos aktivierter, xinetd-basierter FTP-Daemon, der keine Authentifizierungsinformationen über das Netzwerk überträgt.
  • Red Hat Content Accelerator (tux) — Ein Kernel-Space Webserver mit FTP Fähigkeiten.
  • vsftpd — Eine selbstständige, sicherheitsorientierte Implementierung des FTP-Dienstes.
Die folgenden Sicherheitsrichtlinien gelten für das Einrichten des vsftpd-FTP-Dienstes.

46.2.6.1. FTP-Grußbanner

Bevor der Benutzername und das Passwort eingereicht werden, erhalten alle Benutzer ein Grußbanner. Standardmäßig enthält dieses Banner Versionsinformationen, die für Cracker nützlich sein können, die Schwachstellen in einem System herausfinden wollen.
Um dieses Grußbanner für vsftpd zu ändern, fügen Sie die folgende Direktive zu /etc/vsftpd/vsftpd.conf hinzu:
ftpd_banner=<insert_greeting_here>
Replace <insert_greeting_here> in the above directive with the text of the greeting message.
Für mehrzeilige Banner ist es ratsam, eine Bannerdatei zu verwenden. Um die Verwaltung von mehreren Bannern zu vereinfachen, speichern Sie alle Banner in einem neuen Verzeichnis mit dem Namen /etc/banners/. Die Bannerdatei für FTP-Verbindungen in diesem Beispiel ist /etc/banners/ftp.msg. Das nachfolgende Beispiel zeigt, wie eine derartige Datei aussehen kann:
######### # Hello, all activity on ftp.example.com is logged. #########

Hinweis

It is not necessary to begin each line of the file with 220 as specified in Abschnitt 46.2.1.1.1, „TCP-Wrapper und Verbindungs-Banner“.
Um auf diese Grußbannerdatei für vsftpd zu referenzieren, fügen Sie folgende Direktive zu /etc/vsftpd/vsftpd.conf hinzu:
banner_file=/etc/banners/ftp.msg

Wichtig

Make sure that you specify the path to the banner file correctly in /etc/vsftpd/vsftpd.conf, or else every attempt to connect to vsftpd will result in the connection being closed immediately and a 500 OOPS: cannot open banner <path_to_banner_file> error message.
Note that the banner_file directive in /etc/vsftpd/vfsftpd.conf takes precedence over any ftpd_banner directives in the configuration file: if banner_file is specified, then ftpd_banner is ignored.
It also is possible to send additional banners to incoming connections using TCP Wrappers as described in Abschnitt 46.2.1.1.1, „TCP-Wrapper und Verbindungs-Banner“.

46.2.6.2. Anonymer Zugang

Die Existenz des /var/ftp/-Verzeichnisses aktiviert den anonymen Account.
Der einfachste Weg, dieses Verzeichnis zu erstellen, ist durch die Installation des vsftpd-Pakets. Dieses Paket erstellt einen Verzeichnisbaum für anonyme Benutzer und vergibt anonymen Benutzern lediglich Lese-Berechtigungen für Verzeichnisse.
Standardmäßig können anonyme Benutzer nicht in Verzeichnisse schreiben.

Vorsicht

Wenn Sie einen anonymen Zugang zu FTP-Servern zulassen, sollten Sie darauf achten, wo Sie empfindliche Daten speichern.
46.2.6.2.1. Anonymes Hochladen
Wenn Sie anonymen Benutzern erlauben möchten, Dateien hochzuladen, wird empfohlen, ein Verzeichnis nur mit Schreibberechtigung innerhalb von /var/ftp/pub/ anzulegen.
Verwenden Sie dafür folgenden Befehl:
mkdir /var/ftp/pub/upload
Ändern Sie dann wie folgt die Berechtigungen, so dass anonyme Benutzer nicht sehen können, was sich innerhalb des Verzeichnisses befindet:
chmod 730 /var/ftp/pub/upload
Eine detaillierte Auflistung des Verzeichnisses sollte wie folgt aussehen:
drwx-wx---    2 root     ftp          4096 Feb 13 20:05 upload

Achtung

Administratoren, die anonymen Benutzern Lese- und Schreibberechtigungen für Verzeichnisse geben, stellen häufig fest, dass ihr Server dann zu einer Fundgrube gestohlener Software wird.
Fügen Sie zusätzlich unter vsftpd die folgende Zeile in die Datei /etc/vsftpd/vsftpd.conf ein:
anon_upload_enable=YES

46.2.6.3. Benutzeraccounts

Da FTP unverschlüsselt Benutzernamen und Passwörter über unsichere Netzwerke zur Authentifizierung überträgt, ist es ratsam, Systembenutzern den Zugang zum Server von den Benutzeraccounts aus zu verbieten.
Um Benutzeraccounts in vsftpd zu deaktivieren, fügen Sie die folgende Direktive zu /etc/vsftpd/vsftpd.conf hinzu:
local_enable=NO
46.2.6.3.1. Benutzeraccounts einschränken
To disable FTP access for specific accounts or specific groups of accounts, such as the root user and those with sudo privileges, the easiest way is to use a PAM list file as described in Abschnitt 46.1.4.2, „Root-Zugang sperren“. The PAM configuration file for vsftpd is /etc/pam.d/vsftpd.
Es ist auch möglich, Benutzeraccounts innerhalb jeden Dienstes direkt zu deaktivieren.
Um bestimmte Benutzeraccounts in vsftpd zu deaktivieren, fügen Sie den Benutzernamen zu /etc/vsftpd.ftpusers hinzu.

46.2.6.4. TCP Wrapper für die Zugriffskontrolle

Use TCP Wrappers to control access to either FTP daemon as outlined in Abschnitt 46.2.1.1, „Erhöhung der Sicherheit mit TCP-Wrappern“.

46.2.7. Sicherung von Sendmail

Sendmail ist ein Mail Transport Agent (MTA), der das Simple Mail Transport Protocol (SMTP) zur Übertragung elektronischer Nachrichten zwischen anderen MTAs und für das E-Mailen an Clients oder Delivery Agents einsetzt. Obwohl viele MTAs den Verkehr untereinander verschlüsseln können, tun dies viele nicht, so dass das Versenden von E-Mails über ein öffentliches Netzwerk als eine von Natur aus unsichere Form der Kommunikation betrachtet wird.
Refer to Kapitel 25, E-Mail for more information about how email works and an overview of common configuration settings. This section assumes a basic knowledge of how to generate a valid /etc/mail/sendmail.cf by editing the /etc/mail/sendmail.mc and using the m4 command.
Es wird empfohlen, dass Sie sich mit den folgenden Angelegenheiten auseinandersetzen, wenn Sie die Implementierung eines Sendmail-Servers planen.

46.2.7.1. Limitierung einer Denial-of-Service-Attacke

Aufgrund der Beschaffenheit von E-Mail kann ein dazu entschlossener Angreifer den Server leicht mit E-Mails überfluten und so ein Denial-of-Service verursachen. Indem Sie in die folgenden Direktiven in /etc/mail/sendmail.mc limitieren, kann die Wirksamkeit solcher Attacken stark abgeschwächt werden.
  • confCONNECTION_RATE_THROTTLE — Die Anzahl der Verbindungen, die der Server pro Sekunde empfangen kann. Standardmäßig begrenzt Sendmail die Zahl der Verbindungen nicht. Wird eine Grenze gesetzt, werden darüber hinaus gehende Verbindungen verzögert.
  • confMAX_DAEMON_CHILDREN — Die maximale Anzahl von unter geordneten Prozessen, die vom Server erzeugt werden können. Standardmäßig begrenzt Sendmail die Anzahl der untergeordneten Prozesse nicht. Wird eine Grenze gesetzt und diese erreicht, werden alle weiteren Verbindungen verzögert.
  • confMIN_FREE_BLOCKS — Die minimale Anzahl freier Blöcke, die für den Server zur Verfügung stehen müssen, um E-Mail empfangen zu können. Der Standard ist 100 Blöcke.
  • confMAX_HEADERS_LENGTH — Die maximal akzeptierte Größe (in Bytes) für einen Nachrichtenkopf.
  • confMAX_MESSAGE_SIZE — Die maximal akzeptierte Größe (in Bytes) pro Nachricht.

46.2.7.2. NFS und Sendmail

Legen Sie niemals das Mail-Spool-Verzeichnis, /var/spool/mail/, auf einem durch NFS gemeinsam genutzten Datenträger ab.
Because NFSv2 and NFSv3 do not maintain control over user and group IDs, two or more users can have the same UID, and receive and read each other's mail.

Hinweis

Mit NFSv4 und Kerberos ist dies nicht der Fall, da das SECRPC_GSS-Kernel-Modul keine UID-basierte Authentifizierung anwendet. Allerdings wird es als professionelles Vorgehen angesehen, das Mail-Spool-Verzeichnis nicht auf einem durch NFS gemeinsam genutzten Datenträger abzulegen.

46.2.7.3. Nur-Mail Benutzer

Um Exploits des Sendmail-Servers durch lokale Benutzer zu vermeiden, ist es am besten, wenn Mail-Benutzer auf den Sendmail-Server nur über ein E-Mail-Programm zugreifen. Shell-Accounts auf dem Mail-Server sollten nicht erlaubt sein, und alle Benutzer-Shells in der Datei /etc/passwd sollten auf /sbin/nologin gesetzt sein (evtl. unter Ausnahme des Root-Benutzers).

46.2.8. Bestätigen, welche Ports auf Verbindungen abhören

After configuring network services, it is important to pay attention to which ports are actually listening on the system's network interfaces. Any open ports can be evidence of an intrusion.
Es gibt zwei grundlegende Herangehensweisen für das Auflisten der Ports, die das Netzwerk abhören. Die weniger zuverlässige Methode ist, den Netzwerkstack durch Befehle wie netstat -an oder lsof -i abzufragen. Diese Methode ist daher unzuverlässiger, da die Programme sich nicht vom Netzwerk aus mit dem Computer verbinden, sondern eher prüfen, was auf dem System ausgeführt wird. Aus diesen Grund sind diese Applikationen häufig Ziel für Ersetzungen durch Angreifer. Durch diese Methode versuchen Cracker ihre Spuren zu verwischen, wenn diese unbefugt Netzwerkports geöffnet haben, in dem sie die Anwendungen netstat und lsof durch ihre eigenen, modifizierten Versionen ersetzen.
Ein etwas zuverlässigerer Weg für das Prüfen, welche Ports das Netzwerk abhören, ist mit einem Port-Scanner wie z.B. nmap.
Der folgende Befehl, von einer Konsole aus eingegeben, stellt fest, welche Ports auf TCP-Verbindungen aus dem Netzwerk mithören.
nmap -sT -O localhost
Die Ausgabe dieses Befehls sieht wie folgt aus:
Starting nmap 3.55 ( http://www.insecure.org/nmap/ ) at 2004-09-24 13:49 EDT
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1653 ports scanned but not shown below are in state: closed)
PORT      STATE SERVICE
22/tcp    open  ssh
25/tcp    open  smtp
111/tcp   open  rpcbind
113/tcp   open  auth
631/tcp   open  ipp
834/tcp   open  unknown
2601/tcp  open  zebra
32774/tcp open  sometimes-rpc11
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.5.25 - 2.6.3 or Gentoo 1.2 Linux 2.4.19 rc1-rc7)
Uptime 12.857 days (since Sat Sep 11 17:16:20 2004)
Nmap run completed -- 1 IP address (1 host up) scanned in 5.190 seconds
Diese Ausgabe zeigt, dass das System portmap ausführt, dadurch, dass der Dienst sunrpc vorhanden ist. Es wird jedoch auch ein unbekannter Dienst auf Port 834 ausgeführt. Um zu prüfen, ob dieser Port zu der offiziellen Liste bekannter Dienste gehört, geben Sie folgendes ein:
cat /etc/services | grep 834
Dieser Befehl erhält keine Ausgabe. Dies bedeutet, dass der Port im reservierten Bereich (0 bis 1023) liegt und Root-Zugang zum Öffnen benötigt, jedoch nicht mit einem bekannten Dienste assoziiert ist.
Als nächstes können Sie Informationen über den Port mittels netstat oder lsof abrufen. Um Port 834 mit Hilfe vonnetstat zu prüfen, geben Sie folgenden Befehl ein:
netstat -anp | grep 834
Dieser Befehl erhält folgende Ausgabe:
tcp   0    0 0.0.0.0:834    0.0.0.0:*   LISTEN   653/ypbind
Die Existenz eines offenen Ports in netstat ist beruhigend, da ein Cracker, der einen Port heimlich auf einem geknackten System öffnet, das Anzeigen des Ports durch diesen Befehl höchstwahrscheinlich nicht zulassen würde. Desweiteren zeigt die Option [p] die Prozess-ID (PID) des Dienstes an, der diesen Port geöffnet hat. In diesem Fall gehört der offene Port zu ypbind (NIS), ein RPC-Dienst, der zusammen mit dem portmap-Dienst abläuft.
Der lsof-Befehl zeigt ähnliche Informationen wie der Befehl netstat an, da es auch offene Ports Diensten zuordnen kann:
lsof -i | grep 834
Nachfolgend finden Sie den betreffenden Teil der Ausgabe für diesen Befehl:
ypbind      653        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      655        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      656        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
ypbind      657        0    7u  IPv4       1319                 TCP *:834 (LISTEN)
Wie Sie sehen, können diese Tools eine Menge Informationen über den Status von Diensten auf einem Computer geben. Diese Tools sind flexibel und liefern eine Vielzahl von Informationen zu den Netzwerkdiensten und zur Konfiguration. Werfen Sie einen Block auf die Handbuchseiten zu lsof, netstat, nmap und services für weitere Informationen.

46.3. Single Sign-on (SSO)

46.3.1. Introduction

The Red Hat Enterprise Linux SSO functionality reduces the number of times Red Hat Enterprise Linux desktop users have to enter their passwords. Several major applications leverage the same underlying authentication and authorization mechanisms so that users can log in to Red Hat Enterprise Linux from the log-in screen, and then not need to re-enter their passwords. These applications are detailed below.
In addition, users can log in to their machines even when there is no network (offline mode) or where network connectivity is unreliable, for example, wireless access. In the latter case, services will degrade gracefully.

46.3.1.1. Supported Applications

The following applications are currently supported by the unified log-in scheme in Red Hat Enterprise Linux:
  • Login
  • Screensaver
  • Firefox and Thunderbird

46.3.1.2. Supported Authentication Mechanisms

Red Hat Enterprise Linux currently supports the following authentication mechanisms:
  • Kerberos name/password login
  • Smart card/PIN login

46.3.1.3. Supported Smart Cards

Red Hat Enterprise Linux has been tested with the Cyberflex e-gate card and reader, but any card that complies with both Java card 2.1.1 and Global Platform 2.0.1 specifications should operate correctly, as should any reader that is supported by PCSC-lite.
Red Hat Enterprise Linux has also been tested with Common Access Cards (CAC). The supported reader for CAC is the SCM SCR 331 USB Reader.
As of Red Hat Enterprise Linux 5.2, Gemalto smart cards (Cyberflex Access 64k v2, standard with DER SHA1 value configured as in PKCSI v2.1) are now supported. These smart cards now use readers compliant with Chip/Smart Card Interface Devices (CCID).

46.3.1.4. Advantages of Red Hat Enterprise Linux Single Sign-on

Numerous security mechanisms currently exist that utilize a large number of protocols and credential stores. Examples include SSL, SSH, IPsec, and Kerberos. Red Hat Enterprise Linux SSO aims to unify these schemes to support the requirements listed above. This does not mean replacing Kerberos with X.509v3 certificates, but rather uniting them to reduce the burden on both system users and the administrators who manage them.
To achieve this goal, Red Hat Enterprise Linux:
  • Provides a single, shared instance of the NSS crypto libraries on each operating system.
  • Ships the Certificate System's Enterprise Security Client (ESC) with the base operating system. The ESC application monitors smart card insertion events. If it detects that the user has inserted a smart card that was designed to be used with the Red Hat Enterprise Linux Certificate System server product, it displays a user interface instructing the user how to enroll that smart card.
  • Unifies Kerberos and NSS so that users who log in to the operating system using a smart card also obtain a Kerberos credential (which allows them to log in to file servers, etc.)

46.3.2. Getting Started with your new Smart Card

Before you can use your smart card to log in to your system and take advantage of the increased security options this technology provides, you need to perform some basic installation and configuration steps. These are described below.

Note

This section provides a high-level view of getting started with your smart card. More detailed information is available in the Red Hat Certificate System Enterprise Security Client Guide.
  1. Log in with your Kerberos name and password
  2. Make sure you have the nss-tools package loaded.
  3. Download and install your corporate-specific root certificates. Use the following command to install the root CA certificate:
    certutil -A -d /etc/pki/nssdb -n "root ca cert" -t "CT,C,C" \
    	-i ./ca_cert_in_base64_format.crt
  4. Verify that you have the following RPMs installed on your system: esc, pam_pkcs11, coolkey, ifd-egate, ccid, gdm, authconfig, and authconfig-gtk.
  5. Enable Smart Card Login Support
    1. On the Gnome Title Bar, select System->Administration->Authentication.
    2. Type your machine's root password if necessary.
    3. In the Authentication Configuration dialog, click the Authentication tab.
    4. Select the Enable Smart Card Support check box.
    5. Click the Configure Smart Card... button to display the Smartcard Settings dialog, and specify the required settings:
      • Require smart card for login — Clear this check box. After you have successfully logged in with the smart card you can select this option to prevent users from logging in without a smart card.
      • Card Removal Action — This controls what happens when you remove the smart card after you have logged in. The available options are:
        • Lock — Removing the smart card locks the X screen.
        • Ignore — Removing the smart card has no effect.
  6. If you need to enable the Online Certificate Status Protocol (OCSP), open the /etc/pam_pkcs11/pam_pkcs11.conf file, and locate the following line:
    enable_ocsp = false;
    Change this value to true, as follows:
    enable_ocsp = true;
  7. Enroll your smart card
  8. If you are using a CAC card, you also need to perform the following steps:
    1. Change to the root account and create a file called /etc/pam_pkcs11/cn_map.
    2. Add the following entry to the cn_map file:
      MY.CAC_CN.123454 -> myloginid
      where MY.CAC_CN.123454 is the Common Name on your CAC and myloginid is your UNIX login ID.
  9. Logout

46.3.2.1. Troubleshooting

If you have trouble getting your smart card to work, try using the following command to locate the source of the problem:
pklogin_finder debug
If you run the pklogin_finder tool in debug mode while an enrolled smart card is plugged in, it attempts to output information about the validity of certificates, and if it is successful in attempting to map a login ID from the certificates that are on the card.

46.3.3. How Smart Card Enrollment Works

Smart cards are said to be enrolled when they have received an appropriate certificate signed by a valid Certificate Authority (CA). This involves several steps, described below:
  1. The user inserts their smart card into the smart card reader on their workstation. This event is recognized by the Enterprise Security Client (ESC).
  2. The enrollment page is displayed on the user's desktop. The user completes the required details and the user's system then connects to the Token Processing System (TPS) and the CA.
  3. The TPS enrolls the smart card using a certificate signed by the CA.
How Smart Card Enrollment Works
How Smart Card Enrollment Works.
Abbildung 46.4. How Smart Card Enrollment Works

46.3.4. How Smart Card Login Works

This section provides a brief overview of the process of logging in using a smart card.
  1. When the user inserts their smart card into the smart card reader, this event is recognized by the PAM facility, which prompts for the user's PIN.
  2. The system then looks up the user's current certificates and verifies their validity. The certificate is then mapped to the user's UID.
  3. This is validated against the KDC and login granted.
How Smart Card Login Works
How Smart Card Login Works.
Abbildung 46.5. How Smart Card Login Works

Note

You cannot log in with a card that has not been enrolled, even if it has been formatted. You need to log in with a formatted, enrolled card, or not using a smart card, before you can enroll a new card.

46.3.5. Configuring Firefox to use Kerberos for SSO

You can configure Firefox to use Kerberos for Single Sign-on. In order for this functionality to work correctly, you need to configure your web browser to send your Kerberos credentials to the appropriate KDC.The following section describes the configuration changes and other requirements to achieve this.
  1. In the address bar of Firefox, type about:config to display the list of current configuration options.
  2. In the Filter field, type negotiate to restrict the list of options.
  3. Double-click the network.negotiate-auth.trusted-uris entry to display the Enter string value dialog box.
  4. Enter the name of the domain against which you want to authenticate, for example, .example.com.
  5. Repeat the above procedure for the network.negotiate-auth.delegation-uris entry, using the same domain.

    Note

    You can leave this value blank, as it allows Kerberos ticket passing, which is not required.
    If you do not see these two configuration options listed, your version of Firefox may be too old to support Negotiate authentication, and you should consider upgrading.
Configuring Firefox for SSO with Kerberos
Configuring Firefox to use Kerberos for SSO.
Abbildung 46.6. Configuring Firefox for SSO with Kerberos

You now need to ensure that you have Kerberos tickets. In a command shell, type kinit to retrieve Kerberos tickets. To display the list of available tickets, type klist. The following shows an example output from these commands:
~]$ kinit
Password for user@EXAMPLE.COM:

~]$ klist
Ticket cache: FILE:/tmp/krb5cc_10920
Default principal: user@EXAMPLE.COM

Valid starting     Expires            Service principal
10/26/06 23:47:54  10/27/06 09:47:54  krbtgt/USER.COM@USER.COM
        renew until 10/26/06 23:47:54

Kerberos 4 ticket cache: /tmp/tkt10920
klist: You have no tickets cached

46.3.5.1. Troubleshooting

If you have followed the configuration steps above and Negotiate authentication is not working, you can turn on verbose logging of the authentication process. This could help you find the cause of the problem. To enable verbose logging, use the following procedure:
  1. Close all instances of Firefox.
  2. Open a command shell, and enter the following commands:
    export NSPR_LOG_MODULES=negotiateauth:5
    export NSPR_LOG_FILE=/tmp/moz.log
  3. Restart Firefox from that shell, and visit the website you were unable to authenticate to earlier. Information will be logged to /tmp/moz.log, and may give a clue to the problem. For example:
    -1208550944[90039d0]: entering nsNegotiateAuth::GetNextToken()
    -1208550944[90039d0]: gss_init_sec_context() failed: Miscellaneous failure
    No credentials cache found
    This indicates that you do not have Kerberos tickets, and need to run kinit.
If you are able to run kinit successfully from your machine but you are unable to authenticate, you might see something like this in the log file:
-1208994096[8d683d8]: entering nsAuthGSSAPI::GetNextToken()
-1208994096[8d683d8]: gss_init_sec_context() failed: Miscellaneous failure
Server not found in Kerberos database
This generally indicates a Kerberos configuration problem. Make sure that you have the correct entries in the [domain_realm] section of the /etc/krb5.conf file. For example:
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
If nothing appears in the log it is possible that you are behind a proxy, and that proxy is stripping off the HTTP headers required for Negotiate authentication. As a workaround, you can try to connect to the server using HTTPS instead, which allows the request to pass through unmodified. Then proceed to debug using the log file, as described above.

46.4. Pluggable Authentication Modules (PAM)

Programs that grant users access to a system use authentication to verify each other's identity (that is, to establish that a user is who they say they are).
Historisch haben alle diese Programme ihren eigenen Weg, die Authentifizierung durchzuführen. Unter Red Hat Enterprise Linux sind viele dieser Programme so konfiguriert, dass sie einen zentralisierten Authentifizierungsprozess benutzen, der Pluggable Authentication Modules (PAM) genannt wird.
PAM benutzt eine auswechselbare, modulare Architektur, welche dem System-Administrator einen hohen Grad an Flexibilität beim Einstellen der Authentifizierungsregeln des Systems bereit stellt.
In most situations, the default PAM configuration file for a PAM-aware application is sufficient. Sometimes, however, it is necessary to edit a PAM configuration file. Because misconfiguration of PAM can compromise system security, it is important to understand the structure of these files before making any modifications. Refer to Abschnitt 46.4.3, „Format der PAM Konfigurationsdatei“ for more information.

46.4.1. Vorteile von PAM

PAM bietet die folgenden Vorteile:
  • ein gemeinsames Authentifikationsschema, das für viele verschiedene Anwendungen verwendet werden kann.
  • große Flexibilität und Kontrolle der Authentifizierung sowohl für Administratoren als auch Entwicklern von Anwendungen.
  • eine einfache, voll dokumentierte Bibliothek, die es Entwicklern erlaubt, Programme zu schreiben, ohne ihre eigenen Authentifikationsschemata entwickeln zu müssen.

46.4.2. PAM-Konfigurationsdateien

Das Verzeichnis /etc/pam.d/ enthält die PAM-Konfigurationsdateien. In früheren Versionen von PAM wurde die Datei /etc/pam.conf verwendet, die aber inzwischen veraltet ist und daher nur verwendet wird, wenn das Verzeichnis /etc/pam.d/ nicht existiert.

46.4.2.1. PAM Servicedateien

Für Applikationen oder Dienste, die PAM verwenden, existiert eine Datei im Verzeichnis /etc/pam.d/. Jede dieser Dateien ist nach dem Dienst benannt, für welchen diese den Zugriff kontrolliert.
Das Programm, das PAM nutzt, ist dafür zuständig, seinen Dienstnamen zu bestimmen und die entsprechende PAM-Konfigurationsdatei im Verzeichnis /etc/pam.d/ abzulegen. Das Programm login, zum Beispiel, definiert seinen Dienstnamen als /etc/pam.d/login.

46.4.3. Format der PAM Konfigurationsdatei

Jede PAM Konfigurationsdatei enthält eine Gruppe von Anweisungen, welche wie folgt formattiert sind:
<module interface>  <control flag>   <module name>   <module arguments>
Jedes dieser Elemente wird in den folgenden Abschnitten erklärt.

46.4.3.1. Modul-Schnittstellen

Es gibt vier Typen von PAM-Modulschnittstellen, welche den unterschiedlichen Aspekten des Authentifizierungsprozesses entsprechen:
  • auth — Diese Modulschnittstelle authentifiziert den User. Zum Beispiel erfragt und überprüft diese das Passwort. Module mit dieser Schnittstelle können ebenso Berechtigungsnachweise festlegen, wie z.B. Mitgliedschaft in einer Gruppe oder Kerberos-Tickets.
  • account — Diese Modulschnittstelle stellt sicher, dass der Zugriff erlaubt ist. Zum Beispiel können sie prüfen, ob der Account abgelaufen ist, oder ob der Benutzer zur Anmeldung um diese Uhrzeit zugelassen ist.
  • password — Diese Modulschnittstelle wird zur Abänderung von Benutzerpasswörtern verwendet.
  • session — This module interface configures and manages user sessions. Modules with this interface can also perform additional tasks that are needed to allow access, like mounting a user's home directory and making the user's mailbox available.

Anmerkung

Ein einzelnes Modul kann jedes oder alle der o.g. Modulschnittstellen bereitstellen. Zum Beispiel pam_unix.so liefert alle vier Modulschnittstellen.
In einer PAM Konfigurationsdatei wird als Erstes die Modulschnittstelle bestimmt. Eine typische Zeile in einer Konfiguration könnte wie folgt aussehen:
auth	required	pam_unix.so
This instructs PAM to use the pam_unix.so module's auth interface.
46.4.3.1.1. Modul-Schnittstellen stapeln
Module interface directives can be stacked, or placed upon one another, so that multiple modules are used together for one purpose. If a module's control flag uses the "sufficient" or "requisite" value (refer to Abschnitt 46.4.3.2, „Steuerflags“ for more information on these flags), then the order in which the modules are listed is important to the authentication process.
Das Stapeln macht es dem Administrator einfacher, zu erkennen, dass bereits einige Voraussetzungen erfüllt sind, bevor die Benutzerauthentifizierung stattgefunden hat. Zum Beispiel verwendet der Befehl reboot in der Regel mehrere gestapelte Module, wie in der PAM-Konfigurationsdatei zu sehen:
~]# cat /etc/pam.d/reboot
#%PAM-1.0
auth	sufficient	pam_rootok.so
auth	required	pam_console.so
#auth	include	system-auth
account	required	pam_permit.so
  • Die erste Zeile ist ein Kommentar und wird nicht abgearbeitet.
  • auth sufficient pam_rootok.so — Diese Zeile verwendet das Modul pam_rootok.so um zu überprüfen, ob der aktuelle Benutzer Root ist, indem es verifiziert, das dessen UID 0 ist. Ist dieser Test erfolgreich, werden keine weiteren Module herangezogen und der Befehl ausgeführt. Falls der Test scheitert, wird das nächste Modul konsultiert.
  • auth required pam_console.so — Diese Zeile verwendet das Modul pam_console.so, um zu versuchen, den Benutzer zu authentifizieren. Falls der Benutzer bereits an der Konsole angemeldet ist, überprüft pam_console.so, ob im Verzeichnis /etc/security/console.apps/ eine Datei mit demselben Namen wie der Systemdienst existiert (Neustart). Wenn eine solche Datei existiert, ist die Authentifizierung erfolgreich und die Kontrolle wird an das nächste Modul übergeben.
  • #auth include system-auth — Diese Zeile ist ein Kommentar und wird nicht abgearbeitet.
  • account required pam_permit.so — Diese Zeile verwendet das Modul pam_permit.so, um dem Root-Benutzer oder jeglichen an der Konsole angemeldeten Benutzern das Neustarten des Systems zu gestatten.

46.4.3.2. Steuerflags

Alle PAM-Module erstellen bei einer Überprüfung Fehler- oder Erfolgsmeldungen. Die Steuerflags geben PAM an, was mit diesen Ergebnissen geschehen soll. Während Module in einer bestimmten Reihenfolge gestapelt werden können, können Sie mit den Steuerflags einstellen, wie wichtig der Erfolg oder das Fehlschlagen des entsprechenden Moduls für die Authentifizierung des gesamten Dienstes ist.
Es gibt vier vordefinierte Steuerflags:
  • required — Solche Module müssen erfolgreich überprüft werden, bevor die Authentifizierung erfolgen kann. Wenn der Test an dieser Stelle scheitert, wird der Benutzer darüber nicht eher informiert, bis auch alle anderen Module, welche die gleiche Schnittstelle referenzieren, überprüft wurden.
  • requisite — Solche Module müssen ebenfalls überprüft werden, bevor die Authentifizierung erfolgreich sein kann. Wenn der Test an dieser Stelle scheitert, wird der Benutzer hierüber sofort informiert. Diese Mitteilung zeigt das erste fehlerhafte required oder requisite Modul an.
  • sufficient — Bei solchen Modulen werden Fehler ignoriert. Wenn ein sufficient Modul jedoch erfolgreich überprüft wurde, und kein required Modul fehlschlägt, werden keine weiteren Überprüfungen dieser Modulschnittstelle benötigt und diese wird erfolgreich authentifiziert.
  • optional — Solche Module sind für die erfolgreiche oder fehlgeschlagene Authentifizierung dieser Modulschnittstelle nicht von Bedeutung. Diese werden nur dann wichtig, wenn kein anderes Modul dieser Modulschnittstelle erfolgreich war oder fehlgeschlagen ist.

Wichtig

Die Reihenfolge, in der required Module aufgerufen werden, spielt keine Rolle. Bei den Steuerflags sufficient und requisite ist die Reihenfolge allerdings wichtig.
Eine neuere Syntax für Steuerflags für eine präzisere Kontrolle ist nun für PAM verfügbar.
The pam.d man page, and the PAM documentation, located in the /usr/share/doc/pam-<version-number>/ directory, where <version-number> is the version number for PAM on your system, describe this newer syntax in detail.

46.4.3.3. Modulname

Der Modulname liefert PAM den Namen des Pluggable Moduls, das die angegebene Modulschnittstelle enthält. Bei älteren Versionen von Red Hat Enterprise Linux wurde der vollständige Pfad zum Modul in der PAM-Konfigurationsdatei angegeben. Seit dem Aufkommen von Multilib-Systemen, die 64-Bit PAM Module im Verzeichnis /lib64/security/ speichern, wird der Verzeichnisname jedoch weggelassen, da die Applikation mit der richtigen Version von libpam verknüpft ist, welche die richtige Version des Moduls feststellen kann.

46.4.3.4. Modul-Argumente

PAM verwendet arguments, um während der Authentifizierung Informationen über eine bestimmte Modulschnittstelle an ein "Pluggable Module" zu übermitteln.
Zum Beispiel verwendet das Modul pam_userdb.so versteckte Dateien aus der Berkeley DB-Datei, um den Benutzer zu authentifizieren. Berkeley DB ist eine in vielen Anwendungen eingebundenes Open-Source Datenbank-System. Das Modul verwendet ein db Argument, welches die von Berkeley DB für den angeforderten Dienst zu verwendende Datenbank angibt.
The following is a typical pam_userdb.so line in a PAM configuration. The <path-to-file> is the full path to the Berkeley DB database file:
auth	required	pam_userdb.so db=<path-to-file>
Ungültige Argumente werden üblicherweise ignoriert und wirken sich auch nicht auf den Erfolg oder Misserfolg eines PAM-Moduls aus. Wenn ein ungültiges Argument auftaucht, erscheint jedoch normalerweise eine Fehlermeldung in der Datei /var/log/secure.

46.4.4. Beispiele für PAM-Konfigurationsdateien

Eine Konfigurationsdatei einer PAM-Anwendung sieht z.B. wie folgt aus:
#%PAM-1.0
auth	required  pam_securetty.so
auth	required  pam_unix.so nullok
auth	required  pam_nologin.so
account	required  pam_unix.so
password	required  pam_cracklib.so retry=3
password	required  pam_unix.so shadow nullok use_authtok
session	required  pam_unix.so
  • Die erste Zeile ist ein Kommentar, was durch das Hash-Zeichen (#) am Anfang der Zeile erkenntlich ist.
  • Die Zeilen zwei bis vier stellen drei Module in den Stack für die Authentifizierung bei der Anmeldung.
    auth required pam_securetty.soWenn der Benutzer sich als Root anzumelden versucht, stellt dieses Modul sicher, dass das Terminal, an dem er sich anmeldet, in der Datei /etc/securetty aufgeführt ist, falls eine solche Datei existiert.
    Wenn das tty nicht in der Datei aufgelistet ist, schlägt jeder Anmeldeversuch als Root fehl mit der Meldung Login incorrect.
    auth required pam_unix.so nullok — Dieses Modul fragt den Benutzer nach einem Passwort und überprüft dieses Passwort anhand der Information in /etc/passwd und in /etc/shadow, falls vorhanden.
    In the authentication phase, the pam_unix.so module automatically detects whether the user's password is in the passwd file or the shadow file. Refer to Abschnitt 35.6, „Shadow-Utilities“ for more information.
    • Das Argument nullok weist das Modul pam_unix.so an, ein leeres Passwort zuzulassen.
  • auth required pam_nologin.so — Dies ist der letzte Schritt der Authentifizierung. Es wird geprüft, ob die Datei /etc/nologin existiert. Falls sie vorhanden und der Benutzer nicht als Root angemeldet ist, schlägt die Authentifizierung fehl.

    Anmerkung

    In diesem Beispiel werden alle drei auth Module überprüft, auch wenn schon beim ersten auth Modul Fehler auftreten. Dies hindert einen Benutzer an der Erkenntnis, weshalb seine Authentifizierung abgelehnt wurde. Solch ein Wissen kann in der Hand eines Angreizu weiteren Schlussfolgerungen führen, wie das System geknackt werden kann.
  • account required pam_unix.so — Dieses Modul übernimmt jegliche Prüfung des Benutzeraccounts. Wenn z.B. Shadow-Passwörter aktiviert wurden, überprüft das Modul pam_unix.so, ob der Account abgelaufen ist oder ob der Benutzer keine Passwortänderung vorgenommen hat und die Kulanzperiode für eine Änderung abgelaufen ist.
  • password required pam_cracklib.so retry=3 — Ist ein Passwort abgelaufen, fordert die Passwort-Komponente despam_cracklib.so Moduls zur Eingabe eines neuen Passworts auf. Zusätzlich wird das neue Passwort getestet, um festzustellen, ob es einfach durch ein Wörterbuch-basiertes Programm zum Erkennen von Passwörtern erkannt werden kann.
    • Der Parameter retry=3 gibt an, dass im Falle eines Scheiterns des Tests beim ersten Mal, der Benutzer noch zwei weitere Chancen besitzt, um ein sicheres Passwort zu erstellen.
  • password required pam_unix.so shadow nullok use_authtok — This line specifies that if the program changes the user's password, it should use the password interface of the pam_unix.so module to do so.
    • The argument shadow instructs the module to create shadow passwords when updating a user's password.
    • Das Argument nullok weist das Modul an, dem Benutzer zu erlauben, sein Passwort von einem leeren Passwort zu ändern. Andernfalls wird ein Null-Passwort als Account-Sperre betrachtet.
    • Das letzte Argument dieser Zeile use_authtok ist ein gutes Beispiel für die Wichtigkeit der Reihenfolge beim Stapeln von PAM-Modulen. Dieses Argument weist das Modul an, den Benutzer nicht zur Eingabe eines neuen Passworts aufzufordern. Stattdessen wird jedes Passwort akzeptiert, das von vorherigen Passwort-Modulen verwendet wurde. Auf diese Weise müssen allen neuen Passwörter den pam_cracklib.so-Test für sichere Passwörter durchlaufen, bevor sie akzeptiert werden.
  • session required pam_unix.so — Die letzte Zeile weist die Sitzungsschnittstelle des Moduls pam_unix.soan, die Sitzung zu verwalten. Dieses Modul protokolliert bei jedem Start und Ende einer Sitzung den Benutzernamen und den Dienst-Typ in die Datei /var/log/secure. Wenn Sie weitere Funktionen benötigen, kann es durch das Stapeln mit anderen Sitzungsmodulen ergänzt werden.

46.4.5. Module erstellen

Sie können neue PAM-Module jederzeit erstellen oder hinzufügen, für die Verwendung mit PAM-bewussten Anwendungen.
Ein Entwickler entwickelt z.B. eine Methode zur Erstellung von Einmal-Passwörtern und schreibt ein PAM-Modul für dessen Unterstützung. Programme, die PAM benutzen, können dieses neue Modul und Passwort-Methode umgehend nutzen, ohne neu kompiliert oder anderweitig modifiziert zu werden.
Dies ermöglicht es Entwicklern und Systemadministratoren, Authentifizierungsmethoden für verschiedene Programme einzusetzen und zu testen, ohne sie neu zu kompilieren.
Documentation on writing modules is included in the /usr/share/doc/pam-<version-number>/ directory, where <version-number> is the version number for PAM on your system.

46.4.6. PAM und Administrative-Credential-Caching

Eine Reihe grafischer Verwaltungstools unter Red Hat Enterprise Linux geben Benutzern erweiterte Rechte über das Modul pam_timestamp.so für eine Zeitdauer von bis zu 5 Minuten. Es ist wichtig zu verstehen, wie dieser Mechanismus funktioniert, denn wenn ein Benutzer sich vom Terminal entfernt, während pam_timestamp.so ausgeführt wird, ist der Rechner offen für Manipulationen von jedem mit physischem Zugang zur Konsole.
Unter dem PAM Timestamp-Schema fragt die grafische Verwaltungsapplikation den Benutzer beim Start nach dem Root-Passwort. Nach der Authentifizierung, erzeugt das pam_timestamp.so-Modul standardmäßig eine Zeitstempeldatei im Verzeichnis /var/run/sudo/. Sollte diese Datei bereits existieren, werden andere grafische Verwaltungstools nicht nach dem Passwort fragen. Stattdessen aktualisiert das pam_timestamp.so-Modul die Zeitstempeldatei, wodurch dem Benutzer weitere fünf Minuten an unbehelligtem, administrativem Zugriff gewährt werden.
You can verify the actual state of the timestamp file by inspecting the /var/run/sudo/<user> file. For the desktop, the relevant file is unknown:root. If it is present and its timestamp is less than five minutes old, the credentials are valid.
Wenn eine Zeitstempeldatei existiert, wird dies durch ein Authentifizierungssymbol angezeigt, das im Benachrichtigungsbereich des Bedienungsfelds erscheint.
Das Authentifizierungssymbol
Illustration des Authentifizierungssymbols.
Abbildung 46.7. Das Authentifizierungssymbol

46.4.6.1. Entferne die Zeitstempeldatei

Es wird empfohlen, dass bevor Sie sich von einer Konsole entfernen, an der PAM läuft, die Zeitstempeldatei gelöscht wird. Um dies innerhalb der grafischen Umgebung zu tun, klicken Sie auf das Authentifizierungssymbol im Panel. Wenn das Dialog-Fenster erscheint, klicken Sie den Button Autorisierung vergessen.
Authentifizierungs-Dialog ablehnen
Illustration des Dialogfelds bei der Abweisung der Authentifizierung.
Abbildung 46.8. Authentifizierungs-Dialog ablehnen

Sie sollten Folgendes in Bezug auf die PAM Zeitstempeldatei beachten:
  • Wenn von einem Remote-System aus mit ssh angemeldet, benutzen Sie den Befehl /sbin/pam_timestamp_check -k root, um die Zeitstempeldatei zu löschen.
  • Sie müssen den Befehl /sbin/pam_timestamp_check -k root in demselben Fenster ausführen, in dem Sie die privilegierte Anwendung gestartet haben.
  • Nur der Benutzer, der ursprünglich daspam_timestamp.so-Modul aufgerufen hat, kann den Befehl /sbin/pam_timestamp_check verwenden. Melden Sie sich nicht als Root an, um diesen Befehl auszuführen.
  • Wenn Sie die Berechtigungsnachweise auf dem Desktop eliminieren möchten (ohne die Aktion Autorisation vergessen auf dem Symbol zu verwenden), benützen Sie folgenden Befehl:
    pam_timestamp_check -k root </dev/null >/dev/null 2>/dev/null
    Wenn die Ausführung dieses Befehls scheitert, werden lediglich die Berechtigungsnachweise (falls vorhanden) des pty, in dem Sie den Befehl ausführen, entfernt.
Für Informationen zum Löschen der Zeitstempeldatei mittels pam_timestamp_check, sehen Sie die Handbuch-Seiten von pam_timestamp_check.

46.4.6.2. Allgemeine pam_timestamp-Direktiven

Das pam_timestamp.so Modul akzeptiert verschiedene Direktiven. Nachfolgend sind die zwei am häufigsten verwendeten aufgeführt:
  • timestamp_timeout — Die Anzahl der Sekunden, die die Timestap-Datei gültig ist. Der Standardwert ist 300 Sekunden (fünf Minuten).
  • timestampdir — Gibt das Verzeichnis an, in dem die Zeitstempeldatei gespeichert ist. Der Standardwert ist /var/run/sudo.
Refer to Abschnitt 46.4.8.1, „Installierte Dokumentationen“ for more information about controlling the pam_timestamp.so module.

46.4.7. PAM und Besitzrechte von Geräten

Bei Red Hat Enterprise Linux kann der erste Benutzer, der sich an der physikalischen Konsole des Rechners anmeldet, bestimmte Geräte zu manipulieren und bestimmte Tasks, die normalerweise für den Root-Benutzer reserviert sind, auszuführen. Dies wird von einem PAM-Modul namens pam_console.so kontrolliert.

46.4.7.1. Besitzrechte von Geräten

Wenn sich ein Benutzer bei einem Red Hat Enterprise Linux System anmeldet, wird das pam_console.so Modul durch login oder die grafischen Anmeldeprogramme gdm und kdm aufgerufen. Ist dieser Benutzer der erste Benutzer, der sich an der physikalischen Konsole anmeldet — Konsolenbenutzer genannt —, bewilligt das Modul dem Benutzer das Besitzrecht einer ganzen Reihe von Geräten, die normalerweise im Besitz von Root sind. Der Konsolenbenutzer besitzt diese Geräte solange, bis die letzte lokale Sitzung für diesen Benutzer beendet ist. Sobald sich der Benutzer abgemeldet hat, wird das Besitzrecht auf seinen Standardwert zurückgesetzt.
Es sind alle Geräte betroffen, nicht nur Soundkarten, Disketten-Laufwerke und CD-ROM Laufwerke.
Dadurch hat der lokale Benutzer die Möglichkeit, diese Geräte zu bearbeiten, ohne als Root angemeldet zu sein, was allgemeine Tasks für den Konsolen-Benutzer vereinfacht.
Sie können die Liste der Geräte, die von pam_console.so kontrolliert werden, durch Bearbeiten der folgenden Dateien modifizieren:
  • /etc/security/console.perms
  • /etc/security/console.perms.d/50-default.perms
Sie können die Berechtigungen anderer Geräte als diejenigen, die in oben aufgeführten Dateien aufgelistet sind, ändern, oder die angegebenen Standardwerte außer Kraft setzen. Anstatt die Datei 50-default.perms zu modifizieren, sollten Sie eine neue Datei (z.B. xx-name.perms) anlegen und die erforderlichen Änderungen vornehmen. Der Name der neuen Standarddatei muss mit einer Zahl beginnen, die höher als 50 ist (z.B. 51-default.perms). Dies setzt die Standardwerte in der Datei 50-default.perms außer Kraft.

Warnung

If the gdm, kdm, or xdm display manager configuration file has been altered to allow remote users to log in and the host is configured to run at runlevel 5, it is advisable to change the <console> and <xconsole> directives in the /etc/security/console.perms to the following values:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :0\.[0-9] :0
<xconsole>=:0\.[0-9] :0
Dadurch werden Remote-Benutzer davon abhalten, Zugriff auf Geräte und Applikationen mit eingeschränktem Zugang auf dem Rechner zu erhalten.
If the gdm, kdm, or xdm display manager configuration file has been altered to allow remote users to log in and the host is configured to run at any multiple user runlevel other than 5, it is advisable to remove the <xconsole> directive entirely and change the <console> directive to the following value:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]*

46.4.7.2. Zugriff zu Applikationen

Der Konsolenbenutzer hat ebenfalls Zugriff auf bestimmte Programme, die zur Verwendung im Verzeichnis /etc/security/console.apps/ konfiguriert sind.
Dieses Verzeichnis enthält Konfigurationsdateien, die es dem Konsolenbenutzer ermöglichen, bestimmte Anwendungen in /sbin und /usr/sbin auszuführen.
Diese Konfigurationsdateien besitzen den gleichen Namen wie die Anwendungen, die diese einrichten.
Eine wichtige Gruppe von Applikationen, zu denen der Konsolenbenutzer Zugriff hat, sind folgende drei Programme zum Abschalten und Neubooten des Systems:
  • /sbin/halt
  • /sbin/reboot
  • /sbin/poweroff
Da diese Programme Applikationen sind, die PAM verwenden, benötigen sie das pam_console.so Modul als Voraussetzung eines Einsatzes.

46.4.8. Zusätzliche Ressourcen

Folgend finden Sie eine Aufstellung von Informationsquellen zur Verwendung und Konfiguration von PAM. Zusätzlich zu diesen Quellen sollten Sie sich mit den PAM-Konfigurationsdateien in Ihrem System vertraut machen, um deren Aufbau besser zu verstehen.

46.4.8.1. Installierte Dokumentationen

  • PAM-bezogene Handbuch-Seiten — Es gibt eine Reihe von Handbuch-Seiten für die verschiedenen Applikationen und Konfigurationsdateien, die in Bezug zu PAM stehen. Nachfolgend ist eine Liste der wichtigeren Handbuch-Seiten aufgeführt.
    Konfigurationsdateien
    • pam — Gute Einführungsinformationen zu PAM, inklusive der Struktur und des Zwecks der PAM Konfigurationsdateien.
      Beachten Sie bitte, dass diese Handbuch-Seite sowohl /etc/pam.conf, als auch individuelle Konfigurationsdateien im Verzeichnis /etc/pam.d/ behandelt. Standardmäßig verwendet Red Hat Enterprise Linux die individuellen Konfigurationsdateien des Verzeichnisses /etc/pam.d/ und ignoriert /etc/pam.conf, auch wenn diese existiert.
    • pam_console — Beschreibt die Funktion des pam_console.so-Moduls. Beschreibt auch die entsprechende Syntax eines Eintrags in der PAM-Konfigurationsdatei.
    • console.apps — Beschreibt das Format und die verfügbaren Optionen der Konfigurationsdatei /etc/security/console.apps, die festlegt, auf welche Applikationen der durch PAM zugewiesene Konsolenbenutzer zugreifen kann.
    • console.perms — Beschreibt das Format und die verfügbaren Optionen der Konfigurationsdatei /etc/security/console.perms, die die Zugriffsrechte des durch PAM zugewiesenen Konsolenbenutzers festlegt.
    • pam_timestamp — Beschreibt das pam_timestamp.so-Modul.
  • /usr/share/doc/pam-<version-number> — Contains a System Administrators' Guide, a Module Writers' Manual, and the Application Developers' Manual, as well as a copy of the PAM standard, DCE-RFC 86.0, where <version-number> is the version number of PAM.
  • /usr/share/doc/pam-<version-number>/txts/README.pam_timestamp — Contains information about the pam_timestamp.so PAM module, where <version-number> is the version number of PAM.

46.4.8.2. Hilfreiche Websites

  • http://www.kernel.org/pub/linux/libs/pam/ — Die wichtigste Website für Linux-PAM. Sie enthält Informationen über die verschiedenen PAM-Module und Anwendungen, die verwendet oder entwickelt werden, sowie FAQ und zusätzliche Dokumentationen über PAM.

    Anmerkung

    Die Dokumentation auf der oben aufgeführten Webseite ist für die zuletzt veröffentlichte Upstream-Version von PAM und ist möglicherweise nicht 100% zutreffend für die in Red Hat Enterprise Linux mitgelieferte PAM-Version.

46.5. TCP-Wrapper und xinetd

Controlling access to network services is one of the most important security tasks facing a server administrator. Red Hat Enterprise Linux provides several tools for this purpose. For example, an iptables-based firewall filters out unwelcome network packets within the kernel's network stack. For network services that utilize it, TCP Wrappers add an additional layer of protection by defining which hosts are or are not allowed to connect to "wrapped" network services. One such wrapped network service is the xinetd super server. This service is called a super server because it controls connections to a subset of network services and further refines access control.
Abbildung 46.9, „Zugriffskontrolle zu Netzwerkdiensten“ is a basic illustration of how these tools work together to protect network services.
Zugriffskontrolle zu Netzwerkdiensten
Teil A: Flowchart zur Zugriffskontrolle zu Netzwerkdiensten
Abbildung 46.9. Zugriffskontrolle zu Netzwerkdiensten

This chapter focuses on the role of TCP Wrappers and xinetd in controlling access to network services and reviews how these tools can be used to enhance both logging and utilization management. Refer to Abschnitt 46.9, „IPTables“ for information about using firewalls with iptables.

46.5.1. TCP Wrappers

Das TCP-Wrapper-Paket (tcp_wrappers) ist standardmäßig installiert und stellt Host-basierte Zugriffskontrolle für Netzwerkdienste zur Verfügung. Die wichtigste Komponente in diesem Paket ist die /usr/lib/libwrap.a-Bibliothek. Im Wesentlichen handelt es sich bei einem TCP-gewrappten Dienst um einen Dienst, der gegen die libwrap.a-Bibliothek kompiliert wurde.
When a connection attempt is made to a TCP-wrapped service, the service first references the host's access files (/etc/hosts.allow and /etc/hosts.deny) to determine whether or not the client is allowed to connect. In most cases, it then uses the syslog daemon (syslogd) to write the name of the requesting client and the requested service to /var/log/secure or /var/log/messages.
Wenn es einem Client erlaubt ist sich zu verbinden, geben TCP-Wrapper die Kontrolle über die Verbindung an den angeforderten Dienst ab und greifen nicht mehr in die Kommunikation zwischen Client und Server ein.
Zusätzlich zu Zugriffskontrolle und Protokollierung können TCP-Wrapper Befehle ausführen, um mit dem Client zu interagieren, ehe die Kontrolle der Verbindung zum angeforderten Netzwerkdienst übergeben oder abgelehnt wird.
Because TCP Wrappers are a valuable addition to any server administrator's arsenal of security tools, most network services within Red Hat Enterprise Linux are linked to the libwrap.a library. Some such applications include /usr/sbin/sshd, /usr/sbin/sendmail, and /usr/sbin/xinetd.

Anmerkung

Um festzustellen, ob die Binärdatei eines Netzwerkdienstes mit libwrap.a verbunden ist, geben Sie folgenden Befehl als root-Benutzer ein:
ldd <binary-name> | grep libwrap
Replace <binary-name> with the name of the network service binary.
Falls der Befehl ohne Ausgabe direkt an die Kommandozeile zurückgesendet wird, so ist der Netzwerkdienst nicht mit libwrap.a verbunden.
Das folgende Beispiel zeigt, dass /usr/sbin/sshd mit libwrap.a verbunden ist:
~]# ldd /usr/sbin/sshd | grep libwrap
        libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00655000)
~]#

46.5.1.1. Vorteile von TCP-Wrappern

TCP-Wrapper bieten folgende Vorteile im Vergleich zu anderen Kontrollmethoden für Netzwerkdienste:
  • Transparenz im Hinblick auf den Client und den gewrappten Netzwerkdienst — Weder der sich verbindende Client noch der gewrappte Netzwerkdienst merken, dass TCP-Wrapper in Gebrauch sind. Berechtigte Benutzer sind angemeldet und mit dem geforderten Dienst verbunden, während Verbindungen verbotener Clients fehlschlagen.
  • Zentralisiertes Management mehrerer Protokolle — TCP-Wrapper arbeiten unabhängig von den Netzwerkdiensten, die sie schützen. Dadurch können sich mehrere Server-Applikationen einen gemeinsamen Satz von Konfigurationsdateien der Zugriffskontrolle teilen, was das Management maßgeblich vereinfacht.

46.5.2. TCP-Wrapper Konfigurationsdateien

Um zu bestimmen, ob es einem Client erlaubt ist, sich mit einem bestimmtenDienst zu verbinden, verwenden TCP-Wrapper die folgenden beiden Dateien, die auch als hosts access-Dateien bezeichnet werden:
  • /etc/hosts.allow
  • /etc/hosts.deny
Wenn bei einem TCP-gewrappten Dienst eine Client-Anfrage eingeht, führt er die folgenden Schritte durch:
  1. Er verweist auf /etc/hosts.allow. — Der TCP-gewrappte Dienst parst die /etc/hosts.allow-Datei sequentiell und wendet die erste Regel an, die für diesen Dienst festgelegt wurde. Wenn eine dazu passende Regel ausfindig gemacht werden kann, erlaubt der Dienst die Verbindung. Wenn nicht, geht er zum nächsten Schritt über.
  2. Verweist auf /etc/hosts.deny. — Der TCP-gewrappte Dienst parst die /etc/hosts.deny-Datei sequentiell. Wenn eine dazu passende Regel ausfindig gemacht werden kann, lehnt der Dienst die Verbindung ab. Wenn nicht, wird der Zugang zu diesem Dienst bewilligt.
Die folgenden Punkte sind wichtig, wenn TCP-Wrapper verwendet werden, um Netzwerkdienste zu schützen:
  • Da Zugriffsregeln in hosts.allow zuerst angewendet werden, haben diese Vorrang vor den Regeln in hosts.deny. Sollte der Zugriff zu einem Dienst in hosts.allow erlaubt sein, so wird eine den Zugriff verbietende Regel in hosts.deny ignoriert.
  • Da alle Regeln von oben nach unten abgearbeitet werden, wird lediglich die erste Regel für einen dazu passenden Dienst angewendet, weswegen die Reihenfolge der Regeln extrem wichtig ist.
  • Sollte keine Regeln für den Dienst gefunden werden oder keine der Dateien vorhanden sein, so wird der Zugriff zu diesem Dienst gewährt.
  • TCP-gewrappte Dienste speichern Regeln für die Hosts-Zugriffsdateien nicht, jegliche Änderungen an hosts.allow oder hosts.deny treten daher und auch ohne Neustart der Netzwerkdienste sofort in Kraft.

Warnung

Sollte die letzte Zeile einer Hosts-Zugriffsdatei kein Zeilenvorschubzeichen sein (durch Drücken der Enter-Taste erzeugt), schlägt die letzte Regel in der Datei fehl, und ein Fehler wird entweder nach /var/log/messages oder /var/log/secure protokolliert. Dies ist auch der Fall für Regelzeilen, die ohne Verwendung des Backslash (linkseitiger Schrägstrich) auf mehrere Zeilen verteilt sind. Das folgende Beispiel zeigt den wichtigsten Teil einer Protokollmeldung für eine durch genannte Gründe fehlerhafte Regel:
warning: /etc/hosts.allow, line 20: missing newline or line too long

46.5.2.1. Formatierung von Zugriffsregeln

Das Format der beiden Dateien /etc/hosts.allow and /etc/hosts.deny ist identisch. Jede Regel muss in einer neuen Zeile beginnen. Leere Zeilen oder Zeilen, die mit dem Rautenzeichen (#) beginnen, werden nicht berücksichtigt.
Jede Regel verwendet das folgende, grundlegende Format, um den Zugriff zu Netzwerkdiensten zu kontrollieren:
<daemon list>: <client list> [: <option>: <option>: ...]
  • <daemon list> — A comma-separated list of process names (not service names) or the ALL wildcard. The daemon list also accepts operators (refer to Abschnitt 46.5.2.1.4, „Operatoren“) to allow greater flexibility.
  • <client list> — A comma-separated list of hostnames, host IP addresses, special patterns, or wildcards which identify the hosts affected by the rule. The client list also accepts operators listed in Abschnitt 46.5.2.1.4, „Operatoren“ to allow greater flexibility.
  • <option> — An optional action or colon-separated list of actions performed when the rule is triggered. Option fields support expansions, launch shell commands, allow or deny access, and alter logging behavior.

Anmerkung

Weitere Informationen zu den oben erwähnten Fachbegriffen finden Sie an anderen Stellen in diesem Handbuch:
Nachfolgend sehen Sie ein einfaches Beispiel für eine Hosts-Zugriffsregel:
vsftpd : .example.com
Diese Regel leitet TCP-Wrapper dazu an, nach Verbindungen zum FTP-Daemon (vsftpd) von jedem Host in der example.com-Domain Ausschau zu halten. Sollte diese Regel in hosts.allowauftreten, so wird die Verbindung angenommen. Sollte diese Regel in hosts.deny vorkommen, so wird die Verbindung abgelehnt.
Folgendes Beispiel einer Hosts-Zugriffsregel ist komplizierter und verwendet zwei Optionsfelder:
sshd : .example.com  \ : spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ : deny
Beachten Sie, dass in diesem Beispiel jedem der Optionsfelder ein Backslash (\) vorausgeht. Die Verwendung eines Backslash beugt einem Ausfall auf Grund einer zu langen Regelzeile vor.
This sample rule states that if a connection to the SSH daemon (sshd) is attempted from a host in the example.com domain, execute the echo command to append the attempt to a special log file, and deny the connection. Because the optional deny directive is used, this line denies access even if it appears in the hosts.allow file. Refer to Abschnitt 46.5.2.2, „Optionsfelder“ for a more detailed look at available options.
46.5.2.1.1. Platzhalter
Platzhalter erlauben TCP-Wrappern eine einfachere Suche von Gruppen von Daemons oder Hosts. Diese werden am häufigsten im Client-Listen-Feld der Zugriffsregel verwendet.
Die folgenden Platzhalter sind verfügbar:
  • ALL — Passt für alles. Kann sowohl für die Daemon-Liste als auch für die Client-Liste verwendet werden.
  • LOCAL — Für jeden Host, der keinen Punkt (.) enthält, wie localhost.
  • KNOWN — Für jeden Host, dessen Host-Name und Host-Adresse oder der Benutzer bekannt sind.
  • UNKNOWN — Für jeden Host, dessen Host-Name und Host-Adresse oder der Benutzer unbekannt sind.
  • PARANOID — Für jeden Host, dessen Host-Name nicht mit der Host-Adresse übereinstimmt.

Achtung

Die Platzhalter KNOWN, UNKNOWN, and PARANOID sollten mit Vorsicht verwendet werden, da deren ordnungsgemäßer Betrieb von einem funktionierenden DNS-Server abhängt. Eine Unterbrechung in der Namensauflösung kann eine Zugriffsverweigerung auf Dienste für berechtigte Benutzer zur Folge haben kann.
46.5.2.1.2. Patterns
Patterns können im Client-Listen-Feld von Zugriffsregeln benutzt werden, um Gruppen von Client-Hosts genauer zu bestimmen.
Nachfolgend sehen Sie eine Liste der gängigsten Patterns für Einträge in der Client-Liste:
  • Ein mit einem Punkt (.) beginnender Host-Name — Ein Punkt am Anfang eines Host-Namens bewirkt, dass für alle Host-Rechner, die in diesem Hostnamen enden, die Regel angewandt wird. Das folgende Beispiel wird auf jeden Host in der example.com Domain angewendet:
    ALL : .example.com
  • Eine mit einem Punkt (.) endende IP-Adresse — Ein Punkt am Ende einer IP-Adresse bewirkt, dass auf alle Hosts, deren IP-Adresse mit derselben numerischen Gruppe beginnt, die Regel angewendet wird. Das folgende Beispiel trifft auf alle Hosts im 192.168.x.x-Netzwerk zu:
    ALL : 192.168.
  • IP address/netmask pair — Netmask expressions can also be used as a pattern to control access to a particular group of IP addresses. The following example applies to any host with an address range of 192.168.0.0 through 192.168.1.255:
    ALL : 192.168.0.0/255.255.254.0

    Wichtig

    Wenn im IPv4-Adressraum gearbeitet wird, so werden paarweise Deklarationen von Adresse/Präfixlänge (prefixlen) (CIDR Notation) nicht unterstützt. Lediglich IPv6-Regeln können dieses Format verwenden.
  • [IPv6 Adresse]/prefixlen Paar — [net]/prefixlen Paare können auch als Pattern verwendet werden, um den Zugriff zu einer bestimmten Gruppe von IPv6-Adressen zu kontrollieren. Das folgende Beispiel trifft auf jeden Host mit einem Adressbereich von 3ffe:505:2:1:: bis 3ffe:505:2:1:ffff:ffff:ffff:ffff zu:
    ALL : [3ffe:505:2:1::]/64
  • Ein Asterisk (*) — Asteriske können für komplette Gruppen von Host-Namen oder IP-Adressen verwendet werden, solange diese nicht in einer Client-Liste verwendet werden, die bereits andere Arten von Patterns verwendet. Das folgende Beispiel würde für alle Hosts in der example.com-Domain gelten:
    ALL : *.example.com
  • Der Schrägstrich (/) — Wenn die Client-Liste mit einem Schrägstrich beginnt, wird diese als Dateiname behandelt. Dies ist nützlich wenn Regeln, die eine große Anzahl von Hosts angeben, benötigt werden. Das folgende Beispiel nimmt Bezug auf TCP-Wrapper zur /etc/telnet.hosts-Datei aller Telnet-Verbindungen:
    in.telnetd : /etc/telnet.hosts
Andere, weniger häufig verwendete Patterns werden auch von TCP-Wrappern angenommen. Weitere Informationen finden Sie auf der hosts_access man-5-Seite.

Warnung

Seien Sie sehr vorsichtig bei der Verwendung von Host- und Domain-Namen. Ein Angreifer könnte verschiedene Tricks anwenden, um die richtige Namensauflösung zu umgehen. Zusätzlich hindert eine Unterbrechung im DNS-Dienst sogar berechtigte Benutzer an der Verwendung von Netzwerkdiensten. Es empfiehlt sich daher IP-Adressen zu verwenden, wann immer es geht.
46.5.2.1.3. Portmap und TCP-Wrapper
Portmap's implementation of TCP Wrappers does not support host look-ups, which means portmap can not use hostnames to identify hosts. Consequently, access control rules for portmap in hosts.allow or hosts.deny must use IP addresses, or the keyword ALL, for specifying hosts.
Außerdem werden Änderungen an portmap-Zugriffskontrollregeln nicht sofort wirksam. Es ist möglich, dass Sie den portmap-Dienst neu starten müssen.
Da der Betrieb von weit verbreiteten Diensten wie NIS und NFS von portmap abhängt, bedenken Sie zuerst diese Einschränkungen.
46.5.2.1.4. Operatoren
Die Zugriffskontrollregeln kennen zur Zeit einen Operator, EXCEPT. Dieser kann sowohl in der Daemon- als auch in der Client-Liste einer Regel verwendet werden.
Der EXCEPT-Operator erlaubt spezifische Ausnahmen an breiter gefächerten Treffern in einer Regel.
Im folgenden Beispiel der hosts.allow-Datei, ist es allen example.com Hosts gestattet, sich mit allen Diensten mit Ausnahme von cracker.example.com zu verbinden:
ALL: .example.com EXCEPT cracker.example.com
In einem anderen Beispiel der hosts.allow-Datei können Clients des 192.168.0.x-Netzwerks alle Dienste benutzen, mit der Ausnahme von FTP:
ALL EXCEPT vsftpd: 192.168.0.

Anmerkung

Aus organisatorischen Gründen, ist es oft einfacher die Benutzung von EXCEPT-Operatoren zu vermeiden. Dadurch können andere Administratoren schnell die gewünschten Dateien durchsuchen, um zu sehen, welche Hosts Zugriff und welche keinen Zugriff auf bestimmte Dienste haben sollen, ohne dass mehrere EXCEPT-Operatoren durchsucht werden müssen.

46.5.2.2. Optionsfelder

Zusätzlich zu den grundlegenden Regeln, die den Zugriff gewähren oder ablehnen, unterstützt die Red Hat Enterprise Linux Implementierung von TCP-Wrappern Erweiterungen zu der Zugriffskontrollsprache durch Optionsfelder. Durch Verwendung der Optionsfelder innerhalb einer Hosts-Zugriffsregel, können Administratoren eine Reihe von Tasks erledigen, wie der Änderung des Protokollierungsverhaltens, der Zusammenfassung der Zugriffskontrolle und der Ausführung von Shell-Befehlen.
46.5.2.2.1. Protokollierung
Optionsfelder ermöglichen es Administratoren, die Protokoll-Einstellungen und den Schwierigkeitsgrad für eine Regel einfach zu ändern, indem die severity-Anweisung verwendet wird.
Im folgenden Beispiel werden Verbindungen zum SSH-Daemon von jedem Host in der example.com-Domain in die Standard-Protokolldatei authpriv syslog geschrieben (da kein Wert angegeben ist), und dies mit einer Priorität von emerg:
sshd : .example.com : severity emerg
Es ist auch möglich, eine "Facility" mit der severity-Option anzugeben. Das folgende Beispiel protokolliert alle Hosts aus der example.com-Domain, die versuchen, eine SSH-Verbindung herzustellen, zum local0-Protokoll, mit einer Priorität von alert:
sshd : .example.com : severity local0.alert

Anmerkung

In der Praxis wird dieses Beispiel nicht funktionieren, so lange der Syslog-Daemon (syslogd) nicht dazu konfiguriert ist, Protokollmeldungen zu local0 zu schreiben. Weitere Informationen zur Konfiguration von benutzerdefinierten Protokollen finden Sie auf der syslog.conf man-Seite.
46.5.2.2.2. Zugriffskontrolle
Optionsfelder erlauben es den Administratoren, Hosts mit einer einzelnen Regel explizit anzunehmen oder abzulehnen, indem sie die allow oder deny -Anweisung als letzte Option hinzufügen.
Die folgenden Regeln etwa erlauben SSH-Verbindungen von client-1.example.com, lehnen aber Verbindungsversuche von client-2.example.com ab:
sshd : client-1.example.com : allow
sshd : client-2.example.com : deny
Durch das Erlauben der Zugriffskontrolle auf einer pro-Regel Basis, erlaubt das Optionsfeld Administratoren alle Zugriffsregeln in einer einzelnen Datei zu vereinen: Entweder in hosts.allow oder in hosts.deny. Einige halten dies für einen einfacheren Weg die Zugriffsregeln zu organisieren.
46.5.2.2.3. Shell-Befehle
Optionsfelder erlauben Zugriffsregeln durch die folgenden beiden Anweisungen Shell-Befehle auszuführen:
  • spawn — Startet einen Shell-Befehl als "Child"-Prozess (d.h. als untergeordneten Prozess). Diese Anweisung kann Aufgaben wie die Verwendung von /usr/sbin/safe_finger durchführen, um weitere Informationen über den anfragenden Client zu erhalten oder spezielle Protokolldateien mit dem echo-Befehl erzeugen.
    Im folgenden Beispiel versuchen Clients auf einen Telnet-Dienst von der example.com-Domain aus zuzugreifen, was in einer speziellen Protokolldatei festgehalten wird:
    in.telnetd : .example.com \
    	: spawn /bin/echo `/bin/date` from %h>>/var/log/telnet.log \
    	: allow
  • twist — Replaces the requested service with the specified command. This directive is often used to set up traps for intruders (also called "honey pots"). It can also be used to send messages to connecting clients. The twist directive must occur at the end of the rule line.
    Im folgenden Beispiel wird Clients, die versuchen von der example.com-Domain aus auf FTP-Dienste zuzugreifen, mittels echo-Befehl eine Nachricht gesendet:
    vsftpd : .example.com \
    	: twist /bin/echo "421 This domain has been black-listed. Access denied!"
Weitere Informationen zur Verwendung von Shell-Befehl Optionen finden Sie auf der hosts_options man-Seite.
46.5.2.2.4. Erweiterungen
Erweiterungen, die im Zusammenhang mit den spawn und twist-Anweisungen verwendet werden, liefern Informationen über den Client, den Server sowie die beteiligten Prozesse.
Nachfolgend ist eine Liste der unterstützten Erweiterungen:
  • %a — Returns the client's IP address.
  • %A — Returns the server's IP address.
  • %c — Verschiedene Client-Informationen, wie zum Beispiel der Benutzer- und Host-Name oder der Benutzername und die IP-Adresse.
  • %d — Der Name des Daemon-Prozesses.
  • %h — Returns the client's hostname (or IP address, if the hostname is unavailable).
  • %H — Returns the server's hostname (or IP address, if the hostname is unavailable).
  • %n — Returns the client's hostname. If unavailable, unknown is printed. If the client's hostname and host address do not match, paranoid is printed.
  • %N — Returns the server's hostname. If unavailable, unknown is printed. If the server's hostname and host address do not match, paranoid is printed.
  • %p — Returns the daemon's process ID.
  • %s — Verschiedene Server-Informationen, wie zum Beispiel der Daemon-Prozess und die Host- oder IP-Adresse des Servers.
  • %u — Returns the client's username. If unavailable, unknown is printed.
Die folgende Beispielregel verwendet eine Erweiterung in Verbindung mit dem spawn-Befehl, um den Host des Clients in einer benutzerdefinierten Protokolldatei zu identifizieren.
Sollte ein Verbindungsversuch zum SSH-Daemon (sshd) von einem Host in der example.com-Domain unternommen werden, führe den echo-Befehl aus, um den Versuch in eine spezielle Protokolldatei zu schreiben, einschließlich des Host-Namens des Clients (unter Verwendung der %h-Erweiterung):
sshd : .example.com  \
	: spawn /bin/echo `/bin/date` access denied to %h>>/var/log/sshd.log \
	: deny
Auf ähnliche Weise können Erweiterungen dazu verwendet werden, um Nachrichten auf bestimmte Clients abzustimmen. Im folgenden Beispiel, wird denjenigen Clients, die versuchen auf FTP-Dienste von der example.com-Domain aus zuzugreifen mitgeteilt, dass diese vom Server ausgeschlossen wurden:
vsftpd : .example.com \
: twist /bin/echo "421 %h has been banned from this server!"
Eine vollständige Erklärung der verfügbaren Erweiterungen, wie auch der zusätzlichen Zugriffskontroll-Optionen finden Sie in Abschnitt 5 der man-Seiten von hosts_access (man 5 hosts_access) sowie der man-Seite für hosts_options.
Refer to Abschnitt 46.5.5, „Zusätzliche Ressourcen“ for more information about TCP Wrappers.

46.5.3. xinetd

Der xinetd-Daemon ist ein TCP-gewrappter Super-Service, der den Zugriff auf einer Anzahl beliebter Netzwerkdienste wie FTP, IMAP und Telnet bereitstellt. Er bietet außerdem Service-spezifische Konfigurationsoptionen zur Zugriffskontrolle, erweiterte Protokollierung, Umleitungen sowie Ressourcen-Einsatzkontrolle.
Wenn ein Client einen Verbindungsversuch mit einem durch xinetd gesteuerten Netzwerkdienst unternimmt, so erhält der Super-Service die Anfrage und prüft auf Zugriffskontroll-Regeln der TCP-Wrapper.
Falls der Zugriff gewährt wird, so verifiziert xinetd, dass die Verbindung unter den eigenen Zugriffsregeln für diesen Dienst gestattet ist. Es wird auch geprüft, ob dem Dienst mehr Ressourcen zugewiesen werden können und dass keine definierten Regeln verletzt werden.
Falls alle diese Bedingungen erfüllt sind (d.h. der Zugriff auf den Dienst gewährt wurde; der Dienst seine Ressourcengrenze nicht erreicht hat und keine definierten Regeln gebrochen werden), so startet xinetd eine Instanz des angefragten Dienstes und gibt die Kontrolle über die Verbindung weiter. Sobald die Verbindung besteht, greift xinetd nicht in die Kommunikation zwischen Client Host und Server ein.

46.5.4. xinetd-Konfigurationsdateien

Die Konfigurationsdateien für xinetd lauten wie folgt:
  • /etc/xinetd.conf — Die allgemeingültige xinetd-Konfigurationsdatei.
  • /etc/xinetd.d/ — Das Verzeichnis, das alle Service-spezifischen Dateien enthält.

46.5.4.1. Die /etc/xinetd.conf Datei

The /etc/xinetd.conf file contains general configuration settings which affect every service under xinetd's control. It is read when the xinetd service is first started, so for configuration changes to take effect, you need to restart the xinetd service. The following is a sample /etc/xinetd.conf file:
defaults
{
         instances               = 60
	 log_type                = SYSLOG	authpriv
	 log_on_success          = HOST PID
	 log_on_failure          = HOST
	 cps                     = 25 30
}
includedir /etc/xinetd.d
Diese Zeilen kontrollieren verschiedene Aspekte von xinetd:
  • instances — Bestimmt die Höchstzahl von Anfragen, die xinetd gleichzeitig bearbeiten kann.
  • log_type — Weist xinetd an, die Protokolldatei authpriv zu verwenden, die Protokolleinträge in die /var/log/secure-Datei schreibt. Das Hinzufügen einer Direktive wie FILE /var/log/xinetdlog würde eine benutzerdefinierte Protokolldatei mit dem Namen xinetdlog im /var/log/-Verzeichnis erstellen.
  • log_on_success — Configures xinetd to log successful connection attempts. By default, the remote host's IP address and the process ID of the server processing the request are recorded.
  • log_on_failure — Konfiguriert xinetd zur Protokollierung, wenn die Verbindung fehlschlägt oder nicht zugelassen ist.
  • cps — Konfiguriert xinetd so, dass für einen bestimmten Dienst nicht mehr als 25 Verbindungen pro Sekunde zugelassen werden. Wenn diese Grenze erreicht ist, wird der Dienst für 30 Sekunden zurückgezogen.
  • includedir /etc/xinetd.d/ — Includes options declared in the service-specific configuration files located in the /etc/xinetd.d/ directory. Refer to Abschnitt 46.5.4.2, „Das /etc/xinetd.d/ Verzeichnis“ for more information.

Anmerkung

Often, both the log_on_success and log_on_failure settings in /etc/xinetd.conf are further modified in the service-specific configuration files. More information may therefore appear in a given service's log file than the /etc/xinetd.conf file may indicate. Refer to Abschnitt 46.5.4.3.1, „Protokoll-Optionen“ for further information.

46.5.4.2. Das /etc/xinetd.d/ Verzeichnis

Das Verzeichnis /etc/xinetd.d/ enthält die Konfigurationsdateien für jeden einzelnen Dienst, der von xinetd verwaltet wird sowie die Dateinamen, die mit dem Dienst korrelieren. Wie xinetd.conf wird diese Datei nur gelesen, wenn der xinetd-Dienst gestartet wird. Um Änderungen wirksam werden zu lassen, muss der Administrator den xinetd-Dienst neu starten.
Die Dateien im /etc/xinetd.d/-Verzeichnis verwenden dieselben Konventionen und Optionen wie /etc/xinetd.conf. Der Hauptgrund dafür, dass sich diese in eigenen Konfigurationsdateien befinden, ist die Anpassung zu vereinfachen und andere Dienste damit weniger zu beeinflussen.
Um einen Überblick über die Struktur dieser Dateien zu erhalten, betrachten Sie die Datei /etc/xinetd.d/krb5-telnet:
service telnet
{
         flags           = REUSE
	 socket_type     = stream
	 wait            = no
	 user            = root
	 server          = /usr/kerberos/sbin/telnetd
	 log_on_failure  += USERID
	 disable         = yes
}
Diese Zeilen kontrollieren verschiedene Aspekte des telnet-Dienstes:
  • service — Definiert den Dienstnamen, meist einer in der /etc/services-Datei gelisteten.
  • flags — Legt jegliche Anzahl von Attributen für die Verbindung fest. REUSE weist xinetd an, den Socket für eine Telnet-Verbindung wiederzuverwenden.

    Anmerkung

    Das REUSE-Flag wurde verworfen. Alle Dienste verwenden jetzt implizit das REUSE-Flag (Bug).
  • socket_type — Setzt den Netzwerk-Sockettyp auf stream.
  • wait — Legt fest, ob der Dienst "einthreadig" (yes) oder "mehrthreadig" (no) ist.
  • user — Legt fest unter welcher Benutzerkennung (User-ID) der Prozess abläuft.
  • server — Legt die ausführbare Binärdatei fest.
  • log_on_failure — Bestimmt die Protokoll-Parameter für log_on_failure zusätzlich zu den in xinetd.conf bereits definierten.
  • disable — Legt fest, ob der Dienst einthreadig (yes) oder mehrthreadig (no) ist.
Weitere Informationen zu diesen Optionen und deren Gebrauch finden Sie auf der xinetd.conf man-Seite.

46.5.4.3. Änderungen an xinetd-Konfigurationsdateien

Es gibt eine große Anzahl an Anweisungen für durch xinetd geschützte Dienste. Dieser Abschnitt beschreibt einige der häufig verwendeten Optionen.
46.5.4.3.1. Protokoll-Optionen
Die folgenden Protokoll-Optionen stehen für /etc/xinetd.conf und die Service-spezifischen Konfigurationsdateien im /etc/xinetd.d/-Verzeichnis zur Verfügung.
Nachfolgend sehen Sie eine Liste der häufig verwendeten Protokoll-Optionen:
  • ATTEMPT — Protokolliert einen fehlgeschlagenen Versuch (log_on_failure).
  • DURATION — Protokolliert die Zeitdauer der Dienstnutzung seitens eines Remote-Systems (log_on_success).
  • EXIT — protokolliert das Beenden oder das Endsignal des Dienstes (log_on_success).
  • HOST — Logs the remote host's IP address (log_on_failure and log_on_success).
  • PID — Protokolliert die Prozess-ID des Servers, an den die Anfrage gesendet wird (log_on_success).
  • USERID — Protokolliert den Remote- Benutzer mit Hilfe der in RFC 1413 definierten Methode für alle mehrthreadigen Stream-Dienste (log_on_failure undlog_on_success).
Eine vollständige Liste der Protokoll-Optionen finden Sie auf der xinetd.conf man-Seite.
46.5.4.3.2. Zugriffskontroll-Optionen
Users of xinetd services can choose to use the TCP Wrappers hosts access rules, provide access control via the xinetd configuration files, or a mixture of both. Refer to Abschnitt 46.5.2, „TCP-Wrapper Konfigurationsdateien“ for more information about TCP Wrappers hosts access control files.
In diesem Abschnitt wird der Einsatz von xinetd für die Kontrolle von Zugriffen auf bestimmte Dienste besprochen.

Anmerkung

Im Gegensatz zu TCP-Wrappern, muss der xinetd-Administrator nach jeder Änderung den xinetd-Dienst neu starten, damit diese wirksam werden.
Im Gegensatz zu TCP-Wrappern, betrifft die Zugriffskontrolle durch xinetd lediglich die Dienste, die durch xinetd kontrolliert werden.
The xinetd hosts access control differs from the method used by TCP Wrappers. While TCP Wrappers places all of the access configuration within two files, /etc/hosts.allow and /etc/hosts.deny, xinetd's access control is found in each service's configuration file in the /etc/xinetd.d/ directory.
Die folgenden Optionen werden in den xinetd-Dateien für die Host-Zugriffskontrolle unterstützt:
  • only_from — Erlaubt nur den angegebenen Host-Rechnern die Nutzung des Dienstes.
  • no_access — Sperrt aufgeführte Host-Rechner vom Zugriff auf den Dienst.
  • access_times — Der Zeitraum, in dem ein bestimmter Dienst verwendet werden kann. Der Zeitraum muss im 24-Stunden-Format, also HH:MM-HH:MM, angegeben werden.
Die Optionen only_from und no_access können eine Liste von IP-Adressen oder HostNamen verwenden, oder ein gesamtes Netzwerk spezifizieren. Wie TCP-Wrapper, kann durch die Kombination der xinetd-Zugriffskontrolle und der entsprechenden Protokollkonfiguration die Sicherheit durch das Sperren von Anfragen von gesperrten Hosts und das Protokollieren aller Verbindungsversuche erhöht werden.
Zum Beispiel kann die folgende /etc/xinetd.d/telnet-Datei verwendet werden, um den Telnet-Zugriff einer bestimmten Netzwerkgruppe auf ein System zu verweigern und den gesamten Zeitraum für die Anmeldung von zugelassenen Benutzern einzuschränken:
service telnet
{
         disable         = no
	 flags           = REUSE
	 socket_type     = stream
	 wait            = no
	 user            = root
	 server          = /usr/kerberos/sbin/telnetd
	 log_on_failure  += USERID
	 no_access       = 172.16.45.0/24
	 log_on_success  += PID HOST EXIT
	 access_times    = 09:45-16:15
}
Wenn wie in diesem Beispiel ein Client System vom 10.0.1.0/24-Netzwerk wie etwa 10.0.1.2 versucht auf Telnet zuzugreifen, erhält es die folgende Meldung:
Connection closed by foreign host.
Außerdem werden diese Anmeldeversuche in /var/log/messages protokolliert:
Sep  7 14:58:33 localhost xinetd[5285]: FAIL: telnet address from=172.16.45.107
Sep  7 14:58:33 localhost xinetd[5283]: START: telnet pid=5285 from=172.16.45.107
Sep  7 14:58:33 localhost xinetd[5283]: EXIT: telnet status=0 pid=5285 duration=0(sec)
Wenn Sie TCP-Wrapper zusammen mit der Zugriffskontrolle von xinetd verwenden, müssen Sie die Beziehung dieser beiden Zugriffskontroll-Mechanismen verstehen.
Im Folgenden wird die Abfolge der Vorgänge in xinetd beschrieben, wenn ein Client eine Verbindung anfordert:
  1. Der xinetd-Daemon greift auf die Host-Zugriffsregeln der TCP-Wrapper durch einen libwrap.a-Bibliotheksaufruf zu. Besteht eine Dienstverweigerungsregel für den Client, so wird die Verbindung nicht aufgebaut. Besteht eine Zugriffserlaubnis, wird die Verbindung an xinetd weitergegeben.
  2. Der xinetd-Daemon überprüft seine eigenen Zugriffskontrollregeln für den xinetd-Dienst und den angeforderten Dienst. Besteht eine Dienstverweigerungsregel für den Client, wird die Verbindung nicht aufgebaut. Ansonsten startet xinetd eine Instanz des angeforderten Dienstes und gibt die Kontrolle an diesen weiter.

Wichtig

Seien Sie vorsichtig bei der Verwendung von TCP-Wrapper Zugriffskontrollen in Verbindung mit xinetd-Zugriffskontrollen. Eine Fehlkonfiguration kann höchst unerwünschte Folgen nach sich ziehen.
46.5.4.3.3. Bindungs- und Umleitungsoptionen
Die Dienstkonfigurationsdateien für xinetd unterstützen auch die Bindung des Dienstes an eine besondere IP-Adresse und Umleitung der eingehenden Anfragen für diesen Dienst an andere IP-Adressen, Hostnamen oder Ports.
Die Bindung wird von der bind-Option in den Dienstkonfigurationsdateien kontrolliert und verknüpft den Dienst mit einer IP-Adresse auf dem System. Nach der Konfiguration lässt die bind-Option nur Anfragen für die richtige IP-Adresse zum Zugriff auf den Dienst zu. Auf diese Weise kann jeder Dienst je nach Bedarf an verschiedene Netzwerkschnittstellen gebunden werden.
Dies ist besonders nützlich bei Systemen mit mehreren Netzwerkadaptern oder mehreren IP-Adressen. Bei solchen Systemen können unsichere Dienste (z.B. Telnet) zum Abhören von Schnittstellen konfigurieren, die mit einem privaten Netzwerk und nicht mit dem Internet verbunden sind.
Die redirect-Option akzeptiert eine IP-Adresse oder einen Host-Namen gefolgt von einer Port-Nummer. Sie konfiguriert den Dienst, alle Anfragen für diesen Dienst an eine bestimmte Adresse und Portnummer weiterzuleiten. Diese Eigenschaft kann verwendet werden, um auf eine andere Port-Nummer auf demselben System zu verweisen, die Anfrage an eine andere IP-Adresse auf demselben Rechner weiterzuleiten, die Anfrage an ein anderes System oder eine andere Port-Nummer zu verschieben. Die Eigenschaft kann auch für eine Kombination dieser Optionen verwendet werden. Auf diese Weise kann ein Benutzer, der sich für einen bestimmten Dienst an einem System anmeldet, ohne Unterbrechung umgeleitet werden.
Der xinetd-Daemon kann diese Umleitung durch Erzeugen eines Prozesses ausführen, der während der Verbindung des anfragenden Client-Rechners mit dem Host-Rechner, der den eigentlichen Dienst liefert, im Stay-Alive-Modus läuft und Daten zwischen den zwei Systemen austauscht.
Der eigentliche Stärke der bind und redirect-Optionen liegt in deren kombinierter Verwendung. Durch Bindung eines Dienstes an eine bestimmte IP-Adresse auf einem System und dem darauffolgenden Umleiten der Anfragen für denselben Dienst an einen zweiten Rechner, der nur für den ersten Rechner sichtbar ist, können Sie ein internes System verwenden, um Dienste für vollkommen unterschiedliche Netzwerke zur Verfügung zu stellen. Ansonsten können diese Optionen verwendet werden, um die Zeit zu begrenzen, während derer ein Dienst auf einem Multihomed-Rechner einer bekannten IP-Adresse ausgesetzt ist sowie jegliche Anfragen für diesen Dienst an einen anderen Rechner weiterzuleiten, der eigens für diesen Zweck konfiguriert ist.
Nehmen wir zum Beispiel ein System, das als Firewall mit diesen Einstellungen für seinen Telnet-Dienst verwendet wird:
service telnet
{
         socket_type		= stream
	 wait			= no
	 server			= /usr/kerberos/sbin/telnetd
	 log_on_success		+= DURATION USERID
	 log_on_failure		+= USERID
	 bind                    = 123.123.123.123
	 redirect                = 10.0.1.13 23
}
Die bind und redirect-Optionen in dieser Datei stellen sicher, dass der Telnet-Dienst auf dem Rechner für eine externe IP-Adresse (123.123.123.123) bestimmt ist, und zwar die Internet-seitige. Außerdem werden alle an 123.123.123.123 gesendeten Telnet-Anfragen über einen zweiten Netzwerkadapter an eine interne IP-Adresse (10.0.1.13) weitergeleitet, auf die nur die Firewall und interne Systeme Zugriff haben. Die Firewall sendet dann die Kommunikation von einem System an das andere, und für das sich verbindende System sieht es so aus, als ob es mit 123.123.123.123 verbunden sei, während es in Wirklichkeit mit einem anderen Rechner verbunden ist.
Diese Eigenschaft ist besonders nützlich für Benutzer mit Breitbandverbindungen und nur für feste IP-Adressen. Wird Network Address Translation (NAT) verwendet, sind die Systeme hinter dem Gateway-Rechner, die nur interne IP-Adressen verwenden, außerhalb des Gateway-Systems nicht verfügbar. Wenn jedoch bestimmte Dienste, die mit xinetd kontrolliert werden, mit den Optionen bind und redirect konfiguriert sind, kann der Gateway-Rechner als eine Art Proxy zwischen externen Systemen und einem bestimmten internen Rechner fungieren, der konfiguriert ist, um den Dienst zur Verfügung zu stellen. Außerdem sind die verschiedenen xinetd-Zugriffskontroll- und Protokollieroptionen auch für zusätzlichen Schutz verfügbar.
46.5.4.3.4. Optionen für das Management von Ressourcen
Der xinetd-Daemon kann einen einfachen Grad an Schutz vor Denial of Service (DoS) Angriffen (Dienstverweigerungsangriffe) liefern. Untenstehend finden Sie eine Liste an Anweisungen, die Ihnen beim Einschränken der Auswirkung dieser Angriffe helfen:
  • per_source — Definiert die Höchstanzahl von Verbindungen von einer bestimmen IP-Adresse mit einem bestimmen Dienst. Es werden nur ganze Zahlen als Argument akzeptiert und er kann sowohl in xinetd.conf als auch in den Service-spezifischen Konfigurationsdateien im xinetd.d/-Verzeichnis verwendet werden.
  • cps — Definiert die Höchstzahl der Verbindungen pro Sekunde. Diese Option akzeptiert zwei ganzzahlige Argumente getrennt durch eine Leerstelle. Die erste Zahl ist die Höchstzahl von Verbindungen zum Dienst pro Sekunde. Die zweite Zahl ist die Anzahl der Sekunden, die xinetd warten muss, bis der Dienst erneut aktiviert wird. Es werden nur ganze Zahlen akzeptiert, und die Option kann in xinetd.conf und in den Service-spezifischen Konfigurationsdateien im xinetd.d/-Verzeichnis verwendet werden.
  • max_load — Definiert den Schwellenwert für die CPU-Nutzung eines Dienstes. Es werden Gleitpunktzahl-Argumente akzeptiert.
    Der "Load Average" (d.h. die Durchschnittsbelastung) ist ein ungefähres Maß dafür, wie viele Vorgänge zu einem bestimmten Zeitpunkt aktiv sind. Weitere Informationen zum Load Average finden Sie unter den uptime, who und procinfo-Befehlen.
Es gibt noch weitere Optionen für das Management von Ressourcen für xinetd. Auf der xinetd.conf man-Seite finden Sie weitere Informationen.

46.5.5. Zusätzliche Ressourcen

Weitere Informationen zu TCP-Wrappern und xinetd finden Sie in der Systemdokumentation und im Internet.

46.5.5.1. Installierte Dokumentation

Die im Paket enthaltene Dokumentation auf Ihrem System ist ein guter Ausgangspunkt, wenn Sie weitere Informationen zu TCP-Wrappern, xinetd und Zugriffskontroll-Konfigurationsoptionen suchen.
  • /usr/share/doc/tcp_wrappers-<version>/ — This directory contains a README file that discusses how TCP Wrappers work and the various hostname and host address spoofing risks that exist.
  • /usr/share/doc/xinetd-<version>/ — This directory contains a README file that discusses aspects of access control and a sample.conf file with various ideas for modifying service-specific configuration files in the /etc/xinetd.d/ directory.
  • TCP-Wrapper und xinetd-bezogene man-Seiten — Es gibt eine Reihe von man-Seiten für die verschiedenen Applikationen und Konfigurationsdateien in Bezug auf TCP-Wrapper und xinetd. Die folgende Liste benennt einige der wichtigeren man-Seiten.
    Server-Applikationen
    • man xinetd — Die man-Seite für den xinetd.
    Konfigurationsdateien
    • man 5 hosts_access — Die man-Seite für die Host-Zugriffskontrolldateien der TCP-Wrapper.
    • man hosts_options — Die man-Seite für die TCP-Wrapper Optionsfelder.
    • man xinetd.conf — Die man-Seite mit einer Liste der xinetd-Konfigurationsoptionen.

46.5.5.2. Nützliche Websites

  • http://www.xinetd.org/ — Die Homepage von xinetd enthält Beispielkonfigurationsdateien, eine vollständige Liste von Eigenschaften und eine Liste häufig gestellter Fragen (FAQs).
  • http://www.macsecurity.org/resources/xinetd/tutorial.shtml — Eine ausführliche Anleitung mit Beispielen, in der viele Möglichkeiten beschrieben werden, standardmäßige xinetd-Konfigurationsdateien für bestimmte Sicherheitszwecke anzupassen.

46.6. Kerberos

Systemsicherheit und -Integrität innerhalb eines Netzwerkes sind manchmal schwer in den Griff zu bekommen. Es kann die Zeit von mehreren Administratoren in Anspruch nehmen, wenn es allein darum geht, nachzuverfolgen, welche Dienste in einem Netzwerk ausgeführt werden und wie diese genutzt werden.
Further, authenticating users to network services can prove dangerous when the method used by the protocol is inherently insecure, as evidenced by the transfer of unencrypted passwords over a network using the traditional FTP and Telnet protocols.
Kerberos ist eine Methode, die Notwendigkeit von Protokollen, die eine unsichere Authentifizierung ermöglichen, auszuräumen und somit die Gesamtsicherheit des Netzwerkes zu erhöhen.

46.6.1. Was ist Kerberos?

Kerberos ist ein von MIT erstelltes Authentifizierungsprotokoll für Netzwerke, welches Symmetric-Key Cryptography verwendet,[17] um Benutzer im Netzwerk zu authentifizieren, so dass Passwörter niemals wirklich über das Netzwerk versendet werden.
Somit werden Versuche von unautorisierten Benutzern, Passwörter im Netzwerk durch die Überwachung des Netzwerkverkehrs abzufangen, erfolgreich vereitelt, wenn Benutzer bei der Authentifizierung mit Netzwerkdiensten Kerberos verwenden.

46.6.1.1. Vorteile von Kerberos

Die meisten herkömmlichen Netzwerksysteme verwenden Passwort-basierte Authentifizierungsschemata. Wenn sich daher ein Benutzer an einem Netzwerkserver anmeldet, muss diese/r einen Benutzernamen und Passwort für jeden Dienst angeben, der Authentifizierung erfordert. Unglücklicherweise erfolgt die Übertragung von Authentifizierungsinformationen bei vielen Diensten unverschlüsselt. Damit ein solches Schemata sicher ist, muss das Netzwerk vor Zugriff von Außenstehenden geschützt werden und allen Computern und Benutzern auf dem Netzwerk muss vertraut werden können und müssen vertrauenswürdig sein.
Auch wenn dies der Fall sein sollte, ist das Netzwerk erst einmal mit dem Internet verbunden, kann dessen Sicherheit nicht länger angenommen werden. Jeder Hacker, der Zugriff auf das Netzwerk kann einen Paket-Analysierer (auch als Packet-Sniffer bekannt) verwenden, um Benutzernamen und Passwörter abzufangen, was Benutzeraccounts und die Integrität der gesamten Sicherheitsinfrastruktur kompromittiert.
Primäres Ziel von Kerberos ist es, die Übertragung der unverschlüsselterPasswörter über das Netzwerk zu eliminieren. Bei korrekter Anwendung vermindert Kerberos deutlich das Risiko, das Packet-Sniffer andernfalls für das Netzwerk bedeutet.

46.6.1.2. Nachteile von Kerberos

Dank Kerberos wird eine Bedrohung, die ganz allgemein für die Sicherheit im Netzwerk besteht, ausgeschaltet. Allerdings kann sich die Implementierung aus folgenden Gründen schwierig gestalten:
  • Das Migrieren von Benutzerpasswörtern von einer standardmäßigen UNIX-Passwortdatenbank wie zum Beispiel /etc/passwd oder /etc/shadow in eine Kerberos-Passwortdatenbank kann langwierig sein, da es zum Durchführen dieser Aufgabe keine automatisierten Mechanismen gibt. Detailliertere Informationen finden Sie unter Frage 2.23 in den Kerberos online-FAQ unter:
  • Kerberos has only partial compatibility with the Pluggable Authentication Modules (PAM) system used by most Red Hat Enterprise Linux servers. Refer to Abschnitt 46.6.4, „Kerberos und PAM“ for more information about this issue.
  • Kerberos nimmt an, dass jeder vertrauenswürdige Benutzer vertrauensunwürdige Hosts in einem vertrauensunwürdigen Netzwerk verwendet. Seine wichtigste Aufgabe ist es, zu verhindern, dass Passwörter unverschlüsselt über das Netzwerk versandt werden. Wenn jedoch noch jemand anderes als der richtige Benutzer Zugriff auf den Host hat, welcher die Tickets zur Authentifizierung ausstellt — auch Key Distribution Center (KDC) genannt — besteht die Gefahr, dass das gesamte Kerberos-Authentifizierungssystem kompromittiert wird.
  • Damit eine Applikation Kerberos verwenden kann, müssen ihre Quellen so modifiziert werden, dass die geeigneten Aufrufe an die Kerberos-Bibliotheken gesendet werden können. Applikationen, die auf diese Art geändert wurden, werden als Kerberos-bewusst, oder kerberisiert bezeichnet. Bei einigen Applikationen kann dies aufgrund ihrer Größe oder ihrem Design recht problematisch sein. Für andere Applikationen wiederum muss die Art und Weise geändert werden, in der Server und Clients miteinander kommunizieren. Auch dies kann unter Umständen einen großen Aufwand bedeuten. Hierbei stellen die Closed Source-Applikationen ohne standardmäßigen Kerberos-Support den problematischsten Teil dar.
  • Bei Kerberos handelt es sich um eine Alles-oder-Nichts-Lösung. Wenn Kerberos im Netzwerk verwendet werden soll, sind alle unverschlüsselten Passwörter, die an einen Nicht-Kerberos-bewussten Service übertragen werden, gefährdet. Somit ergibt sich für Ihr Netzwerk keinerlei Vorteil aus der Verwendung von Kerberos. Wenn Sie Ihr Netzwerk durch Kerberos sichern möchten, müssen Sie entweder Kerberos-bewusste Versionen von allen Client/Server-Applikationen, die Passwörter im Klartext versenden, verwenden, oder aber keine dieser Applikationen in Ihrem Netzwerk verwenden.

46.6.2. Kerberos-Terminologie

Kerberos verfügt über seine eigene Terminologie zur Definition verschiedener Aspekte des Dienstes. Ehe die Funktionsweise des Dienstes erläutert wird, sollten Sie mit folgenden Begriffen vertraut sein.
Authentifizierungsserver (AS)
Ein Server, der Tickets für einen gewünschten Service ausstellt, welche im Gegenzug wieder an Benutzer für den Zugang zu diesem Service gegeben werden. Der AS antwortet auf Anfragen von Clients, die keinen Berechtigungsnachweis besitzen oder mit einer Anfrage versenden. Es wird gewöhnlicherweise für den Zugang zum Ticket-Granting Server (TGS) Service verwendet, indem ein Ticket-Granting Ticket (TGT) ausgestellt wird. Der AS läuft normalerweise auf dem gleichen Host wie das Key Distribution Center (KDC).
ciphertext
Verschlüsselte Daten.
Client
Ein Objekt im Netzwerk (ein Benutzer, ein Host oder eine Applikation), das von Kerberos ein Ticket erhalten kann.
Berechtigungen
Ein temporärer Satz an elektronischen Berechtigungsnachweisen, die die Identität eines Client für einen bestimmten Dienst verifizieren. Auch als Ticket bezeichnet.
Credential-Cache oder Ticket-Datei
Eine Datei, die die Schlüssel zum Verschlüsseln der Kommunikation zwischen einem Benutzer und verschiedenen Netzwerkdiensten enthält. Kerberos 5 unterstützt einen Rahmen für die Verwendung anderer Cache-Typen wie zum Beispiel gemeinsam genutzten Speicher. Die Dateien werden allerdings besser unterstützt.
Crypt-Hash
Ein unidirektionaler Hash zur Authentifizieren von Benutzern. Auch wenn dies sicherer als unverschlüsselte Daten ist, ist es für einen erfahrenen Cracker nach wie vor leicht, diese zu entschlüsseln.
GSS-API
Das Generic Security Service Application Program Interface (definiert in RFC-2743 und herausgegeben von der Internet Engineering Task Force) ist eine Sammlung von Funktionen, die Sicherheitsservices bereitstellen. Clients können mit diesen Funktionen Services authentifizieren und genauso können Services Clients authentifizieren, ohne dass diese Programme ein spezifisches Wissen der zugrundeliegenden Mechanismen benötigen. Sollte ein Netzwerk-Service (wie cyrus-IMAP) die GSS-API verwenden, kann dieser mittels Kerberos authentifizieren.
Hash
Auch als Hash-Wert bekannt. Ein Wert, der durch das Übergeben eines Strings durch eine Hash-Funktion generiert wurde. Diese Werte werden typischerweise dazu verwendet, sicherzustellen, dass übertragene Daten nicht verfälscht wurden.
Hash-Funktion
A way of generating a digital "fingerprint" from input data. These functions rearrange, transpose or otherwise alter data to produce a hash value.
key
Daten, die zum Verschlüsseln bzw. Entschlüsseln von Daten verwendet werden. Verschlüsselte Daten lassen sich ohne den richtigen Schlüssel oder extremes Glück seitens des Crackers nicht entschlüsseln.
Key Distribution Center (KDC)
Ein Dienst, der Kerberos-Tickets ausgibt und normalerweise auf dem gleichen Host wie der Ticket Granting Server (TGS) läuft.
Keytab (oder Key Table)
Eine Datei, die eine unverschlüsselte Liste aller Principals und ihrer Schlüssel enthält. Server holen sich die benötigten Keys aus keytab-Dateien, statt kinit zu verwenden. Die standardmäßige keytab-Datei ist /etc/krb5.keytab, wobei /usr/kerberos/sbin/kadmind der einzige bekannte Service ist, der eine andere Datei verwendet (er verwendet /var/kerberos/krb5kdc/kadm5.keytab).
kinit
Der Befehl kinit erlaubt einem Principal, der bereits angemeldet ist, das anfängliche Ticket Granting Ticket (TGT) zu erhalten und im Cache abzulegen. Weitere Informationen zur Verwendung des Befehls kinit finden Sie auf dessen Handbuch-Seite.
Principal (oder Principal Name)
The principal is the unique name of a user or service allowed to authenticate using Kerberos. A principal follows the form root[/instance]@REALM. For a typical user, the root is the same as their login ID. The instance is optional. If the principal has an instance, it is separated from the root with a forward slash ("/"). An empty string ("") is considered a valid instance (which differs from the default NULL instance), but using it can be confusing. All principals in a realm have their own key, which for users is derived from a password or is randomly set for services.
Realm
Ein Netzwerk, das Kerberos verwendet und aus einem oder einigen Servern (auch als KDCs bezeichnet) sowie einer potenziell sehr großen Zahl von Clients besteht.
Service
Ein Programm, auf das über das Netzwerk zugegriffen wird.
Ticket
Ein temporärer Satz elektronischer Berechtigungsnachweise, die die Identität eines Client für einen bestimmten Dienst verifizieren. Auch Berechtigungsnachweis genannt.
Ticket Granting Server (TGS)
Ein Server, der Benutzern der Reihe nach Tickets für den Zugriff auf den gewünschten Service ausgibt. TGS wird üblicherweise auf demselben Host wie KDC ausgeführt.
Ticket Granting Ticket (TGT)
Ein spezielles Ticket, das es dem Client ermöglicht, zusätzliche Tickets zu erhalten, ohne diese beim KDC anfordern zu müssen.
Unverschlüsseltes Passwort
Ein im Klartext lesbares Passwort.

46.6.3. Funktionsweise von Kerberos

Kerberos differs from username/password authentication methods. Instead of authenticating each user to each network service, Kerberos uses symmetric encryption and a trusted third party (a KDC), to authenticate users to a suite of network services. When a user authenticates to the KDC, the KDC sends a ticket specific to that session back to the user's machine, and any Kerberos-aware services look for the ticket on the user's machine rather than requiring the user to authenticate using a password.
Wenn sich ein Benutzer in einem Kerberos-bewussten Netzwerk an seinem Arbeitsplatzrechner anmeldet, wird sein Principal für die Anforderung eines Ticket Granting Ticket (TGT) vom Authentifizierungs-Server (AS) an den KDC gesendet. Diese Anforderung kann entweder vom Anmeldeprogramm (also für den Benutzer transparent) oder nach dem Anmelden des Benutzers vom Programm kinit gesendet werden.
The KDC then checks for the principal in its database. If the principal is found, the KDC creates a TGT, which is encrypted using the user's key and returned to that user.
The login or kinit program on the client then decrypts the TGT using the user's key, which it computes from the user's password. The user's key is used only on the client machine and is not transmitted over the network.
The TGT is set to expire after a certain period of time (usually ten to twenty-four hours) and is stored in the client machine's credentials cache. An expiration time is set so that a compromised TGT is of use to an attacker for only a short period of time. After the TGT has been issued, the user does not have to re-enter their password until the TGT expires or until they log out and log in again.
Wenn der Benutzer auf einen Netzwerkdienst zugreifen möchte, verwendet der Client das TGT, um vom Ticket Granting Server (TGS) ein Ticket für den Service anzufordern. Der TGS stellt ein Ticket für den gewünschten Service aus, welches sodann zur transparenten Authentifizierung des Benutzers verwendet wird.

Warnung

Das Kerberos-System kann immer dann kompromittiert werden, wenn sich ein Benutzer in dem Netzwerk gegen einen nicht Kerberos-bewussten Dienst authentifiziert und ein Passwort als Klartext gesendet wird. Von der Verwendung von nicht Kerberos-bewussten Diensten wird daher abgeraten. Diese Dienste umfassen Telnet und FTP. Andere verschlüsselte Protokolle wie zum Beispiel SSH oder SSL-gesicherte Dienste können dagegen verwendet werden, auch wenn diese nicht unbedingt ideal sind.
This is only a broad overview of how Kerberos authentication works. Refer to Abschnitt 46.6.10, „Zusätzliche Ressourcen“ for links to more in-depth information.

Anmerkung

Um korrekt funktionieren zu können, ist Kerberos von folgenden Netzwerk-Diensten abhängig.
  • Synchronisation der Uhr zwischen den Rechnern im Netzwerk angleichen.
    A clock synchronization program should be set up for the network, such as ntpd. Refer to /usr/share/doc/ntp-<version-number>/index.html for details on setting up Network Time Protocol servers (where <version-number> is the version number of the ntp package installed on your system).
  • Domain Name Service (DNS).
    You should ensure that the DNS entries and hosts on the network are all properly configured. Refer to the Kerberos V5 System Administrator's Guide in /usr/share/doc/krb5-server-<version-number> for more information (where <version-number> is the version number of the krb5-server package installed on your system).

46.6.4. Kerberos und PAM

Derzeit verwenden die Kerberos-bewussten Dienste keinerlei PAM (Pluggable Authentication Modules) — Kerberos-bewusste Server überspringen PAM komplett. Applikationen, die PAM verwenden, können Kerberos jedoch zur Authentifizierung nutzen, sofern das Modul pam_krb5 (im Paket pam_krb5 enthalten) installiert ist. Das Paket pam_krb5 enthält Beispielkonfigurationsdateien, durch die Dienste wie login und gdm in der Lage sind, Benutzer zu authentifizieren und unter Verwendung ihrer Passwörter erste Berechtigungsnachweise zu erhalten. Unter der Voraussetzung, dass der Zugriff auf Netzwerkserver immer über Kerberos-bewusste Dienste oder über Dienste vorgenommen wird, die GSS-API verwenden, wie z.B. IMAP, kann das Netzwerk als relativ sicher bezeichnet werden.

Tip

Administratoren sollten darauf achten, Benutzern die Authentifizierung bei den meisten Services mit Kerberos-Passwörtern nicht zu gestatten. Viele der von diesen Services verwendeten Protokolle verschlüsseln die Passwörter nicht, bevor sie sie über das Netzwerk versenden. Dies hebt die Vorteile eines Kerberos Systems auf. Benutzern sollte es, zum Beispiel, nicht erlaubt sein, deren Kerberos-Passwörter über Telnet zu authentifizieren.

46.6.5. Konfigurieren eines Kerberos 5-Servers

When setting up Kerberos, install the KDC first. If it is necessary to set up slave servers, install the master first.
To configure the first Kerberos KDC, follow these steps:
  1. Stellen Sie sicher, dass die Zeitsynchronisierung und DNS auf dem Server funktionieren, ehe Sie Kerberos konfigurieren. Achten Sie besonders auf die Zeitsynchronisierung zwischen dem Kerberos-Server und seinen Clients. Überschreitet die Zeitdifferenz zwischen Server und den Clients fünf Minuten (der Standardwert kann in Kerberos 5 konfiguriert werden), sind die Kerberos-Clients nicht in der Lage, sich am Server anzumelden. Diese Zeitsynchronisierung ist notwendig, um Angreifer davon abzuhalten, ein altes Kerberos-Ticket zu verwenden, um sich als gültiger Benutzer auszugeben.
    It is advisable to set up a Network Time Protocol (NTP) compatible client/server network even if Kerberos is not being used. Red Hat Enterprise Linux includes the ntp package for this purpose. Refer to /usr/share/doc/ntp-<version-number>/index.html (where <version-number> is the version number of the ntp package installed on your system) for details about how to set up Network Time Protocol servers, and http://www.ntp.org for more information about NTP.
  2. Installieren Sie auf dem für den Betrieb von KDC dedizierten Rechner die Pakete krb5-libs, krb5-server und krb5-workstation. Dieser Rechner muss extrem sicher sein — wenn möglich, sollten außer KDC keine anderen Services ausgeführt werden.
  3. Bearbeiten Sie die Konfigurationsdateien /etc/krb5.conf und /var/kerberos/krb5kdc/kdc.conf, um den Realm-Namen sowie die Domain-zu-Realm-Mappings anzugeben. Ein einfacher Realm kann durch das Ersetzen von Instanzen von BEISPIEL.COM und Beispiel.com durch Ihren Domainnamen erstellt werden — beachten Sie die Groß- und Kleinschreibung — sowie durch Ändern des KDC von Kerberos.Beispiel.com in den Namen des Kerberos-Servers. Hierbei gilt, dass alle Realm-Namen groß und alle DNS-Hostnamen und Domainnamen klein geschrieben werden. Weitere Informationen zum Format dieser Dateien finden Sie auf den jeweiligen Handbuch-Seiten.
  4. Erstellen Sie die Datenbank mit Hilfe des Dienstprogramms kdb5_util in einem Shell-Prompt:
    /usr/kerberos/sbin/kdb5_util create -s
    Der Befehl create erstellt die Datenbank, die zum Speichern der Schlüssel für den Kerberos-Realm verwendet wird. Der Switch -s erzwingt die Erstellung einer stash-Datei, in der der Master-Server-Schlüssel gespeichert wird. Ist keine stash-Datei vorhanden, von der der Schlüssel gelesen werden kann, fordert der Kerberos-Server (krb5kdc) die Benutzer bei jedem Start zur Eingabe des Passwortes des Master-Servers auf (wodurch der Schlüssel erneut generiert werden kann).
  5. Bearbeiten Sie die Datei /var/kerberos/krb5kdc/kadm5.acl. Diese Datei wird von kadmind zur Ermittlung der Principals mit Zugriff auf die Kerberos-Datenbank sowie deren Zugriffslevel verwendet. Die meisten Organisationen kommen mit einer einzigen Zeile aus:
    */admin@EXAMPLE.COM  *
    Most users are represented in the database by a single principal (with a NULL, or empty, instance, such as joe@EXAMPLE.COM). In this configuration, users with a second principal with an instance of admin (for example, joe/admin@EXAMPLE.COM) are able to wield full power over the realm's Kerberos database.
    Sobald kadmind auf dem Server gestartet ist, können alle Benutzer auf die Dienste zugreifen, indem sie auf einem beliebigen Client oder Server im Realm kadmin ausführen. Allerdings können nur die in der Datei kadm5.acl genannten Benutzer die Datenbank in irgendeiner Form ändern, ausgenommen natürlich das eigene Passwort.

    Anmerkung

    Das kadmin-Utility kommuniziert mit dem kadmind-Server über das Netzwerk, wobei Kerberos für die Authentifizierung verwendet wird. Sie müssen natürlich den ersten Principal erstellen, ehe Sie eine Verbindung mit dem Server über das Netzwerk herstellen können, um diesen zu verwalten. Erstellen Sie den ersten Principal mit dem Befehl kadmin.local, der speziell für den Gebrauch auf demselben Host wie KDC entworfen ist und Kerberos nicht zur Authentifizierung verwendet.
    Geben Sie am KDC-Terminal den folgenden kadmin.local-Befehl ein, um den ersten Principal zu erstellen:
    /usr/kerberos/sbin/kadmin.local -q "addprinc username/admin"
  6. Starten Sie Kerberos mit Hilfe der folgenden Befehle:
    service krb5kdc start
    service kadmin start
    service krb524 start
  7. Fügen Sie Principals für Ihre Benutzer mit Hilfe des Befehls addprinc mit kadmin hinzu. kadmin und kadmin.local sind die Befehlszeilenschnittstellen zum KDC. Insofern stehen viele Befehle — wie z. B. addprinc — nach dem Starten des kadmin-Programms zur Verfügung. Weitere Informationen finden Sie auf der Handbuch-Seite zu kadmin.
  8. Überprüfen Sie, ob das KDC Tickets ausgibt. Führen Sie zuerst kinit aus, um ein Ticket zu erhalten, und speichern Sie dieses in einer Credential-Cache-Datei. Zeigen Sie dann mit klist eine Referenzenliste im Cache an und verwenden Sie kdestroy, um den Cache sowie die enthaltenen Referenzen zu zerstören.

    Anmerkung

    By default, kinit attempts to authenticate using the same system login username (not the Kerberos server). If that username does not correspond to a principal in the Kerberos database, kinit issues an error message. If that happens, supply kinit with the name of the correct principal as an argument on the command line (kinit <principal>).
Wenn Sie oben genannte Schritte ausgeführt haben, sollte Ihr Kerberos-Server korrekt funktionieren.

46.6.6. Konfigurieren eines Kerberos 5-Clients

Setting up a Kerberos 5 client is less involved than setting up a server. At a minimum, install the client packages and provide each client with a valid krb5.conf configuration file. While ssh and slogin are the preferred method of remotely logging in to client systems, Kerberized versions of rsh and rlogin are still available, though deploying them requires that a few more configuration changes be made.
  1. Be sure that time synchronization is in place between the Kerberos client and the KDC. Refer to Abschnitt 46.6.5, „Konfigurieren eines Kerberos 5-Servers“ for more information. In addition, verify that DNS is working properly on the Kerberos client before configuring the Kerberos client programs.
  2. Installieren Sie die Pakete krb5-libs und krb5-workstation auf allen Client-Rechnern. Für jeden Client müssen Sie eine gültige Version von /etc/krb5.conf zur Verfügung stellen (dies kann normalerweise dieselbe krb5.conf-Datei sein, die von KDC verwendet wird).
  3. Before a workstation in the realm can use Kerberos to authenticate users who connect using ssh or Kerberized rsh or rlogin, it must have its own host principal in the Kerberos database. The sshd, kshd, and klogind server programs all need access to the keys for the host service's principal. Additionally, in order to use the kerberized rsh and rlogin services, that workstation must have the xinetd package installed.
    Using kadmin, add a host principal for the workstation on the KDC. The instance in this case is the hostname of the workstation. Use the -randkey option for the kadmin's addprinc command to create the principal and assign it a random key:
    addprinc -randkey host/blah.example.com
    Nachdem der Principal erstellt wurde, können Sie die Schlüssel für die Workstation extrahieren, indem Sie kadmin auf der Workstation selbst ausführen und den Befehl ktadd in kadmin verwenden:
    ktadd -k /etc/krb5.keytab host/blah.example.com
  4. Sollten Sie andere kerberisierten Netzwerk-Services benutzen wollen, müssen diese gestartet werden. Folgend ist eine Liste der gebräuchlicheren kerberisierten Dienste und Anleitungen dazu, wie Sie diese aktivieren können:
    • ssh — OpenSSH uses GSS-API to authenticate users to servers if the client's and server's configuration both have GSSAPIAuthentication enabled. If the client also has GSSAPIDelegateCredentials enabled, the user's credentials are made available on the remote system.
    • rsh und rlogin — Um die kerberisierten Versionen von rsh und rlogin zu verwenden, müssen Sie klogin, eklogin und kshell aktivieren.
    • Telnet — Um das kerberisierte Telnet verwenden zu können, müssen Sie krb5-telnet aktivieren.
    • FTP — Zum Bereitstellen von FTP-Zugriff müssen Sie einen Schlüssel für einen Principal mit einem root von ftp erstellen und extrahieren. Dabei muss die Instanz auf den Hostnamen des FTP-Servers festgelegt sein. Aktivieren Sie dann gssftp.
    • IMAP — Um einen kerberisierten IMAP-Server zu benutzen, verwendet das cyrus-imap-Paket Kerberos 5, sobald das cyrus-sasl-gssapi-Paket installiert ist. Das cyrus-sasl-gssapi-Paket beinhaltet die Cyrus SASL Plugins, welche die GSS-API Authentifizierung unterstützen. Cyrus IMAP sollte einwandfrei mit Kerberos funktionieren, solange der cyrus Benutzer in der Lage ist, den richtigen Schlüssel in /etc/krb5.keytab zu finden und root auf imap (erstellt mittels kadmin) gesetzt ist.
      An alternative to cyrus-imap can be found in the dovecot package, which is also included in Red Hat Enterprise Linux. This package contains an IMAP server but does not, to date, support GSS-API and Kerberos.
    • CVS — Um einen kerberisierten CVS-Server zu benutzen, verwendet gserver einen Principal mit cvs als root und stimmt andernfalls mit CVS-pserver überein.
    Refer to Kapitel 17, Zugriffskontrolle für Dienste for details about how to enable services.

46.6.7. Domain-to-Realm Mapping

When a client attempts to access a service running on a particular server, it knows the name of the service (host) and the name of the server (foo.example.com), but because more than one realm may be deployed on your network, it must guess at the name of the realm in which the service resides.
By default, the name of the realm is taken to be the DNS domain name of the server, upper-cased.

foo.example.org → EXAMPLE.ORG
foo.example.com → EXAMPLE.COM
foo.hq.example.com → HQ.EXAMPLE.COM

In some configurations, this will be sufficient, but in others, the realm name which is derived will be the name of a non-existent realm. In these cases, the mapping from the server's DNS domain name to the name of its realm must be specified in the domain_realm section of the client system's krb5.conf. For example:
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
The above configuration specifies two mappings. The first mapping specifies that any system in the "example.com" DNS domain belongs to the EXAMPLE.COM realm. The second specifies that a system with the exact name "example.com" is also in the realm. (The distinction between a domain and a specific host is marked by the presence or lack of an initial ".".) The mapping can also be stored directly in DNS.

46.6.8. Setting Up Secondary KDCs

For a number of reasons, you may choose to run multiple KDCs for a given realm. In this scenario, one KDC (the master KDC) keeps a writable copy of the realm database and runs kadmind (it is also your realm's admin server), and one or more KDCs (slave KDCs) keep read-only copies of the database and run kpropd.
The master-slave propagation procedure entails the master KDC dumping its database to a temporary dump file and then transmitting that file to each of its slaves, which then overwrite their previously-received read-only copies of the database with the contents of the dump file.
To set up a slave KDC, first ensure that the master KDC's krb5.conf and kdc.conf files are copied to the slave KDC.
Start kadmin.local from a root shell on the master KDC and use its add_principal command to create a new entry for the master KDC's host service, and then use its ktadd command to simultaneously set a random key for the service and store the random key in the master's default keytab file. This key will be used by the kprop command to authenticate to the slave servers. You will only need to do this once, regardless of how many slave servers you install.
~]# kadmin.local -r EXAMPLE.COM
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin: add_principal -randkey host/masterkdc.example.com
Principal "host/host/masterkdc.example.com@EXAMPLE.COM" created.
kadmin: ktadd host/masterkdc.example.com
Entry for principal host/masterkdc.example.com with kvno 3, encryption type Triple DES cbc mode with \
	HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/masterkdc.example.com with kvno 3, encryption type ArcFour with HMAC/md5 \
	added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/masterkdc.example.com with kvno 3, encryption type DES with HMAC/sha1 added \
	to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/masterkdc.example.com with kvno 3, encryption type DES cbc mode with RSA-MD5 \
	added to keytab WRFILE:/etc/krb5.keytab.
kadmin: quit
Start kadmin from a root shell on the slave KDC and use its add_principal command to create a new entry for the slave KDC's host service, and then use kadmin's ktadd command to simultaneously set a random key for the service and store the random key in the slave's default keytab file. This key is used by the kpropd service when authenticating clients.
~]# kadmin -p jimbo/admin@EXAMPLE.COM -r EXAMPLE.COM
Authenticating as principal jimbo/admin@EXAMPLE.COM with password.
Password for jimbo/admin@EXAMPLE.COM:
kadmin: add_principal -randkey host/slavekdc.example.com
Principal "host/slavekdc.example.com@EXAMPLE.COM" created.
kadmin: ktadd host/slavekdc.example.com@EXAMPLE.COM
Entry for principal host/slavekdc.example.com with kvno 3, encryption type Triple DES cbc mode with \
	HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/slavekdc.example.com with kvno 3, encryption type ArcFour with HMAC/md5 added \
	to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/slavekdc.example.com with kvno 3, encryption type DES with HMAC/sha1 added \
	to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/slavekdc.example.com with kvno 3, encryption type DES cbc mode with RSA-MD5 added \
	to keytab WRFILE:/etc/krb5.keytab.
kadmin: quit
With its service key, the slave KDC could authenticate any client which would connect to it. Obviously, not all of them should be allowed to provide the slave's kprop service with a new realm database. To restrict access, the kprop service on the slave KDC will only accept updates from clients whose principal names are listed in /var/kerberos/krb5kdc/kpropd.acl. Add the master KDC's host service's name to that file.
~]# echo host/masterkdc.example.com@EXAMPLE.COM > /var/kerberos/krb5kdc/kpropd.acl
Once the slave KDC has obtained a copy of the database, it will also need the master key which was used to encrypt it. If your KDC database's master key is stored in a stash file on the master KDC (typically named /var/kerberos/krb5kdc/.k5.REALM, either copy it to the slave KDC using any available secure method, or create a dummy database and identical stash file on the slave KDC by running kdb5_util create -s (the dummy database will be overwritten by the first successful database propagation) and supplying the same password.
Ensure that the slave KDC's firewall allows the master KDC to contact it using TCP on port 754 (krb5_prop), and start the kprop service. Then, double-check that the kadmin service is disabled.
Now perform a manual database propagation test by dumping the realm database, on the master KDC, to the default data file which the kprop command will read (/var/kerberos/krb5kdc/slave_datatrans), and then use the kprop command to transmit its contents to the slave KDC.
~]# /usr/kerberos/sbin/kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans
~]# kprop slavekdc.example.com
Using kinit, verify that a client system whose krb5.conf lists only the slave KDC in its list of KDCs for your realm is now correctly able to obtain initial credentials from the slave KDC.
That done, simply create a script which dumps the realm database and runs the kprop command to transmit the database to each slave KDC in turn, and configure the cron service to run the script periodically.

46.6.9. Setting Up Cross Realm Authentication

Cross-realm authentication is the term which is used to describe situations in which clients (typically users) of one realm use Kerberos to authenticate to services (typically server processes running on a particular server system) which belong to a realm other than their own.
For the simplest case, in order for a client of a realm named A.EXAMPLE.COM to access a service in the B.EXAMPLE.COM realm, both realms must share a key for a principal named krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM, and both keys must have the same key version number associated with them.
To accomplish this, select a very strong password or passphrase, and create an entry for the principal in both realms using kadmin.
~]# kadmin -r A.EXAMPLE.COM
kadmin: add_principal krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM
Enter password for principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM":
Re-enter password for principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM":
Principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM" created.
kadmin:	quit
~]# kadmin -r B.EXAMPLE.COM
kadmin: add_principal krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM
Enter password for principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM":
Re-enter password for principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM":
Principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM" created.
kadmin: quit
Use the get_principal command to verify that both entries have matching key version numbers (kvno values) and encryption types.

Dumping the Database Doesn't Do It

Security-conscious administrators may attempt to use the add_principal command's -randkey option to assign a random key instead of a password, dump the new entry from the database of the first realm, and import it into the second. This will not work unless the master keys for the realm databases are identical, as the keys contained in a database dump are themselves encrypted using the master key.
Clients in the A.EXAMPLE.COM realm are now able to authenticate to services in the B.EXAMPLE.COM realm. Put another way, the B.EXAMPLE.COM realm now trusts the A.EXAMPLE.COM realm, or phrased even more simply, B.EXAMPLE.COM now trusts A.EXAMPLE.COM.
This brings us to an important point: cross-realm trust is unidirectional by default. The KDC for the B.EXAMPLE.COM realm may trust clients from the A.EXAMPLE.COM to authenticate to services in the B.EXAMPLE.COM realm, but the fact that it does has no effect on whether or not clients in the B.EXAMPLE.COM realm are trusted to authenticate to services in the A.EXAMPLE.COM realm. To establish trust in the other direction, both realms would need to share keys for the krbtgt/A.EXAMPLE.COM@B.EXAMPLE.COM service (take note of the reversed in order of the two realms compared to the example above).
If direct trust relationships were the only method for providing trust between realms, networks which contain multiple realms would be very difficult to set up. Luckily, cross-realm trust is transitive. If clients from A.EXAMPLE.COM can authenticate to services in B.EXAMPLE.COM, and clients from B.EXAMPLE.COM can authenticate to services in C.EXAMPLE.COM, then clients in A.EXAMPLE.COM can also authenticate to services in C.EXAMPLE.COM, even if C.EXAMPLE.COM doesn't directly trust A.EXAMPLE.COM. This means that, on a network with multiple realms which all need to trust each other, making good choices about which trust relationships to set up can greatly reduce the amount of effort required.
Now you face the more conventional problems: the client's system must be configured so that it can properly deduce the realm to which a particular service belongs, and it must be able to determine how to obtain credentials for services in that realm.
First things first: the principal name for a service provided from a specific server system in a given realm typically looks like this:
service/server.example.com@EXAMPLE.COM
In this example, service is typically either the name of the protocol in use (other common values include ldap, imap, cvs, and HTTP) or host, server.example.com is the fully-qualified domain name of the system which runs the service, and EXAMPLE.COM is the name of the realm.
To deduce the realm to which the service belongs, clients will most often consult DNS or the domain_realm section of /etc/krb5.conf to map either a hostname (server.example.com) or a DNS domain name (.example.com) to the name of a realm (EXAMPLE.COM).
Having determined which to which realm a service belongs, a client then has to determine the set of realms which it needs to contact, and in which order it must contact them, to obtain credentials for use in authenticating to the service.
This can be done in one of two ways.
The default method, which requires no explicit configuration, is to give the realms names within a shared hierarchy. For an example, assume realms named A.EXAMPLE.COM, B.EXAMPLE.COM, and EXAMPLE.COM. When a client in the A.EXAMPLE.COM realm attempts to authenticate to a service in B.EXAMPLE.COM, it will, by default, first attempt to get credentials for the EXAMPLE.COM realm, and then to use those credentials to obtain credentials for use in the B.EXAMPLE.COM realm.
The client in this scenario treats the realm name as one might treat a DNS name. It repeatedly strips off the components of its own realm's name to generate the names of realms which are "above" it in the hierarchy until it reaches a point which is also "above" the service's realm. At that point it begins prepending components of the service's realm name until it reaches the service's realm. Each realm which is involved in the process is another "hop".
For example, using credentials in A.EXAMPLE.COM, authenticating to a service in B.EXAMPLE.COM:


A.EXAMPLE.COM → EXAMPLE.COM → B.EXAMPLE.COM

  • A.EXAMPLE.COM and EXAMPLE.COM share a key for krbtgt/EXAMPLE.COM@A.EXAMPLE.COM
  • EXAMPLE.COM and B.EXAMPLE.COM share a key for krbtgt/B.EXAMPLE.COM@EXAMPLE.COM
Another example, using credentials in SITE1.SALES.EXAMPLE.COM, authenticating to a service in EVERYWHERE.EXAMPLE.COM:


SITE1.SALES.EXAMPLE.COM → SALES.EXAMPLE.COM → EXAMPLE.COM → EVERYWHERE.EXAMPLE.COM

  • SITE1.SALES.EXAMPLE.COM and SALES.EXAMPLE.COM share a key for krbtgt/SALES.EXAMPLE.COM@SITE1.SALES.EXAMPLE.COM
  • SALES.EXAMPLE.COM and EXAMPLE.COM share a key for krbtgt/EXAMPLE.COM@SALES.EXAMPLE.COM
  • EXAMPLE.COM and EVERYWHERE.EXAMPLE.COM share a key for krbtgt/EVERYWHERE.EXAMPLE.COM@EXAMPLE.COM
Another example, this time using realm names whose names share no common suffix (DEVEL.EXAMPLE.COM and PROD.EXAMPLE.ORG):


DEVEL.EXAMPLE.COM → EXAMPLE.COM → COM → ORG → EXAMPLE.ORG → PROD.EXAMPLE.ORG

  • DEVEL.EXAMPLE.COM and EXAMPLE.COM share a key for krbtgt/EXAMPLE.COM@DEVEL.EXAMPLE.COM
  • EXAMPLE.COM and COM share a key for krbtgt/COM@EXAMPLE.COM
  • COM and ORG share a key for krbtgt/ORG@COM
  • ORG and EXAMPLE.ORG share a key for krbtgt/EXAMPLE.ORG@ORG
  • EXAMPLE.ORG and PROD.EXAMPLE.ORG share a key for krbtgt/PROD.EXAMPLE.ORG@EXAMPLE.ORG
The more complicated, but also more flexible, method involves configuring the capaths section of /etc/krb5.conf, so that clients which have credentials for one realm will be able to look up which realm is next in the chain which will eventually lead to the being able to authenticate to servers.
The format of the capaths section is relatively straightforward: each entry in the section is named after a realm in which a client might exist. Inside of that subsection, the set of intermediate realms from which the client must obtain credentials is listed as values of the key which corresponds to the realm in which a service might reside. If there are no intermediate realms, the value "." is used.
Here's an example:
[capaths]
A.EXAMPLE.COM = {
	B.EXAMPLE.COM = .
	C.EXAMPLE.COM = B.EXAMPLE.COM
	D.EXAMPLE.COM = B.EXAMPLE.COM
	D.EXAMPLE.COM = C.EXAMPLE.COM
}
In this example, clients in the A.EXAMPLE.COM realm can obtain cross-realm credentials for B.EXAMPLE.COM directly from the A.EXAMPLE.COM KDC.
If those clients wish to contact a service in theC.EXAMPLE.COM realm, they will first need to obtain necessary credentials from the B.EXAMPLE.COM realm (this requires that krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM exist), and then use those credentials to obtain credentials for use in the C.EXAMPLE.COM realm (using krbtgt/C.EXAMPLE.COM@B.EXAMPLE.COM).
If those clients wish to contact a service in the D.EXAMPLE.COM realm, they will first need to obtain necessary credentials from the B.EXAMPLE.COM realm, and then credentials from the C.EXAMPLE.COM realm, before finally obtaining credentials for use with the D.EXAMPLE.COM realm.

Anmerkung

Without a capath entry indicating otherwise, Kerberos assumes that cross-realm trust relationships form a hierarchy.
Clients in the A.EXAMPLE.COM realm can obtain cross-realm credentials from B.EXAMPLE.COM realm directly. Without the "." indicating this, the client would instead attempt to use a hierarchical path, in this case:


A.EXAMPLE.COM → EXAMPLE.COM → B.EXAMPLE.COM

46.6.10. Zusätzliche Ressourcen

Weitere Informationen zu Kerberos finden Sie in folgenden Ressourcen.

46.6.10.1. Installierte Dokumentation

  • The Kerberos V5 Installation Guide and the Kerberos V5 System Administrator's Guide in PostScript and HTML formats. These can be found in the /usr/share/doc/krb5-server-<version-number>/ directory (where <version-number> is the version number of the krb5-server package installed on your system).
  • The Kerberos V5 UNIX User's Guide in PostScript and HTML formats. These can be found in the /usr/share/doc/krb5-workstation-<version-number>/ directory (where <version-number> is the version number of the krb5-workstation package installed on your system).
  • Kerberos man-Seiten — Es gibt eine Vielzahl von man-Seiten für die verschiedenen Applikationen und Konfirgurationsdateien für die Implementation von Kerberos. Im folgenden finden Sie eine Liste der bedeutenderen man-Seiten.
    Client-Applikationen
    • man kerberos — Eine Einführung in das Kerberos-System, in dem beschrieben wird, wie Berechtigungsnachweise funktionieren, und Empfehlungen für das Erhalten und Löschen von Kerberos-Tickets ausgegeben werden. Unten auf der Handbuch-Seite werden verwandte Handbuch-Seiten angegeben.
    • man kinit — Beschreibt, wie man diesen Befehl für das Erhalten und Cachen eines Ticket-Granting Tickets verwendet.
    • man kdestroy — Beschreibt, wie man diesen Befehl zum Löschen von Kerberos-Berechtigungsnachweisen verwendet.
    • man klist — Beschreibt, wie man diesen Befehl zum Auflisten von gecachten Kerberos-Berechtigungsnachweisen verwendet.
    Administrative Applikationen
    • man kadmin — Beschreibt, wie man diesen Befehl zur Verwaltung der Kerberos V5 Datenbank verwendet.
    • man kdb5_util — Beschreibt, wie man diesen Befehl zum Erstellen und Durchführen administrativer Funktionen in der Kerberos V5 Datenbank verwendet.
    Server Applikationen
    • man krb5kdc — Beschreibt die zur Verfügung stehenden Befehlszeilenoptionen für das Kerberos V5 KDC.
    • man kadmind — Beschreibt die zur Verfügung stehenden Befehlszeilenoptionen für den Kerberos V5 Administration Server.
    Konfirgurationsdateien
    • man krb5.conf — Beschreibt das Format und die zur Verfügung stehenden Optionen innerhalb der Konfigurationsdatei der Kerberos V5 Bibliothek.
    • man kdc.conf — Beschreibt das Format und die zur Verfügung stehenden Optionen innerhalb der Konfigurationsdatei der Kerberos V5 AS und Kerberos KDC.

46.6.10.2. Hilfreiche Webseiten

46.7. Virtuelle Private Netzwerke (VPNs)

Unternehmen mit mehreren Zweigstellen sind häufig über spezielle Leitungen miteinander verbunden, um Effizienz und Schutz empfindlicher Daten zu gewähren. Viele Firmen nutzen zum Beispiel Frame Relay oder Asynchronous Transfer Mode (ATM) Leitungen als End-to-End Netzwerklösung, um Büros miteinander zu verbinden. Dies kann eine teurere Lösung darstellen, insbesondere für kleine bis mittlere Unternehmen (SMBs), die sich vergrößern, jedoch nicht die hohen Kosten für hochrangige Digitalschaltungen in Kauf nehmen wollen.
Virtuelle Private Netzwerke (VPN) stellen eine Lösung für dieses Problem dar. Dem Prinzip besonders zugewiesener Digitalschaltungen folgend, ermöglichen VPNs gesicherte, digitale Kommunikation zwischen zwei Parteien (oder Netzwerken) und erstellen somit ein Wide-Area-Netzwerk (WAN) aus bestehenden Local-Area-Netzwerken (LANs). Der Unterschied zum Frame Relay oder ATM ist das Transportmedium. VPNs übertragen via IP-Datagrammen, und sorgen somit für einen sicheren Transfer durch das Internet zum Bestimmungsort. Die meisten frei verfügbaren VPN-Implementierungen enthalten Open Standard, eine Open Source Verschlüsselung für das Maskieren von Daten während der Übertragung.
Einige Unternehmen setzen VPN-Hardwarelösungen ein, um die Sicherheit zu erhöhen, während andere Software- oder Protokoll-basierte Implementierungen verwenden. Es gibt mehrere Hersteller für Hardware-VPN-Lösungen, wie z.B. Cisco, Nortel, IBM und Checkpoint. Es gibt eine kostenlose, Software-basierte VPN-Lösung für Linux mit dem Namen FreeS/Wan, die eine standardisierte IPSec (Internet Protocol Security) Implementierung verwendet. Diese VPN-Lösungen verhalten sich wie spezielle Router, die sich in der IP-Verbindung von einem Büro zum nächsten befinden.

46.7.1. Wie funktioniert ein VPN?

Wenn ein Paket von einem Client verschickt wird, wird es durch den VPN-Router oder -Gateway gesendet. Dieser fügt ein Authentication Header (AH) für das Routing und zur Authentifizierung hinzu. Die Daten werden dann verschlüsselt und schließlich in Encapsulating Security Payload (ESP) eingeschlossen. Letzteres bildet die Verschlüsselung und Betriebsanweisungen.
Der empfangende VPN-Router holt sich die Header-Information und leitet diese zum Zielort weiter (entweder zu einem Arbeitsplatzrechner oder einem Knoten im Netzwerk). Unter Verwendung einer Netzwerk-zu-Netzwerk Verbindung erhält der empfangende Knoten am lokalen Netzwerk die Pakete unverschlüsselt und bereit zur Verarbeitung. Der Verschlüsselungs-/Entschlüsselungsprozess in einer Netzwerk-zu-Netzwerk VPN-Verbindung, ist für den lokalen Knoten transparent.
Durch solch einen erhöhten Grad an Sicherheit muss ein Cracker nicht nur ein Paket abfangen, sondern dies auch entschlüsseln. Eindringlinge, die eine Man-in-the-Middle-Attacke zwischen einem Server und einem Client durchführen, müssen daher auch Zugang zu mindestens einem der Schlüssel besitzen, die für die Authentifizierung verwendet werden. VPNs sind ein sicheres und effektives Mittel für die Verbindung mehrerer entfernter Knoten, die sich dann als ein vereinheitlichtes Intranet verhalten.

46.7.2. VPNs und Red Hat Enterprise Linux

Red Hat Enterprise Linux Benutzern stehen verschiedene Optionen hinsichtlich der Implementation einer Softwarelösung, um sich sicher mit einem WAN verbinden zu können. Internet Protocol Security (IPsec) ist die unterstützte VPN-Implementation für Red Hat Enterprise Linux, welches ausreichend den Nutzungsanforderungen von Unternehmen mit Zweigstellen oder Remote-Benutzern gerecht wird.

46.7.3. IPsec

Red Hat Enterprise Linux unterstützt IPsec zur gemeinsamen Verbindung von Remote-Hosts und Netzwerken unter Verwendung eines sicheren Tunnels auf einem öffentlichen Netzwerk, wie dem Internet. IPsec kann unter Verwendung einer Host-zu-Host (Verbindung eines Arbeitsplatzrechners mit einem anderen) oder Netzwerk-zu-Netzwerk (Verbindung eines LANs/ WANs mit einem anderen) Konfiguration implementiert werden.
Die IPsec-Implementation in Red Hat Enterprise Linux benutzt Internet Key Exchange (IKE), das ein von der Internet Engineering Task Force (IETF) implementiertes Protokoll darstellt. Es ist für beiderseitige Authentifizierung und sichere Verbindungen zwischen Systemen bestimmt.

46.7.4. Eine IPsec-Verbindung erstellen

An IPsec connection is split into two logical phases. In phase 1, an IPsec node initializes the connection with the remote node or network. The remote node or network checks the requesting node's credentials and both parties negotiate the authentication method for the connection.
Auf Red Hat Enterprise Linux-Systemen verwendet eine IPsec-Verbindung die Pre-Shared Key-Methode (vorab ausgetauschte Schlüssel) der IPsec Knoten-Authentifizierung. Bei einer IPsec-Verbindung mit zuvor ausgetauschten Schlüsseln (pre-shared keys), müssen beide Hosts denselben Schlüssel verwenden, um zu Phase 2, der IPsec-Verbindung zu gelangen.
Phase 2 der IPsec-Verbindung ist diejenige, in der Security Association (SA) zwischen den IPsec-Knoten geschaffen wird. Diese Phase errichtet eine SA-Datenbank mit Konfigurationsinformationen, wie z.B. die Verschlüsselungsmethode, Secret-Session-Key (temporärer Schlüssel, den nur 2 Instanzen kennen), Austauschparameter und vieles mehr. In dieser Phase findet die eigentliche IPsec-Verbindung zwischen den entfernten Knoten und Netzwerken statt.
Die Red Hat Enterprise Linux Implementierung von IPsec verwendet IKE, damit die Schlüssel von den Hosts im ganzen Internet gemeinsam verwendet werden können. Der racoon Schlüssel-Daemon übernimmt die IKE-Schlüsselvergabe und den Austausch. Konsultieren Sie racoon Handbuch-Seite für weitere Informationen zu diesem Daemon.

46.7.5. Installation von IPsec

Die Implementierung von IPsec erfordert, dass das ipsec-tools RPM-Paket auf allen IPsec-Hosts (wenn eine Host-zu-Host-Konfiguration verwendet wird) oder Routern (wenn eine Netzwerk-zu-Netzwerk-Konfiguration verwendet wird) installiert wird. Das RPM-Paket enthält essentielle Bibliotheken, Daemons und Konfigurationsdateien zur Einrichtung der IPsec-Verbindung, inklusive:
  • /sbin/setkey — verändert das Schlüsselmanagement und die Sicherheitsattribute von IPsec im Kernel. Dieser Befehl wird vom racoon Schlüsselmanagement-Daemon kontrolliert. Für weitere Informationen über setkey, siehe setkey(8) Handbuch-Seite.
  • /usr/sbin/racoon — the IKE key management daemon, used to manage and control security associations and key sharing between IPsec-connected systems.
  • /etc/racoon/racoon.conf — Die racoon Daemon-Konfigurationsdatei, die verwendet wird, um verschiedene Bereiche der IPsec-Verbindung zu konfigurieren. Enthalten sind auch Methoden der Authentifizierung und Algorithmen zur Verschlüsselung, die bei der Verbindung verwendet werden. Eine komplette Liste der verfügbaren Direktiven finden Sie auf der racoon.conf(5) Handbuch-Seite.
Um IPsec unter Red Hat Enterprise Linux zu konfigurieren, können Sie das Network-Administration-Tool, oder bearbeiten die Netzwerk und IPsec Konfigurationsdateien per Hand.

46.7.6. Konfiguration von IPsec Host-zu-Host

Sie können IPsec so konfigurieren, dass ein Desktop oder ein Arbeitsplatzrechner mit (einem) anderen über eine Host-zu-Host-Verbindung verbunden werden kann. Diese Art der Verbindung verwendet das Netzwerk, mit dem jeder Host verbunden ist, um einen sicheren Tunnel zueinander zu schaffen. Die Erfordernisse für eine Host-zu-Host-Verbindung sind minimal, wie auch die Konfiguration von IPsec bei jedem Host. Die Hosts brauchen lediglich eine bestimmte Verbindung zu einem Träger-Netzwerk (wie das Internet) und Red Hat Enterprise Linux um die IPsec-Verbindung herzustellen.

46.7.6.1. Host-zu-Host-Verbindung

Eine Host-zu-Host IPsec-Verbindung ist eine verschlüsselte Verbindung zwischen zwei Systemen, auf denen jeweils IPsec mit demselben Authentifizierungsschlüssel läuft. Mit einer aktiven IPsec-Verbindung wird jeglicher Netzwerkverkehr zwischen den beiden Hosts verschlüsselt.
Um eine Host-zu-Host IPsec-Verbindung zu konfigurieren, führen Sie folgende Schritte für jeden Host durch:

Hinweis

Sie sollten folgende Schritte auf genau der Maschine ausführen, die sie gerade konfigurieren. Vermeiden Sie das Konfigurieren und Einrichten einer IPsec-Verbindung von der Ferne (remote) aus.
  1. Geben Sie in einer Befehlsshell system-config-network ein, um das Network-Administration-Tool zu starten.
  2. Klicken Sie auf dem IPsec-Reiter auf Neu, um den IPsec-Konfigurationswizard zu starten.
  3. Klicken Sie auf Weiter, um mit der Konfiguration einer Host-zu-Host IPsec-Verbindung zu beginnen.
  4. Enter a unique name for the connection, for example, ipsec0. If required, select the check box to automatically activate the connection when the computer starts. Click Forward to continue.
  5. Wählen Sie Host-zu-Host-Verschlüsselung als Verbindungstyp und klicken dann auf Weiter.
  6. Wählen Sie den zu verwendenden Verschlüsselungstyp: manuell oder automatisch.
    Falls Sie manuelle Verschlüsselung auswählen, muss im weiteren Verlauf ein Verschlüsselungscode angegeben werden. Wenn Sie automatische Verschlüsselung wählen, verwaltet der racoon-Daemon, den Verschlüsselungscode. Das Paket ipsec-tools muss installiert sein, um automatische Verschlüsselung nutzen zu können.
    Klicken Sie auf Weiter, um fortzufahren.
  7. Geben Sie die IP-Adresse des Remote-Host ein.
    Um die IP-Adresse des Remote-Host zu bestimmen, führen Sie folgenden Befehl auf dem Remote-Host aus:
    ifconfig <device>
    where <device> is the Ethernet device that you want to use for the VPN connection.
    Falls nur eine Ethernet-Karte im System vorhanden ist, lautet der Gerätename üblicherweise eth0. Das folgende Beispiel zeigt die relevanten Informationen dieses Befehls (bitte beachten Sie, das es sich hier lediglich um eine exemplarische Ausgabe handelt):
    eth0      Link encap:Ethernet  HWaddr 00:0C:6E:E8:98:1D
              inet addr:172.16.44.192  Bcast:172.16.45.255  Mask:255.255.254.0
    Die IP-Adresse ist die Nummer nach der Kennzeichnung inet addr:

    Hinweis

    Bei Host-zu-Host-Verbindungen sollten beide Hosts eine öffentliche, routbare Adresse besitzen. Alternativ können beide Hosts eine private, nicht-routbare Adresse besitzen (zum Beispiel aus den Adressbereichen 10.x.x.x oder 192.168.x.x), solange sie sich im selben LAN befinden.
    If the hosts are on different LANs, or one has a public address while the other has a private address, refer to Abschnitt 46.7.7, „IPsec Netzwerk-zu-Netzwerk Konfiguration“.
    Klicken Sie auf Weiter, um fortzufahren.
  8. If manual encryption was selected in step 6, specify the encryption key to use, or click Generate to create one.
    1. Geben Sie einen Authentifizierungsschlüssel an oder klicken Sie auf Erstellen, um einen zu generieren. Dieser kann aus einer Kombination aus Zahlen und Buchstaben bestehen.
    2. Klicken Sie auf Weiter, um fortzufahren.
  9. Überprüfen Sie die Informationen auf der Seite IPsec — Zusammenfassung und klicken dann auf Anwenden.
  10. Click File > Save to save the configuration.
    Sie müssen möglicherweise das Netzwerk neu starten, damit die Änderungen wirksam werden. Um das Netzwerk neu zu starten, verwenden Sie den folgenden Befehl:
    service network restart
  11. Wählen Sie die IPsec-Verbindung aus der Liste aus und klicken auf die Schaltfläche Aktivieren.
  12. Repeat the entire procedure for the other host. It is essential that the same keys from step 8 be used on the other hosts. Otherwise, IPsec will not work.
After configuring the IPsec connection, it appears in the IPsec list as shown in Abbildung 46.10, „IPsec Connection“.
IPsec Connection
IPsec Connection
Abbildung 46.10. IPsec Connection

Die folgenden Dateien werden bei der Konfiguration der IPsec-Verbindung angelegt:
  • /etc/sysconfig/network-scripts/ifcfg-<nickname>
  • /etc/sysconfig/network-scripts/keys-<nickname>
  • /etc/racoon/<remote-ip>.conf
  • /etc/racoon/psk.txt
Falls automatische Verschlüsselung ausgewählt wurde, wird /etc/racoon/racoon.conf auch erstellt.
When the interface is up, /etc/racoon/racoon.conf is modified to include <remote-ip>.conf.

46.7.6.2. Manuelle Konfiguration von Host-zu-Host IPsec

Der erste Schritt bei der Erstellung einer Verbindung ist das Einholen von System- und Netzwerkinformationen von jedem Arbeitsplatzrechner. Für eine Host- zu Host-Verbindung brauchen Sie die folgende Information:
  • Die IP-Adressen von jedem Host
  • Ein eindeutiger Name, z.B. ipsec1. Dieser wird zur Identifizierung der IPsec-Verbindung verwendet, und zur Unterscheidung von anderen Geräten oder Verbindungen.
  • Einen festgelegten Verschlüsselungscode oder einen, der automatisch von racoon geschaffen wurde.
  • Ein bereits vorher gemeinsam verwendeter Schlüssel zu Authentifizierung, der verwendet wird, um die Verbindung zu initialisieren und den Austausch von Verschlüsselungscodes möglich zu machen.
Stellen Sie sich z.B. vor, Arbeitsplatzrechner A und Arbeitsplatzrechner B wollen sich durch einen IPsec-Tunnel miteinander verbinden. Sie wollen sich unter Verwendung eines vorher gemeinsam verwendeten Schlüssels mit dem Wert Key_Value01. Die Benutzer kommen überein, racoon automatisch einen Schlüssel zur Authentifizierung generieren zu lassen, der von beiden Hosts gemeinsam verwendet wird. Beide Hosts entscheiden sich dafür, ihre Verbindungen ipsec1 zu nennen.

Hinweis

Sie sollten einen PSK mit einem Mix aus großen und kleinen Zeichen, Zahlen und Satzzeichen verwenden. Ein leicht zu erratender PSK birgt ein Sicherheitsrisiko.
Es muss nicht notwendigerweise derselbe Verbindungsname für jeden Host verwendet werden. Sie sollten einen Namen wählen, der bequem und aussagekräftig für Ihre Installation ist.
Im Folgenden sehen Sie die IPsec Konfigurationsdatei für Arbeitsplatzrechner A für eine Host-zu-Host IPsec-Verbindung mit Arbeitsplatzrechner B. Der eindeutige Name zur Identifizierung der Verbindung in diesem Beispiel ist ipsec1, der daraus resultierende Dateiname ist daher /etc/sysconfig/network-scripts/ifcfg-ipsec1.
DST=X.X.X.X
TYPE=IPSEC
ONBOOT=no
IKE_METHOD=PSK
Arbeitsplatzrechner A würde X.X.X.X mit der IP Adresse von Arbeitsplatzrechner B ersetzen, während Arbeitsplatzrechner B X.X.X.X mit der IP Adresse von Arbeitsplatzrechner A ersetzen würde. Die Verbindung ist so eingestellt, dass sie beim Hochfahren startet (ONBOOT=no) und verwendet die Authentifizierungsmethode der vorher gemeinsam verwendeten Schlüssel (IKE_METHOD=PSK).
Im Folgenden finden Sie die Datei mit den vorher gemeinsam benützten Schlüsseln (/etc/sysconfig/network-scripts/keys-ipsec0 genannt), die beide Arbeitsplatzrechner verwenden, um sich gegenseitig zu authentifizieren. Der Inhalt dieser Datei sollte auf beiden Arbeitsplatzrechnern identisch sein und nur der Root-Benutzer sollte die Datei lesen oder überschreiben können.
IKE_PSK=Key_Value01

Wichtig

Um die Datei keys-ipsec1 zu verändern, damit sie lediglich vom Root-Benutzer gelesen oder bearbeitet werden kann, führen Sie nach der Erstellung der Datei den folgenden Befehl aus:
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1
Sie können den Authentifizierungsschlüssel jederzeit ändern. Bearbeiten Sie die keys-ipsec1 Datei auf beiden Arbeitsplatzrechnern. Für eine ordentliche Verbindung müssen beide Schlüssel identisch sein.
Im folgenden Beispiel sehen Sie die Konfigurationsdatei für die Phase-1-Verbindung zum Remote-Host. Die Datei trägt den Namen X.X.X.X.conf (ersetzen Sie X.X.X.X mit der IP-Adresse des Remote-IPsec-Hosts). Beachten Sie, dass diese Datei automatisch erzeugt wird, wenn der IPsec-Tunnel aktiviert wird, und nicht direkt bearbeitet werden sollte.
remote X.X.X.X
{
         exchange_mode aggressive, main;
	 my_identifier address;
	 proposal {
	 	encryption_algorithm 3des;
		hash_algorithm sha1;
		authentication_method pre_shared_key;
		dh_group 2 ;
	}
}
Die Standardkonfigurationsdatei der Phase 1, die erzeugt wird, wenn eine IPsec-Verbindung initialisiert wird, beinhaltet folgenden Statements, die von der Red Hat Enterprise Linux-Implementierung von IPsec verwendet werden:
remote X.X.X.X
Legt fest, dass die nachfolgenden Stanzen dieser Konfigurationsdatei nur auf den entfernten Knoten zutreffen, der durch die IP-Adresse X.X.X.X identifiziert wird.
exchange_mode aggressive
Die Standardkonfiguration für IPsec auf Red Hat Enterprise Linux benutzt einen sog. aggressiven Authentifizierungsmodus, welcher den Overhead bei der Verbindung senkt, während gleichzeitig die Konfiguration von mehreren IPsec-Verbindungen mit mehreren Hosts ermöglicht wird.
my_identifier address
Legt die Identifikationsmethode fest, die bei der Authentifizierung von Knoten benutzt wird. Red Hat Enterprise Linux benutzt IP-Adressen, um Knoten zu identifizieren.
encryption_algorithm 3des
Legt den Verschlüsselungscode fest, der während der Authentifizierung benutzt wird. Standardmäßig wird Triple Data Encryption Standard (3DES) benutzt.
hash_algorithm sha1;
Legt den Hash-Algorithmus fest, der während der Verhandlung der Phase 1 zwischen den Knoten eingesetzt wird. Secure-Hash-Algorithmus Version 1 ist Standard.
authentication_method pre_shared_key
Legt die Authentifizierungsmethode fest, die während der Knoten-Verhandlung benutzt wird. Red Hat Enterprise Linux benutzt vorab ausgetauschte Schlüssel (pre-shared Keys) zur Authentifizierung.
dh_group 2
Legt die Diffie-Hellman Gruppennummer zur Erstellung dynamisch generierter temporärer Schlüssel (Session Keys). Standardmäßig wird die 1024-Bit Gruppe modp1024 (group 2) benutzt.
46.7.6.2.1. Die Konfigurationsdatei von Racoon
The /etc/racoon/racoon.conf files should be identical on all IPsec nodes except for the include "/etc/racoon/X.X.X.X.conf" statement. This statement (and the file it references) is generated when the IPsec tunnel is activated. For Workstation A, the X.X.X.X in the include statement is Workstation B's IP address. The opposite is true of Workstation B. The following shows a typical racoon.conf file when the IPsec connection is activated.
# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.

path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

sainfo anonymous
{
        pfs_group 2;
        lifetime time 1 hour ;
        encryption_algorithm 3des, blowfish 448, rijndael ;
        authentication_algorithm hmac_sha1, hmac_md5 ;
        compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf";
Diese standardmäßige racoon.conf-Datei beinhaltet festgelegte Pfade für die IPsec-Konfiguration, Dateien zuvor verteilter Schlüssel und Zertifikate. Die Felder in sainfo anonymous beschreiben die Phase 2 SA (Security Association) zwischen den IPsec-Knoten — die Natur der IPsec-Verbindung (inklusive der unterstützten Verschlüsselungsalgorithmen, die Verwendung finden) und die Methode des Schlüsselaustauschs. Die folgende Liste bestimmt die Felder der Phase 2:
sainfo anonymous
Bedeutet, dass SA mit jedem Peer anonym initialisieren kann, insofern die IPsec-Berechtigungsnachweise (Credentials) übereinstimmen.
pfs_group 2
Legt das Diffie-Hellmann Schlüsselaustauschprotokoll fest, welches die Methode bestimmt, in der die IPsec-Knoten einen gemeinsamen, temporären Sitzungsschlüssel für die Verbindungsfähigkeit von IPsec in der 2. Phase einrichten. Standardmäßig benutzt die Red Hat Enterprise Linux-Implementierung von IPsec Gruppe 2 (oder modp1024) der Diffie-Hellmann kryptographischen Schlüsselaustausch-Gruppen. Gruppe 2 benutzt eine 1024-Bit modulare Potenzierung, welche Eindringlinge davon abhalten soll, bisherige IPsec-Übertragungen zu entschlüsseln, auch wenn ein privater Schlüssel dadurch kompromittiert wird.
lifetime time 1 hour
Dieser Parameter legt den Lebenszyklus einer SA fest und kann entweder durch Zeit oder durch Datenmengen (Bytes) quantitativ bestimmt werden. Die Red Hat Enterprise Linux-Implementierung von IPsec legt eine einstündige Lebensdauer fest.
encryption_algorithm 3des, blowfish 448, rijndael
Legt den unterstützten Verschlüsselungscode für Phase 2 fest. Red Hat Enterprise Linux unterstützt 3DES, 448-Bit Blowfish und Rijndael (verwendet im Advanced Encryption Standard oder AES).
authentication_algorithm hmac_sha1, hmac_md5
Listet die unterstützten Hash-Algorithmen für Authentifizierung. Unterstützte Modi sind sha1 und md5 Hashed Message Authentication Codes (HMAC).
compression_algorithm deflate
Legt den Deflate-Compression-Algorithmus für IP-Payload Compression (IPCOMP) Unterstützung fest, was möglicherweise eine schnellere Übertragung von IP-Datagrammen über langsame Verbindungen ermöglicht.
Um die Verbindung zu starten, führen Sie als Root den folgenden Befehl auf jedem Host aus:
ifup <nickname>
where <nickname> is the name you specified for the IPsec connection.
To test the IPsec connection, run the tcpdump utility to view the network packets being transferred between the hosts and verify that they are encrypted via IPsec. The packet should include an AH header and should be shown as ESP packets. ESP means it is encrypted. For example:
~]# tcpdump -n -i eth0 host <targetSystem>

IP 172.16.45.107 > 172.16.44.192: AH(spi=0x0954ccb6,seq=0xbb): ESP(spi=0x0c9f2164,seq=0xbb)

46.7.7. IPsec Netzwerk-zu-Netzwerk Konfiguration

IPsec can also be configured to connect an entire network (such as a LAN or WAN) to a remote network using a network-to-network connection. A network-to-network connection requires the setup of IPsec routers on each side of the connecting networks to transparently process and route information from one node on a LAN to a node on a remote LAN. Abbildung 46.11, „A network-to-network IPsec tunneled connection“ shows a network-to-network IPsec tunneled connection.
A network-to-network IPsec tunneled connection
A network-to-network IPsec tunneled connection
Abbildung 46.11. A network-to-network IPsec tunneled connection

Das Diagramm zeigt zwei separate LANs, die durch das Internet getrennt sind. Diese LANs verwenden IPsec-Routers, um eine Verbindung in einem sicheren Tunnel im Internet zu authentifizieren und zu initialisieren. Pakete, die bei der Übertragung abgefangen werden, müssten via brute-force entschlüsselt werden, damit der Code geknackt werden kann, der die Pakete zwischen diesen LANs beschützt. Der Prozess der Kommunikation von einem Netzknoten in der 192.168.1.0/24 IP-Reihe zu einem anderen auf 192.169.2.0/24 ist für die Knoten vollständig transparent, da die Verarbeitung, die Ver- und Entschlüsselung und das Routing der IPsec-Pakete komplett vom IPsec-Router gehandhabt wird.
Die Information, die für eine Netzwerk-zu-Netzwerk-Verbindung gebraucht wird, umfasst:
  • Die IP-Adressen der dedizierten IPsec-Router, auf die extern zugegriffen werden kann
  • Die Netzwerk-Adressen-Reihen des LAN/WAN, die von den IPsec-Routern bedient werden (z.B. 192.168.0.0/24 oder 10.0.1.0/24)
  • Die IP-Adressen der Gateway-Einrichtungen, die die Daten von den Netzwerkknoten zum Internet leiten
  • Ein eindeutiger Name, z.B. ipsec1. Dieser wird zur Identifizierung der IPsec-Verbindung verwendet, und zur Unterscheidung von anderen Geräten oder Verbindungen.
  • Einen festgelegten Verschlüsselungscode oder einen, der automatisch von racoon geschaffen wurde.
  • Ein bereits vorher gemeinsam verwendeter Schlüssel zu Authentifizierung, der verwendet wird, um die Verbindung zu initialisieren und den Austausch von Verschlüsselungscodes möglich zu machen.

46.7.7.1. Netzwerk-zu-Netzwerk (VPN) Verbindung

Eine Netzwerk-zu-Netzwerk IPsec-Verbindung verwendet zwei IPsec-Router, einen für jedes Netzwerk, durch die der Netzwerkverkehr für privaten Subnetze geroutet wird.
For example, as shown in Abbildung 46.12, „Network-to-Network IPsec“, if the 192.168.1.0/24 private network sends network traffic to the 192.168.2.0/24 private network, the packets go through gateway0, to ipsec0, through the Internet, to ipsec1, to gateway1, and to the 192.168.2.0/24 subnet.
IPsec-Router benötigen öffentlich adressierbare IP-Adressen und ein zweites Ethernet-Gerät, das mit ihrem jeweiligen privaten Netzwerk verbunden ist. Der Datenverkehr durchläuft den IPsec-Router nur dann, wenn das Ziel ein anderer IPsec-Router ist, mit dem eine verschlüsselte Verbindung besteht.
Network-to-Network IPsec
Network-to-Network IPsec
Abbildung 46.12. Network-to-Network IPsec

Alternative Netzwerkkonfigurationsoptionen umfassen einen Firewall zwischen jedem IP-Router und dem Internet und einen Intranet-Firewall zwischen jedem IPsec-Router und Subnetz-Gateway. Der IPsec-Router und das Gateway für das Subnetz können ein und dasselbe System mit zwei Ethernet-Geräten sein: Eines mit einer öffentlichen IP-Adresse, das als der IPsec-Router fungiert und eines mit einer privaten IP-Adresse, das als Gateway für das private Subnetz agiert. Jeder IPsec-Router kann das Gateway für sein privates Netzwerk oder ein öffentliches Gateway nutzen, um Pakete zum anderen IPsec-Router zu senden.
Gehen Sie wie folgt vor, um eine Netzwerk-zu-Netzwerk IPsec-Verbindung zu konfigurieren:
  1. Geben Sie in einer Befehlsshell system-config-network ein, um das Network-Administration-Tool zu starten.
  2. Klicken Sie auf dem IPsec-Reiter auf Neu, um den IPsec-Konfigurationswizard zu starten.
  3. Klicken Sie auf Weiter, um mit der Konfiguration einer Netzwerk-zu-Netzwerk IPsec-Verbindung zu beginnen.
  4. Enter a unique nickname for the connection, for example, ipsec0. If required, select the check box to automatically activate the connection when the computer starts. Click Forward to continue.
  5. Wählen Sie Netzwerk-zu-Netzwerk-Verschlüsselung (VPN) als Verbindungstyp und klicken dann auf Weiter.
  6. Wählen Sie den zu verwendenden Verschlüsselungstyp: manuell oder automatisch.
    Falls Sie manuelle Verschlüsselung auswählen, muss im weiteren Verlauf ein Verschlüsselungscode angegeben werden. Wenn Sie automatische Verschlüsselung wählen, verwaltet der racoon-Daemon, den Verschlüsselungscode. Das Paket ipsec-tools muss installiert sein, um automatische Verschlüsselung nutzen zu können.
    Klicken Sie auf Weiter, um fortzufahren.
  7. Geben Sie auf der Seite Lokales Netzwerk folgende Informationen ein:
    • Local Network Address — Die IP-Adresse des Gerätes des IPsec-Routers, das mit dem privaten Netzwerk verbunden ist.
    • Local Subnet Mask — Die Subnetzmaske der IP-Adresse des lokalen Netzwerkes.
    • Local Network Gateway — Das Gateway für das private Subnetz.
    Klicken Sie auf Weiter, um fortzufahren.
    Local Network Information
    Local Network Information
    Abbildung 46.13. Local Network Information

  8. Geben Sie auf der Seite Remote-Netzwerk folgende Informationen ein:
    • Remote IP-Adresse — Die öffentlich adressierbare IP-Adresse des IPsec-Routers für das andere private Netzwerk. Geben Sie in unserem Beispiel für ipsec0 die öffentlich adressierbare IP-Adresse von ipsec1 ein und umgekehrt.
    • Remote-Netzwerkzugriff — Die Netzwerkadresse des privaten Subnetzes hinter dem anderen IPsec-Router. Geben Sie in unserem Beispiel 192.168.1.0 bei der Konfiguration von ipsec1 ein und 192.168.2.0, wenn Sie ipsec0 konfigurieren.
    • Remote Subnetzmaske — Die Subnetzmaske der Remote-IP-Adresse.
    • Remote Netzwerk-Gateway — Die IP-Adresse des Gateways für die Remote-Netzwerkadresse.
    • If manual encryption was selected in step 6, specify the encryption key to use or click Generate to create one.
      Geben Sie einen Authentifizierungsschlüssel an oder klicken Sie auf Erstellen, um einen zu generieren. Dieser Schlüssel kann aus einer Kombination aus Zahlen und Buchstaben bestehen.
    Klicken Sie auf Weiter, um fortzufahren.
    Remote Network Information
    Remote Network Information
    Abbildung 46.14. Remote Network Information

  9. Überprüfen Sie die Informationen auf der Seite IPsec — Zusammenfassung und klicken dann auf Anwenden.
  10. Select File > Save to save the configuration.
  11. Wählen Sie die IPsec-Verbindung aus der Liste aus und klicken Sie anschließend zur Aktivierung der Verbindung auf Aktivieren.
  12. IP-Weiterleitung aktivieren:
    1. Edit /etc/sysctl.conf and set net.ipv4.ip_forward to 1.
    2. Führen Sie den folgenden Befehl aus, damit die Änderung wirksam wird:
      sysctl -p /etc/sysctl.conf
Das Netzwerkskript, das die IPsec-Verbindung aktiviert, legt automatisch Netzwerkrouten an, um Pakete durch den IPsec-Router zu schicken, falls notwendig.

46.7.7.2. Manuelle Konfiguration von IPsec Netzwerk-zu-Netzwerk

Nehmen Sie z.B. an, LAN A (lana.example.com) und LAN B (lanb.example.com) wollen sich miteinender durch einen IPsec-Tunnel verbinden. Die Netzwerk-Adresse für LAN A liegt in der 192.168.1.0/24-Reihe, während LAN B die 192.168.2.254-Reihe verwendet. Die Gateway-IP Adresse ist 192.168.1.254 für LAN A und 192.168.2.254 für LAN B. Die IPsec-Router sind von jedem LAN-Gateway getrennt und verwenden zwei Netzwerk-Geräte: eth0 wird eine extern zugängliche statische IP-Adresse für das Internet zugeteilt, eth1 fungiert als Routing-Punkt für das Bearbeiten und Übertragen von LAN-Paketen von einem Netzwerkknoten zu den Remote-Netzwerkknoten.
Die IPsec-Verbindung zwischen den Netzwerken verwendet einen vorab ausgetauschten Schlüssel (pre-shared key) mit dem Wert r3dh4tl1nux. Die Administratoren von A und B einigen sich, racoon automatisch einen Authentifikationsschlüssel zwischen den beiden IPsec-Routern erstellen zu lassen. Der Administrator von LAN A entscheidet sich dafür, die IPsec-Verbindung ipsec0 zu nennen, während der Administrator von LAN B die IPsec-Verbindung ipsec1 nennt.
Im Folgenden sehen Sie die ifcfg Datei für eine Netzwerk-zu-Netzwerk-Verbindung mit IPsec für LAN A. Der eindeutige Name zur Identifizierung der Verbindung ist in diesem Beispiel ipsec0, die daraus resultierende Datei heißt daher /etc/sysconfig/network-scripts/ifcfg-ipsec0.
TYPE=IPSEC
ONBOOT=yes
IKE_METHOD=PSK
SRCGW=192.168.1.254
DSTGW=192.168.2.254
SRCNET=192.168.1.0/24
DSTNET=192.168.2.0/24
DST=X.X.X.X
Die folgende Liste beschreibt den Inhalt dieser Datei:
TYPE=IPSEC
Legt den Typ der Verbindung fest.
ONBOOT=yes
Legt fest, dass die Verbindung beim Systemstart initiiert werden soll.
IKE_METHOD=PSK
Legt die Methode, bei der Schlüssel vorab ausgetauscht werden (pre-shared key), als Authentifizierungsmethode fest.
SRCGW=192.168.1.254
Die IP-Adresse des Quell-Gateways. Für LAN A ist dies das LAN A Gateway und für LAN B das LAN B Gateway.
DSTGW=192.168.2.254
Die IP-Adresse des Ziel-Gateways. Für LAN A ist dies das LAN B Gateway und für LAN B das LAN A Gateway.
SRCNET=192.168.1.0/24
Gibt das Quell-Netzwerk für die IPsec-Verbindung an, die in diesem Beispiel der Netzwerk-Adressbereich für LAN A ist.
DSTNET=192.168.2.0/24
Gibt das Ziel-Netzwerk für die IPsec-Verbindung an, die in diesem Beispiel der Netzwerk-Adressbereich für LAN A ist.
DST=X.X.X.X
Die IP-Adresse von LAN B, auf die extern zugegriffen werden kann.
Im Folgenden finden Sie die Datei mit den vorab ausgetauschten Schlüsseln (pre-shared keys) (/etc/sysconfig/network-scripts/keys-ipsecX genannt, wobei X die 0 für LAN A und die 1 für LAN B ist), die beide Netzwerke verwenden, um sich gegenseitig zu authentifizieren. Der Inhalt dieser Datei sollte identisch sein und nur der Root-Benutzer sollte die Datei lesen oder überschreiben können.
IKE_PSK=r3dh4tl1nux

Wichtig

Um die Datei keys-ipsecX zu verändern, damit sie nur vom Root-Benutzer gelesen oder bearbeitet werden kann, führen Sie nach der Erstellung der Datei den folgenden Befehl aus:
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1
Um den Authentifizierungs-Schlüssel jederzeit zu verändern, bearbeiten Sie die Datei keys-ipsecX auf beiden IPsec-Routern. Für eine ordentliche Verbindung müssen beide Schlüssel gleich sein.
Das ist die /etc/racoon/racoon.conf-Konfigurationsdatei für die IPsec-Verbindung. Beachten Sie, dass die include-Zeile am unteren Ende der Datei automatisch erstellt wird und nur dann erscheint, wenn gerade eine Verbindung mit einem IPsec-Tunnel vorhanden ist.
# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

sainfo anonymous
{
	pfs_group 2;
	lifetime time 1 hour ;
	encryption_algorithm 3des, blowfish 448, rijndael ;
	authentication_algorithm hmac_sha1, hmac_md5 ;
	compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf"
Im Folgenden sehen Sie die Konfigurationsdatei für die Verbindung zum Remote-Netzwerk. Die Datei trägt den Namen X.X.X.X.conf (ersetzen Sie X.X.X.X mit der IP Adresse des Remote-IPsec-Routers). Beachten Sie, dass diese Datei automatisch erzeugt wird, wenn der IPsec-Tunnel aktiviert wird. Sie sollte nicht direkt bearbeitet werden.
remote X.X.X.X
{
        exchange_mode aggressive, main;
	my_identifier address;
	proposal {
		encryption_algorithm 3des;
		hash_algorithm sha1;
		authentication_method pre_shared_key;
		dh_group 2 ;
	}
}
Bevor die IPsec-Verbindung gestartet wird, sollte IP-Forwarding im Kernel aktiviert werden. Aktivieren Sie IP-Forwarding wie folgt:
  1. Edit /etc/sysctl.conf and set net.ipv4.ip_forward to 1.
  2. Führen Sie den folgenden Befehl aus, damit die Änderung wirksam wird:
    sysctl -p /etc/sysctl.conf
Starten Sie die IPsec-Verbindung, indem Sie folgenden Befehl auf jedem Router ausführen:
ifup ipsec0
Die Verbindungen sind nun aktiviert und LAN A und LAN B sind in der Lage, miteinander zu kommunizieren. Die Routen werden automatisch durch das Aufrufen des Initialisierungsskriptes mit ifup bei der IPsec-Verbindung erzeugt. Um eine Liste der Routen für das Netzwerk anzuzeigen, führen Sie folgenden Befehl aus:
ip route list
To test the IPsec connection, run the tcpdump utility on the externally-routable device (eth0 in this example) to view the network packets being transferred between the hosts (or networks), and verify that they are encrypted via IPsec. For example, to check the IPsec connectivity of LAN A, use the following command:
tcpdump -n -i eth0 host lana.example.com
Das Paket sollte eine AH-Kopfzeile enthalten und sollte als ESP-Paket angezeigt werden. ESP heißt, dass es verschlüsselt ist. Zum Beispiel (ein inverser Schrägstrich kennzeichnet die Fortsetzung einer Zeile):
12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \
	lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \
	(ipip-proto-4)

46.7.8. Starten und Stoppen einer IPsec-Verbindung

Falls die IPsec-Verbindung nicht so konfiguriert wurde, dass sie während des Bootvorgangs gestartet wird, können Sie dies auf Kommandozeilenebene nachholen.
Um die Verbindung zu starten, führen Sie folgenden Befehl auf jedem Host der Host-zu-Host IPsec-Verbindung, oder jedem IPsec-Router der Netzwerk-zu-Netzwerk IPSec-Verbindung aus:
ifup <nickname>
where <nickname> is the nickname configured earlier, such as ipsec0.
Um die Verbindung zu beenden, verwenden Sie den folgenden Befehl:
ifdown <nickname>

46.8. Firewalls

Information security is commonly thought of as a process and not a product. However, standard security implementations usually employ some form of dedicated mechanism to control access privileges and restrict network resources to users who are authorized, identifiable, and traceable. Red Hat Enterprise Linux includes several tools to assist administrators and security engineers with network-level access control issues.
Firewalls are one of the core components of a network security implementation. Several vendors market firewall solutions catering to all levels of the marketplace: from home users protecting one PC to data center solutions safeguarding vital enterprise information. Firewalls can be stand-alone hardware solutions, such as firewall appliances by Cisco, Nokia, and Sonicwall. Vendors such as Checkpoint, McAfee, and Symantec have also developed proprietary software firewall solutions for home and business markets.
Apart from the differences between hardware and software firewalls, there are also differences in the way firewalls function that separate one solution from another. Tabelle 46.5, „Firewall-Typen“ details three common types of firewalls and how they function:
Tabelle 46.5. Firewall-Typen
Methode Beschreibung Vorteile Nachteile
NAT Network Address Translation (NAT) places private IP subnetworks behind one or a small pool of public IP addresses, masquerading all requests to one source rather than several. The Linux kernel has built-in NAT functionality through the Netfilter kernel subsystem.
· Can be configured transparently to machines on a LAN
· Protection of many machines and services behind one or more external IP addresses simplifies administration duties
· Restriction of user access to and from the LAN can be configured by opening and closing ports on the NAT firewall/gateway
· Cannot prevent malicious activity once users connect to a service outside of the firewall
Paketfilter A packet filtering firewall reads each data packet that passes through a LAN. It can read and process packets by header information and filters the packet based on sets of programmable rules implemented by the firewall administrator. The Linux kernel has built-in packet filtering functionality through the Netfilter kernel subsystem.
· Customizable through the iptables front-end utility
· Does not require any customization on the client side, as all network activity is filtered at the router level rather than the application level
· Since packets are not transmitted through a proxy, network performance is faster due to direct connection from client to remote host
· Cannot filter packets for content like proxy firewalls
· Processes packets at the protocol layer, but cannot filter packets at an application layer
· Complex network architectures can make establishing packet filtering rules difficult, especially if coupled with IP masquerading or local subnets and DMZ networks
Proxy Proxy-Firewalls filtern alle Anfragen eines bestimmten Protokolls oder Typs von den LAN-Clients zu einer Proxy-Maschine, von wo aus die Anfragen im Namen des lokalen Clients an das Internet gestellt werden. Eine Proxy Maschine fungiert als ein Buffer zwischen bösartigen Benutzern von außen und den internen Client- Maschinen des Netzwerkes.
· Gives administrators control over what applications and protocols function outside of the LAN
· Some proxy servers can cache frequently-accessed data locally rather than having to use the Internet connection to request it. This helps to reduce bandwidth consumption
· Proxy services can be logged and monitored closely, allowing tighter control over resource utilization on the network
· Proxies are often application-specific (HTTP, Telnet, etc.), or protocol-restricted (most proxies work with TCP-connected services only)
· Application services cannot run behind a proxy, so your application servers must use a separate form of network security
· Proxies can become a network bottleneck, as all requests and transmissions are passed through one source rather than directly from a client to a remote service

46.8.1. Netfilter and IPTables

The Linux kernel features a powerful networking subsystem called Netfilter. The Netfilter subsystem provides stateful or stateless packet filtering as well as NAT and IP masquerading services. Netfilter also has the ability to mangle IP header information for advanced routing and connection state management. Netfilter is controlled using the iptables tool.

46.8.1.1. IPTables Overview

The power and flexibility of Netfilter is implemented using the iptables administration tool, a command line tool similar in syntax to its predecessor, ipchains.
A similar syntax does not mean similar implementation, however. ipchains requires intricate rule sets for: filtering source paths; filtering destination paths; and filtering both source and destination connection ports.
By contrast, iptables uses the Netfilter subsystem to enhance network connection, inspection, and processing. iptables features advanced logging, pre- and post-routing actions, network address translation, and port forwarding, all in one command line interface.
This section provides an overview of iptables. For more detailed information, refer to Abschnitt 46.9, „IPTables“.

46.8.2. Basic Firewall Configuration

Just as a firewall in a building attempts to prevent a fire from spreading, a computer firewall attempts to prevent malicious software from spreading to your computer. It also helps to prevent unauthorized users from accessing your computer.
In a default Red Hat Enterprise Linux installation, a firewall exists between your computer or network and any untrusted networks, for example the Internet. It determines which services on your computer remote users can access. A properly configured firewall can greatly increase the security of your system. It is recommended that you configure a firewall for any Red Hat Enterprise Linux system with an Internet connection.

46.8.2.1. Security Level Configuration Tool

During the Firewall Configuration screen of the Red Hat Enterprise Linux installation, you were given the option to enable a basic firewall as well as to allow specific devices, incoming services, and ports.
After installation, you can change this preference by using the Security Level Configuration Tool.
To start this application, use the following command:
system-config-securitylevel
Security Level Configuration Tool
Security Level Configuration
Abbildung 46.15. Security Level Configuration Tool

Anmerkung

The Security Level Configuration Tool only configures a basic firewall. If the system needs more complex rules, refer to Abschnitt 46.9, „IPTables“ for details on configuring specific iptables rules.

46.8.2.2. Enabling and Disabling the Firewall

Select one of the following options for the firewall:
  • Disabled — Disabling the firewall provides complete access to your system and does no security checking. This should only be selected if you are running on a trusted network (not the Internet) or need to configure a custom firewall using the iptables command line tool.

    Warnung

    Firewall configurations and any customized firewall rules are stored in the /etc/sysconfig/iptables file. If you choose Disabled and click OK, these configurations and firewall rules will be lost.
  • Enabled — This option configures the system to reject incoming connections that are not in response to outbound requests, such as DNS replies or DHCP requests. If access to services running on this machine is needed, you can choose to allow specific services through the firewall.
    If you are connecting your system to the Internet, but do not plan to run a server, this is the safest choice.

46.8.2.3. Trusted Services

Enabling options in the Trusted services list allows the specified service to pass through the firewall.
WWW (HTTP)
The HTTP protocol is used by Apache (and by other Web servers) to serve web pages. If you plan on making your Web server publicly available, select this check box. This option is not required for viewing pages locally or for developing web pages. This service requires that the httpd package be installed.
Enabling WWW (HTTP) will not open a port for HTTPS, the SSL version of HTTP. If this service is required, select the Secure WWW (HTTPS) check box.
FTP
The FTP protocol is used to transfer files between machines on a network. If you plan on making your FTP server publicly available, select this check box. This service requires that the vsftpd package be installed.
SSH
Secure Shell (SSH) is a suite of tools for logging into and executing commands on a remote machine. To allow remote access to the machine via ssh, select this check box. This service requires that the openssh-server package be installed.
Telnet
Telnet is a protocol for logging into remote machines. Telnet communications are unencrypted and provide no security from network snooping. Allowing incoming Telnet access is not recommended. To allow remote access to the machine via telnet, select this check box. This service requires that the telnet-server package be installed.
Mail (SMTP)
SMTP is a protocol that allows remote hosts to connect directly to your machine to deliver mail. You do not need to enable this service if you collect your mail from your ISP's server using POP3 or IMAP, or if you use a tool such as fetchmail. To allow delivery of mail to your machine, select this check box. Note that an improperly configured SMTP server can allow remote machines to use your server to send spam.
NFS4
The Network File System (NFS) is a file sharing protocol commonly used on *NIX systems. Version 4 of this protocol is more secure than its predecessors. If you want to share files or directories on your system with other network users, select this check box.
Samba
Samba is an implementation of Microsoft's proprietary SMB networking protocol. If you need to share files, directories, or locally-connected printers with Microsoft Windows machines, select this check box.

46.8.2.4. Other Ports

The Security Level Configuration Tool includes an Other ports section for specifying custom IP ports as being trusted by iptables. For example, to allow IRC and Internet printing protocol (IPP) to pass through the firewall, add the following to the Other ports section:
194:tcp,631:tcp

46.8.2.5. Saving the Settings

Click OK to save the changes and enable or disable the firewall. If Enable firewall was selected, the options selected are translated to iptables commands and written to the /etc/sysconfig/iptables file. The iptables service is also started so that the firewall is activated immediately after saving the selected options. If Disable firewall was selected, the /etc/sysconfig/iptables file is removed and the iptables service is stopped immediately.
The selected options are also written to the /etc/sysconfig/system-config-securitylevel file so that the settings can be restored the next time the application is started. Do not edit this file by hand.
Even though the firewall is activated immediately, the iptables service is not configured to start automatically at boot time. Refer to Abschnitt 46.8.2.6, „Activating the IPTables Service“ for more information.

46.8.2.6. Activating the IPTables Service

The firewall rules are only active if the iptables service is running. To manually start the service, use the following command:
service iptables restart
To ensure that iptables starts when the system is booted, use the following command:
chkconfig --level 345 iptables on
The ipchains service is not included in Red Hat Enterprise Linux. However, if ipchains is installed (for example, an upgrade was performed and the system had ipchains previously installed), the ipchains and iptables services should not be activated simultaneously. To make sure the ipchains service is disabled and configured not to start at boot time, use the following two commands:
service ipchains stop
chkconfig --level 345 ipchains off

46.8.3. Using IPTables

The first step in using iptables is to start the iptables service. Use the following command to start the iptables service:
service iptables start

Anmerkung

The ip6tables service can be turned off if you intend to use the iptables service only. If you deactivate the ip6tables service, remember to deactivate the IPv6 network also. Never leave a network device active without the matching firewall.
To force iptables to start by default when the system is booted, use the following command:
chkconfig --level 345 iptables on
This forces iptables to start whenever the system is booted into runlevel 3, 4, or 5.

46.8.3.1. IPTables Command Syntax

The following sample iptables command illustrates the basic command syntax:
iptables -A <chain> -j <target>
The -A option specifies that the rule be appended to <chain>. Each chain is comprised of one or more rules, and is therefore also known as a ruleset.
The three built-in chains are INPUT, OUTPUT, and FORWARD. These chains are permanent and cannot be deleted. The chain specifies the point at which a packet is manipulated.
The -j <target> option specifies the target of the rule; i.e., what to do if the packet matches the rule. Examples of built-in targets are ACCEPT, DROP, and REJECT.
Refer to the iptables man page for more information on the available chains, options, and targets.

46.8.3.2. Grundlegende Firewall-Richtlinien

Establishing basic firewall policies creates a foundation for building more detailed, user-defined rules.
Each iptables chain is comprised of a default policy, and zero or more rules which work in concert with the default policy to define the overall ruleset for the firewall.
The default policy for a chain can be either DROP or ACCEPT. Security-minded administrators typically implement a default policy of DROP, and only allow specific packets on a case-by-case basis. For example, the following policies block all incoming and outgoing packets on a network gateway:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
It is also recommended that any forwarded packets — network traffic that is to be routed from the firewall to its destination node — be denied as well, to restrict internal clients from inadvertent exposure to the Internet. To do this, use the following rule:
iptables -P FORWARD DROP
When you have established the default policies for each chain, you can create and save further rules for your particular network and security requirements.
The following sections describe how to save iptables rules and outline some of the rules you might implement in the course of building your iptables firewall.

46.8.3.3. Saving and Restoring IPTables Rules

Changes to iptables are transitory; if the system is rebooted or if the iptables service is restarted, the rules are automatically flushed and reset. To save the rules so that they are loaded when the iptables service is started, use the following command:
service iptables save
The rules are stored in the file /etc/sysconfig/iptables and are applied whenever the service is started or the machine is rebooted.

46.8.4. Common IPTables Filtering

Preventing remote attackers from accessing a LAN is one of the most important aspects of network security. The integrity of a LAN should be protected from malicious remote users through the use of stringent firewall rules.
However, with a default policy set to block all incoming, outgoing, and forwarded packets, it is impossible for the firewall/gateway and internal LAN users to communicate with each other or with external resources.
To allow users to perform network-related functions and to use networking applications, administrators must open certain ports for communication.
Um Beispielsweise Zugang zu Part 80 an der Firewall zu ermöglichen, fügen Sie die fogende Regel hinzu:
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
This allows users to browse websites that communicate using the standard port 80. To allow access to secure websites (for example, https://www.example.com/), you also need to provide access to port 443, as follows:
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Wichtig

When creating an iptables ruleset, order is important.
If a rule specifies that any packets from the 192.168.100.0/24 subnet be dropped, and this is followed by a rule that allows packets from 192.168.100.13 (which is within the dropped subnet), then the second rule is ignored.
The rule to allow packets from 192.168.100.13 must precede the rule that drops the remainder of the subnet.
To insert a rule in a specific location in an existing chain, use the -I option. For example:
iptables -I INPUT 1 -i lo -p all -j ACCEPT
This rule is inserted as the first rule in the INPUT chain to allow local loopback device traffic.
There may be times when you require remote access to the LAN. Secure services, for example SSH, can be used for encrypted remote connection to LAN services.
Administrators with PPP-based resources (such as modem banks or bulk ISP accounts), dial-up access can be used to securely circumvent firewall barriers. Because they are direct connections, modem connections are typically behind a firewall/gateway.
For remote users with broadband connections, however, special cases can be made. You can configure iptables to accept connections from remote SSH clients. For example, the following rules allow remote SSH access:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
These rules allow incoming and outbound access for an individual system, such as a single PC directly connected to the Internet or a firewall/gateway. However, they do not allow nodes behind the firewall/gateway to access these services. To allow LAN access to these services, you can use Network Address Translation (NAT) with iptables filtering rules.

46.8.5. FORWARD and NAT Rules

Most ISPs provide only a limited number of publicly routable IP addresses to the organizations they serve.
Administrators must, therefore, find alternative ways to share access to Internet services without giving public IP addresses to every node on the LAN. Using private IP addresses is the most common way of allowing all nodes on a LAN to properly access internal and external network services.
Edge routers (such as firewalls) can receive incoming transmissions from the Internet and route the packets to the intended LAN node. At the same time, firewalls/gateways can also route outgoing requests from a LAN node to the remote Internet service.
This forwarding of network traffic can become dangerous at times, especially with the availability of modern cracking tools that can spoof internal IP addresses and make the remote attacker's machine act as a node on your LAN.
To prevent this, iptables provides routing and forwarding policies that can be implemented to prevent abnormal usage of network resources.
The FORWARD chain allows an administrator to control where packets can be routed within a LAN. For example, to allow forwarding for the entire LAN (assuming the firewall/gateway is assigned an internal IP address on eth1), use the following rules:
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
This rule gives systems behind the firewall/gateway access to the internal network. The gateway routes packets from one LAN node to its intended destination node, passing all packets through its eth1 device.

Anmerkung

By default, the IPv4 policy in Red Hat Enterprise Linux kernels disables support for IP forwarding. This prevents machines that run Red Hat Enterprise Linux from functioning as dedicated edge routers. To enable IP forwarding, use the following command:
sysctl -w net.ipv4.ip_forward=1
This configuration change is only valid for the current session; it does not persist beyond a reboot or network service restart. To permanently set IP forwarding, edit the /etc/sysctl.conf file as follows:
Locate the following line:
net.ipv4.ip_forward = 0
Edit it to read as follows:
net.ipv4.ip_forward = 1
Use the following command to enable the change to the sysctl.conf file:
sysctl -p /etc/sysctl.conf

46.8.5.1. Postrouting and IP Masquerading

Accepting forwarded packets via the firewall's internal IP device allows LAN nodes to communicate with each other; however they still cannot communicate externally to the Internet.
To allow LAN nodes with private IP addresses to communicate with external public networks, configure the firewall for IP masquerading, which masks requests from LAN nodes with the IP address of the firewall's external device (in this case, eth0):
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
This rule uses the NAT packet matching table (-t nat) and specifies the built-in POSTROUTING chain for NAT (-A POSTROUTING) on the firewall's external networking device (-o eth0).
POSTROUTING allows packets to be altered as they are leaving the firewall's external device.
The -j MASQUERADE target is specified to mask the private IP address of a node with the external IP address of the firewall/gateway.

46.8.5.2. Prerouting

If you have a server on your internal network that you want make available externally, you can use the -j DNAT target of the PREROUTING chain in NAT to specify a destination IP address and port where incoming packets requesting a connection to your internal service can be forwarded.
For example, if you want to forward incoming HTTP requests to your dedicated Apache HTTP Server at 172.31.0.23, use the following command:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80
This rule specifies that the nat table use the built-in PREROUTING chain to forward incoming HTTP requests exclusively to the listed destination IP address of 172.31.0.23.

Anmerkung

If you have a default policy of DROP in your FORWARD chain, you must append a rule to forward all incoming HTTP requests so that destination NAT routing is possible. To do this, use the following command:
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT
This rule forwards all incoming HTTP requests from the firewall to the intended destination; the Apache HTTP Server behind the firewall.

46.8.5.3. DMZs and IPTables

You can create iptables rules to route traffic to certain machines, such as a dedicated HTTP or FTP server, in a demilitarized zone (DMZ). A DMZ is a special local subnetwork dedicated to providing services on a public carrier, such as the Internet.
For example, to set a rule for routing incoming HTTP requests to a dedicated HTTP server at 10.0.4.2 (outside of the 192.168.1.0/24 range of the LAN), NAT uses the PREROUTING table to forward the packets to the appropriate destination:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.4.2:80
With this command, all HTTP connections to port 80 from outside of the LAN are routed to the HTTP server on a network separate from the rest of the internal network. This form of network segmentation can prove safer than allowing HTTP connections to a machine on the network.
If the HTTP server is configured to accept secure connections, then port 443 must be forwarded as well.

46.8.6. Malicious Software and Spoofed IP Addresses

More elaborate rules can be created that control access to specific subnets, or even specific nodes, within a LAN. You can also restrict certain dubious applications or programs such as Trojans, worms, and other client/server viruses from contacting their server.
For example, some Trojans scan networks for services on ports from 31337 to 31340 (called the elite ports in cracking terminology).
Since there are no legitimate services that communicate via these non-standard ports, blocking them can effectively diminish the chances that potentially infected nodes on your network independently communicate with their remote master servers.
The following rules drop all TCP traffic that attempts to use port 31337:
iptables -A OUTPUT -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP
iptables -A FORWARD -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP
You can also block outside connections that attempt to spoof private IP address ranges to infiltrate your LAN.
For example, if your LAN uses the 192.168.1.0/24 range, you can design a rule that instructs the Internet-facing network device (for example, eth0) to drop any packets to that device with an address in your LAN IP range.
Because it is recommended to reject forwarded packets as a default policy, any other spoofed IP address to the external-facing device (eth0) is rejected automatically.
iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -j DROP

Anmerkung

There is a distinction between the DROP and REJECT targets when dealing with appended rules.
The REJECT target denies access and returns a connection refused error to users who attempt to connect to the service. The DROP target, as the name implies, drops the packet without any warning.
Administrators can use their own discretion when using these targets. However, to avoid user confusion and attempts to continue connecting, the REJECT target is recommended.

46.8.7. IPTables and Connection Tracking

You can inspect and restrict connections to services based on their connection state. A module within iptables uses a method called connection tracking to store information about incoming connections. You can allow or deny access based on the following connection states:
  • NEW — Ein Paket fragt eine neue Verbindung an, wie z.B. eine HTTP-Anfrage.
  • ESTABLISHED — Ein Paket, welches Teil einer bestehenden Verbindung ist.
  • RELATED — A packet that is requesting a new connection but is part of an existing connection. For example, FTP uses port 21 to establish a connection, but data is transferred on a different port (typically port 20).
  • INVALID — Ein Paket, welches kein Teil irgendeiner Verbindung in der dynamischen Paketfilterungstabelle ist.
You can use the stateful functionality of iptables connection tracking with any network protocol, even if the protocol itself is stateless (such as UDP). The following example shows a rule that uses connection tracking to forward only the packets that are associated with an established connection:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

46.8.8. IPv6

The introduction of the next-generation Internet Protocol, called IPv6, expands beyond the 32-bit address limit of IPv4 (or IP). IPv6 supports 128-bit addresses, and carrier networks that are IPv6 aware are therefore able to address a larger number of routable addresses than IPv4.
Red Hat Enterprise Linux supports IPv6 firewall rules using the Netfilter 6 subsystem and the ip6tables command. In Red Hat Enterprise Linux 5, both IPv4 and IPv6 services are enabled by default.
The ip6tables command syntax is identical to iptables in every aspect except that it supports 128-bit addresses. For example, use the following command to enable SSH connections on an IPv6-aware network server:
ip6tables -A INPUT -i eth0 -p tcp -s 3ffe:ffff:100::1/128 --dport 22 -j ACCEPT
Für mehr Information über IPv6 Networking siehe die IPv6 Informationsseiteunter http://www.ipv6.org/.

46.8.9. Zusätzliche Informationsquellen

Einige Aspekte von Firewalls und des Linux-Netfilter-Subsystems konnten in diesem Kapitel nicht abgedeckt werden. Für weitere Informationen ziehen Sie bitte die folgenden Quellen zu Rate:

46.8.9.1. Installierte Dokumentation

  • Refer to Abschnitt 46.9, „IPTables“ for more detailed information on the iptables command, including definitions for many command options.
  • The iptables man page contains a brief summary of the various options.

46.8.9.2. Hilfreiche Websites

46.8.9.3. Verwandte Dokumentation

  • Red Hat Linux Firewalls, by Bill McCarty; Red Hat Press — a comprehensive reference to building network and server firewalls using open source packet filtering technology such as Netfilter and iptables. It includes topics that cover analyzing firewall logs, developing firewall rules, and customizing your firewall using various graphical tools.
  • Linux Firewalls, by Robert Ziegler; New Riders Press — contains a wealth of information on building firewalls using both 2.2 kernel ipchains as well as Netfilter and iptables. Additional security topics such as remote access issues and intrusion detection systems are also covered.

46.9. IPTables

wird Red Hat Enterprise Linuxmit erweiterten Tools für die Paket-Filterung geliefert — den Prozess zur Kontrolle von Netzwerkpaketen, mit Zugang zu, durch und aus dem Netzwerkstack des Kernels. Die Kernelversionen vor 2.4 konnten Pakete mit ipchains manipulieren und verwendeten Regellisten für jedes Paket in jeder Phase des Filterungsprozesses. Die Einführung des 2.4-Kernels hat iptables mit sich gebracht (auch Netfilter genannt), die den ipchains ähnlich sind, hingegen Wirkungsbereich und Kontrollmöglichkeiten bei der Filterung von Netzwerkpaketen stark erweitert sind.
In diesem Kapitel werden die Grundlagen der Paketfilterung beschrieben, wobei die Unterschiede zwischen ipchains und iptables definiert und die verschiedenen, mit den iptables-Befehlen zur Verfügung stehenden Optionen erklärt werden. Es wird außerdem gezeigt, wie Filterungsregeln bei Neustarts des Systems erhalten bleiben.
Refer to Abschnitt 46.9.7, „Zusätzliche Informationsquellen“ for instructions on how to construct iptables rules and setting up a firewall based on these rules.

Warnung

Der standardmäßige Firewall-Mechanismus unter dem 2.4-Kernel und neueren Kernels ist zwar iptables, iptables kann aber nicht benutzt werden, wenn die ipchains bereits laufen. Wenn also zur Bootzeit ipchains vorhanden ist, gibt der Kernel eine Fehlermeldung aus und kann iptables nicht starten.
Diese Fehler haben keinerlei Auswirkung auf die Funktionsfähigkeitder ipchains.

46.9.1. Paket-Filterung

Der Linux-Kernel enthält die Netfilter-Fähigkeit, Pakete zu filtern und ermöglicht das Empfangen oder Weiterleiten einiger der Pakete vom System, während andere Pakete gestoppt werden. Diese Fähigkeit ist im Linux-Kernel integriert und enthält drei eingebaute Tabellen- oder Regellisten. Dabei handelt es sich um Folgende:
  • filter — Die Standardtabelle zum Verwalten von Netzwerkpaketen.
  • nat — Mithilfe dieser Tabelle werden Pakete geändert, die eine neue Verbindung herstellen, wie für Network Address Translation (NAT) verwendet.
  • mangle — Diese Tabelle wird für spezielle Arten der Paketänderung verwendet.
Jede dieser Tabellen verfügt über eine Gruppe integrierter Ketten (Ketten), die den Aktionen entsprechen, die von netfilter für das Paket durchgeführt werden.
Die für die filter-Tabelle integrierten Ketten sind folgende:
  • INPUT — Gilt für über eine Netzwerkschnittstelle empfangene Pakete.
  • OUTPUT — Gilt für Pakete, die über dieselbe Netzwerkschnittstelle versendet werden, die die Pakete empfing.
  • FORWARD — Gilt für Pakete, die auf einer Netzwerkschnittstelle empfangen, aber über eine andere versendet werden.
Die für die nat-Tabelle integrierten Ketten sind folgende:
  • PREROUTING — Ändert über eine Netzwerkschnittstelle empfangene Pakete beim Empfang.
  • OUTPUT — Modifiziert lokal-generierte Netzwerk-Pakete, bevor diese gesendet werden.
  • POSTROUTING — Ändert Pakete vor dem Senden über eine Netzwerkschnittstelle.
Die für die mangle-Tabelle integrierten Ketten sind folgende:
  • INPUT — Ändert für den Host bestimmte Netzwerk-Pakete.
  • OUTPUT — Modifiziert lokal-generierte Netzwerk-Pakete, bevor diese gesendet werden.
  • FORWARD — Ändert über den Host gesendete Netzwerk-Pakete.
  • PREROUTING — Ändert über eine Netzwerkschnittstelle empfangene Pakete vor dem Routen.
  • POSTROUTING — Ändert Pakete vor dem Senden über eine Netzwerkschnittstelle.
Jedes Netzwerk-Paket, das von einem Linux System empfangen oder ausgesendet wird, wird von zumindest einer Tabelle beansprucht. Ein Paket kann allerdings in allen Tabellen auf mehrere Regeln hin überprüft werden, bevor es am Ende des Ablaufs auftritt. Struktur und Zweck dieser Regeln können unterschiedlich sein, sie versuchen jedoch normalerweise ein Paket, das von einer oder an eine IP-Adresse bzw. mehrere IP-Adressen gesendet wurde, zu identifizieren, wenn dieses ein bestimmtes Protokoll und einen bestimmten Netzwerkdienst benutzt.

Anmerkung

Standardmäßig werden Firewall-Regeln in den Dateien /etc/sysconfig/iptables oder /etc/sysconfig/ip6tables gespeichert.
Der iptables-Dienst startet beim Start eines Linux-Systems vor jeglichen mit DNS zusammenhängenden Diensten. Aus diesem Grund können Firewall-Regeln nur auf numerische IP-Adressen (zum Beispiel 192.168.0.1) zugreifen. Domainnamen (zum Beispiel host.example.com) in solchen Regeln produzieren Fehlern.
Regardless of their destination, when packets match a particular rule in one of the tables, a target or action is applied to them. If the rule specifies an ACCEPT target for a matching packet, the packet skips the rest of the rule checks and is allowed to continue to its destination. If a rule specifies a DROP target, that packet is refused access to the system and nothing is sent back to the host that sent the packet. If a rule specifies a QUEUE target, the packet is passed to user-space. If a rule specifies the optional REJECT target, the packet is dropped, but an error packet is sent to the packet's originator.
Jede Kette (chain) hat eine Standard-Richtlinie zu ACCEPT, DROP, REJECT, oder QUEUE. Wenn das Paket keiner der Regeln in der Kette entspricht, wird auf dieses Paket die standardmäßige Richtlinie angewandt.
Der Befehl iptables konfiguriert diese Tabellen und erstellt neue, falls nötig.

46.9.2. Unterschiede zwischen IPTables und IPChains

Sowohl ipchains, als auch iptables verwenden innerhalb des Linux-Kernels operierende Regelketten zur Filterung von Paketen, abhängig von deren Übereinstimmung mit angegebenen Regeln oder Regelwerken. Jedoch offeriert iptables eine deutlich erweiterbarere Paketfilterung, da sie dem Administrator mehr Kontrolle gibt, ohne das gesamte System hierdurch zu verkomplizieren.
Sie sollten über folgende wesentliche Unterschiede zwischen iptables und ipchains Bescheid wissen:
Using iptables, each filtered packet is processed using rules from only one chain rather than multiple chains.
Beispiel: Ein FORWARD-Paket, das ein System betritt, würde mit ipchains den INPUT-, FORWARD-, und OUTPUT-Ketten unterliegen, um sein Ziel zu erreichen. iptables hingegen sendet Pakete nur zur INPUT-Kette, wenn diese für das lokale System bestimmt sind, während Pakete nur an die OUTPUT-Kette gesendet werden, wenn das lokale System die Pakete erzeugt hat. Aus diesem Grund müssen Sie sicherstellen, dass sich die Regel für das Abfangen eines bestimmten Pakets in der richtigen Kette befindet, die das Paket auch wirklich behandelt.
The DENY target has been changed to DROP.
Mit ipchains können Pakete, die einer Regel in einer Kette entsprachen, an das DENY-Ziel weitergeleitet werden. Dieses Ziel muss für den gleichen Effekt mit iptables auf DROP geändert werden.
Order matters when placing options in a rule.
Bei ipchains spielt die Reihenfolge der Regeloptionen keine Rolle.
Der iptables-Befehl benutzt eine genauere Syntax. In iptables-Befehlen müssen Sie das zu verwendende Protokoll (ICMP, TCP, oder UDP) vor dem Ursprungs- oder Zielport spezifizieren.
Network interfaces must be associated with the correct chains in firewall rules.
So können Eingangsschnittstellen (-i Option) beispielsweise nur mit INPUT- oder FORWARD-Ketten und Ausgangsschnittstellen (-o Option) nur mit FORWARD- oder OUTPUT-Ketten verwendet werden.
Mit anderen Worten funktionieren INPUT-Ketten und eingehende Schnittstellen, sowie OUTPUT-Ketten und ausgehende Schnittstellen miteinander. FORWARD-Ketten funktionieren sowohl mit eingehenden, als auch ausgehenden Schnittstellen.
OUTPUT-Ketten werden nicht länger von eingehenden Schnittstellen verwendet und INPUT-Ketten bleiben von Paketen, die sich durch ausgehende Schnittstellen bewegen, unberührt.
This is not a comprehensive list of the changes. Refer to Abschnitt 46.9.7, „Zusätzliche Informationsquellen“ for more specific information.

46.9.3. Befehlszeilenoptionen für IPTables

Regeln für das Filtern von Paketen werden durch Ausführen des iptables-Befehls erstellt. Die folgenden Aspekte des Pakets werden oft als Kriterien verwendet:
  • Pakettyp — Diese Option legt fest, welche Art von Paketen der Befehl filtert.
  • Paketquelle oder -ziel — Diese Option legt fest, welche Pakete vom Befehl auf Grundlage der Paketquelle oder des Paketziels gefiltert werden.
  • Ziel — Diese Option legt fest, welche Aktion ausgeführt wird, wenn die Pakete die oben genannten Kriterien erfüllen.
Refer to Abschnitt 46.9.3.4, „IPTables Übereinstimmungsoptionen“ and Abschnitt 46.9.3.5, „Zieloptionen“ for more information about specific options that address these aspects of a packet.
Die mit speziellen iptables-Regeln verwendeten Optionen müssen logisch gruppiert sein, d.h. auf Grundlage des Zwecks und der Bedingungen der Gesamtregel, damit die Regel gültig ist. Der Rest dieses Abschnitts erklärt häufig verwendete Optionen des Befehls iptables.

46.9.3.1. Struktur der IPTables-Optionen

Viele iptables-Befehle haben folgende Struktur:
iptables [-t <table-name>] <command> <chain-name> \
			<parameter-1> <option-1> \
			<parameter-n> <option-n>
<table-name> — Specifies which table the rule applies to. If omitted, the filter table is used.
<command> — Specifies the action to perform, such as appending or deleting a rule.
<chain-name> — Specifies the chain to edit, create, or delete.
<parameter>-<option> pairs — Parameters and associated options that specify how to process a packet that matches the rule.
Die Länge und Komplexität eines iptables-Befehls kann sich erheblich ändern, je nach dessen Zweck.
So kann beispielsweise der Befehl zum Löschen einer Regel aus einer Kette sehr kurz sein:
iptables -D <chain-name> <line-number>
Dagegen kann ein Befehl, der eine Regel, die Pakete eines bestimmten Subnetzes filtert hinzufügt und dabei eine Vielfalt an speziellen Parametern und Optionen verwendet, ziemlich lang sein. Beim Zusammensetzen des Befehls iptables muss bedacht werden, dass einige Parameter und Optionen weitere Parameter und Optionen benötigen, um eine gültige Regel zu konstruieren. Dies kann einen Kaskadeneffekt hervorrufen, mit weiteren Parametern, die noch mehr Parameter benötigen. Solange nicht alle Parameter und Optionen, die eine Reihe weiterer Optionen benötigen, erfüllt sind, ist die Regel nicht gültig.
Wenn Sie iptables -h eingeben, erhalten Sie eine vollständige Liste der iptables-Befehlsstrukturen.

46.9.3.2. Befehlsoptionen

Mit Befehlsoptionen wird iptables angewiesen, einen bestimmten Vorgang auszuführen. Nur eine einzige Befehlsoption pro iptables-Befehl ist erlaubt. Mit Ausnahme des Hilfebefehls sind alle Befehle in Großbuchstaben geschrieben.
Die iptables-Befehle sind:
  • -A — Hängt die Regel an das Ende der angegebenen Kette an. Im Gegensatz zur weiter unten beschriebenen Option -l wird hierbei kein ganzzahliges Argument verwendet. Die Regel wird immer an das Ende der angegebenen Kette gehängt.
  • -C — Kontrolliert eine bestimmte Regel, bevor sie zur benutzerdefinierten Kette hinzugefügt wird. Dieser Befehl kann Ihnen dabei helfen, komplizierte iptables-Regeln zu erstellen, indem Sie jeweils aufgefordert werden, zusätzliche Parameter und Optionen einzugeben.
  • -D <integer> | <rule> — Deletes a rule in a particular chain by number (such as 5 for the fifth rule in a chain), or by rule specification. The rule specification must exactly match an existing rule.
  • -E — Benennt eine benutzerdefinierte Kette um. Eine benutzerdefinierte Kette ist jede Kette, die nicht den standardmäßigen, bereits vorhandenen Ketten entspricht. (Werfen Sie einen Blick auf die Option -N weiter unten für Informationen zur Erstellung von benutzerdefinierten Ketten). Dies ist eine Schönheitskorrektur und beeinflusst die Struktur der Tabelle nicht.

    Anmerkung

    Wenn Sie versuchen, eine der Standard-Ketten umzubenennen, gibt das System die Fehlermeldung Treffer nicht gefunden aus. Sie können die Standard-Ketten nicht umbenennen.
  • -F — Löscht die gewählte Kette, woraufhin effektiv jede Regel in der Kette entfernt wird. Wenn keine Kette angegeben wird, löscht dieser Befehl jede Regel jeder Kette.
  • -h — Liefert eine Liste mit Befehlsstrukturen sowie eine kurze Zusammenfassung der Befehlsparameter und -Optionen.
  • -I [<integer>] — Inserts the rule in the specified chain at a point specified by a user-defined integer argument. If no argument is specified, the rule is inserted at the top of the chain.

    Achtung

    Wie bereits oben erwähnt, bestimmt die Reihenfolge der Regeln in einer Kette, welche Regeln für welche Pakete zutreffen. Dies sollte beim Hinzufügen von Regeln entweder mit der Option -A oder -l bedacht werden.
    Dies ist besonders wichtig, wenn Regeln unter Verwendung der Option -l mit einem ganzzahligen Parameter hinzugefügt werden. Wenn Sie beim Hinzufügen einer Regel zu einer Kette eine bereits existierende Nummer angeben, fügt iptables die neue Regel vor (oder über) der existierenden Regel hinzu.
  • -L — Listet alle Regeln in der nach dem Befehl spezifizierten Kette auf. Um alle Regeln in allen Ketten in der Standardtabelle filter aufzulisten, spezifizieren Sie nicht eine Kette oder eine Tabelle. Ansonsten sollte folgende Satzstruktur verwendet werden, um die Regeln in einer spezifischen Kette in einer bestimmten Tabelle aufzulisten:
    iptables -L <chain-name> -t <table-name>
    Additional options for the -L command option, which provide rule numbers and allow more verbose rule descriptions, are described in Abschnitt 46.9.3.6, „Auflistungsoptionen“.
  • -N — Erstellt eine neue Kette mit benutzerdefiniertem Namen. Der Name der Kette muss eindeutig sein, ansonsten wird eine Fehlermeldung angezeigt.
  • -P — Setzt die standardmäßige Richtlinie für eine bestimmte Kette, damit bei der Durchquerung von Paketen durch eine Kette, die Pakete, wie bei ACCEPT oder DROP, ohne Übereinstimmung mit einer Regel an ein bestimmtes Ziel weitergeleitet werden können.
  • -R — Replaces a rule in the specified chain. The rule's number must be specified after the chain's name. The first rule in a chain corresponds to rule number one.
  • -X — Entfernt eine benutzerdefinierte Kette. Eine integrierte Kette kann nicht gelöscht werden.
  • -Z — Stellt Byte- und Paketzähler in allen Ketten für eine bestimmte Tabelle auf Null.

46.9.3.3. IPTables Parameteroptionen

Bestimmte iptables-Befehle, einschließlich derer zum Hinzufügen, Anhängen, Entfernen, Einfügen oder Ersetzen von Regeln innerhalb einer bestimmten Kette, erfordern bestimmte Parameter für die Erstellung einer Paketfilterungsregel.
  • -c — Setzt die Zähler für eine bestimmte Regel zurück. Dieser Parameter akzeptiert die PKTS- und BYTES-Optionen zur Spezifizierung der zurückzusetzenden Zähler.
  • -d — Stellt Ziel-Hostnamen, IP-Adresse oder Netzwerk eines Pakets ein, das mit der Regel übereinstimmt. Wenn das Paket mit einem Netzwerk übereinstimmt, sind die folgenden Formate für IP-Adressen/Netmasks unterstützt:
    • N.N.N.N/M.M.M.M — Wobei N.N.N.N der Bereich der IP-Adresse und M.M.M.M die Netmask ist.
    • N.N.N.N/M — Wobei N.N.N.N der Bereich der IP-Adresse und M die Bitmask ist.
  • -f — Wendet diese Regel nur auf fragmentierte Pakete an.
    Wird die Option Ausrufezeichen (!) nach diesem Parameter verwendet, werden nur unfragmentierte Parameter verglichen.

    Anmerkung

    Die Unterscheidung zwischen fragmentierten und unfragmentierten Paketen ist wünschenswert, obwohl fragmentierte Pakete den standardmäßigen Teil des IP-Protokolls ausmachen.
    Originally designed to allow IP packets to travel over networks with differing frame sizes, these days fragmentation is more commonly used to generate DoS attacks using mal-formed packets. It's also worth noting that IPv6 disallows fragmentation entirely.
  • -i — Legt die Eingangsnetzwerkschnittstelle fest, z.B. eth0 oder ppp0, die für eine bestimmte Regel benutzt werden soll. Mit iptables sollte dieser zusätzliche Parameter nur mit INPUT- und FORWARD-Ketten in Verbindung mit der filter-Tabelle und der PREROUTING-Kette mit den nat- und mangle-Tabellen verwendet werden.
    Dieser Parameter unterstützt auch folgende spezielle Optionen:
    • ! — Macht die Anweisung rückgängig, was bedeutet, dass jegliche spezifizierte Schnittstellen von dieser Regel ausgenommen sind.
    • + — Ein Platzhalterzeichen, das verwendet wird, um alle Schnittstellen zu kontrollieren, die einer bestimmten Zeichenkette entsprechen. Der -i eth+-Parameter würde diese Regel z.B. für alle Ethnernet-Schnittstellen Ihres Systems anwenden, aber alle anderen Schnittstellen, wie z.B. ppp0 auslassen.
    Wenn der -i-Parameter ohne Spezifizierung einer Schnittstelle verwendet wird, ist jede Schnittstelle von dieser Regel betroffen.
  • -j — Springt zum angegebenen Ziel, wenn ein Paket einer bestimmten Regel entspricht.
    Die standardmäßigen Ziele sind ACCEPT, DROP, QUEUE und RETURN.
    Erweiterte Optionen sind ebenfalls über Module verfügbar sind, die standardmäßig mit mit dem Red Hat Enterprise Linux iptablesRPM-Paket geladen werden, wie z.B. unter anderem LOG, MARK und REJECT. Weitere Informationen zu diesen und anderen Zielen sowie Regeln zu deren Verwendung finden Sie auf der iptables-Handbuch-Seite.
    Sie können ein Paket, das dieser Regel entspricht, auch an eine benutzerdefinierte Kette außerhalb der aktuellen Kette weiterleiten. Dadurch können Sie andere Regeln auf dieses Paket anwenden.
    Wenn kein Ziel festgelegt ist, bewegt sich das Paket an der Regel vorbei, ohne dass etwas passieren würde. Der Zähler für diese Regel springt jedoch um eine Stelle weiter.
  • -o — Legt die Ausgangsnetzwerkschnittstelle für eine bestimmte Regel fest, die nur mit OUTPUT- und FORWARD-Ketten in der filter-Tabelle und mit der POSTROUTING-Kette in den nat- und mangle-Tabellen verwendet werden kann. Die Optionen dieses Parameters sind dieselben wie die des Parameters der Eingangsnetzwerkschnittstelle (-i).
  • -p <protocol> — Sets the IP protocol affected by the rule. This can be either icmp, tcp, udp, or all, or it can be a numeric value, representing one of these or a different protocol. You can also use any protocols listed in the /etc/protocols file.
    The "all" protocol means the rule applies to every supported protocol. If no protocol is listed with this rule, it defaults to "all".
  • -s — Setzt die Quelle eines bestimmten Pakets mit Hilfe derselben Satzstrukturen, die der Zielparameter (-d) verwendet.

46.9.3.4. IPTables Übereinstimmungsoptionen

Different network protocols provide specialized matching options which can be configured to match a particular packet using that protocol. However, the protocol must first be specified in the iptables command. For example, -p <protocol-name> enables options for the specified protocol. Note that you can also use the protocol ID, instead of the protocol name. Refer to the following examples, each of which have the same effect:
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
iptables -A INPUT -p 5813 --icmp-type any -j ACCEPT
Die Definition von Diensten steht in der Datei /etc/services zur Verfügung. Im Interesse der Lesbarkeit wird die Verwendung der Namen der Dienste anstelle der Portnummern empfohlen.

Wichtig

Sichern Sie die Datei /ect/services ab, um nicht autorisierte Bearbeitung zu verhindern. Ist diese Datei editierbar, können Cracker sie dazu missbrauchen, Ports auf Ihrem Rechner zu aktivieren, die ansonsten geschlossen sind. Um diese Datei abzusichern, tippen Sie als Root folgenden Befehl:
chown root.root /etc/services
chmod 0644 /etc/services
chattr +i /etc/services
Auf diese Weise wird verhindert, dass die Datei umbenannt oder gelöscht wird, bzw. Links zu ihr erstellt werden.
46.9.3.4.1. TCP-Protokoll
Folgende Übereinstimmungsoptionen stehen für das TCP-Protokoll zur Verfügung (-p tcp):
  • --dport — Definiert den Ziel-Port für das Paket.
    Verwenden Sie den Namen eines Netzwerkdienstes (wie z.B. www oder smtp), eine Portnummer oder eine Reihe von Portnummern, um diese Option zu konfigurieren.
    Um eine Reihe von Portnummern anzugeben, trennen Sie die zwei Ziffern durch einen Doppelpunkt (:), z.B.: -p tcp --dport 3000:3200. Der größtmöglichste Bereich ist 0:65535.
    Sie können auch ein Ausrufezeichen (!) als Flag nach der --dport-Option verwenden, um alle Pakete, die nicht diesen Netzwerkdienst oder diesen Port verwenden, abzugleichen.
    Um die Namen und Aliase von Netzwerkdiensten und den von ihnen verwendeten Portnummern zu durchsuchen, werfen Sie einen Blick auf die Datei /etc/services.
    Die Übereinstimmungsoption --destination-port ist äquivalent zu --dport.
  • --sport — Setzt den Ursprungsport des Pakets unter Verwendung der selben Optionen wie --dport. Sie können auch --source-port verwenden, um diese Übereinstimmungsoption zu spezifizieren.
  • --syn — Kontrolliert alle TCP-Pakete, die eine Kommunikation initialisieren sollen, allgemein SYN-Pakete genannt, auf Übereinstimmung mit dieser Regel. Alle Pakete, die einen Daten-Payload enthalten, werden nicht bearbeitet.
    Wird ein Ausrufezeichen (!) als Flag hinter die --syn-Option gesetzt, werden alle Nicht-SYN-Pakete kontrolliert.
  • --tcp-flags <tested flag list> <set flag list> — Allows TCP packets that have specific bits (flags) set, to match a rule.
    Die Übereinstimmungsoption --tcp-flags akzeptiert nachstehend zwei Parameter, die Flags für bestimmte Bits in einer Liste mit Kommatrennung sind. Der erste Parameter ist eine Maske, die die zu untersuchenden Flags des Pakets bestimmt. Der zweite Parameter bezieht sich auf die Flags, die im Paket gesetzt werden müssen, um eine Übereinstimmung zu erhalten.
    Mögliche Flags sind:
    • ACK
    • FIN
    • PSH
    • RST
    • SYN
    • URG
    • ALL
    • NONE
    Eine iptables-Regel, die folgende Spezifizierung enthält, trifft beispielsweise nur auf TCP-Pakete zu, in denen das SYN-Flag aktiviert und die ACK- und FIN-Flags deaktiviert sind:
    --tcp-flags ACK,FIN,SYN SYN
    Verwenden Sie das Ausrufezeichen (!) hinter --tcp-flags, um den Effekt der Überprüfungsoption umzukehren.
  • --tcp-option — Versucht mit Hilfe von TCP-spezifischen Optionen zu überprüfen, die innerhalb eines bestimmten Pakets aktiviert werden können. Diese Übereinstimmungsoption kann ebenfalls mit dem Ausrufezeichen (!) umgekehrt werden.
46.9.3.4.2. UDP-Protokoll
Für das UDP-Protokoll stehen folgende Übereinstimmungsoptionen zur Verfügung(-p udp):
  • --dport — Spezifiziert den Zielport des UDP-Pakets unter Verwendung von Dienstnamen, Portnummer oder einer Reihe von Portnummern. Die --destination-port-Übereinstimmungsoption kann an Stelle von --dport benutzt werden.
  • --sport — Setzt den Ursprungsport des Pakets unter Verwendung der selben Optionen wie --dport. Sie können auch --source-port anstatt --sport verwenden, um diese Übereinstimmungsoption zu spezifizieren.
Um eine spezifische Reihe von Portnummern für die Optionen --dport und --sport anzugeben, trennen Sie die zwei Ziffern durch einen Doppelpunkt (:), z.B.: -p tcp --dport 3000:3200. Der größtmöglichste Bereich ist 0:65535.
46.9.3.4.3. ICMP-Protokoll
Diese folgenden Match-Optionen sind für das Internet Control Message Protocol (ICMP) (-p icmp) verfügbar:
  • --icmp-type — Bestimmt den Namen oder die Nummer des ICMP-Typs, der mit der Regel übereinstimmen soll. Durch Eingabe des Befehls iptables -p icmp -h wird eine Liste aller gültigen ICMP-Namen angezeigt.
46.9.3.4.4. Module mit zusätzlichen Match-Optionen
Zusätzliche Übereinstimmungsoptionen stehen durch Module zur Verfügung, die vom Befehl iptables geladen werden.
To use a match option module, load the module by name using the -m <module-name>, where <module-name> is the name of the module.
Standardmäßig stehen zahlreiche Module zur Verfügung. Sie können auch Ihre eigenen Module erstellen, um die Funktionalität zu erweitern.
Folgend ist eine Teilliste der am häufigsten verwendeten Module:
  • limit-Modul — Schränkt die Anzahl der für eine bestimmte Regel zutreffenden Pakete ein.
    Wenn das limit-Modul in Verbindung mit dem LOG-Ziel verwendet wird, kann es verhindern, dass eine Flut zutreffender Pakete den System-Log mit sich wiederholenden Nachrichten auffüllen, bzw. Systemressourcen verbrauchen.
    Refer to Abschnitt 46.9.3.5, „Zieloptionen“ for more information about the LOG target.
    Das limit-Modul erlaubt die folgenden Optionen:
    • --limit — Sets the maximum number of matches for a particular time period, specified as a <value>/<period> pair. For example, using --limit 5/hour allows five rule matches per hour.
      Perioden können in Sekunden, Minuten, Stunden oder Tagen angegeben werden.
      Wenn keine Anzahl- und Zeitarbeiter angegeben sind, wird der Standardwert 3/hour angenommen.
    • --limit-burst — Setzt eine Grenze für die Anzahl von Paketen, die gleichzeitig mit einer Regel übereinstimmen können.
      Diese Option wird als ganzzahliger Wert angegeben und sollte in Zusammenhang mit der Option --limit verwendet werden.
      Wenn kein Wert angegeben wird, wird der Standardwert von fünf (5) angenommen.
  • state-Modul — Dieses Modul, welches die --state-Übereinstimmungsoptionen definiert, kann ein Paket auf die nachfolgenden, bestimmten Verbindungszustände überprüfen:
    Das Modul state erlaubt die folgenden Optionen:
    • --state — Übereinstimmung mit einem Paket, das folgenden Verbindungszustände hat:
      • ESTABLISHED — Das übereinstimmende Paket wird anderen Paketen in einer bestimmten Verbindung zugeordnet. Sie müssen diesen Zustand akzeptieren, wenn Sie eine Verbindung zwischen Client und Server aufrechterhalten möchten.
      • INVALID — Das übereinstimmende Paket kann nicht mit einer bekannten Verbindung verknüpft werden.
      • NEW — Das übereinstimmende Paket stellt entweder eine neue Verbindung her oder ist Teil einer Zwei-Weg-Verbindung, die vorher nicht gesehen wurde. Sie müssen diesen Zustand akzeptieren, wenn Sie neue Verbindungen zu einem Dienst erlauben möchten.
      • RELATED — Ein übereinstimmendes Paket stellt eine neue Verbindung her, die auf irgendeine Weise mit einer bestehenden Verbindung zusammenhängt. Ein Beispiel hierfür ist FTP, das eine Verbindung zur Kontrolle von Datenverkehr (Port 21) und eine separate Verbindung zur Übertragung von Daten (Port 20) verwendet.
      Die Verbindungsstatus können untereinander miteinander verbunden werden, indem sie durch Kommata voneinander getrennt werden, wie z.B. in -m state --state INVALID,NEW.
  • mac-Modul — Dieses Modul ermöglicht die Übereinstimmung einer bestimmten Hardware-MAC-Adresse zu überprüfen.
    Das mac-Modul hat folgende Option:
    • --mac-source — Überprüft die MAC-Adresse der NIC, welche das Paket gesendet hat. Um eine MAC-Adresse von einer Regel auszuschließen, fügen Sie nach der --mac-source-Übereinstimmungsoption ein Ausrufezeichen (!) hinzu.
Werfen Sie einen Blick auf die Handbuch-Seite von iptables für weitere Übereinstimmungsoptionen, die durch Module verfügbar sind.

46.9.3.5. Zieloptionen

Sobald ein Paket mit einer bestimmten Regel übereinstimmt, kann die Regel das Paket an viele verschiedene Ziele senden, an denen dann eventuell weitere Vorgänge erfolgen. Außerdem hat jede Kette ein standardmäßiges Ziel, das verwendet wird, wenn ein Paket keiner Regel entspricht oder wenn in der Regel, mit dem das Paket übereinstimmt, ein Ziel angegeben ist.
Die Folgenden sind die Standardziele:
  • <user-defined-chain> — A user-defined chain within the table. User-defined chain names must be unique. This target passes the packet to the specified chain.
  • ACCEPT — Das Paket gelangt erfolgreich an sein Ziel oder an eine andere Kette.
  • DROP — Das Paket wird "ausgelassen". Das System, das dieses Paket gesendet hat, wird nicht über das "Ausfallen" des Pakets benachrichtigt.
  • QUEUE — Das Paket wird zur Warteschlange für die Bearbeitung durch eine Benutzerraum-Applikation hinzugefügt.
  • RETURN — Hält die Überprüfung der Übereinstimmung des Pakets mit Regeln in der aktuellen Kette an. Wenn das Paket mit einem RETURN-Ziel mit einer Regel in einer Kette übereinstimmt, die von einer anderen Kette aufgerufen wurde, wird das Paket an die erste Kette zurückgesendet, damit die Überprüfung wieder dort aufgenommen werden kann, wo sie unterbrochen wurde. Wenn die RETURN-Regel in einer integrierten Kette verwendet wird und das Paket nicht zu seiner vorherigen Kette zurückkehren kann, entscheidet das Standardziel für die aktuelle Kette, welche Maßnahme getroffen wird.
In addition, extensions are available which allow other targets to be specified. These extensions are called target modules or match option modules and most only apply to specific tables and situations. Refer to Abschnitt 46.9.3.4.4, „Module mit zusätzlichen Match-Optionen“ for more information about match option modules.
Es gibt viele erweiterte Zielmodule, von denen sich die meisten auf bestimmte Tabellen oder Situationen beziehen. Einige der bekanntesten Zielmodule, die standardmäßig in Red Hat Enterprise Linux enthalten sind, sind:
  • LOG — Protokolliert alle Pakete, die dieser Regel entsprechen. Da die Pakete vom Kernel protokolliert werden, bestimmt die Datei /etc/syslog.conf, wo diese Protokolldateien geschrieben werden. Standardmäßig werden sie in der Datei /var/log/messages abgelegt.
    Nach dem LOG-Ziel können verschiedene Optionen verwendet werden, um die Art des Protokolls zu bestimmen:
    • --log-level — Bestimmt die Prioritätsstufe eines Protokolliervorgangs. Auf den Handbuch-Seiten von syslog.conf finden Sie eine Liste der Prioritätsstufen.
    • --log-ip-options — Alle in den Kopfzeilen eines IP-Pakets enthaltenen Optionen werden protokolliert.
    • --log-prefix — Fügt beim Schreiben einer Protokollzeile eine Zeichenkette von bis zu 29 Zeichen vor der Protokollzeile ein. Dies ist auch beim Schreiben von syslog-Filtern im Zusammenhang mit der Paketprotokollierung sehr nützlich.

      Anmerkung

      Aufgrund eines Problems mit dieser Option sollten sie ein Leerzeichen hinter log-prefix einfügen.
    • --log-tcp-options — Alle in den Kopfzeilen eines TCP-Pakets enthaltenen Optionen werden protokolliert.
    • --log-tcp-sequence — Schreibt die TCP- Sequenznummer für das Paket in der Protokolldatei.
  • REJECT — Sendet ein Fehlerpaket an das System zurück, das das Paket gesendet hat, und lässt dieses dann "aus" (DROP).
    The REJECT target accepts --reject-with <type> (where <type> is the rejection type) allowing more detailed information to be returned with the error packet. The message port-unreachable is the default error type given if no other option is used. Refer to the iptables man page for a full list of <type> options.
Andere Zielerweiterungen, die für die IP-Masquerading unter Verwendung der nat-Tabelle oder für Paketänderung mithilfe der mangle-Tabelle nützlich sind, finden Sie auf der iptables-Handbuch-Seite.

46.9.3.6. Auflistungsoptionen

The default list command, iptables -L [<chain-name>], provides a very basic overview of the default filter table's current chains. Additional options provide more information:
  • -v — Zeigt eine ausführliche Ausgabe an, wie z.B. die Anzahl der Pakete und Bytes, die jede Kette abgearbeitet hat, die Anzahl der Pakete und Bytes, die von jeder Regel auf Übereinstimmung überprüft wurden und auf deren Schnittstellen eine bestimmte Regel angewandt werden.
  • -x — Erweitert die Zahlen auf ihre exakten Werte. In einem arbeitenden System kann die Anzahl der Pakte und Bytes, die von einer bestimmten Kette oder Regel gesehen werden, unter Verwendung der Abkürzungen Kilobytes (Tausender), Megabytes (Millionen) und Gigabytes (Milliarden) am Ende der Zahl wiedergegeben werden. Mit dieser Option muss zwangsläufig die vollständige Zahl angezeigt werden.
  • -n — Zeigt IP-Adressen und Portnummern im numerischen Format an, und nicht im standardmäßigen Hostnamen- und Netzwerkdienst-Format.
  • --line-numbers — Listet Regeln in jeder Kette in Nähe derer numerischer Reihenfolge in der Kette auf. Diese Option ist nützlich, wenn man versucht, eine bestimmte Regel aus einer Kette zu entfernen oder zu bestimmen, wo eine Regel in einer Kette eingefügt werden soll.
  • -t <table-name> — Specifies a table name. If omitted, defaults to the filter table.
Das folgende Beispiel zeigt die Verwendung einiger dieser Optionen auf. Achten Sie auf den Unterschied in der Darstellung der Bytes, wenn die Option -x verwendet wird.
~]# iptables -L OUTPUT -v -n -x
Chain OUTPUT (policy ACCEPT 64005 packets, 6445791 bytes)
    pkts      bytes target     prot opt in     out     source               destination
    1593   133812 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0

~]# iptables -L OUTPUT -v -n
Chain OUTPUT (policy ACCEPT 64783 packets, 6492K bytes)
    pkts bytes target     prot opt in     out     source               destination
    1819  153K ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
~]#

46.9.4. IPTables-Regeln speichern

Regeln, die mit dem iptables-Befehl erstellt wurden, werden nur im RAM gespeichert. Wenn das System nach Erstellung der iptables-Regeln (noch bevor diese gespeichert wurden) neu gestartet wird, gehen diese verloren. Wenn Sie möchten, dass Netzfilterregeln bei jedem Booten Ihres Systems erneut wirksam werden, müssen Sie sich als Root anmelden und folgendes eingeben:
service iptables save
Dadurch wird das iptables-Init-Skript angewiesen, das aktuelle /sbin/iptables-save-Programm auszuführen und die aktuelle iptables-Konfiguration in die /etc/sysconfig/iptables-Datei zu schreiben. Die bestehende Datei /etc/sysconfig/iptables wird unter /etc/sysconfig/iptables.save gespeichert.
Beim nächsten Systemstart wendet das iptables-Init-Skript die in /etc/sysconfig/iptables gespeicherten Regeln durch die Verwendung des /sbin/iptables-restore-Befehls erneut an.
While it is always a good idea to test a new iptables rule before committing it to the /etc/sysconfig/iptables file, it is possible to copy iptables rules into this file from another system's version of this file. This provides a quick way to distribute sets of iptables rules to multiple machines.
Weiterhin haben Sie die Möglichkeit, die iptables-Regeln in einer separaten Datei zur weiteren Verteilung, zum Backup oder anderen Zwecken zu speichern. Um Ihre iptables-Regeln zu speichern, tippen Sie als Root folgenden Befehl:
iptables-save > <filename>
where <filename> is a user-defined name for your ruleset.

Wichtig

Wenn Sie die Datei /etc/sysconfig/iptables an andere Rechner verteilen, müssen Sie /sbin/service iptables restart eingeben, damit die neuen Regeln wirksam werden.

Anmerkung

Beachten Sie bitte den Unterschied zwischen dem Befehl iptables (/sbin/iptables), der dazu verwendet wird, die Tabellen und Ketten zu manipulieren, die die iptables-Funktionalität darstellen, und dem Dienst iptables (/sbin/iptables service), der zum Aktivieren und Deaktivieren des iptables-Dienstes selbst verwendet wird.

46.9.5. IPTables Kontrollskripte

Unter Red Hat Enterprise Linux gibt es zwei grundlegende Methoden, iptables zu kontrollieren:
  • Security Level Configuration Tool (system-config-securitylevel) — A graphical interface for creating, activating, and saving basic firewall rules. Refer to Abschnitt 46.8.2, „Basic Firewall Configuration“ for more information.
  • /sbin/service iptables <option> — Used to manipulate various functions of iptables using its initscript. The following options are available:
    • start — Ist eine Firewall konfiguriert (d.h. /etc/sysconfig/iptables ist vorhanden), werden alle laufenden iptables komplett beendet und dann mit dem Befehl /sbin/iptables-restore gestartet. Diese Option funktioniert nur dann, wenn das ipchains Kernel-Modul nicht geladen ist. Um zu überprüfen, ob dieses Modul geladen ist, tippen Sie als Root folgenden Befehl:
      lsmod | grep ipchains
      Wenn dieser Befehl keine Ausgabe zurückgibt, ist das Modul nicht geladen. Falls nötig, können Sie das Modul mit dem Befehl /sbin/rmmod entfernen.
    • stop — Wenn eine Firewall aktiviert ist, werden die Firewall-Regeln im Speicher gelöscht und alle iptables-Module und Helfer entladen.
      Wenn die IPTABLES_SAVE_ON_STOP-Direktive in der Konfigurationsdatei /etc/sysconfig/iptables-config vom Standardwert auf yes geändert wird, werden die augenblicklichen Regeln unter /etc/sysconfig/iptables gespeichert und jede bestehende Regel nach /etc/sysconfig/iptables.save verschoben.
      Refer to Abschnitt 46.9.5.1, „Konfigurationsdatei der IPTables Kontrollskripte“ for more information about the iptables-config file.
    • restart — Sollte eine Firewall aktiviert sein, werden die Firewall-Regeln im Speicher gelöscht und die Firewall, sollte sie in /etc/sysconfig/iptables konfiguriert sein, neu gestartet. Diese Option funktioniert nur dann, wenn die ipchains Kernel-Module nicht geladen sind.
      Wenn die IPTABLES_SAVE_ON_RESTART-Direktive der Konfigurationsdatei /etc/sysconfig/iptables-config vom Standardwert auf yes geändert wird, werden die aktuellen Regeln unter /etc/sysconfig/iptables gespeichert und jede bestehende Regel nach /etc/sysconfig/iptables.save verschoben.
      Refer to Abschnitt 46.9.5.1, „Konfigurationsdatei der IPTables Kontrollskripte“ for more information about the iptables-config file.
    • status — Zeigt den Status einer Firewall an und listet alle aktiven Regeln auf.
      The default configuration for this option displays IP addresses in each rule. To display domain and hostname information, edit the /etc/sysconfig/iptables-config file and change the value of IPTABLES_STATUS_NUMERIC to no. Refer to Abschnitt 46.9.5.1, „Konfigurationsdatei der IPTables Kontrollskripte“ for more information about the iptables-config file.
    • panic — Löscht alle Firewall-Regeln. Die Richtlinie aller konfigurierten Tabellen wird auf DROP gesetzt.
      Diese Option könnte nützlich sein, wenn ein Server im Verdacht steht, kompromittiert worden zu sein. Anstelle das System physikalisch vom Netzwerk zu trennen oder es herunterzufahren, können Sie mit Hilfe dieser Option jeglichen weiteren Netzwerkverkehr stoppen und gleichzeitig den Rechner in einem Zustand zu belassen, der die Analyse oder andere forensische Untersuchung ermöglicht.
    • save — Saves firewall rules to /etc/sysconfig/iptables using iptables-save. Refer to Abschnitt 46.9.4, „IPTables-Regeln speichern“ for more information.

Tip

To use the same initscript commands to control netfilter for IPv6, substitute ip6tables for iptables in the /sbin/service commands listed in this section. For more information about IPv6 and netfilter, refer to Abschnitt 46.9.6, „IPTables und IPv6“.

46.9.5.1. Konfigurationsdatei der IPTables Kontrollskripte

Das Verhalten des iptables-Init-Skripts wird durch die Konfigurationsdatei /etc/sysconfig/iptables-config kontrolliert. Nachfolgend finden Sie eine Liste der in dieser Datei vorkommenden Direktiven:
  • IPTABLES_MODULES — Gibt eine durch Leerzeichen getrennte Liste von zusätzlichen iptables-Modulen an, die beim Aktivieren einer Firewall geladen wird. Diese kann Verbindungs-Tracker und NAT Helfer enthalten.
  • IPTABLES_MODULES_UNLOAD — Entfernt Module beim Neustarten und Stoppen. Diese Direktive akzeptiert die folgenden Werte:
    • yes — Der Standardwert. Diese Option muss gesetzt sein, um einen richtigen Status für einen Firewall-Neustart oder -Stopp zu erhalten.
    • no — Diese Option sollte nur dann gesetzt sein, wenn es Probleme beim Entladen der Netfilter-Module gibt.
  • IPTABLES_SAVE_ON_STOP — Speichert die aktuellen Firewall-Regeln nach /etc/sysconfig/iptables, wenn die Firewall angehalten wird. Diese Direktive akzeptiert folgende Werte:
    • yes — Speichert vorhandene Regeln nach /etc/sysconfig/iptables, wenn die Firewall angehalten wird. Die vorherige Version wird unter /etc/sysconfig/iptables.save abgelegt.
    • no — Der Standardwert. Bestehende Regeln werden nicht gespeichert, wenn die Firewall angehalten wird.
  • IPTABLES_SAVE_ON_RESTART — Speichert aktuelle Firewall-Regeln wenn die Firewall neu gestartet wird. Diese Direktive akzeptiert die folgenden Werte:
    • yes — Speichert bestehende Regeln nach /etc/sysconfig/iptables, wenn die Firewall neu gestartet wird. Die vorherige Version wird dabei unter /etc/sysconfig/iptables.save abgelegt.
    • no — Der Standardwert. Bestehende Regeln werden nicht gespeichert, wenn die Firewall neu gestartet wird.
  • IPTABLES_SAVE_COUNTER — Speichert und stellt alle Paket- und Byte-Zähler in allen Ketten und Regeln wieder her. Diese Anweisung akzeptiert die folgenden Werte:
    • yes — Speichert die Werte des Zählers.
    • no — Der Standardwert. Speichert die Werte der Zähler nicht.
  • IPTABLES_STATUS_NUMERIC — Gibt die IP-Adressen anstelle der Domain- oder Hostnamen in der Statusanzeige aus. Diese Direktive akzeptiert die folgenden Werte:
    • yes — Der Standardwert. Gibt lediglich IP-Adressen in der Statusanzeige aus.
    • no — Gibt Domain- oder Hostnamen in der Statusanzeige aus.

46.9.6. IPTables und IPv6

Wenn das Paket iptables-ipv6 installiert ist, kann der Netfilter in Red Hat Enterprise Linux das IPv6-Internetprotokoll der nächsten Generation filtern. Der Befehl zur Manipulation des IPv6-Netfilters ist ip6tables.
Die meisten Direktiven für diesen Befehl sind identisch zu denen von iptables, mit der Ausnahme, dass die nat-Tabelle noch nicht unterstützt wird. Mit anderen Worten ist es noch nicht möglich, IPv6 Network-Address-Translation Tasks, wie Masquerading und Port-Forwarding, durchzuführen.
Regeln für ip6tables werden in der Datei /etc/sysconfig/ip6tables gespeichert. Alte, durch die ip6tables-Init-Skripte gespeicherte Regeln, sind in der Datei /etc/sysconfig/ip6tables.save.
Die Konfigurationsoptionen für ip6tables-Init-Skripte werden in /etc/sysconfig/ip6tables-config gespeichert und die Namen der individuellen Direktiven unterscheiden sich leicht von ihren iptables-Gegenstücken.
Zum Beispiel ist das Äquivalent zur iptables-config-Direktive IPTABLES_MODULES IP6TABLES_MODULES in der ip6tables-config-Datei.

46.9.7. Zusätzliche Informationsquellen

Zusätzliche Informationen zur Paketfilterung mit iptables finden Sie in den weiter unten aufgeführten Quellen.
  • Abschnitt 46.8, „Firewalls“ — Contains a chapter about the role of firewalls within an overall security strategy as well as strategies for constructing firewall rules.

46.9.7.1. Installierte Dokumentation

  • man iptables — Enthält eine Beschreibung von iptables, sowie eine umfangreiche Liste verschiedener Ziele, Optionen und Übereinstimmungserweiterungen.

46.9.7.2. Hilfreiche Websites

  • http://www.netfilter.org/ — Die Homepage des Netfilter/iptables Projektes. Enthält ausgewählte Informationen zu iptables sowie FAQ zu spezifischen Problemen, denen Sie unter Umständen begegnen, verschiedene hilfreiche Handbücher von Rusty Russell, dem Linux-IP-Firewall-Maintainer. In diesen Anleitungen werden Themen, wie z.B. grundlegende Netzwerkkonzepte, Kernel-Paketfilterung und NAT-Konfigurationen besprochen.
  • http://www.linuxnewbie.org/nhf/Security/ IPtables_Basics.html — Ein sehr allgemeiner Überblick darüber, wie sich Pakete durch den Linux-Kernel bewegen, plus eine Einleitung zur Erstellung von einfachen iptables-Befehlen.


[14] Da sich das System-BIOS von Hersteller zu Hersteller unterscheidet, unterstützen u.U. einige den Passwortschutz beider Typen nicht, während andere vielleicht nur einen Typ und nicht den anderen unterstützen.
[15] GRUB also accepts unencrypted passwords, but it is recommended that an MD5 hash be used for added security.
[16] This access is still subject to the restrictions imposed by SELinux, if it is enabled.
[17] Ein System, bei dem Client und Server einen allgemeinen Schlüssel teilen, der zur Ver- und Entschlüsselung der Netzwerkkommunikation verwendet wird

Kapitel 47. Sicherheit und SELinux

47.1. Access Control Mechanisms (ACMs)

This section provides a basic introduction to Access Control Mechanisms (ACMs). ACMs provide a means for system administrators to control which users and processes can access different files, devices, interfaces, etc., in a computer system. This is a primary consideration when securing a computer system or network of any size.

47.1.1. Discretionary Access Control (DAC)

Discretionary Access Control (DAC) defines the basic access controls for objects in a filesystem. This is the typical access control provided by file permissions, sharing, etc. Such access is generally at the discretion of the owner of the object (file, directory, device, etc.).
DAC provides a means of restricting access to objects based on the identity of the users or groups (subjects) that try to access those objects. Depending on a subject's access permissions, they may also be able to pass permissions to other subjects.

47.1.2. Access Control Lists (ACLs)

Access Control Lists (ACLs) provide further control over which objects a subject can access. For more information, refer to Kapitel 9, Access Control Lists.

47.1.3. Mandatory Access Control (MAC)

Mandatory Access Control (MAC) is a security mechanism that restricts the level of control that users (subjects) have over the objects that they create. Unlike in a DAC implementation, where users have full control over their own files, directories, etc., MAC adds additional labels, or categories, to all file system objects. Users and processes must have the appropriate access to these categories before they can interact with these objects.
In Red Hat Enterprise Linux, MAC is enforced by SELinux. For more information, refer to Abschnitt 47.2, „Einführung in SELinux“.

47.1.4. Role-based Access Control (RBAC)

Role-based Access Control (RBAC) is an alternative method of controlling user access to file system objects. Instead of access being controlled by user permissions, the system administrator establishes Roles based on business functional requirements or similar criteria. These Roles have different types and levels of access to objects.
In contrast to DAC or MAC systems, where users have access to objects based on their own and the object's permissions, users in an RBAC system must be members of the appropriate group, or Role, before they can interact with files, directories, devices, etc.
From an administrative point of view, this makes it easier to control who has access to various parts of the file system, just by controlling their group memberships.

47.1.5. Multi-Level Security (MLS)

Multi-Level Security (MLS) is a specific Mandatory Access Control (MAC) security scheme. Under this scheme, processes are called Subjects. Files, sockets and other passive operating system entities are called Objects. For more information, refer to Abschnitt 47.6, „Multi-Level Security (MLS)“.

47.1.6. Multi-Category Security (MCS)

Multi-Category Security (MCS) is an enhancement to SELinux, and allows users to label files with categories. MCS is an adaptation of MLS and re-uses much of the MLS framework in SELinux. For more information, refer to Abschnitt 47.4.1, „Introduction“

47.2. Einführung in SELinux

Security-Enhanced Linux (SELinux) ist eine Sicherheitsarchitektur integriert in den 2.6.x Kernel unter Verwendung der Linux Security Modules (LSM). Es handelt sich dabei um ein Produkt der National Security Agency (NSA) der amerikanischen Regierung und der SELinux-Gemeinschaft. Die Integration von SELinux in Red Hat Enterprise Linux ist ein gemeinschaftliches Projekt der NSA und Red Hat.

47.2.1. SELinux Überblick

SELinux provides a flexible Mandatory Access Control (MAC) system built into the Linux kernel. Under standard Linux Discretionary Access Control (DAC), an application or process running as a user (UID or SUID) has the user's permissions to objects such as files, sockets, and other processes. Running a MAC kernel protects the system from malicious or flawed applications that can damage or destroy the system.
SELinux legt die Zugriffsrechte und transition-Rechte jedes Benutzers, jeder Applikation, jedes Prozesses und jeder Datei auf dem System fest. SELinux regelt somit die Interaktion dieser Einheiten, die eine Sicherheitsrichtlinie (Policy) verwenden, wodurch festlegt wird, wie strikt oder nachsichtig eine vorgegebene Installation von Red Hat Enterprise Linux sein sollte.
Im alltäglichen Gebrauch kommen Systembenutzer kaum mit SELinux in Berührung. Lediglich Systemadministratoren müssen sich überlegen, wie strikt eine Sicherheitsrichtlinie für ihre Server-Umgebungen umgesetzt werden soll. Die Sicherheitsrichtlinie kann so strikt oder so tolerant wie nötig sein, und ist sehr detailliert. Auf dieser Basis erhält der SELinux-Kernel eine komplette, detaillierte Kontrolle über das gesamte System.
Der SELinux-Entscheidungsfindungsprozess
When a subject, (for example, an application), attempts to access an object (for example, a file), the policy enforcement server in the kernel checks an access vector cache (AVC), where subject and object permissions are cached. If a decision cannot be made based on data in the AVC, the request continues to the security server, which looks up the security context of the application and the file in a matrix. Permission is then granted or denied, with an avc: denied message detailed in /var/log/messages if permission is denied. The security context of subjects and objects is applied from the installed policy, which also provides the information to populate the security server's matrix.
Werfen Sie einen Blick auf die folgende Darstellung:
SELinux-Entscheidungsprozess
SELinux-Entscheidungsprozess.
Abbildung 47.1. SELinux-Entscheidungsprozess

SELinux Betriebsmodi
Anstelle des enforcing-Modus kann SELinux auch im permissive-Modus laufen, in welchem der AVC überprüft wird und Verweigerungen protokolliert werden. SELinux erzwingt in diesem Fall die Sicherheitsrichtlinie jedoch nicht. Dies kann zur Problembehandlung und zur Entwicklung oder Feinabstimmung einer SELinux-Sicherheitsrichtlinie hilfreich sein.
For more information about how SELinux works, refer to Abschnitt 47.2.3, „Zusätzliche Ressourcen“.

47.2.2. Dateien, die mit SELinux zusammenhängen

Die folgenden Abschnitte befassen sich mit den SELinux-Konfigurationsdateien und zugehörigen Dateisystemen.

47.2.2.1. Das SELinux Pseudo-Dateisystem

Das /selinux/-Pseudo-Dateisystem beinhaltet Befehle, welche am häufigsten vom Kernel-Subsystem gebraucht werden. Diese Art von Dateisystem ist ähnlich dem /proc/-Pseudo-Dateisystem.
Administratoren und Benutzer müssen diese Komponente normalerweise nicht handhaben.
Das folgende Beispiel zeigt Musterinhalte im Verzeichnis /selinux/:
-rw-rw-rw-  1 root root 0 Sep 22 13:14 access
dr-xr-xr-x  1 root root 0 Sep 22 13:14 booleans
--w-------  1 root root 0 Sep 22 13:14 commit_pending_bools
-rw-rw-rw-  1 root root 0 Sep 22 13:14 context
-rw-rw-rw-  1 root root 0 Sep 22 13:14 create
--w-------  1 root root 0 Sep 22 13:14 disable
-rw-r--r--  1 root root 0 Sep 22 13:14 enforce
-rw-------  1 root root 0 Sep 22 13:14 load
-r--r--r--  1 root root 0 Sep 22 13:14 mls
-r--r--r--  1 root root 0 Sep 22 13:14 policyvers
-rw-rw-rw-  1 root root 0 Sep 22 13:14 relabel
-rw-rw-rw-  1 root root 0 Sep 22 13:14 user
Das Ausführen des Befehls cat auf der enforce-Datei gibt entweder eine 1 für den enforcing-Modus, oder eine 0 für den permissive-Modus aus.

47.2.2.2. SELinux-Konfigurationsdateien

Die folgenden Abschnitte beschreiben SELinux-Konfigurations- und -Policy-Dateien und verwandte Dateisysteme im Verzeichnis /etc/.
47.2.2.2.1. Die /etc/sysconfig/selinux-Konfigurationsdatei
There are two ways to configure SELinux under Red Hat Enterprise Linux: using the SELinux Administration Tool (system-config-selinux), or manually editing the configuration file (/etc/sysconfig/selinux).
Die Datei /etc/sysconfig/selinux ist die primäre Konfigurationsdatei zur Aktivierung, bzw. Deaktivierung von SELinux, sowie der Einstellung, welche Sicherheitsrichtlinie wie auf dem System implementiert werden soll.

Hinweis

/etc/sysconfig/selinux beinhaltet einen symbolischen Link zur eigentlichen Konfigurationsdatei /etc/selinux/config.
Im Folgenden wird die vollständige Palette an Optionen, die zur Konfiguration erhältlich sind, beschrieben:
  • SELINUX=enforcing|permissive|disabled — Definiert den Top-Level Status von SELinux auf einem System.
    • enforcing — Die SELinux Sicherheitsrichtlinie (Policy) ist "enforced".
    • permissive — Das SELinux-System gibt Warnungen aus, erzwingt jedoch keine Sicherheitsrichtlinie (Policy).
      Dies ist hilfreich bei der Problembehandlung und Fehlerbeseitigung. Im permissive-Modus werden mehr Verweigerungen protokolliert, da Subjekte mit Aktionen fortfahren können, die ansonsten im enforcing-Modus verweigert würden. So führt die Traversierung eines Verzeichnisbaums im permissive-Modus beispielsweise zu der Meldung avc: denied für jede gelesene Verzeichnisebene. Im enforcing-Modus hätte SELinux bereits das erste Traversal abgebrochen und das Anzeigen weiterer Verweigerungsmeldungen verhindert.
    • deaktiviert — SELinux ist komplett deaktiviert. SELinux-Hooks werden aus dem Kernel entfernt und das Pseudo-Dateisystem wird deregistriert.

      Tip

      Aktionen, die während der Deaktivierung von SELinux ausgeführt werden, führen dazu, dass das Dateisystem keinen Sicherheitskontext mehr besitzt. Das liegt daran, dass der Sicherheitskontext via Sicherheitsrichtlinie definiert wird. Die beste Möglichkeit, das Dateisystem neu zu kennzeichnen besteht darin, die Flag-Datei /.autorelabel zu erstellen und den Rechner neu zu starten. So wird die Neu-Kennzeichnung zu einem sehr frühen Zeitpunkt während des Boot-Prozesses wirksam, bevor irgendwelche Prozesse auf dem System laufen. Mit Hilfe dieser Vorgehensweise wird verhindert, dass Prozesse aus Versehen Dateien mit falschem Kontext anlegen oder mit einem falschen Kontext starten.
      Der Befehl fixfiles relabel kann vor der Aktivierung von SELinux verwendet werden, um das Dateisystem neu zu kennzeichnen. Diese Methode wird jedoch nicht empfohlen, da es nach Abschluss immer noch möglich ist, dass Prozesse möglichweise mit einem falschen Kontext ausgeführt werden. Diese Prozesse können Dateien mit ebenfalls falschem Kontext anlegen.

    Hinweis

    Zusätzlicher Leerraum am Ende einer Konfigurationszeile oder in Form von extra Zeilen am Ende der Datei kann zu unerwartetem Verhalten führen. Entfernen Sie sicherheitshalber jeglichen unnötigen Leerraum.
  • SELINUXTYPE=targeted|strict — Gibt an, welche Sicherheitsrichtlinie SELinux durchsetzten soll.
    • targeted — Lediglich die "targeted"-Netzwerk-Daemons werden geschützt.

      Wichtig

      Die folgenden Daemons werden durch die standardmäßige "targeted"-Sicherheitsrichtlinie geschützt: dhcpd, httpd (apache.te), named, nscd, ntpd, portmap, snmpd, squid und syslogd. Der Rest des Systems läuft in der Domain unconfined_t. Diese Domain gestattet es Subjekten und Objekten mit diesem Sicherheitskontext, im Rahmen der standardmäßigen Linux-Sicherheit zu agieren.
      Die Dateien der Sicherheitsrichtlinie für diese Daemons befinden sich in /etc/selinux/targeted/src/policy/domains/program. Für diese Dateien bleiben Änderungen vorbehalten, sobald neue Versionen von Red Hat Enterprise Linux veröffentlicht werden.
      Policy enforcement for these daemons can be turned on or off, using Boolean values controlled by the SELinux Administration Tool (system-config-selinux).
      Setting a Boolean value for a targeted daemon to 1 disables SELinux protection for the daemon. For example, you can set dhcpd_disable_trans to 1 to prevent init, which executes apps labeled dhcpd_exec_t, from transitioning to the dhcpd_t domain.
      Mit Hilfe des Befehls getsebool -a können Sie alle SELinux Booleschen Werte auflisten. Nachfolgend finden Sie ein Beispiel für die Verwendung des Befehls setsebool zur Einstellung eines SELinux Booleschen Wertes. Die Option -P ermöglicht eine permanente Speicherung der Änderung. Ohne diese Option wird der Boolesche Wert bei einem Neustart auf 1 zurückgesetzt.
      setsebool -P dhcpd_disable_trans=0
    • strict — Kompletter SELinux-Schutz für alle Daemons. Sicherheitskontexte werden für alle Subjekte und Objekte definiert und jede Aktion wird vom Policy Enforcement Server weiterverarbeitet.
  • SETLOCALDEFS=0|1 — Controls how local definitions (users and booleans) are set. Set this value to 1 to have these definitions controlled by load_policy from files in /etc/selinux/<policyname>. or set it to 0 to have them controlled by semanage.

    Achtung

    Sie sollten diesen Standardwert (0) nicht ändern, bevor Sie sich nicht voll über die Konsequenzen einer solche Änderung im Klaren sind.
47.2.2.2.2. Das /etc/selinux/-Verzeichnis
Das /etc/selinux/-Verzeichnis ist der primäre Speicherort für alle Policy-Dateien sowie auch der Hauptkonfigurationsdatei.
Das folgende Beispiel zeigt Beispielinhalte des /etc/selinux/-Verzeichnis:
-rw-r--r--  1 root root  448 Sep 22 17:34 config
drwxr-xr-x  5 root root 4096 Sep 22 17:27 strict
drwxr-xr-x  5 root root 4096 Sep 22 17:28 targeted
Die beiden Verzeichnisse strict/ und targeted/ sind die speziellen Verzeichnisse, in denen sich die Dateien der Richtlinie (policy) mit demselben Namen (d.h. strict und targeted) befinden.

47.2.2.3. SELinux-Dienstprogramme

Nachfolgend sind einige der am häufigsten verwendeten SELinux-Dienstprogramme aufgeführt:
  • /usr/sbin/setenforce — Ändert den Modus, in dem SELinux läuft, in Echtzeit.
    Zum Beispiel:
    setenforce 1 — SELinux läuft im Enforcing-Modus
    setenforce 0 — SELinux läuft in Permissive-Modus.
    Um SELinux tatsächlich zu deaktivieren, müssen Sie entweder den entsprechenden setenforce-Parameter in /etc/sysconfig/selinux angeben, oder den Parameter selinux=0 entweder in /etc/grub.conf oder zur Bootzeit an den Kernel übergeben.
  • /usr/sbin/sestatus -v — Zeigt den detaillierten Status eines Systems, auf dem SELinux läuft, an. Das nachfolgende Beispiel demonstriert einen Auszug der Ausgabe von sestatus -v:
    SELinux status:                 enabled
    SELinuxfs mount:                /selinux
    Current mode:                   enforcing
    Mode from config file:          enforcing
    Policy version:                 21
    Policy from config file:        targeted
    
    Process contexts:
    Current context:                user_u:system_r:unconfined_t:s0
    Init context:                   system_u:system_r:init_t:s0
    /sbin/mingetty                  system_u:system_r:getty_t:s0
  • /usr/bin/newrole — Führt eine neue Shell in einem neuen Kontext aus oder Rolle aus. Die Richtlinie (policy) muss die Übertragung auf die neue Rolle gestatten.

    Hinweis

    Dieser Befehl steht nur zur Verfügung, wenn Sie das Paket policycoreutils-newrole installiert haben, welches für die Richtlinien "strict" und "MLS" benötigt wird.
  • /sbin/restorecon — Definiert den Sicherheitskontext von einer oder mehreren Dateien, indem die erweiterten Attribute mit dem entsprechenden Datei- oder Sicherheitskontext markiert werden.
  • /sbin/fixfiles — Überprüft oder korrigiert die Sicherheitskontext-Datenbank auf dem Dateisystem.
Für weitere Informationen verweisen wir auf die Handbuchseiten zu diesen Dienstprogrammen.
Werfen Sie einen Blick auf die Inhalte der Pakete setools oder policycoreutils für weitere Informationen zu allen verfügbaren binären Dienstprogrammen. Um den Inhalt eines Pakets anzusehen, verwenden Sie folgenden Befehl:
rpm -ql <package-name>

47.2.3. Zusätzliche Ressourcen

Detailliertere Informationen zu SELinux finden Sie unter folgenden Quellen.

47.2.3.1. Installierte Dokumentation

  • /usr/share/doc/setools-<version-number>/ All documentation for utilities contained in the setools package. This includes all helper scripts, sample configuration files, and documentation.

47.2.3.2. Hilfreiche Websites

47.3. Kurzer Hintergrund und Geschichte von SELinux

SELinux was originally a development project from the National Security Agency (NSA)[18] and others. It is an implementation of the FLASK operating system security architecture.[19]The NSA integrated SELinux into the Linux kernel using the Linux Security Modules (LSM) framework. SELinux motivated the creation of LSM, at the suggestion of Linus Torvalds, who wanted a modular approach to security instead of just accepting SELinux into the kernel.
Ursprünglich wurden bei der Implementierung von SELinux Persistent Security IDs (PSIDs) verwendet, die in einem unbenutzten Feld der ext2-Inode gespeichert wurden. Diese numerische Schreibweise (d.h. nicht normal lesbar) wurde von SELinux einem Sicherheitskontext-Label zugeordnet. Leider musste auf diese Weise jeder Dateisystem-Typ so verändert werden, dass PSIDs unterstützt wurden. Dies stellte keine skalierbare Lösung, bzw. keine Lösung, die upstream im Kernel unterstützt wurde, dar.
The next evolution of SELinux was as a loadable kernel module for the 2.4.<x> series of Linux kernels. This module stored PSIDs in a normal file, and SELinux was able to support more file systems. This solution was not optimal for performance, and was inconsistent across platforms. Finally, the SELinux code was integrated upstream to the 2.6.x kernel, which has full support for LSM and has extended attributes (xattrs) in the ext3 file system. SELinux was moved to using xattrs to store security context information. The xattr namespace provides useful separation for multiple security modules existing on the same system.
Die meiste Arbeit bei der Bereitstellung des Kernels für Upstream, so wie der nachfolgenden Entwicklung von SELinux, wurde unter gemeinsamer Anstrengung von der NSA, Red Hat und der Gemeinschaft der SELinux-Entwickler geleistet.
For more information about the history of SELinux, the definitive website is http://www.nsa.gov/research/selinux/index.shtml.

47.4. Multi-Category Security (MCS)

47.4.1. Introduction

Multi-Category Security (MCS) is an enhancement to SELinux, and allows users to label files with categories. These categories are used to further constrain Discretionary Access Control (DAC) and Type Enforcement (TE) logic. They may also be used when displaying or printing files. An example of a category is "Company_Confidential". Only users with access to this category can access files labeled with the category, assuming the existing DAC and TE rules also permit access.
The term categories refers to the same non-hierarchical categories used by Multi-Level Security (MLS). Under MLS, objects and subjects are labeled with Security Levels. These Security Levels consist of a hierarchical sensitivity value (such as "Top Secret") and zero or more non-hierarchical categories (such as "Crypto"). Categories provide compartments within sensitivity levels and enforce the need-to-know security principle. Refer to Abschnitt 47.6, „Multi-Level Security (MLS)“ for more information about Multi-Level Security.

47.4.1.1. What is Multi-Category Security?

MCS is an adaptation of MLS. From a technical point of view, MCS is a policy change, combined with a few userland modifications to hide some of the unneeded MLS technology. Some kernel changes were also made, but only relating to making it easy to upgrade to MCS (or MLS) without invoking a full file system relabel.
The hope is to improve the quality of the system as a whole, reduce costs, leverage the open source process, increase transparency, and make the technology base useful to more than a small group of extremely special-case users.

47.4.2. Applications for Multi-Category Security

Beyond access control, MCS could be used to display the MCS categories at the top and bottom of printed pages. This may also include a cover sheet to indicate document handling procedures. It should also be possible to integrate MCS with future developments in SELinux, such as Security Enhanced X. Integration with a directory server will also make MCS support for email easier. This could involve users manually labeling outgoing emails or by attaching suitably labeled files. The email client can then determine whether the recipients are known to be cleared to access the categories associated with the emails.

47.4.3. SELinux Security Contexts

SELinux stores security contexts as an extended attribute of a file. The "security." namespace is used for security modules, and the security.selinux name is used to persistently store SELinux security labels on files. The contents of this attribute will vary depending on the file or directory you inspect and the policy the machine is enforcing.

Note

This is expected to change in the 2.6.15 kernel (and already has in the latest -mm kernels), so that getxattr(2) always returns the kernel's canonicalized version of the label.
You can use the ls -Z command to view the category label of a file:
~]# ls -Z gravityControl.txt
-rw-r--r--  user     user     user_u:object_r:tmp_t:Moonbase_Plans gravityControl.txt
You can use the gefattr(1) command to view the internal category value (c10):
~]# getfattr -n security.selinux gravityControl.txt
# file: gravityControl.txt
security.selinux="user_u:object_r:tmp_t:s0:c10\000"
Refer to Abschnitt 47.5, „Getting Started with Multi-Category Security (MCS)“ for details on creating categories and assigning them to files.

47.5. Getting Started with Multi-Category Security (MCS)

This section provides an introduction to using MCS labels to extend the Mandatory Access Control (MAC) capabilities of SELinux. It discusses MCS categories, SELinux user identities, and how they apply to Linux user accounts and files. It builds on the conceptual information provided in Abschnitt 47.4, „Multi-Category Security (MCS)“, and introduces some basic examples of usage.

47.5.1. Introduction

MCS labeling from a user and system administrator standpoint is straightforward. It consists of configuring a set of categories, which are simply text labels, such as "Company_Confidential" or "Medical_Records", and then assigning users to those categories. The system administrator first configures the categories, then assigns users to them as required. The users can then use the labels as they see fit.
The names of the categories and their meanings are set by the system administrator, and can be set to whatever is required for the specific deployment. A system in a home environment may have only one category of "Private", and be configured so that only trusted local users are assigned to this category.
In a corporate environment, categories could be used to identify documents confidential to specific departments. Categories could be established for "Finance", "Payroll", "Marketing", and "Personnel". Only users assigned to those categories can access resources labeled with the same category.
After users have been assigned to categories, they can label any of their own files with any of the categories to which they have been assigned. For example, a home user in the system described above could label all of their personal files as "Private", and no service such as Apache or vsftp would ever be able to access those files, because they don't have access to the "Private" category.
MCS works on a simple principle: to access a file, a user needs to be assigned to all of the categories with which the file is labeled. The MCS check is applied after normal Linux Discretionary Access Control (DAC) and Type Enforcement (TE) rules, so it can only further restrict security.

47.5.2. Comparing SELinux and Standard Linux User Identities

SELinux maintains its own user identity for processes, separately from Linux user identities. In the targeted policy (the default for Red Hat Enterprise Linux), only a minimal number of SELinux user identities exist:
  • system_u — System processes
  • root — System administrator
  • user_u — All login users
Use the semanage user -l command to list SELinux users:
~]# semanage user -l

                Labeling   MLS/       MLS/
SELinux User    Prefix     MCS Level  MCS Range            SELinux Roles

root            user       s0         s0-s0:c0.c1023       system_r sysadm_r user_r
system_u        user       s0         s0-s0:c0.c1023       system_r
user_u          user       s0         s0-s0:c0.c1023       system_r sysadm_r user_r
Refer to Abschnitt 47.8.3, „Understanding the Users and Roles in the Targeted Policy“ for more information about SELinux users and roles.
SELinux Logins
One of the properties of targeted policy is that login users all run in the same security context. From a TE point of view, in targeted policy, they are security-equivalent. To effectively use MCS, however, we need to be able to assign different sets of categories to different Linux users, even though they are all the same SELinux user (user_u). This is solved by introducing the concept of an SELinux login. This is used during the login process to assign MCS categories to Linux users when their shell is launched.
Use the semanage login -a command to assign Linux users to SELinux user identities:
~]# semanage login -a james
~]# semanage login -a daniel
~]# semanage login -a olga
Now when you list the SELinux users, you can see the Linux users assigned to a specific SELinux user identity:
~]# semanage login -l

Login Name                SELinux User              MLS/MCS Range

__default__               user_u                    s0
james                     user_u                    s0
daniel                    user_u                    s0
root                      root                      s0-s0:c0.c1023
olga                      user_u                    s0
Notice that at this stage only the root account is assigned to any categories. By default, the root account is configured with access to all categories.
Red Hat Enterprise Linux and SELinux are preconfigured with several default categories, but to make effective use of MCS, the system administrator typically modifies these or creates further categories to suit local requirements.

47.5.3. Configuring Categories

SELinux maintains a mapping between internal sensitivity and category levels and their human-readable representations in the setrans.conf file. The system administrator edits this file to manage and maintain the required categories.
Use the chcat -L command to list the current categories:
~]# chcat -L
s0
s0-s0:c0.c1023                 SystemLow-SystemHigh
s0:c0.c1023                    SystemHigh
To modify the categories or to start creating your own, modify the /etc/selinux/<selinuxtype>/setrans.conf file. For the example introduced above, add the Marketing, Finance, Payroll, and Personnel categories as follows (this example uses the targeted policy, and irrelevant sections of the file have been omitted):
~]# vi /etc/selinux/targeted/setrans.conf
s0:c0=Marketing
s0:c1=Finance
s0:c2=Payroll
s0:c3=Personnel
Use the chcat -L command to check the newly-added categories:
~]# chcat -L
s0:c0                          Marketing
s0:c1                          Finance
s0:c2                          Payroll
s0:c3                          Personnel
s0
s0-s0:c0.c1023                 SystemLow-SystemHigh
s0:c0.c1023                    SystemHigh

Note

After you make any changes to the setrans.conf file, you need to restart the MCS translation service before those changes take effect. Use the following command to restart the service:
~]# service mcstrans restart

47.5.4. Assigning Categories to Users

Now that the required categories have been added to the system, you can start assigning them to SELinux users and files. To further develop the example above, assume that James is in the Marketing department, Daniel is in the Finance and Payroll departments, and Olga is in the Personnel department. Each of these users has already been assigned an SELinux login.
Use the chcat command to assign MCS categories to SELinux logins:
~]# chcat -l -- +Marketing james
~]# chcat -l -- +Finance,+Payroll daniel
~]# chcat -l -- +Personnel olga
You can also use the chcat command with additional command-line arguments to list the categories that are assigned to users:
~]# chcat -L -l daniel james olga
daniel: Finance,Payroll
james: Marketing
olga: Personnel
You can add further Linux users, assign them to SELinux user identities and then assign categories to them as required. For example, if the company director also requires a user account with access to all categories, follow the same procedure as above:
# Create a user account for the company director (Karl)
~]# useradd karl
~]# passwd karl
Changing password for user karl.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

# Assign the user account to an SELinux login
~]# semanage login -a karl

# Assign all the MCS categories to the new login
~]# chcat -l -- +Marketing,+Finance,+Payroll,+Personnel karl
Use the chcat command to verify the addition of the new user:
~]# chcat -L -l daniel james olga karl
daniel: Finance,Payroll
james: Marketing
olga: Personnel
karl: Marketing,Finance,Payroll,Personnel

Note

MCS category access is assigned during login. Consequently, a user does not have access to newly-assigned categories until they log in again. Similarly, if access to a category is revoked, this is only apparent to the user after the next login.

47.5.5. Assigning Categories to Files

At this point we have a system that has several user accounts, each of which is mapped to an SELinux user identity. We have also established a number of categories that are suitable for the particular deployment, and assigned those categories to different users.
All of the files on the system, however, still fall under the same category, and are therefore accessible by everyone (but still according to the standard Linux DAC and TE constraints). We now need to assign categories to the various files on the system so that only the appropriate users can access them.
For this example, we create a file in Daniel's home directory:
[daniel@dhcp-133 ~]$ echo "Financial Records 2006" > financeRecords.txt
Use the ls -Z command to check the initial security context of the file:
[daniel@dhcp-133 ~]$ ls -Z financeRecords.txt
-rw-r--r--  daniel daniel user_u:object_r:user_home_t      financeRecords.txt
Notice that at this stage the file has the default context for a file created in the user's home directory (user_home_t) and has no categories assigned to it. We can add the required category using the chcat command. Now when you check the security context of the file, you can see the category has been applied.
[daniel@dhcp-133 ~]$ chcat -- +Finance financeRecords.txt
[daniel@dhcp-133 ~]$ ls -Z financeRecords.txt
-rw-r--r--  daniel daniel root:object_r:user_home_t:Finance financeRecords.txt
In many cases, you need to assign more than one category to a file. For example, some files may need to be accessible to users from both the Finance and Payroll departments.
[daniel@dhcp-133 ~]$ chcat -- +Payroll financeRecords.txt
[daniel@dhcp-133 ~]$ ls -Z financeRecords.txt
-rw-r--r--  daniel daniel root:object_r:user_home_t:Finance,Payroll financeRecords.txt
Each of the categories that have been assigned to the file are displayed in the security context. You can add and delete categories to files as required. Only users assigned to those categories can access that file, assuming that Linux DAC and TE permissions would already allow the access.
If a user who is assigned to a different category tries to access the file, they receive an error message:
[olga@dhcp-133 ~]$ cat financeRecords.txt
cat: financeRecords.txt: Permission Denied

Note

Refer to the man pages for semanage and chcat for more information on the available options for these commands.

47.6. Multi-Level Security (MLS)

Protecting sensitive or confidential data is paramount in many businesses. In the event such information is made public, businesses may face legal or financial ramifications. At the very least, they will suffer a loss of customer trust. In most cases, however, they can recover from these financial and other losses with appropriate investment or compensation.
The same cannot be said of the defense and related communities, which includes military services, intelligence organizations and some areas of police service. These organizations cannot easily recover should sensitive information be leaked, and may not recover at all. These communities require higher levels of security than those employed by businesses and other organizations.
Having information of different security levels on the same computer systems poses a real threat. It is not a straight-forward matter to isolate different information security levels, even though different users log in using different accounts, with different permissions and different access controls.
Some organizations go as far as to purchase dedicated systems for each security level. This is often prohibitively expensive, however. A mechanism is required to enable users at different security levels to access systems simultaneously, without fear of information contamination.

47.6.1. Why Multi-Level?

The term multi-level arises from the defense community's security classifications: Confidential, Secret, and Top Secret.
Individuals must be granted appropriate clearances before they can see classified information. Those with Confidential clearance are only authorized to view Confidential documents; they are not trusted to look at Secret or Top Secret information. The rules that apply to data flow operate from lower levels to higher levels, and never the reverse. This is illustrated below.
Information Security Levels
Hierarchy of Information Security Levels. The arrows indicate the direction in which rules allow data to flow.
Abbildung 47.2. Information Security Levels

47.6.1.1. The Bell-La Padula Model (BLP)

SELinux, like most other systems that protect multi-level data, uses the BLP model. This model specifies how information can flow within the system based on labels attached to each subject and object. Refer to the following diagram:
Available data flows using an MLS system
Processes can read the same or lower security levels, but can only write to their own or higher security levels.
Abbildung 47.3. Available data flows using an MLS system

Under such a system, users, computers, and networks use labels to indicate security levels. Data can flow between like levels, for example between "Secret" and "Secret", or from a lower level to a higher level. This means that users at level "Secret" can share data with one another, and can also retrieve information from Confidential-level (i.e., lower-level), users. However, data cannot flow from a higher level to a lower level. This prevents processes at the "Secret" level from viewing information classified as "Top Secret". It also prevents processes at a higher level from accidentally writing information to a lower level. This is referred to as the "no read up, no write down" model.

47.6.1.2. MLS and System Privileges

MLS access rules are always combined with conventional access permissions (file permissions). For example, if a user with a security level of "Secret" uses Discretionary Access Control (DAC) to block access to a file by other users, this also blocks access by users with a security level of "Top Secret". A higher security clearance does not automatically give permission to arbitrarily browse a file system.
Users with top-level clearances do not automatically acquire administrative rights on multi-level systems. While they may have access to all information on the computer, this is different from having administrative rights.

47.6.2. Security Levels, Objects and Subjects

As discussed above, subjects and objects are labeled with Security Levels (SLs), which are composed of two types of entities:
  1. Sensitivity: — A hierarchical attribute such as "Secret" or "Top Secret".
  2. Categories: — A set of non-hierarchical attributes such as "US Only" or "UFO".
An SL must have one sensitivity, and may have zero or more categories.
Examples of SLs are: { Secret / UFO, Crypto }, { Top Secret / UFO, Crypto, Stargate } and { Unclassified }
Note the hierarchical sensitivity followed by zero or more categories. The reason for having categories as well as sensitivities is so that sensitivities can be further compartmentalized on a need-to-know basis. For example, while a process may be cleared to the "Secret" sensitivity level, it may not need any type of access to the project "Warp Drive" (which could be the name of a category).

Note

  1. Security Levels on objects are called Classifications.
  2. Security Levels on subjects are called Clearances.
Thus, objects are labeled with a Classification, while subjects operate with a specific Clearance. Security Levels can have also Ranges, but these are beyond the scope of this introduction.

47.6.3. MLS Policy

SELinux uses the Bell-La Padula BLP model, with Type Enforcement (TE) for integrity. In simple terms, MLS policy ensures that a Subject has an appropriate clearance to access an Object of a particular classification.
For example, under MLS, the system needs to know how to process a request such as: Can a process running with a clearance of { Top Secret / UFO, Rail gun } write to a file classified as { Top Secret / UFO } ?
The MLS model and the policy implemented for it will determine the answer. (Consider, for example, the problem of information leaking out of the Rail gun category into the file).
MLS meets a very narrow (yet critical) set of security requirements based around the way information and personnel are managed in rigidly controlled environments such as the military. MLS is typically difficult to work with and does not map well to general-case scenarios.
Type Enforcement (TE) under SELinux is a more flexible and expressive security scheme, which is in many cases more suitable than MLS.
There are, however, several scenarios where traditional MLS is still required. For example, a file server where the stored data may be of mixed classification and where clients connect at different clearances. This results in a large number of Security Levels and a need for strong isolation all on a single system.
This type of scenario is the reason that SELinux includes MLS as a security model, as an adjunct to TE.

47.6.4. LSPP Certification

Efforts are being made to have Linux certified as an MLS operating system. The certification is equivalent to the old B1 rating, which has been reworked into the Labeled Security Protection Profile under the Common Criteria scheme.

47.7. SELinux Policy Overview

This chapter is an overview of SELinux policy, some of its internals, and how it works. It discusses the policy in general terms, while Abschnitt 47.8, „Targeted Policy Overview“ focuses on the details of the targeted policy as it ships in Red Hat Enterprise Linux. This chapter starts with a brief overview of what policy is and where it resides.
Following on from this, the role of SELinux during the boot process is discussed. This is followed by discussions on file security contexts, object classes and permissions, attributes, types, access vectors, macros, users and roles, constraints, and a brief discussion summarizing special kernel interfaces.

47.7.1. What is the SELinux Policy?

The SELinux Policy is the set of rules that guide the SELinux security engine. It defines types for file objects and domains for processes. It uses roles to limit the domains that can be entered, and has user identities to specify the roles that can be attained. In essence, types and domains are equivalent, the difference being that types apply to objects while domains apply to processes.

47.7.1.1. SELinux Types

A type is a way of grouping items based on their similarity from a security perspective. This is not necessarily related to the unique purpose of an application or the content of a document. For example, a file can have any type of content and be for any purpose, but if it belongs to a user and exists in that user's home directory, it is considered to be of a specific security type, user_home_t.
These object types are considered alike because they are accessible in the same way by the same set of subjects. Similarly, processes tend to be of the same type if they have the same permissions as other subjects. In the targeted policy, programs that run in the unconfined_t domain have an executable file with a type such as sbin_t. From an SELinux perspective, this means they are all equivalent in terms of what they can and cannot do on the system.
For example, the binary executable file object at /usr/bin/postgres has the type postgresql_exec_t. All of the targeted daemons have their own *_exec_t type for their executable applications. In fact, the entire set of PostgreSQL executables such as createlang, pg_dump, and pg_restore have the same type, postgresql_exec_t, and they transition to the same domain, postgresql_t, upon execution.
47.7.1.1.1. Using Policy Rules to Define Type Access
The SELinux policy defines various rules which determine how each domain may access each type. Only what is specifically allowed by the rules is permitted. By default, every operation is denied and audited, meaning it is logged in the $AUDIT_LOG file. In Red Hat Enterprise Linux, this is set to /var/log/messages. The policy is compiled into binary format for loading into the kernel security server, and each time the security server makes a decision, it is cached in the AVC to optimize performance.
The policy can be defined either by modifying the existing files or by adding local Type Enforcement (TE) and File Context (FC) files to the policy tree. These new policies can be loaded into the kernel in real time. Otherwise, the policy is loaded during the boot process by init, as explained in Abschnitt 47.7.3, „The Role of Policy in the Boot Process“. Ultimately, every system operation is determined by the policy and the type-labeling of the files.

Important

After loading a new policy, it is recommended that you restart any services that may have new or changed labeling. Generally speaking, this is only the targeted daemons, as listed in Abschnitt 47.8.1, „What is the Targeted Policy?“.

47.7.1.2. SELinux and Mandatory Access Control

SELinux is an implementation of Mandatory Access Control (MAC). Depending on the security policy type, SELinux implements either Type Enforcement (TE), Roles Based Access Control (RBAC) or Bell-La Padula Model Multi-Level Security (MLS).
The policy specifies the rules in the implemented environment. It is written in a language created specifically for writing security policy. Policy writers use m4 macros to capture common sets of low-level rules. A number of m4 macros are defined in the existing policy, which facilitate the writing of new policy. These rules are preprocessed into many additional rules as part of building the policy.conf file, which is compiled into the binary policy.
Access rights are divided differently among domains, and no domain is required to act as a master for all other domains. Moving between domains is controlled by the policy, through login programs, userspace programs such as newrole, or by requiring a new process execution in the new domain. This movement between domains is referred to as a transition.

47.7.2. Where is the Policy?

There are two components to the policy: the binary tree and the source tree. The binary tree is provided by the selinux-policy-<policyname> package and supplies the binary policy file.
Alternatively, the binary policy can be built from source when the selinux-policy-devel package is installed.

Note

Information on how to edit, write and compile policy is currently outside the scope of this document.

47.7.2.1. Binary Tree Files

  • /etc/selinux/targeted/ — this is the root directory for the targeted policy, and contains the binary tree.
  • /etc/selinux/targeted/policy/ — this is the location of the binary policy file policy.<xx>. In this guide, the variable SELINUX_POLICY is used for this directory.
  • /etc/selinux/targeted/contexts/ — this is the location of the security context information and configuration files, which are used during runtime by various applications.
  • /etc/selinux/targeted/contexts/files/ — contains the default contexts for the entire file system. This is referenced by restorecon when performing relabeling operations.
  • /etc/selinux/targeted/contexts/users/ — in the targeted policy, only the root file is in this directory. These files are used for determining context when a user logs in. For example, for the root user, the context is user_u:system_r:unconfined_t.
  • /etc/selinux/targeted/modules/active/booleans* — this is where the runtime Booleans are configured.

    Note

    These files should never be manually changed. You should use the getsebool, setsebool and semanage tools to manipulate runtime Booleans.

47.7.2.2. Source Tree Files

For developing policy modules, the selinux-policy-devel package includes all of the interface files used to build policy. It is recommended that people who build policy use these files to build the policy modules.
This package installs the policy interface files under /usr/share/selinux/devel/include and has make files installed in /usr/share/selinux/devel/Makefile.
To help applications that need the various SELinux paths, libselinux provides a number of functions that return the paths to the different configuration files and directories. This negates the need for applications to hard-code the paths, especially since the active policy location is dependent on the SELINUXTYPE setting in /etc/selinux/config.
For example, if SELINUXTYPE is set to strict, the active policy location is under /etc/selinux/strict.
To view the list of available functions, use the following command:
man 3 selinux_binary_policy_path

Note

This man page is available only if you have the libselinux-devel RPM installed.
The use of libselinux and related functions is outside the scope of this document.

47.7.3. The Role of Policy in the Boot Process

SELinux plays an important role during the early stages of system start-up. Because all processes must be labeled with their correct domain, init performs some essential operations early in the boot process to maintain synchronization between labeling and policy enforcement.
  1. After the kernel has been loaded during the boot process, the initial process is assigned the predefined initial SELinux ID (initial SID) kernel. Initial SIDs are used for bootstrapping before the policy is loaded.
  2. /sbin/init mounts /proc/, and then searches for the selinuxfs file system type. If it is present, that means SELinux is enabled in the kernel.
  3. If init does not find SELinux in the kernel, or if it is disabled via the selinux=0 boot parameter, or if /etc/selinux/config specifies that SELINUX=disabled, the boot process proceeds with a non-SELinux system.
    At the same time, init sets the enforcing status if it is different from the setting in /etc/selinux/config. This happens when a parameter is passed during the boot process, such as enforcing=0 or enforcing=1. The kernel does not enforce any policy until the initial policy is loaded.
  4. If SELinux is present, /selinux/ is mounted.
  5. init checks /selinux/policyvers for the supported policy version. The version number in /selinux/policyvers is the latest policy version your kernel supports. init inspects /etc/selinux/config to determine which policy is active, such as the targeted policy, and loads the associated file at $SELINUX_POLICY/policy.<version>.
    If the binary policy is not the version supported by the kernel, init attempts to load the policy file if it is a previous version. This provides backward compatibility with older policy versions.
    If the local settings in /etc/selinux/targeted/booleans are different from those compiled in the policy, init modifies the policy in memory based on the local settings prior to loading the policy into the kernel.
  6. By this stage of the process, the policy is fully loaded into the kernel. The initial SIDs are then mapped to security contexts in the policy. In the case of the targeted policy, the new domain is user_u:system_r:unconfined_t. The kernel can now begin to retrieve security contexts dynamically from the in-kernel security server.
  7. init then re-executes itself so that it can transition to a different domain, if the policy defines it. For the targeted policy, there is no transition defined and init remains in the unconfined_t domain.
  8. At this point, init continues with its normal boot process.
The reason that init re-executes itself is to accommodate stricter SELinux policy controls. The objective of re-execution is to transition to a new domain with its own granular rules. The only way that a process can enter a domain is during execution, which means that such processes are the only entry points into the domains.
For example, if the policy has a specific domain for init, such as init_t, a method is required to change from the initial SID, such as kernel, to the correct runtime domain for init. Because this transition may need to occur, init is coded to re-execute itself after loading the policy.
This init transition occurs if the domain_auto_trans(kernel_t, init_exec_t, <target_domain_t>) rule is present in the policy. This rule states that an automatic transition occurs on anything executing in the kernel_t domain that executes a file of type init_exec_t. When this execution occurs, the new process is assigned the domain <target_domain_t>, using an actual target domain such as init_t.

47.7.4. Object Classes and Permissions

SELinux defines a number of classes for objects, making it easier to group certain permissions by specific classes. For example:
  • File-related classes include filesystem for file systems, file for files, and dir for directories. Each class has its own associated set of permissions.
    The filesystem class can mount, unmount, get attributes, set quotas, relabel, and so forth. The file class has common file permissions such as read, write, get and set attributes, lock, relabel, link, rename, append, etc.
  • Network related classes include tcp_socket for TCP sockets, netif for network interfaces, and node for network nodes.
    The netif class, for example, can send and receive on TCP, UDP and raw sockets (tcp_recv, tcp_send, udp_send, udp_recv, rawip_recv, and rawip_send.)
The object classes have matching declarations in the kernel, meaning that it is not trivial to add or change object class details. The same is true for permissions. Development work is ongoing to make it possible to dynamically register and unregister classes and permissions.
Permissions are the actions that a subject can perform on an object, if the policy allows it. These permissions are the access requests that SELinux actively allows or denies.

47.8. Targeted Policy Overview

This chapter is an overview and examination of the SELinux targeted policy, the current supported policy for Red Hat Enterprise Linux.
Much of the content in this chapter is applicable to all types of SELinux policy, in terms of file locations and the type of content in those files. The difference lies in which files exist in the key locations and their contents.

47.8.1. What is the Targeted Policy?

The SELinux policy is highly configurable. For Red Hat Enterprise Linux 5, Red Hat supports a single policy, the targeted policy. Under the targeted policy, every subject and object runs in the unconfined_t domain except for the specific targeted daemons. Objects that are in the unconfined_t domain have no restrictions and fall back to using standard Linux security, that is, DAC. The daemons that are part of the targeted policy run in their own domains and are restricted in every operation they perform on the system. This way daemons that are exploited or compromised in any way are contained and can only cause limited damage.
For example, the http and ntp daemons are both protected in the default targeted policy, and run in the httpd_t and ntpd_t domains, respectively. The ssh daemon, however, is not protected in this policy, and consequently runs in the unconfined_t domain.
Refer to the following sample output, which illustrates the various domains for the daemons mentioned above:
user_u:system_r:httpd_t         25129 ?        00:00:00 httpd
user_u:system_r:ntpd_t          25176 ?        00:00:00 ntpd
system_u:system_r:unconfined_t         25245 ? 00:00:00 sshd
The Strict Policy
The opposite of the targeted policy is the strict policy. In the strict policy, every subject and object exists in a specific security domain, and all interactions and transitions are individually considered within the policy rules.
The strict policy is a much more complex environment, and does not ship with Red Hat Enterprise Linux. This guide focuses on the targeted policy that ships with Red Hat Enterprise Linux, and the components of SELinux used by the targeted daemons.
The targeted daemons are as follows: dhcpd; httpd; mysqld; named; nscd; ntpd; portmap; postgres; snmpd; squid; syslogd; and winbind.

Note

Depending on your installation, only some of these daemons may be present.

47.8.2. Files and Directories of the Targeted Policy

Refer to Abschnitt 47.7.2, „Where is the Policy?“ for a list of the common files and directories used by SELinux.

47.8.3. Understanding the Users and Roles in the Targeted Policy

This section covers the specific roles enabled for the targeted policy. The unconfined_t type exists in every role, which significantly reduces the usefulness of roles in the targeted policy. More extensive use of roles requires a change to the strict policy paradigm, where every process runs in an individually considered domain.
Effectively, there are only two roles in the targeted policy: system_r and object_r. The initial role is system_r, and everything else inherits that role. The remaining roles are defined for compatibility purposes between the targeted policy and the strict policy.[20]
Three of the four roles are defined by the policy. The fourth role, object_r, is an implied role and is not found in policy source. Because roles are created and populated by types using one or more declarations in the policy, there is no single file that declares all roles. (Remember that the policy itself is generated from a number of separate files.)
system_r
This role is for all system processes except user processes:
system_r (28 types)
    dhcpd_t
    httpd_helper_t
    httpd_php_t
    httpd_suexec_t
    httpd_sys_script_t
    httpd_t
    httpd_unconfined_script_t
    initrc_t
    ldconfig_t
    mailman_cgi_t
    mailman_mail_t
    mailman_queue_t
    mysqld_t
    named_t
    ndc_t
    nscd_t
    ntpd_t
    pegasus_t
    portmap_t
    postgresql_t
    snmpd_t
    squid_t
    syslogd_t
    system_mail_t
    unconfined_t
    winbind_helper_t
    winbind_t
    ypbind_t
user_r
This is the default user role for regular Linux users. In a strict policy, individual users might be used, allowing for the users to have special roles to perform privileged operations. In the targeted policy, all users run in the unconfined_t domain.
object_r
In SELinux, roles are not utilized for objects when RBAC is being used. Roles are strictly for subjects. This is because roles are task-oriented and they group together entities which perform actions (for example, processes). All such entities are collectively referred to as subjects. For this reason, all objects have the role object_r, and the role is only used as a placeholder in the label.
sysadm_r
This is the system administrator role in a strict policy. If you log in directly as the root user, the default role may actually be staff_r. If this is true, use the newrole -r sysadm_r command to change to the SELinux system administrator role to perform system administration tasks. In the targeted policy, the following retain sysadm_r for compatibility:
sysadm_r (6 types)
    httpd_helper_t
    httpd_sys_script_t
    initrc_t
    ldconfig_t
    ndc_t
    unconfined_t
There is effectively only one user identity in the targeted policy. The user_u identity was chosen because libselinux falls back to user_u as the default SELinux user identity. This occurs when there is no matching SELinux user for the Linux user who is logging in. Using user_u as the single user in the targeted policy makes it easier to change to the strict policy. The remaining users exist for compatibility with the strict policy.[21]
The one exception is the SELinux user root. You may notice root as the user identity in a process's context. This occurs when the SELinux user root starts daemons from the command line, or restarts a daemon originally started by init.


[18] The NSA is the cryptologic agency of the United States of America's Federal government, charged with information assurance and signals intelligence. You can read more about the NSA at their website, http://www.nsa.gov/about/.
[19] Flask grew out of a project that integrated the Distributed Trusted Operating System (DTOS) into the Fluke research operating system. Flask was the name of the architecture and the implementation in the Fluke operating system.
[20] Any role could have been chosen for the targeted policy, but system_r already had existing authorization for the daemon domains, simplifying the process. This was done because no mechanism currently exists to alias roles.
[21] A user aliasing mechanism would also work here, to alias all identities from the strict policy to a single user identity in the targeted policy.

Kapitel 48. Arbeiten mit SELinux

SELinux bietet sowohl ein neues Sicherheitsmodell, als auch eine Reihe neuer Praktiken und Tools für Administratoren und einige Endbenutzer. Die in diesem Kapitel behandelten Tools und Techniken konzentrieren sich auf Standardarbeitsweisen, die von Endbenutzern, Administratoren und Analysten durchgeführt werden.

48.1. End User Control of SELinux

In general, end users have little interaction with SELinux when Red Hat Enterprise Linux is running the targeted policy. This is because users are running in the domain of unconfined_t along with the rest of the system except the targeted daemons.
In most situations, standard DAC controls prevent you from performing tasks for which you do not have the required access or permissions before SELinux is consulted. Consequently, it is likely that you will never generate an avc: denied message.
The following sections cover the general tasks and practices that an end user might need to perform on a Red Hat Enterprise Linux system. These tasks apply to users of all privilege levels, not only to end users.

48.1.1. Moving and Copying Files

In file system operations, security context must now be considered in terms of the label of the file, the process accessing it, and the directories where the operation is happening. Because of this, moving and copying files with mv and cp may have unexpected results.
Copying Files: SELinux Options for cp
Unless you specify otherwise, cp follows the default behavior of creating a new file based on the domain of the creating process and the type of the target directory. Unless there is a specific rule to set the label, the file inherits the type from the target directory.
Use the -Z user:role:type option to specify the required label for the new file.
The -p (or --preserve=mode,ownership,timestamps) option preserves the specified attributes and, if possible, additional attributes such as links.
touch bar foo
ls -Z bar foo
-rw-rw-r--  auser   auser   user_u:object_r:user_home_t   bar
-rw-rw-r--  auser   auser   user_u:object_r:user_home_t   foo
If you use the cp command without any additional command-line arguments, a copy of the file is created in the new location using the default type of the creating process and the target directory. In this case, because there is no specific rule that applies to cp and /tmp, the new file has the type of the parent directory:
cp bar /tmp
ls -Z /tmp/bar
-rw-rw-r--  auser   auser   user_u:object_r:tmp_t   /tmp/bar
The type tmp_t is the default type for temporary files.
Use the -Z option to specify the label for the new file:
cp -Z user_u:object_r:user_home_t foo /tmp
ls -Z /tmp/foo
-rw-rw-r--  auser   auser   user_u:object_r:user_home_t   /tmp/foo
Moving Files: SELinux Options for mv
Moving files with mv retains the original type associated with the file. Care should be taken using this command as it can cause problems. For example, if you move files with the type user_home_t into ~/public_html, then the httpd daemon is not able to serve those files until you relabel them. Refer to Abschnitt 48.1.3, „Relabeling a File or Directory“ for more information about file labeling.
Tabelle 48.1. Behavior of mv and cp Commands
Command Behavior
mv The file retains its original label. This may cause problems, confusion, or minor insecurity. For example, the tmpwatch program running in the sbin_t domain might not be allowed to delete an aged file in the /tmp directory because of the file's type.
cp Makes a copy of the file using the default behavior based on the domain of the creating process (cp) and the type of the target directory.
cp -p Makes a copy of the file, preserving the specified attributes and security contexts, if possible. The default attributes are mode, ownership, and timestamps. Additional attributes are links and all.
cp -Z <user:role:type> Makes a copy of the file with the specified labels. The -Z option is synonymous with --context.

48.1.2. Checking the Security Context of a Process, User, or File Object

Checking a Process ID
In Red Hat Enterprise Linux, the -Z option is equivalent to --context, and can be used with the ps, id, ls, and cp commands. The behavior of the cp command with respect to SELinux is explained in Tabelle 48.1, „Behavior of mv and cp Commands“.
The following example shows a small sample of the output of the ps command. Most of the processes are running in the unconfined_t domain, with a few exceptions.
[user@localhost ~]$ ps auxZ
LABEL                           USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
system_u:system_r:init_t        root         1  0.0  0.1   2032   620 ?        Ss   15:09   0:00 init [5]
system_u:system_r:kernel_t      root         2  0.0  0.0      0     0 ?        S    15:09   0:00 [migration/0]
system_u:system_r:kernel_t      root         3  0.0  0.0      0     0 ?        SN   15:09   0:00 [ksoftirqd/0]

user_u:system_r:unconfined_t    user     3122  0.0  0.6   6908  3232 ?        S    16:47   0:01 /usr/libexec/gconfd-2 5
user_u:system_r:unconfined_t    user     3125  0.0  0.1   2540   588 ?        S    16:47   0:00 /usr/bin/gnome-keyring-daemon
user_u:system_r:unconfined_t    user     3127  0.0  1.4  33612  6988 ?        Sl   16:47   0:00 /usr/libexec/gnome-settings-daemon
user_u:system_r:unconfined_t    user     3144  0.1  1.4  16528  7360 ?        Ss   16:47   0:01 metacity --sm-client-id=default1
user_u:system_r:unconfined_t    user     3148  0.2  2.9  79544 14808 ?        Ss   16:47   0:03 gnome-panel --sm-client-id default2

Checking a User ID
You can use the -Z option with the id command to determine a user's security context. Note that with this command you cannot combine -Z with other options.
[root@localhost ~]# id -Z
user_u:system_r:unconfined_t
Note that you cannot use the -Z option with the id command to inspect the security context of a different user. That is, you can only display the security context of the currently logged-in user:
[user@localhost ~]$ id
uid=501(user) gid=501(user) groups=501(user) context=user_u:system_r:unconfined_t
[user@localhost ~]$ id root
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
[user@localhost ~]$ id -Z root
id: cannot display context when selinux not enabled or when displaying the id
of a different user
Check a File ID
You can use the -Z option with the ls command to group common long-format information. You can display mode, user, group, security context, and filename information.
cd /etc
ls -Z h* -d
drwxr-xr-x  root root  system_u:object_r:etc_t        hal
-rw-r--r--  root root  system_u:object_r:etc_t        host.conf
-rw-r--r--  root root  user_u:object_r:etc_t          hosts
-rw-r--r--  root root  system_u:object_r:etc_t        hosts.allow
-rw-r--r--  root root  system_u:object_r:etc_t        hosts.canna
-rw-r--r--  root root  system_u:object_r:etc_t        hosts.deny
drwxr-xr-x  root root  system_u:object_r:hotplug_etc_t  hotplug
drwxr-xr-x  root root  system_u:object_r:etc_t        hotplug.d
drwxr-xr-x  root root  system_u:object_r:httpd_sys_content_t htdig
drwxr-xr-x  root root  system_u:object_r:httpd_config_t httpd

48.1.3. Relabeling a File or Directory

You may need to relabel a file when moving or copying into special directories related to the targeted daemons, such as ~/public_html directories, or when writing scripts that work in directories outside of /home.
There are two general types of relabeling operations:
  • Deliberately changing the type of a file
  • Restoring files to the default state according to policy
There are also relabeling operations that an administrator performs. These are covered in Abschnitt 48.2.2, „Relabeling a File System“.

Tip

The majority of SELinux permission control in the targeted policy is Type Enforcement (TE). Consequently, you can generally ignore the user and role information in a security label and focus on just changing the type. You do not normally need to consider the role and user settings on files.

Note

If relabeling affects the label on a daemon's executable, you should restart the daemon to be sure it is running in the correct domain. For example, if /usr/sbin/mysqld has the wrong security label, and you address this by using a relabeling operation such as restorecon, you must restart mysqld after the relabeling operation. Setting the executable file to have the correct type (mysqld_exec_t) ensures that it transitions to the proper domain when started.
Use the chcon command to change a file to the correct type. You need to know the correct type that you want to apply to use this command. The directories and files in the following example are labeled with the default type defined for file system objects created in /home:
cd ~
ls -Zd public_html/
drwxrwxr-x  auser  auser  user_u:object_r:user_home_t public_html/

ls -Z web_files/
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   1.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   2.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   3.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   4.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   5.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   index.html
If you move these files into the public_html directory, they retain the original type:
mv web_files/* public_html/
ls -Z public_html/
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   1.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   2.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   3.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   4.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   5.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t   index.html
To make these files viewable from a special user public HTML folder, they need to have a type that httpd has permissions to read, presuming the Apache HTTP Server is configured for UserDir and the Boolean value httpd_enable_homedirs is enabled.
chcon -R -t httpd_user_content_t public_html/
ls -Z public_html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t   1.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t   2.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t   3.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t   4.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t   5.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t   index.html

ls -Z public_html/ -d
drwxrwxr-x  auser  auser  user_u:object_r:httpd_user_content_t  public_html/

Tip

If the file has no label, such as a file created while SELinux was disabled in the kernel, you need to give it a full label with chcon system_u:object_r:shlib_t foo.so. Otherwise, you will receive an error about applying a partial context to an unlabeled file.
Use the restorecon command to restore files to the default values according to the policy. There are two other methods for performing this operation that work on the entire file system: fixfiles or a policy relabeling operation. Each of these methods requires superuser privileges. Cautions against both of these methods appear in Abschnitt 48.2.2, „Relabeling a File System“.
The following example demonstrates restoring the default user home directory context to a set of files that have different types. The first two sets of files have different types, and are being moved into a directory for archiving. Their contexts are different from each other, and are incorrect for a standard user's home directory:
ls -Z /tmp/
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t            /tmp/file1
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t            /tmp/file2
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t            /tmp/file3

mv /tmp/{1,2,3} archives/
mv public_html/* archives/
ls -Z archives/
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t            file1
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t    file1.html
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t            file2
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t    file2.html
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t            file3
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t    file3.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t    file4.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t    file5.html
-rw-rw-r--  auser  auser  user_u:object_r:httpd_user_content_t  index.html
The archives/ directory already has the default type because it was created in the user's home directory:
ls -Zd archives/
drwxrwxr-x  auser  auser  user_u:object_r:user_home_t  archives/
Using the restorecon command to relabel the files uses the default file contexts set by the policy, so these files are labeled with the default label for their current directory.
/sbin/restorecon -R archives/
ls -Z archives/
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file1
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file1.html
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file2
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file2.html
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file3
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file3.html
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file4.html
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    file5.html
-rw-rw-r--  auser  auser  system_u:object_r:user_home_t    index.html

48.1.4. Creating Archives That Retain Security Contexts

You can use either the tar or star utilities to create archives that retain SELinux security contexts. The following example uses star to demonstrate how to create such an archive. You need to use the appropriate -xattr and -H=exustar options to ensure that the extra attributes are captured and that the header for the *.star file is of a type that fully supports xattrs. Refer to the man page for more information about these and other options.
The following example illustrates the creation and extraction of a set of html files and directories. Note that the two directories have different labels. Unimportant parts of the file context have been omitted for printing purposes (indicated by ellipses '...'):
ls -Z public_html/ web_files/

public_html/:
-rw-rw-r--  auser  auser  ...httpd_user_content_t 1.html
-rw-rw-r--  auser  auser  ...httpd_user_content_t 2.html
-rw-rw-r--  auser  auser  ...httpd_user_content_t 3.html
-rw-rw-r--  auser  auser  ...httpd_user_content_t 4.html
-rw-rw-r--  auser  auser  ...httpd_user_content_t 5.html
-rw-rw-r--  auser  auser  ...httpd_user_content_t index.html
web_files/:
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  1.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  2.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  3.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  4.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  5.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  index.html
The following command creates the archive, retaining all of the SELinux security contexts:
star -xattr -H=exustar -c -f all_web.star public_html/ web_files/
star: 11 blocks + 0 bytes (total of 112640 bytes = 110.00k).
Use the ls command with the -Z option to validate the security context:
ls -Z all_web.star
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t \  all_web.star
You can now copy the archive to a different directory. In this example, the archive is copied to /tmp. If there is no specific policy to make a derivative temporary type, the default behavior is to acquire the tmp_t type.
cp all_web.star /tmp/ cd /tmp/

ls -Z all_web.star
-rw-rw-r--  auser  auser  user_u:object_r:tmp_t  all_web.star
Now you can expand the archives using star and it restores the extended attributes:
star -xattr -x -f all_web.star
star: 11 blocks + 0 bytes (total of 112640 bytes = 110.00k).

ls -Z /tmp/public_html/ /tmp/web_files/
/tmp/public_html/:
-rw-rw-r--  auser  auser  ...httpd_sys_content_t 1.html
-rw-rw-r--  auser  auser  ...httpd_sys_content_t 2.html
-rw-rw-r--  auser  auser  ...httpd_sys_content_t 3.html
-rw-rw-r--  auser  auser  ...httpd_sys_content_t 4.html
-rw-rw-r--  auser  auser  ...httpd_sys_content_t 5.html
-rw-rw-r--  auser  auser  ...httpd_sys_content_t index.html
/tmp/web_files/:
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  1.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  2.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  3.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  4.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  5.html
-rw-rw-r--  auser  auser  user_u:object_r:user_home_t  \ index.html

Caution

If you use an absolute path when you create an archive using star, the archive expands on that same path. For example, an archive made with this command restores the files to /var/log/httpd/:
star -xattr -H=exustar -c -f httpd_logs.star /var/log/httpd/
If you attempt to expand this archive, star issues a warning if the files in the path are newer than the ones in the archive.

48.2. Administrator Control of SELinux

In addition to the tasks often performed by users in Abschnitt 48.1, „End User Control of SELinux“, SELinux administrators could be expected to perform a number of additional tasks. These tasks typically require root access to the system. Such tasks are significantly easier under the targeted policy. For example, there is no need to consider adding, editing, or deleting Linux users from the SELinux users, nor do you need to consider roles.
This section covers the types of tasks required of an administrator who maintains Red Hat Enterprise Linux running SELinux.

48.2.1. Viewing the Status of SELinux

The sestatus command provides a configurable view into the status of SELinux. The simplest form of this command shows the following information:
~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 21
Policy from config file:        targeted
The -v option includes information about the security contexts of a series of files that are specified in /etc/sestatus.conf:
~]# sestatus -v
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 21
Policy from config file:        targeted

Process contexts:
Current context:                user_u:system_r:unconfined_t
Init context:                   system_u:system_r:init_t
/sbin/mingetty                  system_u:system_r:getty_t
/usr/sbin/sshd                  system_u:system_r:unconfined_t:s0-s0:c0.c1023

File contexts:
Controlling term:               user_u:object_r:devpts_t
/etc/passwd                     system_u:object_r:etc_t
/etc/shadow                     system_u:object_r:shadow_t
/bin/bash                       system_u:object_r:shell_exec_t
/bin/login                      system_u:object_r:login_exec_t
/bin/sh                         system_u:object_r:bin_t -> system_u:object_r:shell_exec_t
/sbin/agetty                    system_u:object_r:getty_exec_t
/sbin/init                      system_u:object_r:init_exec_t
/sbin/mingetty                  system_u:object_r:getty_exec_t
/usr/sbin/sshd                  system_u:object_r:sshd_exec_t
/lib/libc.so.6                  system_u:object_r:lib_t -> system_u:object_r:lib_t
/lib/ld-linux.so.2              system_u:object_r:lib_t -> system_u:object_r:ld_so_t
The -b displays the current state of booleans. You can use this in combination with grep or other tools to determine the status of particular booleans:
~]# sestatus -b | grep httpd | grep on$
httpd_builtin_scripting           on
httpd_disable_trans               on
httpd_enable_cgi                  on
httpd_enable_homedirs             on
httpd_unified                     on

48.2.2. Relabeling a File System

You may never need to relabel an entire file system. This usually occurs only when labeling a file system for SELinux for the first time, or when switching between different types of policy, such as changing from the targeted to the strict policy.
Relabeling a File System Using init
The recommended method for relabeling a file system is to reboot the machine. This allows the init process to perform the relabeling, ensuring that applications have the correct labels when they are started and that they are started in the right order. If you relabel a file system without rebooting, some processes may continue running with an incorrect context. Manually ensuring that all the daemons are restarted and running in the correct context can be difficult.
Use the following procedure to relabel a file system using this method.
touch /.autorelabel
reboot
At boot time, init.rc checks for the existence of /.autorelabel. If this file exists, SELinux performs a complete file system relabel (using the /sbin/fixfiles -f -F relabel command), and then deletes /.autorelabel.
Relabeling a File System Using fixfiles
It is possible to relabel a file system using the fixfiles command, or to relabel based on the RPM database:
Use the following command to relabel a file system only using the fixfiles command:
fixfiles relabel
Use the following command to relabel a file system based on the RPM database:
fixfiles -R <packagename> restore
Using fixfiles to restore contexts from packages is safer and quicker.

Caution

Running fixfiles on the entire file system without rebooting may make the system unstable.
If the relabeling operation applies a new policy that is different from the policy that was in place when the system booted, existing processes may be running in incorrect and insecure domains. For example, a process could be in a domain that is not an allowed transition for that process in the new policy, granting unexpected permissions to that process alone.
In addition, one of the options to fixfiles relabel prompts for approval to empty /tmp/ because it is not possible to reliably relabel /tmp/. Since fixfiles is run as root, temporary files that applications are relying upon are erased. This could make the system unstable or behave unexpectedly.

48.2.3. Managing NFS Home Directories

In Red Hat Enterprise Linux 5, most targeted daemons do not interact with user data and are not affected by NFS-mounted home directories. One exception is the Apache HTTP Server. For example, CGI scripts that are on the mounted file system have the nfs_t type, which is not a type that httpd_t is allowed to execute.
If you are having problems with the default type of nfs_t, try mounting the home directories with a different context:
mount -t nfs -o context=user_u:object_r:user_home_dir_t \
	fileserver.example.com:/shared/homes/ /home

Caution

Abschnitt 48.2.9, „Specifying the Security Context of Entire File Systems“ explains how to mount a directory so that httpd can execute scripts. If you do this for user home directories, it gives the Apache HTTP Server increased access to those directories. Remember that a mountpoint label applies to the entire mounted file system.
Future versions of the SELinux policy address the functionality of NFS.

48.2.4. Granting Access to a Directory or a Tree

Similar to standard Linux DAC permissions, a targeted daemon must have SELinux permissions to be able to descend the directory tree. This does not mean that a directory and its contents need to have the same type. There are many types, such as root_t, tmp_t, and usr_t that grant read access for a directory. These types are suitable for directories that do not contain any confidential information, and that you want to be widely readable. They could also be used for a parent directory of more secured directories with different contexts.
If you are working with an avc: denied message, there are some common problems that arise with directory traversal. For example, many programs run a command equivalent to ls -l / that is not necessary to their operation but generates a denial message in the logs. For this you need to create a dontaudit rule in your local.te file.
When trying to interpret AVC denial messages, do not be misled by the path=/ component. This path is not related to the label for the root file system, /. It is actually relative to the root of the file system on the device node. For example, if your /var/ directory is located on an LVM (Logical Volume Management [22]) device, /dev/dm-0, the device node is identified in the message as dev=dm-0. When you see path=/ in this example, that is the top level of the LVM device dm-0, not necessarily the same as the root file system designation /.

48.2.5. Backing Up and Restoring the System

48.2.6. Enabling or Disabling Enforcement

You can enable and disable SELinux enforcement at runtime or configure it to start in the correct mode at boot time, using the command line or GUI. SELinux can operate in one of three modes: disabled, meaning not enabled in the kernel; permissive, meaning SELinux is running and logging but not controlling permissions; or enforcing, meaning SELinux is running and enforcing policy.
Use the setenforce command to change between permissive and enforcing modes at runtime. Use setenforce 0 to enter permissive mode; use setenforce 1 to enter enforcing mode.
The sestatus command displays the current mode and the mode from the configuration file referenced during boot:
~]# sestatus | grep -i mode
Current mode:           permissive
Mode from config file:  permissive
Note that changing the runtime enforcement does not affect the boot time configuration:
~]# setenforce 1
~]# sestatus | grep -i mode
Current mode:           enforcing
Mode from config file:  permissive
You can also disable enforcing mode for a single daemon. For example, if you are trying to troubleshoot the named daemon and SELinux, you can turn off enforcing for just that daemon.
Use the getsebool command to get the current status of the boolean:
~]# getsebool named_disable_trans
named_disable_trans --> off
Use the following command to disable enforcing mode for this daemon:
~]# setsebool named_disable_trans 1
~]# getsebool named_disable_trans
named_disable_trans --> on

Note

This sets the runtime value only. Use the -P option to make the change persistent across reboots.
Any *_disable_trans booleans that are set to "on" invoke the conditional that prevents the process from transitioning to the domain on execution.
Use the following command to find which of these booleans are set:
~]# getsebool -a | grep disable.*on
httpd_disable_trans=1
mysqld_disable_trans=1
ntpd_disable_trans=1
You can set any number of boolean values using the setsebool command:
setsebool -P httpd_disable_trans=1 mysqld_disable_trans=1 ntpd_disable_trans=1
You can also use togglesebool <boolean_name> to change the value of a specific boolean:
~]# getsebool httpd_disable_trans
httpd_disable_trans --> off
~]# togglesebool httpd_disable_trans
httpd_disable_trans: active
You can configure all of these settings using system-config-selinux. The same configuration files are used, so changes appear bidirectionally.
Changing a Runtime Boolean
Use the following procedure to change a runtime boolean using the GUI.

Note

Administrator privileges are required to perform this procedure.
  1. On the System menu, point to Administration and then click Security Level and Firewall to display the Security Level Configuration dialog box.
  2. Click the SELinux tab, and then click Modify SELinux Policy.
  3. In the selection list, click the arrow next to the Name Service entry, and select the Disable SELinux protection for named daemon check box.
  4. Click OK to apply the change. Note that it may take a short time for the policy to be reloaded.
Using the Security Level Configuration dialog box to change a runtime boolean.
Using the Security Level Configuration dialog box to change a runtime boolean.
Abbildung 48.1. Using the Security Level Configuration dialog box to change a runtime boolean.

If you want to control these settings with scripts, you can use the setenforce(1), getenforce(1), and selinuxenabled(1) commands.

48.2.7. Enable or Disable SELinux

Important

Changes you make to files while SELinux is disabled may give them an unexpected security label, and new files will not have a label. You may need to relabel part or all of the file system after re-enabling SELinux.
From the command line, you can edit the /etc/sysconfig/selinux file. This file is a symlink to /etc/selinux/config. The configuration file is self-explanatory. Changing the value of SELINUX or SELINUXTYPE changes the state of SELinux and the name of the policy to be used the next time the system boots.
~]# cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=permissive
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

# SETLOCALDEFS= Check local definition changes
SETLOCALDEFS=0
Changing the Mode of SELinux Using the GUI
Use the following procedure to change the mode of SELinux using the GUI.

Note

You need administrator privileges to perform this procedure.
  1. On the System menu, point to Administration and then click Security Level and Firewall to display the Security Level Configuration dialog box.
  2. Click the SELinux tab.
  3. In the SELinux Setting select either Disabled, Enforcing or Permissive, and then click OK.
  4. If you changed from Enabled to Disabled or vice versa, you need to restart the machine for the change to take effect.
Changes made using this dialog box are immediately reflected in /etc/sysconfig/selinux.

48.2.8. Changing the Policy

This section provides a brief introduction to using customized policies on your system. A full discussion of this topic is beyond the scope of this document.
To load a different policy on your system, change the following line in /etc/sysconfig/selinux:
SELINUXTYPE=<policyname>
where <policyname> is the policy name directory under /etc/selinux/. This assumes that you have the custom policy installed. After changing the SELINUXTYPE parameter, run the following commands:
touch /.autorelabel
reboot
Use the following procedure to load a different policy using the system-config-selinux utility:

Note

You need administrator privileges to perform this procedure.
  1. Ensure that the complete directory structure for the required policy exists under /etc/selinux.
  2. On the System menu, point to Administration and then click Security Level and Firewall to display the Security Level Configuration dialog box.
  3. Click the SELinux tab.
  4. In the Policy Type list, select the policy that you want to load, and then click OK. This list is only visible if more than one policy is installed.
  5. Restart the machine for the change to take effect.
Using the Security Level Configuration dialog box to load a custom policy.
Using the Security Level Configuration dialog box to load a custom policy.
Abbildung 48.2. Using the Security Level Configuration dialog box to load a custom policy.

48.2.9. Specifying the Security Context of Entire File Systems

You can use the mount -o context= command to set a single context for an entire file system. This might be a file system that is already mounted and that supports xattrs, or a network file system that obtains a genfs label such as cifs_t or nfs_t.
For example, if you need the Apache HTTP Server to read from a mounted directory or loopback file system, you need to set the type to httpd_sys_content_t:
mount -t nfs -o context=system_u:object_r:httpd_sys_content_t \
	server1.example.com:/shared/scripts /var/www/cgi

Tip

When troubleshooting httpd and SELinux problems, reduce the complexity of your situation. For example, if you have the file system mounted at /mnt and then symbolically linked to /var/www/html/foo, you have two security contexts to be concerned with. Because one security context is of the object class file and the other of type lnk_file, they are treated differently by the policy and unexpected behavior may occur.

48.2.10. Changing the Security Category of a File or User

Refer to Abschnitt 47.5.5, „Assigning Categories to Files“ and Abschnitt 47.5.4, „Assigning Categories to Users“ for information about adding and changing the security categories of files and users.

48.2.11. Running a Command in a Specific Security Context

You can use the runcon command to run a command in a specific context. This is useful for scripting or for testing policy, but care should be taken to ensure that it is implemented correctly.
For example, you could use the following command to run a script to test for mislabeled content. The arguments that appear after the command are considered to be part of the command. (In this example, ~/bin/contexttest is a user-defined script.)
runcon -t httpd_t ~/bin/contexttest -ARG1 -ARG2
You can also specify the entire context, as follows:
runcon user_u:system_r:httpd_t ~/bin/contexttest

48.2.12. Useful Commands for Scripts

The following is a list of useful commands introduced with SELinux, and which you may find useful when writing scripts to help administer your system:
getenforce
This command returns the enforcing status of SELinux.
setenforce [ Enforcing | Permissive | 1 | 0 ]
This command controls the enforcing mode of SELinux. The option 1 or Enforcing tells SELinux to enter enforcing mode. The option 0 or Permissive tells SELinux to enter passive mode. Access violations are still logged, but not prevented.
selinuxenabled
This command exits with a status of 0 if SELinux is enabled, and 1 if SELinux is disabled.
~]# selinuxenabled
~]# echo $?
0
getsebool [-a] [boolean_name]
This command shows the status of all booleans (-a) or a specific boolean (<boolean_name>).
setsebool [-P] <boolean_name> value | bool1=val1 bool2=val2 ...
This command sets one or more boolean values. The -P option makes the changes persistent across reboots.
togglesebool boolean ...
This command toggles the setting of one or more booleans. This effects boolean settings in memory only; changes are not persistent across reboots.

48.2.13. Changing to a Different Role

You use the newrole command to run a new shell with the specified type and/or role. Changing roles is typically only meaningful in the strict policy; the targeted policy is generally restricted to a single role. Changing types may be useful for testing, validation, and development purposes.
newrole -r <role_r> -t <type_t> [-- [ARGS]...]
The ARGS are passed directly to the shell specified in the user's entry in the /etc/passwd file.

Note

The newrole command is part of the policycoreutils-newrole package, which is required if you install the strict or MLS policy. It is not installed by default in Red Hat Enterprise Linux.

48.2.14. When to Reboot

The primary reason for rebooting the system from an SELinux perspective is to completely relabel the file system. On occasion you might need to reboot the system to enable or disable SELinux.

48.3. Analyst Control of SELinux

This section describes some common tasks that a security analyst might need to perform on an SELinux system.

48.3.1. Enabling Kernel Auditing

As part of an SELinux analysis or troubleshooting exercise, you might choose to enable complete kernel-level auditing. This can be quite verbose, because it generates one or more additional audit messages for each AVC audit message. To enable this level of auditing, append the audit=1 parameter to your kernel boot line, either in the /etc/grub.conf file or on the GRUB menu at boot time.
This is an example of a full audit log entry when httpd is denied access to ~/public_html because the directory is not labeled as Web content. Notice that the time and serial number stamps in the audit(...) field are identical in each case. This makes it easier to track a specific event in the audit logs:
Jan 15 08:03:56 hostname kernel: audit(1105805036.075:2392892): \
	avc:  denied  { getattr } for  pid=2239 exe=/usr/sbin/httpd \
	path=/home/auser/public_html dev=hdb2 ino=921135 \
	scontext=user_u:system_r:httpd_t \
	tcontext=system_u:object_r:user_home_t tclass=dir
The following audit message tells more about the source, including the kind of system call involved, showing that httpd tried to stat the directory:
Jan 15 08:03:56 hostname kernel: audit(1105805036.075:2392892): \
	syscall=195 exit=4294967283 a0=9ef88e0 a1=bfecc0d4 a2=a97ff4 \
	a3=bfecc0d4 items=1 pid=2239 loginuid=-1 uid=48 gid=48 euid=48 \
	suid=48 fsuid=48 egid=48 sgid=48 fsgid=48
The following message provides more information about the target:
Jan 15 08:03:56 hostname kernel: audit(1105805036.075:2392892): \
	item=0 name=/home/auser/public_html inode=921135 dev=00:00
The serial number stamp is always identical for a particular audited event. The time stamp may or may not be identical.

Note

If you are using an audit daemon for troubleshooting, the daemon may capture audit messages into a location other than /var/log/messages, such as /var/log/audit/audit.log.

48.3.2. Dumping and Viewing Logs

The Red Hat Enterprise Linux 5 implementation of SELinux routes AVC audit messages to /var/log/messages. You can use any of the standard search utilities (for example, grep), to search for lines containing avc or audit.


[22] LVM is the grouping of physical storage into virtual pools that are partitioned into logical volumes.

Kapitel 49. Anpassen einer SELinux-Richtlinie (policy)

49.1. Einführung

Frühere Releases von Red Hat Enterprise Linux setzten die Installation des Pakets selinux-policy-targeted-sources voraus, sowie die Erstellung der Datei local.te im Verzeichnis /etc/selinux/targeted/src/policy/domains/misc. Mit Hilfe des Dienstprogramms audit2allow konnten Sie die AVC-Meldungen in "allow"-Regeln übersetzen, anschließend neu erstellen und dann die Richtlinie neu laden.
Das Problem bestand darin, dass bei jeder Veröffentlichung eines neuen Richtlinien-Pakets "Makefile" ausgeführt werden musste, um zu versuchen, die lokale Richtlinie zu erhalten.
In Red Hat Enterprise Linux 5, this process has been completely revised. The "sources" rpm packages have been completely removed, and policy packages are treated more like the kernel. To look at the sources used to build the policy, you need to install the source rpm, selinux-policy-XYZ.src.rpm. A further package, selinux-policy-devel, has also been added, which provides further customization functionality.

49.1.1. Modulare Richtlinie (policy)

Mit Red Hat Enterprise Linux wird das Konzept der Modularen Richtlinie (modular policy) eingeführt. Dies ermöglicht Anbietern, die SELinux-Richtlinie getrennt vom Betriebssystem auszuliefern. Weiterhin können Administratoren lokale Änderungen an Richtlinien durchführen, ohne sich über die Installation der nächsten Richtlinie Gedanken machen zu müssen. Der wichtigste Befehl, der hinzugefügt wurde, war semodule.
semodule is the tool used to manage SELinux policy modules, including installing, upgrading, listing and removing modules. You can also use semodule to force a rebuild of policy from the module store and/or to force a reload of policy without performing any other transaction. semodule acts on module packages created by semodule_package. Conventionally, these files have a .pp suffix (policy package), although this is not mandated in any way.

49.1.1.1. Auflistung von Richtlinienmodulen

Um die Richtlinienmodule auf einem System aufzulisten, verwenden Sie den Befehl semodule -l:
~]# semodule -l
amavis  1.1.0
ccs     1.0.0
clamav  1.1.0
dcc     1.1.0
evolution       1.1.0
iscsid  1.0.0
mozilla 1.1.0
mplayer 1.1.0
nagios  1.1.0
oddjob  1.0.1
pcscd   1.0.0
pyzor   1.1.0
razor   1.1.0
ricci   1.0.0
smartmon        1.1.0

Hinweis

Dieser Befehl listet das Modul für eine Basisrichtlinie (base policy module), das ebenfalls installiert ist, auf.
The /usr/share/selinux/targeted/ directory contains a number of policy package (*.pp) files. These files are included in the selinux-policy rpm and are used to build the policy file.

49.2. Erstellen eines lokalen Richtlinienmoduls

The following section uses an actual example to demonstrate building a local policy module to address an issue with the current policy. This issue involves the ypbind init script, which executes the setsebool command, which in turn tries to use the terminal. This is generating the following denial:
type=AVC msg=audit(1164222416.269:22): avc:  denied  { use } for  pid=1940 comm="setsebool" name="0" dev=devpts ino=2 \
	scontext=system_u:system_r:semanage_t:s0 tcontext=system_u:system_r:init_t:s0 tclass=fd
Even though everything still works correctly (that is, it is not preventing any applications form running as intended), it does interrupt the normal work flow of the user. Creating a local policy module addresses this issue.

49.2.1. Verwendung von audit2allow zum Erstellen eines lokalen Richtlinienmoduls

The audit2allow utility now has the ability to build policy modules. Use the following command to build a policy module based on specific contents of the audit.log file:
ausearch -m AVC --comm setsebool | audit2allow -M mysemanage
The audit2allow utility has built a type enforcement file (mysemanage.te). It then executed the checkmodule command to compile a module file (mysemanage.mod). Lastly, it uses the semodule_package command to create a policy package (mysemanage.pp). The semodule_package command combines different policy files (usually just the module and potentially a file context file) into a policy package.

49.2.2. Analyse der Datei "Type Enforcement (TE)"

Mit Hilfe des Befehls cat können Sie den Inhalt der TE-Datei untersuchen:
~]# cat mysemanag.te
module mysemanage 1.0;

require {
	class fd use;
	type init_t;
	type semanage_t;
	role system_r;
};

allow semanage_t init_t:fd use;
The TE file is comprised of three sections. The first section is the module command, which identifies the module name and version. The module name must be unique. If you create an semanage module using the name of a pre-existing module, the system would try to replace the existing module package with the newly-created version. The last part of the module line is the version. semodule can update module packages and checks the update version against the currently installed version.
The next block of the TE file is the require block. This informs the policy loader which types, classes and roles are required in the system policy before this module can be installed. If any of these fields are undefined, the semodule command will fail.
Lastly are the allow rules. In this example, you could modify this line to dontaudit, because semodule does not need to access the file descriptor.

49.2.3. Laden des Pakets mit der Richtlinie

The last step in the process of creating a local policy module is to load the policy package into the kernel.
Mit Hilfe des Befehls semodule können Sie das Paket mit der Richtlinie (policy) laden:
~]# semodule -i mysemanage.pp
This command recompiles the policy file and regenerates the file context file. The changes are permanent and will survive a reboot. You can also copy the policy package file (mysemanage.pp) to other machines and install it using semodule.
The audit2allow command outputs the commands it executed to create the policy package so that you can edit the TE file. This means you can add new rules as required or change the allow rule to dontaudit. You could then recompile and repackage the policy package to be installed again.
There is no limit to the number of policy packages, so you could create one for each local modification you want to make. Alternatively, you could continue to edit a single package, but you need to ensure that the "require" statements match all of the allow rules.

Kapitel 50. References

The following references are pointers to additional information that is relevant to SELinux and Red Hat Enterprise Linux but beyond the scope of this guide. Note that due to the rapid development of SELinux, some of this material may only apply to specific releases of Red Hat Enterprise Linux.
Books
SELinux by Example
Mayer, MacMillan, and Caplan
Prentice Hall, 2007
Tutorials and Help
Understanding and Customizing the Apache HTTP SELinux Policy
Tutorials and talks from Russell Coker
Generic Writing SELinux policy HOWTO
Red Hat Knowledgebase
General Information
NSA SELinux main website
NSA SELinux FAQ
Fedora SELinux FAQ
SELinux NSA's Open Source Security Enhanced Linux
Technology
An Overview of Object Classes and Permissions
Integrating Flexible Support for Security Policies into the Linux Operating System (a history of Flask implementation in Linux)
Implementing SELinux as a Linux Security Module
A Security Policy Configuration for the Security-Enhanced Linux
Community
SELinux community page
IRC
irc.freenode.net, #rhel-selinux

Teil VIII. Red Hat Training und Zertifizierung

Red Hat Kurse und Zertifizierungen gelten zweifelsohne als die besten im Linux-Bereich und vielleicht IT-weit. Ausschließlich von erfahrenen Red Hat Experten unterrichtet, messen unsere Zertifizierungsprogramme Kompetenz an tatsächlichen Live-Systemen und sind in gleicher Weise von Arbeitgebern und IT-Experten begehrt.
Die Wahl des richtigen Zertifikats hängt von Ihrem Hintergrund und Zielen ab. Ganz egal, ob Sie fortgeschrittene, minimal oder gar keine Erfahrungen mit UNIX oder Linux besitzen, bietet das Red Hat Training und der Zertifizierungspfad eine entsprechende Lösung für Sie.

Inhaltsverzeichnis

51. Red Hat Training und Zertifizierung
51.1. Drei Möglichkeiten für ein Training
51.2. Microsoft Certified Professional Resource Center
52. Zertifizierungsschienen
52.1. Kostenlose Tests zur vorherigen Einschätzung der Fähigkeiten
53. RH033: Red Hat Linux Grundlagen (Einführung in die Administration)
53.1. Kursbeschreibung
53.1.1. Voraussetzungen
53.1.2. Ziel
53.1.3. Teilnehmerkreis
53.1.4. Lerninhalte
53.1.5. Empfohlene Folgekurse
54. RH035: Red Hat Grundlagen für Windows-Experten
54.1. Kursbeschreibung
54.1.1. Voraussetzungen
54.1.2. Ziel
54.1.3. Teilnehmerkreis
54.1.4. Lerninhalte
54.1.5. Empfohlene Folgekurse
55. RH133: Red Hat Linux Systemadministration und Red Hat Certified Technician (RHCT) Zertifizierung
55.1. Kursbeschreibung
55.1.1. Voraussetzungen
55.1.2. Ziel
55.1.3. Teilnehmerkreis
55.1.4. Lerninhalte
55.1.5. Empfohlene Folgekurse
56. RH202 RHCT EXAM - Die sich am schnellsten ausweitenden Referenzen im Bereich Linux.
56.1. Kursbeschreibung
56.1.1. Voraussetzungen
57. RH253 Red Hat Linux Netzwerk und Sicherheit
57.1. Kursbeschreibung
57.1.1. Voraussetzungen
57.1.2. Ziel
57.1.3. Teilnehmerkreis
57.1.4. Lerninhalte
57.1.5. Empfohlene Folgekurse
58. RH300: RHCE Fast Track Kurs (incl. RHCE Examensprüfung)
58.1. Kursbeschreibung
58.1.1. Voraussetzungen
58.1.2. Ziel
58.1.3. Teilnehmerkreis
58.1.4. Lerninhalte
58.1.5. Empfohlene Folgekurse
59. RH302 RHCE Examensprüfung
59.1. Kursbeschreibung
59.1.1. Voraussetzungen
59.1.2. Inhalt
60. RHS333: Red Hat Enterprise Security: Network Services (Netzwerkdienste)
60.1. Kursbeschreibung
60.1.1. Voraussetzungen
60.1.2. Ziel
60.1.3. Teilnehmerkreis
60.1.4. Lerninhalte
60.1.5. Empfohlene Folgekurse
61. RH401: Red Hat Enterprise Deployment und Systems Management (Einsatz und Systemverwaltung)
61.1. Kursbeschreibung
61.1.1. Voraussetzungen
61.1.2. Ziel
61.1.3. Teilnehmerkreis
61.1.4. Lerninhalte
61.1.5. Empfohlene Folgekurse
62. RH423 Red Hat Enterprise Directory Services and Authentication (Verzeichnisdienste und Authentifizierung)
62.1. Kursbeschreibung
62.1.1. Voraussetzungen
62.1.2. Ziel
62.1.3. Teilnehmerkreis
62.1.4. Lerninhalte
62.1.5. Empfohlene Folgekurse
63. SELinux Courses
63.1. RHS427: Einführung in SELinux und die Red Hat "Targeted" Richtlinie
63.1.1. Teilnehmerkreis
63.1.2. Kurszusammenfassung
63.2. RHS429: Red Hat Enterprise SELinux Policy Administration
64. RH436 Red Hat Enterprise Storage Mgmt. (Speicherverwaltung)
64.1. Kursbeschreibung
64.1.1. Voraussetzungen
64.1.2. Ziel
64.1.3. Teilnehmerkreis
64.1.4. Lerninhalte
64.1.5. Empfohlene Folgekurse
65. RH442 Red Hat Enterprise System Monitoring and Performance Tuning (Systemüberwachung und Leistungsoptimierung)
65.1. Kursbeschreibung
65.1.1. Voraussetzungen
65.1.2. Ziel
65.1.3. Teilnehmerkreis
65.1.4. Lerninhalte
65.1.5. Empfohlene Folgekurse
66. Red Hat Enterprise Linux Developer Courses (Kurse für Entwickler)
66.1. RHD143: Red Hat Linux Programming Essentials (Programmiergrundlagen)
66.2. RHD221 Red Hat Linux Device Drivers (Gerätetreiber)
66.3. RHD236 Red Hat Linux Kernel Internals (Kernel-Internas)
66.4. RHD256 Red Hat Linux Application Development und Porting (Anwendungsentwicklung und Portierung)
67. JBoss-Kurse
67.1. RHD161 JBoss und EJB3 für Java-Entwickler
67.1.1. Voraussetzungen
67.2. RHD163 JBoss für Web-Entwickler
67.2.1. Voraussetzungen
67.3. RHD167: JBOSS - HIBERNATE GRUNDLAGEN
67.3.1. Voraussetzungen
67.3.2. Kurszusammenfassung
67.4. RHD267: JBOSS - ADVANCED HIBERNATE
67.4.1. Voraussetzungen
67.5. RHD261: JBoss für Advanced J2EE-Entwickler
67.5.1. Voraussetzungen
67.6. RH336: JBOSS für Administratoren
67.6.1. Voraussetzungen
67.6.2. Kurszusammenfassung
67.7. RHD439: JBoss Clustering
67.7.1. Voraussetzungen
67.8. RHD449: JBoss jBPM
67.8.1. Beschreibung
67.8.2. Voraussetzungen
67.9. RHD451 JBoss-Rules
67.9.1. Voraussetzungen

Kapitel 51. Red Hat Training und Zertifizierung

51.1. Drei Möglichkeiten für ein Training

Offene Schulungen
Offene Schulungen werden fortlaufend an mehr als 50 Orten in Nord-Amerika und mehr als 125 Orten weltweit angeboten. Red Hat Kurse sind leistungsbasierend — Teilnehmer haben Zugriff auf mindestens ein dediziertes System, in manchen Kursen sogar auf bis zu fünf. Alle Trainer sind erfahrene Red Hat Certified Engineers (RHCEs) und gut mit den Kursinhalten vetraut.
Kurspläne sind unter http://www.redhat.com/explore/training abrufbar.
Onsite-Training
Onsite training is delivered by Red Hat at your facility for teams of 12 to 16 people per class. Red Hat's technical staff will assist your technical staff prior to arrival to ensure the training venue is prepared to run Red Hat Enterprise Linux, Red Hat or JBoss courses, and/or Red Hat certification exams. Onsites are a great way to train large groups at once. Open enrollment can be leveraged later for incremental training.
Weitere Informationen finden Sie unter http://www.redhat.com/explore/onsite.
eLearning
Fully updated for Red Hat Enterprise Linux 4! No time for class? Red Hat's e—Learning titles are delivered online and cover RHCT and RHCE track skills. Our growing catalog also includes courses on the latest programming languages, scripting and ecommerce.
Eine Kursliste finden Sie unter http://www.redhat.com/explore/elearning.

51.2. Microsoft Certified Professional Resource Center

Maßgeschneiderte Informationen und Angebote für Microsoft® Certified Professionals, die eine Red Hat Zertifizierung zu Ihrem persönlichen Geschäftsbereich hinzufügen möchten.
Probieren Sie es noch heute aus: http://www.redhat.com/explore/manager.

Kapitel 52. Zertifizierungsschienen

Red Hat Certified Technician® (RHCT®)
Mittlerweile im dritten Jahr ist der Red Hat Certified Technician mit derzeit über 15000 Zertifikationsinhaber der sich am schnellsten verbreitende Nachweis für entsprechende Kenntnisse im gesamten Linux-Bereich. RHCT ist der beste erste Schritt zur Entwicklung von Nachweisen zu Linux-Kenntnissen und ist eine ideale erste Zertifizierung für diejenigen, die von nicht-UNIX®/ Linux-Umgebungen wechseln.
Red Hat Zertifizierungen gelten zweifelsohne als die besten im Bereich Linux, wenn nicht sogar - nach Meinung einiger - im gesamten IT-Bereich. Ausschließlich von erfahrenen Red Hat Experten gelehrt, messen unsere Zertifizierungsprogramme Kompetenzen an tatsächlichen Live-Systemen und sind bei Arbeitgebern und IT-Experten gleichermaßen stark gefragt.
Die Wahl der passenden Zertifizierung hängt von Ihrem Hintergrundwissen und Ihren Zielen ab. Ob Sie fortgeschrittene, minimale oder überhaupt keine UNIX- oder Linux-Kenntnisse besitzen - Red Hat Training hat eine passende Schulung und eine passende Zertifizierungsschiene für Sie.
Red Hat Certified Engineer® (RHCE®)
Red Hat Certified Engineer began in 1999 and has been earned by more than 20,000 Linux experts. Called the "crown jewel of Linux certifications," independent surveys have ranked the RHCE program #1 in all of IT.
Red Hat Certified Security Specialist (RHCSS)
An RHCSS has RHCE security knowledge plus specialized skills in Red Hat Enterprise Linux, Red Hat Directory Server and SELinux to meet the security requirements of today's enterprise environments. RHCSS is Red Hat's newest certification, and the only one of its kind in Linux.
Red Hat Certified Architect (RHCA)
RHCEs, die auf der Suche nach weiterer Schulung sind, können sich für die Enterprise Architekt Kurse einschreiben und ihre Kompetenz mit der neu bekannt gegebenen Red Hat Certified Architect (RHCA) Zertifizierung unter Beweis stellen. RHCA ist die Zertifizierung an der Spitze der Zertifizierungsschiene beginnend mit Hat Certified Technician (RHCT) und Red Hat Certified Engineer (RHCE), den am meisten anerkannten Zertifizierungen im Linux-Bereich.

52.1. Kostenlose Tests zur vorherigen Einschätzung der Fähigkeiten

Testen Sie Ihr Linux-Können und ermitteln Sie Ihr Red Hat Kurslevel mit unseren automatischen Tests zur vorherigen Einschätzung der Fähigkeiten.
Komplett kostenlos, keinerlei Verpflichtungen, 10 Minuten Ihrer Zeit. http://www.redhat.com/explore/assess

Kapitel 53. RH033: Red Hat Linux Grundlagen (Einführung in die Administration)

53.1. Kursbeschreibung

Als erster Kurs für sowohl die RHCT-, als auch die RHCE-Zertifizierung, ist der der RH033 Kurs ideal für Personen, die noch nie Linux oder UNIX verwendet haben, und die bisher keine Erfahrung mit der Kommandozeile eines beliebigen anderen Betriebssystems besitzen. Sie werden in den Grundlagen einer Red Hat Linux Umgebung geschult und auf die zukünftige Rolle eines Systemadministrators vorbereitet.

53.1.1. Voraussetzungen

Erfahrungen auf Benutzerebene mit einem beliebigen Computersystem, der Verwendung von Menüs und der Verwendung einer beliebigen grafischen Benutzeroberfläche.

53.1.2. Ziel

Ein Red Hat Enterprise Linux Power-Benutzer, der ein Red Hat System hinsichtlich allgemeiner Kommandozeilenprozesse und Produktivitätsfunktionen auf dem Desktop produktiv anwenden und anpassen kann, und der bereit ist, mehr über Systemadministration (RH133) zu lernen.

53.1.3. Teilnehmerkreis

Benutzer, die neu im Umgang mit Linux sind und keine vorhergehenden UNIX- oder Kommandozeilen-Kenntnisse besitzen und die Grundkenntnisse entwickeln und praktisch anwenden, sowie ihr eigenes Red Hat Linux System steuern möchten.

53.1.4. Lerninhalte

  1. Verständnis des Linux-Dateisystems
  2. Durchführung gängiger Befehle zur Dateiverwaltung
  3. Anwendung und Anpassung der GNOME-Benutzeroberfläche
  4. Anwendung wichtiger Linux-Befehle in der Kommandozeile
  5. Durchführung allgemeiner Aufgaben unter Verwendung der GNOME GUI
  6. Öffnen, Editieren und Speichern von Textdokumenten mit dem Editor "vi"
  7. Zugriffsrechte auf Dateien
  8. Anpassung des X-Window-Systems
  9. Musterabgleich mit Hilfe von regulären Ausdrücken und Umleitung von Ein-/Ausgabe
  10. Installation, Aktualisierung, Löschen und Abfragen von Paketen auf Ihrem System
  11. Netzwerk-Dienstprogramme für den Benutzer
  12. Dienstprogramme für den Power-Benutzer

53.1.5. Empfohlene Folgekurse

RH133 Red Hat Linux Sys. Admin.
RH253 Red Hat Linux Net. und Sec. Admin
RH300 Red Hat Linux RHCE Rapid Track
"I would enthusiastically recommend this course to anyone interested in Linux."——Mike Kimmel, ITT Systems Division

Kapitel 54. RH035: Red Hat Grundlagen für Windows-Experten

54.1. Kursbeschreibung

Konzipiert für Windows®-Experten ohne Vorkenntnisse in UNIX oder Linux, vermittelt dieser Kurs grundlegende Fähigkeiten in der Administration eines Red Hat Linux Systems. Der erste Tag liefert einen konzeptionellen und praktischen Übergang für Personen, die Kompetenzen in der Verwaltung von Linux erfolgreich zu ihrem Portfolio hinzufügen möchten. Die weiteren vier Tage sind eine Kombination mit dem hoch anerkannten RH033 Kurs, bei dem die Teilnehmer die Grundlagen einer Red Hat Linux Umgebung vertiefen und auf die zukünftige Rolle als plattformübergreifender Systemadministrator vorbereitet werden. Der Kurs dient außerdem als der erste Kurs in der RHCT-, bzw. der RHCE-Schiene.

54.1.1. Voraussetzungen

Erfahrung in der Zuweisung von Jobs mit Hilfe von Windows OS Produkten auf dem Niveau eines Technikers oder Systemadministrators, sowie Erfahrungen als IT-Experte. Keine UNIX- oder Linux-Vorkenntnisse erforderlich.

54.1.2. Ziel

Ein intensiver Red Hat Enterprise Linux Benutzer, der sich mit allgemeinen Kommandozeilenprozessen auskennt und der einige systemadministrative Aufgaben mit Hilfe von grafischen Tools durchführt. Der Benutzer wird außerdem ein besseres Verständnis der Red Hat Enterprise Linux Administration entwickeln (RH133).

54.1.3. Teilnehmerkreis

Ein Windows-Techniker, der bei der Verwaltung von Servern grafische Benutzerschnittstellen bevorzugt, ist ein charakteristischer Teilnehmer. Er besitzt außerdem den Wunsch, ein Red Hat Enterprise Linux System effektiv zu verwalten und seine individuellen Fähigkeiten zu erweitern.

54.1.4. Lerninhalte

  1. Installation von Software, Konfiguration des Netzwerks, Konfiguration von Authentifizierung und Installation und Konfiguration verschiedener Dienste mit Hilfe grafischer Tools
  2. Verständnis des Linux-Dateisystems
  3. Anwendung wichtiger Linux-Befehle in der Kommandozeile
  4. Verständnis von Zugriffsrechten auf Dateien
  5. Anpassung des X-Window-Systems
  6. Musterabgleich mit Hilfe von regulären Ausdrücken und Umleitung von Ein-/Ausgabe

54.1.5. Empfohlene Folgekurse

RH133 Red Hat Linux Sys. Admin. (p. 8)
RH253 Red Hat Linux Net. und Sec. Admin. (p. 9)
RH300 Red Hat Linux RHCE Rapid Track (p. 10)
"All in all I would rate this training experience as one of the best I have ever attended, and I've been in this industry for over 15 years." — Bill Legge, IT Consultant

Kapitel 55. RH133: Red Hat Linux Systemadministration und Red Hat Certified Technician (RHCT) Zertifizierung

55.1. Kursbeschreibung

RH133 konzentriert sich auf Fähigkeiten in der Systemadministration unter Red Hat Linux bis zu der Stufe, bei der Sie einen Arbeitsplatzrechner in ein bestehendes Netzwerk einbinden und konfigurieren können. Dieser 4,5-tägige Kurs bietet eine intensive praktische Schulung zu Red Hat Enterprise Linux und beinhaltet die RH202 RHCT Examensprüfung zur Zertifizierung am letzten Tag.

55.1.1. Voraussetzungen

RH033 Red Hat Linux Grundlagen oder vergleichbare Kenntnisse in Red Hat Linux

55.1.2. Ziel

Nach erfolgreichem Abschluss dieses Kurses besitzen die Teilnehmer grundlegende Kenntnisse in der Linux-Systemadministration, die durch das Ablegen der RHCT-Examensprüfung unter Beweis gestellt werden können. Das Examen ist ein leistungsbasiertes Lab-Examen, das die tatsächliche Fähigkeit, ein neues Red Hat Linux System zu installieren, zu konfigurieren und in ein existierendes Produktionsnetzwerk einzubinden, testet.

55.1.3. Teilnehmerkreis

Linux- oder UNIX-Benutzer, die die Grundlagen von Red Hat Linux beherrschen und und weitere technische Ausbildung wünschen, um ein Systemadministrator zu werden.

55.1.4. Lerninhalte

  1. Installation von Red Hat Linux sowohl interaktiv als auch via "Kickstart"
  2. Kontrolle allgemeiner System-Hardware und Administration des Drucker-Subsystems
  3. Erstellen und Pflege des Linux-Dateisystems
  4. Durchführung von Benutzer- und Gruppenadministration
  5. Integration eines Arbeitsplatzrechners in ein bestehendes Netzwerk
  6. Konfiguration eines Arbeitplatzrechners als Client für die Dienste NIS, DNS und DHCP
  7. Automatisierungstasks mit at, cron und anacron
  8. Sicherung von Dateisystemen auf Bandlaufwerk und als tar-Archiv
  9. Umgang mit Softwarepaketen mit RPM
  10. Konfiguration des X-Window-Systems und der GNOME Desktop-Umgebung
  11. Durchführung von Leistungs-, Speicher- und Prozessmanagement
  12. Konfiguration von grundlegender Host-Sicherheit

55.1.5. Empfohlene Folgekurse

RH253 Red Hat Linux Net. und Sec. Admin. (p. 9)

Kapitel 56. RH202 RHCT EXAM - Die sich am schnellsten ausweitenden Referenzen im Bereich Linux.

  1. Das RHCT-Examen ist Bestandteil des Kurses RH133. Es kann jedoch auch individuell für 446.25 Euro (incl. MwSt) erworben werden
  2. Die RHCT Examen finden am fünften Tag aller RH133 Kurse statt

56.1. Kursbeschreibung

RHCT (Red Hat Certified Technician) ist ein praktisches, leistungsbasiertes Examen, das die tatsächlichen Fähigkeiten der Kandidaten hinsichtlich der Installation, der Konfiguration und der Problembehandlung von Red Hat Enterprise Linux testet. Die Lab-Examensprüfung zur Zertifizierung ist mit RH133 verknüpft. Teilnehmer, die jedoch den Inhalt von RH033 und RH133 bereits gemeistert haben, können lediglich das Examen ablegen.

56.1.1. Voraussetzungen

Kandidaten sollten zur Vorbereitung auf das Examen die Kurse RH033 und RH133 absolvieren. Für das Examen selbst sind diese Kurse jedoch nicht erforderlich.

Kapitel 57. RH253 Red Hat Linux Netzwerk und Sicherheit

57.1. Kursbeschreibung

RH253 versorgt Teilnehmer mit gründlichem Wissen, welches für die Konfiguration allgemeiner Red Hat Enterprise Linux Netzwerkdienste benötigt wird. Netzwerk und lokale Sicherheitsaufgaben sind ebenfalls Themen dieses Kurses.

57.1.1. Voraussetzungen

RH133 Red Hat Linux Systemadministration oder vergleichbare Erfahrung mit Red Hat Linux. Grundkenntnisse von Aufbau und Funktionsweise eines LAN/WAN und des "Internetworking" mit TCP/IP.

57.1.2. Ziel

Nach diesem Kurs sind die Teilnehmer in der Lage, einen Red Hat Linux Server aufzusetzen und die wesentlichen Netzwerkdienste, sowie Sicherheit auf einer elementaren Stufe zu konfigurieren.

57.1.3. Teilnehmerkreis

Linux- und/oder UNIX-Systemadministratoren mit praktischer Erfahrung in der Administration von Red Hat Linux Systemen, die einen einführenden Kurs zu Netzwerkdiensten und -sicherheit suchen und Ihre Fähigkeiten um die Konfiguration wesentlicher Netzwerkdienste und der Sicherheitsverwaltung unter Verwendung von Red Hat Enterprise Linux erweitern möchten.

57.1.4. Lerninhalte

  1. Netzwerkdienste bei der serverseitigen Einrichtung von Red Hat Linux, sowie die Konfiguration und grundlegende Administration wesentlicher Netzwerkdienste: DNS, NIS, Apache, SMB, DHCP, Sendmail, FTP. Andere wesentliche Dienste: tftp, pppd, proxy.
  2. Einführung zum Thema Sicherheit
  3. Entwicklung einer Sicherheitsrichtlinie
  4. Lokale Sicherheit
  5. Sicherheit von Dateien und Dateisystem
  6. Passwortsicherheit
  7. Kernelsicherheit
  8. Grundelemente einer Firewall
  9. Auf Red Hat Linux basierende Sicherheits-Tools
  10. Maßnahmen bei einem Einbruchsversuch
  11. Sicherheitsquellen und -methoden
  12. Überblick über OSS Sicherheits-Tools

57.1.5. Empfohlene Folgekurse

RH302 RHCE Examensprüfung (Zertifizierung)
"This course was excellent. The teacher was fantastic—his depth of knowledge is amazing."——Greg Peters, Future Networks USA

Kapitel 58. RH300: RHCE Fast Track Kurs (incl. RHCE Examensprüfung)

Der schnellste Weg zur Zertifizierung als RHCE für erfahrene UNIX- und Linux-Anwender.

58.1. Kursbeschreibung

Mit einer Dauer von fünf Tagen bietet dieser Kurs eine intensive Schulung zu Red Hat Linux an und beinhaltet die RHCE Examensprüfung zur Zertifizierung am letzten Tag.

58.1.1. Voraussetzungen

RH033, RH133, RH253 oder vergleichbare Erfahrung im Umgang mit UNIX. Bitte buchen Sie RH300 nur dann, wenn Sie Erfahrungen in der Systemadministration besitzen oder ein intensiver Benutzer in UNIX- oder Linux-Umgebungen sind.

58.1.2. Ziel

Nach erfolgreichem Abschluss dieses Kurses sind die Teilnehmer Red Hat Enterprise Linux Systemadministratoren, die erst geschult und dann anhand der RHCE Examensprüfung getestet wurden.

58.1.3. Teilnehmerkreis

UNIX- oder Linux-Systemadministratoren, die beachtliche Erfahrungen unter realen Bedingungen besitzen und die einen Fast-Track-Kurs zur Vorbereitung auf die RHCE-Examensprüfung belegen möchten.

58.1.4. Lerninhalte

  1. Hardware und Installation (x86-Architektur)
  2. Konfiguration und Administration
  3. Alternative Installationsmethoden
  4. Kernel-Dienste und -Konfiguration
  5. Standardmäßige Netzwerkdienste
  6. X-Window-System
  7. Benutzer- und Host-Sicherheit
  8. Router, Firewalls, Clusters und Problembehandlung

58.1.5. Empfohlene Folgekurse

Enterprise Architect Curriculum und RHCA-Zertifizierung

Kapitel 59. RH302 RHCE Examensprüfung

  1. Die RHCE-Examensprüfung ist Bestandteil des Kurses RH300. Sie kann auch individuell gebucht werden.
  2. Die RHCE-Examensprüfung findet am fünften Tag aller RH300 Kurse statt

59.1. Kursbeschreibung

RHCE hebt sich von vielen anderen Zertifizierungsprogrammen im IT-Sektor durch seinen Schwerpunkt auf praktisches, leistungsorientiertes Testen von tatsächlichen Fähigkeiten bei der Installation, der Konfiguration, der Fehlerbehebung und der Einrichtung von wesentlichen Netzwerkdiensten, ab.

59.1.1. Voraussetzungen

Werfen Sie einen Blick auf die Kursvoraussetzungen. Weitere Informationen finden Sie im Handbuch zur Vorbereitung auf die RHCE-Examensprüfung unter www.redhat.com/training/rhce/examprep.html

59.1.2. Inhalt

  1. Teil I: Problembehandlung und Pflege des Systems (2,5 Std.)
  2. Teil II: Installation und Konfiguration (3 Std.)
"Seriously, this was an outstanding class. I feel very well prepared for the test tomorrow." — Logan Ingalls, Web developer, Texterity Inc., USA

Kapitel 60. RHS333: Red Hat Enterprise Security: Network Services (Netzwerkdienste)

Sicherheit für die am gebräuchlichsten eingesetzten Dienste.

60.1. Kursbeschreibung

Red Hat Enterprise Linux has gained considerable momentum as the operating system of choice for deploying network services such as web, ftp, email, and file sharing. Red Hat's RHCE curriculum provides training in deploying these services and on the essential elements of securing them.

60.1.1. Voraussetzungen

RH253, RH300, oder RHCE-Zertifizierung, bzw. vergleichbare Berufserfahrung sind erforderlich für diesen Kurs. Kursteilnehmer sollten die essentiellen Elemente zur Konfiguration dieser abgedeckten Dienste bereits kennen, da dieser Kurs sich von Anfang an mehr auf fortgeschrittene Themen konzentriert.

60.1.2. Ziel

Dieser Kurs geht über die essentielle Behandlung von Sicherheit im Rahmen des RHCE-Curriculums hinaus und taucht tiefer in die Sicherheits-Features, sowie die Fähigkeiten und Risiken, die mit den am gebräuchlichsten eingesetzten Diensten zusammenhängen, ein.

60.1.3. Teilnehmerkreis

Der Teilnehmerkreis für diesen Kurs umfasst Systemadministratoren, Berater und andere IT-Experten, die für die Planung, Implementation und Pflege von Netzwerk-Servern verantwortlich sind. Auch wenn der Schwerpunkt auf dem Betrieb dieser Dienste unter Red Hat Enterprise Linux liegt, und ihr Einsatz vom Inhalt und den Labs vorausgesetzt werden, finden Systemadministratoren und Andere, die proprietäre Varianten von UNIX verwenden, möglicherweise auch viele andere Elemente dieses Kurses relevant.

60.1.4. Lerninhalte

  1. Beherrschen der Grundlagen der Systemsicherheit
  2. Verständnis von Kryptographie
  3. Protokollierung von Systemaktivitäten
  4. Absicherung von BIND und DNS
  5. Sicherheit von netzwerkgestützter Benutzerverwaltung
  6. Erhöhung der NFS-Sicherheit
  7. Die Secure Shell: OpenSSH
  8. Absicherung der Mailsysteme Sendmail und Postfix
  9. Verwaltung des FTP-Zugriffs (FTP-Serversicherheit)
  10. Apache-Sicherheit
  11. Grundlegende Maßnahmen bei Systemeinbrüchen

60.1.5. Empfohlene Folgekurse

RH401 Red Hat Enterprise Deployment und System Mgmt. RH423 Red Hat Enterprise Directory Services und Authentication RH436 Red Hat Enterprise Storage Mgmt. RH442 Red Hat Enterprise System Monitoring and Performance Tuning

Kapitel 61. RH401: Red Hat Enterprise Deployment und Systems Management (Einsatz und Systemverwaltung)

Managen von Red Hat Enterprise Linux Deployments.

61.1. Kursbeschreibung

RH401 ist ein viertägiger praktischer Intensivkurs im Lab zur Vermittlung von Fertigkeiten und Methoden, die für den umfangreichen Einsatz und das Management von unternehmenskritischen Red Hat Enterprise Linux Systemen entscheidend ist, inklusive Ausfallsicherung und Lastverteilung, CVS für Systemadministratoren, der Erstellung von RPMs und Leistungsoptimierung für spezielle Applikationen.

61.1.1. Voraussetzungen

RH253 at a minimum, RHCE certification preferred, or comparable skills and knowledge. All prospective course participants without RHCE certification are encouraged to verify skills with Red Hat's free online pre—assessment tests. Note: Persons should not enroll in RH401 without meeting the above prerequisites.
Allen potentiellen Kursteilnehmer, die keine RHCE-Zertifizierung besitzen, wird dringend geraten, sich bei der Buchung mit Red Hat Global Learning Services in Verbindung zu setzen, um eine Einschätzung ihrer Fähigkeiten durchzuführen.

61.1.2. Ziel

RH401 schult erfahrene Systemadministratoren hinsichtlich der Verwaltung von einer großen Anzahl von Enterprise Linux Servern mit verschiedenen Funktionen und/oder deren Verwaltung für unternehmenskritische Applikationen, die eine Ausfallsicherung und eine Lastverteilung erfordern. Desweiteren orientiert sich RH401 an Kompetenzen auf Expertenniveau bei der Verwaltung von Betriebssystemen für Enterprise-Funktionen—Der Trainer des Kurses vermittelt Kenntnisse, wie der Einsatz von Red Hat Enterprise Linux in Unternehmen effizient und effektiv implementiert und verwaltet werden kann, und zwar so, dass die gesamte Umsetzung im Unternehmen von einem Team verwaltet werden kann.

61.1.3. Teilnehmerkreis

Erfahrene Red Hat Enterprise Linux Systemadministratoren und andere IT-Experten, die in Unternehmensumgebungen und mit unternehmenskritischen Systemen arbeiten.

61.1.4. Lerninhalte

  1. Konfigurationsmanagement mit Hilfe von CVS
  2. Bau von angepassten RPM-Paketen
  3. Software-Management mit dem Red Hat Network Proxy Server
  4. Zusammenstellen eines Host Provisioning- und Management-Systems
  5. Leistungsoptimierung und -analyse
  6. Cluster mit Lastverteilung in einem Hochverfügbarkeitsnetzwerk
  7. Cluster mit Ausfallsicherung und Hochverfügbarkeitsapplikationen

61.1.5. Empfohlene Folgekurse

RHS333 Enterprise Security: Securing Network Services (Absicherung von Netzwerkdiensten)
RH423 Red Hat Enterprise Directory Services and Authentication (Verzeichnisdienste und Authentifizierung)
RH436 Red Hat Enterprise Storage Mgmt. (Speicherverwaltung)
RH442 Red Hat Enterprise System Monitoring and Performance Tuning (Systemüberwachung und Leistungsoptimierung)
"After taking RH401 I am completely confident that I can implement enterprise—scale high—availability solutions end-to-end."——Barry Brimer, Bunge North America

Kapitel 62. RH423 Red Hat Enterprise Directory Services and Authentication (Verzeichnisdienste und Authentifizierung)

Verzeichnisdienste für Red Hat Enterprise Linux Systeme verwalten und einsetzen.

62.1. Kursbeschreibung

RH423 ist ein viertägiger Intensivkurs, der eine Schulung und Labs zur plattformübergreifenden Integration von Verzeichnisdiensten für den Einsatz von Authentifizierung oder Informationen im gesamten Unternehmen bietet.

62.1.1. Voraussetzungen

RH253 at a minimum, RHCE certification preferred, or comparable skills and knowledge. All prospective course participants without RHCE certification are encouraged to verify skills with Red Hat's free online pre—assessment tests. Note: Persons should not enroll in RH423 without meeting the above prerequisites. All prospective course participants who do not possess RHCE certification are strongly advised to contact Red Hat Global Learning Services for a skills assessment when they enroll.

62.1.2. Ziel

RH423 schult erfahrene Systemadministratoren hinsichtlich der Verwaltung und des Einsatzes von Verzeichnisdiensten auf und für Red Hat Enterprise Linux Systeme(n). Ein zentraler Aspekt dieses Kurses ist die Vermittlung von grundlegenden Konzepten, sowie der Konfiguration und der Verwaltung von LDAP—basierten Diensten. Teilnehmer werden standardmäßige Netzwerk-Clients und -Dienste in den Verzeichnisdienst integrieren, um die Vorteile von dessen Fähigkeiten zu nutzen. Weiterhin werden die Pluggable Authentication Modules (PAM), sowie die Anbindung an Dienste, die Authentifizierung und Autorisierung benötigen, thematisiert.

62.1.3. Teilnehmerkreis

Erfahrene Red Hat Enterprise Linux Systemadministratoren und andere IT-Experten, die in Unternehmensumgebungen und mit unternehmenskritischen Systemen arbeiten.

62.1.4. Lerninhalte

  1. Grundlegende LDAP-Konzepte
  2. Konfiguration und Verwaltung eines OpenLDAP-Server
  3. Using LDAP as a "white pages" directory service
  4. Verwendung von LDAP für Benutzerauthentifizierung und -management
  5. Integration mehrerer LDAP-Server

62.1.5. Empfohlene Folgekurse

RHS333 Enterprise Security: Securing Network Services (Absicherung von Netzwerkdiensten)
RH401 Red Hat Enterprise Deployment und Systems Management (Einsatz und Systemverwaltung)
RH436 Red Hat Enterprise Storage Mgmt. (Speicherverwaltung)
RH442 Red Hat Enterprise System Monitoring and Performance Tuning (Systemüberwachung und Leistungsoptimierung)

Kapitel 63. SELinux Courses

63.1. RHS427: Einführung in SELinux und die Red Hat "Targeted" Richtlinie

Eintägige kompakte Einführung zu SELinux, dessen Funktionsweise im Rahmen der Red Hat "Targeted" Richtlinie und den Tools, die für die Arbeit mit den mächtigen Fähigkeiten von SELinux zur Verfügung stehen. RHS427 bildet den ersten Tag von RH429.

63.1.1. Teilnehmerkreis

Computer-Sicherheitsspezialisten und diejenigen, die für die Implementation von Sicherheitsrichtlinien auf einem Linux-Computer verantwortlich sind. RHS429 setzt RHCE oder vergleichbares Wissen voraus.

63.1.2. Kurszusammenfassung

Eines der bedeutendsten Features von Red Hat Enterprise Linux ist SELinux (Security Enhanced Linux) - eine mächtige Sicherheitsschicht auf Kernel-Ebene, die feine Einstellungen für Zugriff und Berechtigungen für Benutzer und Applikationen bietet. Standardmäßig ist SELinux unter Red Hat Enterprise Linux Systemen eingeschaltet. Das Erzwingen von obligatorischen Zugriffskontrollen wird von Red Hat als "Targeted Policy" bezeichnet. Diese Zugriffskontrollen erhöhen die Sicherheit von Netzwerkdiensten signifikant, können aber die Funktion von Drittanbieter-Anwendungen und Skripten unter älteren Red Hat Enterprise Linux Versionen einschränken.

63.2. RHS429: Red Hat Enterprise SELinux Policy Administration

Eines der bedeutendsten Features von Red Hat Enterprise Linux ist SELinux (Security Enhanced Linux) - eine mächtige Sicherheitsschicht auf Kernel-Ebene, die feine Einstellungen für Zugriff und Berechtigungen für Benutzer und Applikationen bietet. RHS429 stellt erfahrenen Systemadministratoren, Sicherheitsspezialisten und Anwendungsentwicklern das Erstellen von SELinux-Richtlinien (policies) vor. Teilnehmer dieses Kurses lernen, wie SELinux funktioniert, wie SELinux verwaltet wird und wie eine SELinux-Richtlinie (policy) erstellt wird.

Kapitel 64. RH436 Red Hat Enterprise Storage Mgmt. (Speicherverwaltung)

Deploy and manage Red Hat's cluster file system technology.
Ausrüstungsintensiv:
  1. fünf Server
  2. Speicher-Array

64.1. Kursbeschreibung

Der Kurs RH436 Red Hat Enterprise Storage Management bietet praxisbezogene Themen zu Shared Storage Technologien und dem Red Hat Global File System (GFS). Dieser viertägige Kurs beinhaltet die Einbindung der Cluster Suite und des GFS in Red Hat Enterprise Linux.

64.1.1. Voraussetzungen

RH253 at a minimum, RHCE certification preferred, or comparable skills and knowledge. All prospective course participants without RHCE certification are encouraged to verify skills with Red Hat's free online pre—assessment tests.

64.1.2. Ziel

Dieser Kurs wurde geschaffen, um Personen mit Kompetenzen auf RHCE-Niveau in den Fähigkeiten zu schulen, die für den Einsatz und die Verwaltung von Datenspeicher mit Hochverfügbarkeit in unternehmenskritischen Rechnerlandschaften erforderlich sind. Indem Fähigkeiten ergänzt werden, die im Rahmen des Kurses RH401 erworben wurden, bietet dieser Kurs intensiven praktischen Umgang mit dem Cluster-Dateisystem GFS.

64.1.3. Teilnehmerkreis

Erfahrene Red Hat Enterprise Linux Systemadministratoren und andere IT-Experten, die in Unternehmensumgebungen und mit unternehmenskritischen Systemen arbeiten.

64.1.4. Lerninhalte

  1. Rückblick auf Red Hat Enterprise Linux Technologien zur Speicherverwaltung
  2. Aufbau von Datenspeicher: Datenverteilung
  3. Überblick über die Cluster-Suite
  4. Überblick über das Global File System (GFS)
  5. GFS-Management
  6. Modifizierung der online GFS-Umgebung: Verwaltung von Datenkapazitäten
  7. Überwachung von GFS
  8. Implementierung von GFS-Modifikationen
  9. Migration von Cluster Suite NFS von DAS nach GFS
  10. Erneutes Aufsuchen der Cluster Suite unter Verwendung von GFS

64.1.5. Empfohlene Folgekurse

RHS333 Enterprise Security: Securing Network Services (Absicherung von Netzwerkdiensten)
RH401: Red Hat Enterprise Deployment und Systems Management (Einsatz und Systemverwaltung)
RH423 Red Hat Enterprise Directory Services and Authentication (Verzeichnisdienste und Authentifizierung)
RH442 Red Hat Enterprise System Monitoring and Performance Tuning (Systemüberwachung und Leistungsoptimierung)
"The class gave me a chance to use some of the latest Linux tools, and was a reminder of the benefits of using Linux for high-availability systems."——Paul W. Frields, FBI — Operational Technology Division Quantico, VA, USA

Kapitel 65. RH442 Red Hat Enterprise System Monitoring and Performance Tuning (Systemüberwachung und Leistungsoptimierung)

Leistungsoptimierung und Planung von Kapazitäten für Red Hat Enterprise Linux

65.1. Kursbeschreibung

RH442 ist ein viertägiger praktischer Kurs im Lab, der das Optimierung von Systemarchitekturen, Leistungscharakteristika, Überwachungsroutinen, Benchmarking und der Leistung von Netzwerken abdeckt.

65.1.1. Voraussetzungen

RHCT at a minimum, RHCE certification recommended, or comparable skills and knowledge. All prospective course participants without RHCE certification are encouraged to verify skills with Red Hat's free online pre—assessment tests.

65.1.2. Ziel

RH442 wurde zur Vermittlung der Methodiken zur Leistungsoptimierung und Kapazitätenplanung für Red Hat Enterprise Linux geschaffen. Dieser Kurs behandelt:
  1. Eine Diskussion über Systemarchitekturen mit Schwerpunkt auf einem Verständnis über Auswirkungen der Systemarchitektur auf die Systemleistung
  2. Methoden zum Testen der Auswirkungen der Anpassungen der Leistung (Benchmarking)
  3. Open Source Benchmark-Utilities
  4. Methoden zur Analyse der System- und Netzwerkleistung
  5. Optimierung der Konfigurationen für spezielle Applikationen

65.1.3. Teilnehmerkreis

RH442 ist für erfahrene Red Hat Enterprise Linux Systemadministratoren und andere IT-Experten gedacht, die in Unternehmensumgebungen und mit unternehmenskritischen Systemen arbeiten.

65.1.4. Lerninhalte

  1. Übersicht über die System-Komponenten und -Architektur mit Bezug auf die Systemleistung
  2. Translating manufacturers' hardware specifications into useful information
  3. Effektive Verwendung von Monitoring-Tools zur Sammlung und Analyse von Informationen zum Verlauf
  4. Verwendung von SNMP zur Erfassung leistungsrelevanter Daten
  5. Verwendung von Open Source Benchmark-Utilities
  6. Netzwerk-Leistungsoptimierung
  7. Überlegungen zur Leistungsoptimierung von Applikationen
  8. Optimierung spezieller Konfigurationen

65.1.5. Empfohlene Folgekurse

RHS333 Enterprise Security: Securing Network Services (Absicherung von Netzwerkdiensten)
RH401: Red Hat Enterprise Deployment und Systems Management (Einsatz und Systemverwaltung)
RH423 Red Hat Enterprise Directory Services and Authentication (Verzeichnisdienste und Authentifizierung)
RH436 Red Hat Enterprise Storage Mgmt. (Speicherverwaltung)

Kapitel 66. Red Hat Enterprise Linux Developer Courses (Kurse für Entwickler)

66.1. RHD143: Red Hat Linux Programming Essentials (Programmiergrundlagen)

Ein intensiver praxisorientierter Kurs, der einen schnellen Einstieg in das Programmieren von Applikationen unter Red Hat Enterprise Linux bietet. Dieser fünftägige Kurs beinhaltet neben der Theorie und Demonstration viele realistische Programmierübungen. Mit der Vollendung dieses Kurses haben die Teilnehmer die grundlegenden Fähigkeiten zur Erstellung von Linuxapplikationen erworben und geübt.

66.2. RHD221 Red Hat Linux Device Drivers (Gerätetreiber)

Dieser Kurs wurde geschaffen, um erfahrenen Programmierern einen Einstieg in die Entwicklung von Gerätetreibern unter Linux zu geben. Mit Vollendung des Kurses haben die Teilnehmer die Linuxarchitektur, Hardware- und Speicherverwaltung, Modularisierung und Layout der Kernelquellen verinnerlicht. Außerdem haben sie die Schlüsseltechniken zur Entwicklung von Block-, Charakter- und Netzwerktreibern ausgiebig gelernt.

66.3. RHD236 Red Hat Linux Kernel Internals (Kernel-Internas)

Dieser Kurs liefert einen Einblick in die Linux Kernel Architektur, inklusive aller Prozesse, Speichermanagement, Dateisystem und Ansprechen der Peripherie. Inhalt dieses fünftägigen Kurses sind die Konzepte und deren Ausführungen in Verbindung mit vielen Programmierübungen.

66.4. RHD256 Red Hat Linux Application Development und Porting (Anwendungsentwicklung und Portierung)

Ein viertägiger Kurs für erfahrene Programmierer, die bereits mit der Entwicklung auf UNIX-ähnlichen Systemen vertraut sind und neue Applikationen entwickeln, bzw. existierende Applikationen auf Red Hat Enterprise Linux portieren möchten.

Kapitel 67. JBoss-Kurse

67.1. RHD161 JBoss und EJB3 für Java-Entwickler

JBoss und EJB3 für Java-Entwickler richtet sich an gute Java-Entwickler, die Ihre Kenntnisse hinsichtlich EJB3 und J2EE Middleware-Programmierung unter Verwendung des JBoss Application Server erweitern möchten. Dieser Kurs ist eine tiefgehende Einführung in EJB3 und J2EE unter Verwendung des JBoss Application Server. Er liefert einen praktischen Zugang zur Entwicklung und zum Einsatz von EJB3- und J2EE-Applikationen, sowie zu den Tools zur Vereinfachung der beiden Prozesse.

67.1.1. Voraussetzungen

Grundlegende Java-Programmierkenntnisse sowie Kenntnisse zu OOAD-Konzepten sind erforderlich. Der Teilnehmer muss praktische Kenntnisse und Erfahrungen in den folgenden Bereichen besitzen:
  1. Objektorientierte Konzepte (Vererbung, Polymorphismus und Kapselung),
  2. Java Syntax, speziell Datentypen, Variablen, Operatoren, Statements und Kontrollfluss,
  3. Schreiben von Java-Klassen, sowie die Verwendung von Java-Schnittstellen und abstrakten Klassen.

67.2. RHD163 JBoss für Web-Entwickler

JBoss für Web-Entwickler konzentriert sich auf Web-Tier-Technologien im Rahmen der JBoss Enterprise Middleware System (JEMS) Produktpalette. Wir decken Details zu JBoss-Portal ab, wie der Erstellung und dem Einsatz von Portlets, der Integration von Portlets mit anderen Web-Tier-Framework (wie JavaServer Faces JSF) und der Konfiguration und der Feineinstellung des Tomcat Web-Container, der im JBoss Application Server eingebettet ist. Gute Kenntnisse zu JSP und der Entwicklung von Servlets, sowie den zugehörigen Spezifikationen werden dringend empfohlen. Vorkenntnisse zu Portlets oder JSF werden nicht benötigt.

67.2.1. Voraussetzungen

Die vorausgesetzten Fähigkeiten für diesen Kurs sind grundlegende Programmierkenntnisse zu J2EE Web Container (Servlet/JSP) und etwas Erfahrung im Einsatz von J2EE webbasierten und Multi-Tier-Applikationen auf dem JBoss Application Server in Verbindung mit dem Tomcat-Container (unabhängig davon, ob dieser in Apache eingebettet ist oder im JBoss Application Server integriert ist). Der Teilnehmer sollte Entwicklungserfahrungen mit den folgenden Technologien besitzen:
  1. JNDI
  2. Servlet 2.3/2.4 API
  3. JSP 2.0 API
  4. J2EE-Anwendungsentwicklung und Einsatz auf dem JBoss Application Server
  5. Einsatz einer Web-Anwendung auf einem eingebetteten (stand-alone) Tomcat oder auf einem integrierten Tomcat (JBossWeb)
  6. Praktische Fähigkeiten im Umgang mit JDBC und EJB2.1 oder EJB3.0
sind hilfreich, wenn auch nicht Voraussetzung.

67.3. RHD167: JBOSS - HIBERNATE GRUNDLAGEN

67.3.1. Voraussetzungen

  1. Ein Verständnis des relationalen Persistenzmodells
  2. Fähigkeiten im Umgang mit der Programmiersprache Java
  3. Fachkenntnisse im Bereich OOAD-Konzepte
  4. Vertrautheit mit UML
  5. Erfahrungen mit SQL
  6. JDK-Anwendung und Erstellung der notwendigen Umgebung für Kompilierungen und Ausführung von Java-Programmen von der Befehlszeile aus
  7. Verständnis im Bereich JDB
Keine Vorkenntnisse im Bereich J2EE und Hibernate erforderlich. Die Schulung ist basisbezogen auf die Hibernate 3.2 Serie.

67.3.2. Kurszusammenfassung

Hibernate Grundlagen richtet sich an Java-Entwickler, die sich mit der objektrelationalen Persistenz und der Umsetzung des Abfragedienstes von Hibernate oder der Java Persistence API vertraut machen sollen. Die Haupt-Zielgruppe dieses Kurses besteht vor allem aus Java-Entwicklern, die mit SQL-basierten Datenbanksystemen arbeiten möchten, oder Datenbankentwicklern, die auf der Suche nach einer Einführung zur Entwicklung von objektorientierter Software sind. Für Datenbankadministratoren, die daran interessiert sind, wie ORM ggf. die Leistung beeinflusst und wie die Leistung des SQL Datanbank-Managament-Systems und der Persistenzschicht eingestellt werden kann, ist dieser Kurs ebenfalls hilfreich. Abgedeckt werden die JBoss, Inc. Implementierung der JSR-220 Sub-Spezifikation für Java-Persistenz, sowie die grundlegenden APIs der Version 3.x des Produkts JBoss, Inc. Hibernate, oder einfach, Hibernate 3.

67.4. RHD267: JBOSS - ADVANCED HIBERNATE

Die Schulung 'JBoss Advanced Hibernate' richtet sich an Java-Entwickler, die das gesamte Potential des Hibernate O/R Mapping Framework ausschöpfen möchten. Die primäre Zielgruppe besteht vor allem aus Java-Entwicklern, die mit SQL-basierten Datenbanksystemen arbeiten, sowie Datenbankentwicklern, die auf der Suche nach einer Einführung zur Entwicklung von objektorientierter Software sind und Datenbankadministratoren, die daran interessiert sind, wie ORM die Leistung beeinflusst und wie die Leistung des SQL Datenbank-Managament-Systems und der Persistenzschicht eingestellt werden kann. Die Schulung deckt die neuen Features von Hibernate 3 ab.

67.4.1. Voraussetzungen

Folgende Kenntnisse werden für diesen Kurs vorausgesetzt:
  1. Grundkenntnisse zu Hibernate
  2. Fähigkeiten im Umgang mit der Programmiersprache Java
  3. Fachkenntnisse im Bereich OOAD-Konzepte
  4. Vertrautheit mit UML
  5. Erfahrungen mit SQL
  6. JDK-Anwendung und Erstellung der notwendigen Umgebung für Kompilierungen und Ausführung von Java-Programmen von der Befehlszeile aus
  7. Erfahrung mit, oder umfassende Kenntnisse in JNDI und JDBC
  8. Kenntnisse zu EJB2.1 oder EJB3.0 werden nicht vorausgesetzt, sind jedoch hilfreich
  9. Das Lesen des Buchs "Hibernate in Action" von Christian Bauer und Gavin King (veröffentlicht von Manning) wird vorab empfohlen.
"The best part of the Advanced Hibernate course was networking with fellow engineers that had problems similar to my own, and working with a knowledgeable instructor to solve them."--Mike Pasternak, Consulting Engineer, United Switch & Signal

67.5. RHD261: JBoss für Advanced J2EE-Entwickler

JBoss für Advanced J2EE-Entwickler richtet sich an J2EE-Experten, die mit Hilfe der internen Architektur des JBoss Application Server die Funktionsweise und die Leistung von J2EE-Applikationen erhöhen möchten. Unter anderem werden die Themen JMX, Microkernel Architektur, Sicherheit, Clustering und Fine Tuning behandelt.

67.5.1. Voraussetzungen

Es wird dringend empfohlen, dass Teilnehmer entweder vor Registrierung für den Kurs "JBoss für Advanced J2EE-Entwickler" den Kurs "JBoss für Java-Entwickler" absolvieren ODER die Middleware Placement Prüfung ablegen. Der Entwickler sollte praktische Erfahrungen mit jedem der folgenden Themen besitzen:
  1. JNDI
  2. JDBC
  3. Servlets und JSPs
  4. Enterprise Java Beans
  5. JMS
  6. J2EE-Sicherheitsmodell
  7. J2EE-Anwendungsentwicklung und Einsatz auf dem JBoss Application Server
  8. Kenntnisse im Umgang mit ANT und XDoclet oder vergleichbaren Technologien.
Vorkenntnisse zu JMX sind hilfreich, jedoch nicht erforderlich. Diese Schulung basiert auf der 4.x Serie des JBoss Application Server.
"I thought the training materials were well-organized, including both the handbook and the labs. The instructor frequently asked for feedback on material and pace. It was apparent that he cared about our understanding of the material."--Jeremy Prellwitz, SiRAS.com, USA

67.6. RH336: JBOSS für Administratoren

67.6.1. Voraussetzungen

Grundlegende praktische Erfahrungen des Windows oder Linux (Unix-basierten) Betriebssystems. Der Teilnehmer sollte Erfahrungen in den folgenden Bereichen besitzen:
  1. Erstellen von Verzeichnissen, Dateien sowie der Veränderung von Zugriffsrechten auf den Dateispeicher.
  2. Installation eines JDK
  3. Konfiguration von Umgebungsvariablen für ein Betriebssystem, wie z.B. JAVA_HOME
  4. Starten von Java-Applikationen und Ausführen eines OS-abhängigen Skripts, das eine Java-Applikation startet.
  5. Erstellen und Erweitern einer Java-Archivdatei (das jar-Dienstprogramm)
Vorkenntnisse zu J2EE oder dem JBoss Application Server sind nicht erforderlich. Jedoch werden Kenntnisse in der Unterstützung von Java-Applikationen mit XML-Konfigurationen dringend empfohlen.

67.6.2. Kurszusammenfassung

JBoss für Administratoren richtet sich an Personen, die Applikationen unterstützten, wie z.B. Systemadministratoren und Personal, das für Konfigurationsmanagement und Qualitätssicherung verantwortlich ist, und die die Konfiguration und Administration des JBoss Application Server (3.2.x und 4.x Serie), sowie die darauf ausgeführten Applikationen beherrschen möchten.
"The JBoss for Administrators course was a great balance of both lecture and labs. It is always nice to have hands on knowledge of the topics to make them seem more real and applicable."——Thomas Skowronek, Palm Harbor Homes, USA

67.7. RHD439: JBoss Clustering

JBoss Clustering ist eine viertägige Schulung mit Schwerpunkt auf Hochverfügbarkeitsdienste des JBoss Enterprise Middleware System (JEMS). Sie lernen, wie der JBoss Application Server JGroups und JBoss Cache zur Replikation und zur Ausfallsicherung beeinflusst, wie JGroups Protokollstapel konfiguriert, eingestellt und implementiert werden, wie Sie JBoss-Cache in Ihrer eigenen Implementation einer Middleware-Applikation beeinflussen können und wie mod_jk zur HTTP-Lastverteilung verwendet und konfiguriert werden kann. Außerdem werden einige Details der JBoss Application Server Hochverfügbarkeitsdienste, wie z.B. HA-JNDI, HA-JMS und HA-singleton behandelt.

67.7.1. Voraussetzungen

Es wird dringend empfohlen, vor Belegung dieses Kurses den Kurs "JBoss für Advanced J2EE-Entwickler" zu absolvieren. Außerdem wird dringend empfohlen, dass der Teilnehmer 18 Monate praktische Entwicklungserfahrung mit J2EE und anderen Java Middleware Technologien, sowie praktische Erfahrungen mit dem JBoss Application Server besitzt. Solide Kenntnisse in der Java-Programmierung (mindestens 3 Jahre Erfahrung) ist erforderlich und das Verständnis von grundlegenden TCP/IP-Themen ist notwendig.
Der Teilnehmer muss folgende Fähigkeiten besitzen:
  1. JTA, Transaktionen, Java concurrency
  2. EJB 2.1, JMS, Technologien im Bereich Datentransfer
  3. Vorkenntnisse zu Apache httpd und einige Erfahrung mit mod_jk und/oder mod_proxy
  4. Erfahrung mit JBoss AS microkernel und JMX
  5. Erfahrung mit TCP/IP, UDP, Multicasting
"The JBoss for Administrators course was very informative. Our instructor did a great job at answering our questions (some very specific to the student) while maintaining the course direction. I am very excited about applying what I have learned in the course."——Andy Beier, Arizona Statue University, USA

67.8. RHD449: JBoss jBPM

67.8.1. Beschreibung

Die Schulung "JBoss jBPM" richtet sich an Systemarchitekten und Entwickler, die eng mit Businessanalysten zusammenarbeiten und für die Integration von Geschäftsprozessen in die J2EE-Umgebung unter Verwendung von jBPM als BPM-Engine verantwortlich sind. Zusätzlich bietet die JBoss-jBPM-Schulung den Teilnehmern ein gründliches Verständnis der BPM-Landschaft, Typen von Engines und Platzierung von Schlagwörtern.
Teilnehmer erhalten praktische Kenntnisse und sind nach Abschluss des Kurses in der Lage, Geschäftsprozesse mit JBoss jBPM zu entwickeln. Ein weiteres Ziel dieser Schulung ist es, eine gründliche Vorbereitung für den Vergleich von Workflow-Engines zu liefern.

67.8.2. Voraussetzungen

  1. Der Teilnehmer muss Vorkenntnisse in der Entwicklung einer Hibernate-Applikation besitzen. Er muss wissen, wie eine einfache Session-Factory für Hibernate zu konfigurieren ist, wie eine Hibernate-Session und transaktionale Demarkation verwendet werden und wie grundsätzliche Queries an Hibernate-Objekten durchgeführt werden.
  2. Fähigkeiten in der Entwicklung von Java-Applikationen.
  3. Vorkenntnisse zu den Konzepten des Workflows und der Geschäftsprozessmodellierung (BPM) sind nicht erforderlich
  4. Erfahrungen mit JBoss Eclipse oder der Eclipse IDE mit dem JBoss-Plugin werden empfohlen, sind jedoch nicht erforderlich
  5. Eine grundlegende Vorstellung des JUnit Test-Framework wird empfohlen.

67.9. RHD451 JBoss-Rules

Der Kurs deckt die Core-Engine für Drools 3 (JBoss Rules 3.0) ab, sowie die verschiedenen Techniken und Sprachen, die verwendet werden, um Geschäftsregeln zu verwalten und wie die Rule-Engine in J2SE- und J2EE-Applikationen eingebettet werden kann. Dieser Kurs stellt eine Ergänzung zu allen zukünftigen Kursen zur Regelverwaltung unter Verwendung zukünftiger Releases von JBoss Rules dar.

67.9.1. Voraussetzungen

  1. Grundlegende Java-Kenntnisse
  2. Ein gewisses Verständnis, was eine Interfencing-Rule-Engine im Gegensatz zu einer Scripting-Engine ausmacht
  3. Ein Blick auf die JBoss Rules Webinars und Demos wird empfohlen, ist jedoch nicht erforderlich
  4. Java-EE-spezifische Erfahrung ist für den Kurs nicht erforderlich, aber Studenten, die wissen möchten, wie die Integration mit Java-EE abläuft, benötigen die entsprechende Erfahrung

Revision History

Versionsgeschichte
Version 10-0Thu Jul 21 2011Jaromír Hradílek
Resolve BZ#720382: MinorMod: Network Interfaces: LINKDELAY parameter needs to be added to "Interface Configuration Files".
Resolve BZ#632028: MajorMod: Redundant Array of Independent Disks (RAID): Document mdadm Usage.
Resolve BZ#720009: MinorMod: LVM: Update screenshots in the "Manual LVM Partitioning" section.
Resolve BZ#711162: MinorMod: Network Interfaces: Incorrect static routes configuration.
Resolve BZ#707238: broadcast is calculated with ipcalc, not ifcalc.
Resolve BZ#678316: HOTPLUG network config file option is not documented.
Resolve BZ#562018: Ch.4 Redundant Array of Independent Disks (RAID) - screenshots need updating.
Resolve BZ#485033: iptables -p ALL --dport not allowed according to man 8 iptables.
Version 9-0Thu Jan 13 2011Jaromír Hradílek
Resolve BZ#249485: 'fsid=num' is listed under NFS client options, but it is a server-only option.
Resolve BZ#253659: additional commands required when adding machines to domain.
Resolve BZ#453242: guide does not tell you which packages you need to run an NFS server.
Resolve BZ#504250: cell should have newline characters, it shouldn't be all on one line.
Resolve BZ#520650: /proc/loadavg documentation error.
Resolve BZ#584075: vsftp typo for text_userdb_names.
Resolve BZ#625384: bonding configuration SLAVE=bond0 is invalid.
Resolve BZ#644617: misspelled word.
Resolve BZ#645123: spelling Errors in Deployment Guide II.
Resolve BZ#595366: RFE: document Shared Subtrees.
Version 8-0Thu July 30 2010Douglas Silas
Resolve BZ#239313: document oom_adj and oom_score.
Resolve BZ#526502: correct quotaon instructions with proper, safe operating procedures.
Resolve BZ#551367: correct SELinux dhcpd_disable_trans description.
Resolve BZ#521215: clarify NFS interaction with portmapper, rpc.mountd, rpc.lockd and rpc.statd.
Resolve BZ#453875: various OpenSSH chapter corrections.
Resolve BZ#455162: correct zone example configuration file, description.
Resolve BZ#460767: make it a proper daemon.
Resolve BZ#600702: correct directories used for SSL key generation.
Version 7-0Wed Sep 30 2009Douglas Silas, Jarek Hradilek, Martin Prpic
Change heading titles to correspond with actual headings used in 'man rpm'.
Resolve BZ#499053: /usr/sbin/racoon is correct install path.
Remove any mention of 'pkgpolicy' in /etc/yum.conf as per BZ#237773.
Resolve BZ#455162: correct example zone file with regard to records, description.
Resolve BZ#510851: /proc/cmdline has confusing descriptions of sample output.
Resolve BZ#510847: page with multiple footnotes formatted incorrectly in online PDF.
Resolve BZ#214326: more detailed usage info concerning vsftpd banners and secueerity.
Resolve BZ#241314: formatting problems in screen elements.
Resolve BZ#466239: postfix connect-from-remote-host configuration fix.
Version 7-0Mon Sep 14 2009Douglas Silas
Resolve BZ#214326: Server Security FTP Banner instructions: questions re: vsftpd.conf.
Resolve BZ#466239: insert line into Postfix config file to allow connecting remotely.
Resolve BZ#499053: path for racoon daemon is /usr/sbin/racoon, not /sbin/racoon.
Resolve BZ#510847: missing footnotes in PDF output.
Resolve BZ#510851: rewrite /proc/cmdline minor section to make more sense.
Resolve BZ#515613: correct location of RHEL5 GPG keys and key details.
Resolve BZ#523070: various minor fixes; --redhatprovides to rpm -q --whatprovides.
Version 6-0Wed Sep 02 2009Douglas Silas
Resolve BZ#492539: "This directive is useful..." to "This directive must be used in machines containing more than one NIC to ensure...".
Resolve BZ#241314: re: kernel-pae and hugemem support on RHEL 4 and 5.
Resolve BZ#453071: incorrect tag use led to config files and other screen elements being displayed on single lines.
Resolve BZ#507987: clarify and correct statements about partitions being in use while resizing or removing.
Resolve BZ#462550: recommended amount of swap space, according to http://kbase.redhat.com/faq/docs/DOC-15252.
Resolve BZ#466239: line omitted from Postfix configuration meant connecting remotely failed
Resolving other MODIFIED BZs (fixed previously): 468483, 480324, 481246, 481247, 438823, 454841, 485187, 429989, 452065, 453466.
Version 5-0Wed Jan 28 2009Michael Hideo Smith
Resolves: #460981
Changing 64GB *tested* support to support for 16GB.

Colophon

The manuals are written in DocBook XML v4.3 format.
Garrett LeSage created the admonition graphics (note, tip, important, caution, and warning). They may be freely redistributed with the Red Hat documentation.
Contributing Writers: John Ha (System Administration, Filesystems, Kernel), Joshua Wulf (Installation and Booting), Brian Cleary (Virtualization), David O'Brien (Security and SELinux), Michael Hideo (System Administration), Don Domingo (System Administration), Michael Behm (System Administration), Paul Kennedy (Storage), Melissa Goldin (Red Hat Network)
Honoring those who have gone before: Sandra Moore, Edward C. Bailey, Karsten Wade, Mark Johnson, Andrius Benokraitis, Lucy Ringland
Honoring engineering efforts: Jeffrey Fearn
Technical Editing: Michael Behm
Graphic Artist: Andrew Fitzsimon
The Red Hat Localization Team consists of the following people:
  • East Asian Languages
    • Simplified Chinese
      • Tony Tongjie Fu
      • Simon Xi Huang
      • Leah Wei Liu
      • Sarah Saiying Wang
    • Traditional Chinese
      • Chester Cheng
      • Terry Chuang
      • Ben Hung-Pin Wu
    • Japanese
      • Kiyoto Hashida
      • Junko Ito
      • Noriko Mizumoto
      • Takuro Nagamoto
    • Korean
      • Eun-ju Kim
      • Michelle Kim
  • Latin Languages
    • French
      • Jean-Paul Aubry
      • Fabien Decroux
      • Myriam Malga
      • Audrey Simons
      • Corina Roe
    • German
      • Jasna Dimanoski
      • Verena Furhuer
      • Bernd Groh
      • Daniela Kugelmann
      • Timo Trinks
    • Italian
      • Francesco Valente
    • Brazilian Portuguese
      • Glaucia de Freitas
      • Leticia de Lima
      • David Barzilay
    • Spanish
      • Angela Garcia
      • Gladys Guerrero
      • Yelitza Louze
      • Manuel Ospina
    • Russian
      • Yuliya Poyarkova
  • Indic Languages
    • Bengali
      • Runa Bhattacharjee
    • Gujarati
      • Ankitkumar Rameshchandra Patel
      • Sweta Kothari
    • Hindi
      • Rajesh Ranjan
    • Malayalam
      • Ani Peter
    • Marathi
      • Sandeep Shedmake
    • Punjabi
      • Amanpreet Singh Alam
      • Jaswinder Singh
    • Tamil
      • I Felix
      • N Jayaradha