<!--
     The FreeBSD Documentation Project
     The FreeBSD German Documentation Project

     $FreeBSD$
     $FreeBSDde: de-docproj/books/handbook/firewalls/chapter.sgml,v 1.4 2006/05/13 17:32:31 jkois Exp $
     basiert auf:  1.67
-->

<chapter id="firewalls">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Joseph J.</firstname>
	<surname>Barbish</surname>
	<contrib>Beigetragen von </contrib>
      </author>
    </authorgroup>
    <authorgroup>
      <author>
	<firstname>Brad</firstname>
	<surname>Davis</surname>
	<contrib>Nach SGML konvertiert und aktualisiert von </contrib>
      </author>
    </authorgroup>
    <authorgroup>
      <author>
	  <firstname>Michael</firstname>
	  <surname>Bunzel</surname>
	  <contrib>Teilweise &uuml;bersetzt von </contrib>
      </author>
    </authorgroup>

  </chapterinfo>

  <title>Firewalls</title>

  <indexterm><primary>firewall</primary></indexterm>

  <indexterm>
    <primary>security</primary>

    <secondary>firewalls</secondary>
  </indexterm>

  <sect1 id="firewalls-intro">
    <title>Einf&uuml;hrung</title>

    <para>Firewalls erm&ouml;glichen es, den ein- und ausgehenden
      Netzwerkverkehr Ihres Systems zu filtern.  Dazu verwendet eine
      Firewall eine oder mehrere Gruppen von <quote>Regeln</quote>,
      um ankommende Netzwerkpakete zu untersuchen und entweder
      durchzulassen oder zu blockieren.  Die Regeln einer
      Firewall untersuchen charakteristische Eigenschaften von
      Datenpaketen, darunter den Protokolltyp, die Quell- und
      Zieladresse sowie den Quell- und Zielport.</para>

    <para>Firewalls k&ouml;nnen die Sicherheit eines Rechners oder
      eines Netzwerks erh&ouml;hen, indem sie folgende Aufgaben
      &uuml;bernehmen:</para>

    <itemizedlist>
      <listitem>
        <para>Den Schutz der Anwendungen, Dienste und Rechner Ihres
          internen Netzwerks vor unerw&uuml;nschtem Datenverkehr
          aus dem Internet.</para>
      </listitem>

      <listitem>
        <para>Die Beschr&auml;nkung des Zugriffs von Rechnern des
          internen Netzwerk auf Rechner oder Dienste des externen
          Internets.</para>
      </listitem>

      <listitem>
        <para>Den Einsatz von Network Address Translation
          (<acronym>NAT</acronym>), die es Ihnen durch die Verwendung
          von privaten <acronym>IP</acronym>-Adressen erm&ouml;glicht,
          eine einzige gemeinsame Internetverbindung f&uuml;r mehrere
          Rechner zu nutzen (entweder &uuml;ber eine einzige Adresse
          oder &uuml;ber eine Gruppe von jeweils automatisch
          zugewiesenen &ouml;ffentlichen
          <acronym>IP</acronym>-Adressen).</para>
      </listitem>
    </itemizedlist>

    <para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie:</para>

    <itemizedlist>
      <listitem>
	<para>Wissen, wie man korrekte Paketfilterregeln erstellt.</para>
      </listitem>

      <listitem>
	<para>Die Unterschiede zwischen den in &os; eingebauten Firewalls
	  kennen.</para>
      </listitem>

      <listitem>
	<para>Wissen, wie man die <application>PF</application>-Firewall
	  von OpenBSD konfiguriert und einsetzt.</para>
      </listitem>

      <listitem>
	<para><application>IPFILTER</application> konfigurieren und
	  einsetzen k&ouml;nnen.</para>
      </listitem>

      <listitem>
	<para>Wissen, wie man
	  <application>IPFW</application> konfiguriert und einsetzt.</para>
      </listitem>
    </itemizedlist>

    <para>Bevor Sie dieses Kapitel lesen, sollten Sie:</para>

    <itemizedlist>
      <listitem>
	<para>Die grundlegenden Konzepte von &os; und dem Internet
	  verstehen.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="firewalls-concepts">
    <title>Firewallkonzepte</title>

    <indexterm>
      <primary>firewall</primary>

      <secondary>rulesets</secondary>
    </indexterm>

    <para>Es gibt zwei grundlegende Arten, Regelgruppen f&uuml;r
      Firewalls zu erstellen: <quote>einschlie&szlig;end</quote>
      (<foreignphrase>inclusive firewall</foreignphrase>) sowie
      <quote>auschlie&szlig;end</quote> (<foreignphrase>exclusive
      Firewall</foreignphrase>).  Eine auschlie&szlig;ende Firewall
      l&auml;sst jeden Datenverkehr durch, der nicht durch eine Regel
      ausgeschlossen wurde.  Eine einschlie&szlig;ende Firewall macht
      das genaue Gegenteil.  Sie l&auml;sst Datenverkehr nur dann
      durch, wenn er einer der definierten Regeln entspricht.</para>

    <para>Einschlie&szlig;ende Firewalls sind tendentiell sicherer als
      ausschlie&szlig;ende Firewalls, da sie das Risiko, dass
      unerw&uuml;nschter Datenverkehr die Firewall passiert, signifikant
      reduzieren.</para>

    <para>Die Sicherheit einer Firewall kann durch den Einsatz einer
      <quote>zustandsabh&auml;ngigen Firewall</quote>
      (<foreignphrase>stateful firewall</foreignphrase>) weiter
      erh&ouml;ht werden.  Eine zustandsabh&auml;ngige Firewall
      &uuml;berwacht alle durch die Firewall gehenden offenen
      Verbindungen und erlaubt nur schon bestehenden Verkehr oder
      Datenverkehr, der eine neue Verbindung &ouml;ffnet.  Der Nachteil
      einer zustandsabh&auml;ngigen Firewall ist allerdings, dass sie
      anf&auml;llig f&uuml;r Denial of Service (<acronym>DoS</acronym>)
      -Attacken ist, wenn sehr schnell sehr viele neue Verbindungen
      erstellt werden.  Bei den meisten Firewalls k&ouml;nnen Sie eine
      Kombination aus zustandsabh&auml;ngigem und nicht
      zustandsabh&auml;ngigem Verhalten verwenden, um eine f&uuml;r Ihre
      Bed&uuml;rfnisse optimale Fireall einzurichten.</para>
  </sect1>

  <sect1 id="firewalls-apps">
    <title>Firewallpakete</title>

    <para>Das Basissystem von &os; enth&auml;lt bereits drei
      Firewallpakete:  <emphasis>IPFILTER</emphasis> (auch als
      <acronym>IPF</acronym> bekannt), <emphasis>IPFIREWALL</emphasis>
      (auch als <acronym>IPFW</acronym> bezeichnet) sowie das von OpenBSD
      &uuml;bernommene <emphasis>PacketFilter</emphasis> (das auch als
      <acronym>PF</acronym> bezeichnet wird).  Zus&auml;tzlich
      verf&uuml;gt &os; &uuml;ber zwei eingebaute Pakete f&uuml;r das
      sogenannte <foreignphrase>traffic shaping</foreignphrase> (dabei
      handelt es sich die Steuerung des Bandbreitenverbrauchs):
      &man.altq.4; sowie &man.dummynet.4;.  Dummynet steht traditionell
      in enger Verbindung mit <acronym>IPFW</acronym>, w&auml;hrend
      <acronym>ALTQ</acronym> gemeinsam mit
      <acronym>IPF</acronym>/<acronym>PF</acronym> eingesetzt wird.
      Gemeinsam ist allen Firewallpaketen (IPF, IPFW sowie PF), dass sie
      Regeln einsetzen, um den Transfer von Datenpaketen auf und von
      Ihrem System zu regeln.  Unterschiedlich sind aber die Art und
      Weise, wie dies realisiert wird.  Auch die f&uuml;r diese Regeln
      verwendete Syntax ist unterschiedlich.</para>

    <para>&os; &uuml;berl&auml;sst es dem Anwender, das Firewallsystem
      zu w&auml;hlen, dass seinen Anforderungen und Vorlieben am Besten
      entspricht.  Keines der im Basissystem enthaltenen Firewallpakete
      wird dabei als <quote>das beste</quote> angesehen.</para>

    <para>IPFILTER hat etwa den Vorteil, dass dessen
      zustandsabh&auml;ngige Regeln relativ einfach in einer
      <acronym>NAT</acronym>-Umgebung implementiert werden k&ouml;nnen.
      Au&szlig;erdem verf&uuml;gt es &uuml;ber einen eigenen FTP-Proxy,
      der die Erstellung von sicheren Regeln f&uuml;r ausgehende
      FTP-Verbindungen vereinfacht.</para>

    <para>Da alle Firewalls auf der Untersuchung der Werte
      ausgew&auml;hlter Kontrollfelder von Datenpaketen basieren, ist es
      f&uuml;r die Erstellung von Firewallregeln notwendig, die
      Funktionsweise von <acronym>TCP</acronym>/IP zu verstehen.
      Au&szlig;erdem muss man dazu wissen, was die Werte der einzelnen
      Kontrollfelder bedeuten und wie diese w&auml;hrend einer
      Verbindung eingesetzt werden.  Eine gute Erkl&auml;rung dieser
      Thematik finden Sie unter <ulink
      url="http://www.ipprimer.com/overview.cfm"></ulink>.</para>
  </sect1>

  <sect1 id="firewalls-pf">
    <title>Paket Filter (PF) von OpenBSD und
      <acronym>ALTQ</acronym></title>

    <indexterm>
      <primary>firewall</primary>

      <secondary>PF</secondary>
    </indexterm>

    <para>Im Juli 2003 wurde <acronym>PF</acronym>, die
      Standard-Firewall von OpenBSD, nach &os; portiert und in die
      &os;-Ports-Sammlung aufgenommen.  Die erste &os;-Version,
      die <acronym>PF</acronym> als Teil des Basisssytems enthielt, war
      &os;&nbsp;5.3 im November&nbsp;2004.  Bei <acronym>PF</acronym>
      handelt es sich um eine komplette, vollausgestattete Firewall,
      die optional auch <acronym>ALTQ</acronym> (Alternatives
      Queuing) unterst&uuml;tzt.  <acronym>ALTQ</acronym> bietet Ihnen
      <foreignphrase>Quality of Service</foreignphrase>
      (<acronym>QoS</acronym>)-Bandbreitenformung.  Dadurch k&ouml;nnen
      Sie, basierend auf Filterregeln, unterschiedlichen Diensten eine
      bestimmte Bandbreite garantieren.  Da das OpenBSD-Projekt bereits
      &uuml;ber eine hervorragende Dokumentation verf&uuml;gt, wurde das
      PF-Handbuch nicht in dieses Kapitel aufgenommen.</para>

    <para>PF ist f&uuml;r folgende &os;-Versionen verf&uuml;gbar:</para>

    <informaltable frame="none" pgwide="1">
      <tgroup cols="2">
	<thead>
	  <row>
	    <entry>&os;-Version</entry>

	    <entry>PF-Verf&uuml;gbarkeit</entry>
	  </row>
	</thead>

	<tbody>
	  <row>
	    <entry>Versionen vor 4.X</entry>

	    <entry>F&uuml;r &os;-Versionen vor 4.X ist PF nicht
	      verf&uuml;gbar.</entry>
	  </row>

	  <row>
	    <entry>Alle Versionen des 4.X-Zweiges</entry>

	    <entry>PF ist als Teil von KAME verf&uuml;gbar.</entry>
	  </row>

	  <row>
	    <entry>5.X-Versionen vor 5.3-RELEASE</entry>

	    <entry>F&uuml;r diese &os;-Versionen kann der Port
	      <filename role="package">security/pf</filename>
	      verwendet werden, um PF zu installieren.  Da diese
	      &os;-Versionen aber nur f&uuml;r Entwickler und Personen
	      gedacht waren, die einen Einblick in die fr&uuml;hen
	      5.X-Versionen haben wollten, wird Nutzern dieser
	      Versionen dringend empfohlen, Ihr System auf
	      5.3-RELEASE oder neuer zu aktualisieren.</entry>
	  </row>

	  <row>
	    <entry>5.3-RELEASE und neuer</entry>

	    <entry>Seit 5.3-RELEASE ist PF Teil des Basissystems.
	      Benutzen Sie daher <emphasis>nicht</emphasis> den
	      Port <filename role="package">security/pf</filename>,
	      da dieser unter diesen Versionen nicht funktioniert.
	      Verwenden Sie stattdessen das im Basissystem enthaltene
	      &man.pf.4;.</entry>
	  </row>
	</tbody>
      </tgroup>
    </informaltable>

    <para>Weitere Informationen finden Sie unter
	<ulink url="http://pf4freebsd.love2party.net/"></ulink>.</para>

    <sect2>
      <title>PF aktivieren</title>

      <para>PF ist in Standardinstallationen von &os;&nbsp;5.3 oder
	neuer als eigenes, zur Laufzeit ladbares Kernelmodul enthalten.
	Das System l&auml;dt das PF-Kernelmodul automatisch, wenn die
	Anweisung <literal>pf_enable="YES"</literal> in
	<filename>/etc/rc.conf</filename> enthalten ist.  Das ladbare
	Kernelmodul wurde mit aktivierter &man.pflog.4;-Protokollierung
	erstellt.</para>

      <note>
	<para>Das Kernelmodul geht davon aus, dass die Eintr&auml;ge
	  <literal>options INET</literal> sowie
	  <literal>device bpf</literal> in Ihrer Kernelkonfigurationsdatei
	  vorhanden sind.  Haben Sie <literal>NO_INET6</literal> (seit
	  &os;&nbsp;6.X) oder <literal>NOINET6</literal> (in &os;-Versionen
	  vor 6.X) nicht definiert, ben&ouml;tigen Sie (etwa in
	  &man.make.conf.5;) zus&auml;tzlich die Option
	  <literal>options INET6</literal>.</para>
      </note>

      <para>Nachdem Sie das Kernelmodul geladen oder die
	PF-Unterst&uuml;tzung statisch in Ihren Kernel kompiliert haben,
	k&ouml;nnen Sie <application>pf</application> &uuml;ber den
	Befehl <command>pfctl</command> aktivieren beziehungsweise
	deaktivieren.</para>

      <para>Das folgende Beispiel zeigt, wie Sie
	<application>pf</application> aktivieren:</para>

      <screen>&prompt.root; <userinput>pfctl -e</userinput></screen>

      <para><command>pfctl</command> erm&ouml;glicht es Ihnen, die
	<application>pf</application>-Firewall zu steuern.  Lesen Sie
	&man.pfctl.8;, bevor Sie das Programm einsetzen.</para>
    </sect2>

    <sect2>
      <title>Kernel-Optionen</title>

      <indexterm>
	<primary>kernel options</primary>

	<secondary>device pf</secondary>
      </indexterm>

      <indexterm>
	<primary>kernel options</primary>

	<secondary>device pflog</secondary>
      </indexterm>

      <indexterm>
	<primary>kernel options</primary>

	<secondary>device pfsync</secondary>
      </indexterm>

      <para>Es ist nicht zwingend n&ouml;tig, dass Sie PF durch die
	Angabe der folgenden Optionen in den &os;-Kernel kompilieren.
	Kompilieren Sie die PF-Unterst&uuml;tzung in Ihren Kernel, so
	wird das Kernelmodul <emphasis>nie</emphasis> verwendet werden.
	Die folgenden Angaben dienen daher nur als
	Hintergrundinformationen.</para>

      <para><filename>/usr/src/sys/conf/NOTES</filename> enth&auml;lt
	Beispiele f&uuml;r die Kernelkonfigurationsoptionen von PF:</para>

      <programlisting>device pf
device pflog
device pfsync</programlisting>

      <para><literal>device pf</literal> aktiviert die Unterst&uuml;tzung
	f&uuml;r die <quote>Packet Filter</quote>-Firewall.</para>

      <para><literal>device pflog</literal> aktiviert das optionale
	&man.pflog.4;-Pseudonetzwerkger&auml;t, das zum Protokollieren
	des Datenverkehrs &uuml;ber einen &man.bpf.4;-Deskriptor
	dient.  &man.pflogd.8; ist in der Lage, diese Protokolldateien
	auf Ihre Platte zu speichern.</para>

      <para><literal>device pfsync</literal> aktiviert das optionale
	&man.pfsync.4;-Pseudonetzwerkger&auml;t f&uuml;r die
	&Uuml;berwachung von <quote>Status&auml;nderungen</quote>.
	Da es sich dabei nicht um einen Bestandteil des Kernelmoduls
	handelt, muss diese Option auf jeden Fall in den Kernel kompiliert
	werden, bevor man sie verwenden kann.</para>

      <para>Diese Einstellungen werden erst dann &uuml;bernommen, wenn
	man einen Kernel mit diesen Optionen kompiliert und
	installiert.</para>
    </sect2>

    <sect2>
      <title>Verf&uuml;gbare rc.conf-Optionen</title>

      <para>Um PF beim Systemstart zu aktivieren, ben&ouml;tigen Sie die
	folgenden Eintr&auml;ge in <filename>/etc/rc.conf</filename>:</para>

      <programlisting>pf_enable="YES"                 # PF aktivieren(Modul, wenn n&ouml;tig, aktivieren)
pf_rules="/etc/pf.conf"         # Datei mit Regeldefinitionen f&uuml;r pf
pf_flags=""                     # zus&auml;tzliche Parameter f&uuml;r den Start von pfctl
pflog_enable="YES"              # stare pflogd(8)
pflog_logfile="/var/log/pflog"  # wo soll pflogd die Protokolldatei speichern
pflog_flags=""                  # zus&auml;tzliche Parameter f&uuml;r den Start von pflogd</programlisting>

      <para>Wenn Sie ein lokales Netzwerk hinter dieser Firewall
	betreiben, und Pakete f&uuml;r dessen Rechner weiterleiten oder
	NAT verwenden wollen, ben&ouml;tigen Sie zus&auml;tzlich die
	folgende Option:</para>

      <programlisting>gateway_enable="YES"            # LAN Gateway aktivieren</programlisting>
    </sect2>

    <sect2>
      <title><acronym>ALTQ</acronym> aktivieren</title>

      <para><acronym>ALTQ</acronym> muss vor der Verwendung in den
	&os;-Kernel kompiliert werden.  Beachten Sie, dass
	<acronym>ALTQ</acronym> nicht von allen verf&uuml;gbaren
	Netzwerkkartentreibern unterst&uuml;tzt wird.  Sehen Sie daher
	zuerst in &man.altq.4; nach, ob Ihre Netzwerkkarte diese
	Funktion unter Ihrer &os;-Version unterst&uuml;tzt.  Die
	folgenden Kerneloptionen aktivieren <acronym>ALTQ</acronym>
	sowie alle Zusatzfunktionen:</para>

      <programlisting>options         ALTQ
options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
options         ALTQ_NOPCC      # Wird von SMP ben&ouml;tigt</programlisting>

      <para><literal>options ALTQ</literal> aktiviert das
	<acronym>ALTQ</acronym>-Framework.</para>

      <para><literal>options ALTQ_CBQ</literal> aktiviert das
	<foreignphrase>Class Based Queuing</foreignphrase>
	(<acronym>CBQ</acronym>).  <acronym>CBQ</acronym> erlaubt es, die
	Bandbreite einer Verbindung in verschiedene Klassen oder
	Warteschlangen zu unterteilen, um die Priorit&auml;t von
	Datenpaketen basierend auf Filterregeln zu &auml;ndern.</para>

      <para><literal>options ALTQ_RED</literal> aktiviert
	<foreignphrase>Random Early Detection</foreignphrase>
	(<acronym>RED</acronym>).  <acronym>RED</acronym> wird
	zur Vermeidung einer Netzwerkverstopfung verwendet.  Dazu
	ermittelt <acronym>RED</acronym> die Gr&ouml;&szlig;e der
	Warteschlange und vergleicht diesen Wert mit den minimalen
	und maximalen Grenzwerten der Warteschlange.  Ist die
	Warteschlange gr&ouml;&szlig;er als das erlaubte Maximum,
	werden alle neuen Pakete verworfen.  Getreu seinem Namen
	verwirft <acronym>RED</acronym> Pakete unterschiedlicher
	Verbindungen nach dem Zufallsprinzip.</para>

      <para><literal>options ALTQ_RIO</literal> aktiviert
	<foreignphrase>Random Early Detection In and
	Out</foreignphrase>.</para>

      <para><literal>options ALTQ_HFSC</literal> aktiviert den
	<foreignphrase>Hierarchical Fair Service Curve</foreignphrase>
	-Paketplaner.  Weitere Informationen zu <acronym>HFSC</acronym>
	finden Sie unter <ulink
	url="http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html"></ulink>.</para>

      <para><literal>options ALTQ_PRIQ</literal> aktiviert
	<foreignphrase>Priority Queuing</foreignphrase>
	(<acronym>PRIQ</acronym>).  <acronym>PRIQ</acronym>
	l&auml;sst Verkehr einer Warteschlange mit h&ouml;herer
	Priorit&auml;t zuerst durch.</para>

      <para><literal>options ALTQ_NOPCC</literal> aktiviert die
	<acronym>SMP</acronym> Unterst&uuml;tzung von
	<acronym>ALTQ</acronym>.  Diese Option ist nur auf
	<acronym>SMP</acronym>-System erforderlich.</para>
    </sect2>

    <sect2>
      <title>Filterregeln generieren</title>

      <para>Der Packetfilter liest seine Konfiguration aus der Datei
	&man.pf.conf.5; ein, um entsprechend der dort definierten Regeln
	Pakete durchzulassen oder zu verwerfen.  Die Standardinstallation
	von &os; enth&auml;lt bereits eine beispielhafte Version der
	Datei <filename>/etc/pf.conf</filename> mit einigen hilfreichen
	Beispielen und Erkl&auml;rungen.</para>

      <para>Obwohl &os; eine eigene Version der Datei
	<filename>/etc/pf.conf</filename> enth&auml;lt, wird dennoch die
	gleiche Syntax wie unter OpenBSD verwendet.  Das OpenBSD-Team hat
	eine gro&szlig;artige Dokumentation zur Konfiguration von
	<application>pf</application> geschrieben, die unter
	<ulink url="http://www.openbsd.org/faq/pf/"></ulink>
	erh&auml;ltlich ist.</para>

      <warning>
	<para>Denken Sie beim Lesen des pf-Handbuch daran, dass die
	  verschiedenen &os;-Versionen unterschiedliche Versionen
	  der <application>pf</application>-Firewall einsetzen.  So
	  wird unter &os;&nbsp;5.X noch die OpenBSD-Version&nbsp;3.5
	  der Firewall eingesetzt, w&auml;hrend in den
	  &os;-6.X-Versionen die OpenBSD-Version&nbsp;3.7 zum
	  Einsatz kommt.</para>
      </warning>

      <para>Haben Sie weitere Fragen zur
	<application>pf</application>-Firewall, so
	k&ouml;nnen Sie auf der Mailingliste &a.pf;
	stellen.  Vergessen Sie aber nicht, vorher die Archive der
	Mailinglisten zu durchsuchen, bevor Sie dort eine Frage
	stellen.</para>
     </sect2>
  </sect1>

  <sect1 id="firewalls-ipf">
    <title>Die IPFILTER-Firewall (IPF)</title>

    <para>Dieses Kapitel ist noch nicht &uuml;bersetzt.
      Lesen Sie bitte <ulink
      url="&url.books.handbook.en;/firewalls-ipf.html">
      das Original in englischer Sprache</ulink>.  Wenn Sie helfen
      wollen, dieses Kapitel zu &uuml;bersetzen, senden Sie bitte
      eine E-Mail an die Mailingliste &a.de.translators;.</para>
  </sect1>

  <sect1 id="firewalls-ipfw">
    <title>IPFW</title>

    <para>Dieses Kapitel ist noch nicht &uuml;bersetzt.
      Lesen Sie bitte <ulink
      url="&url.books.handbook.en;/firewalls-ipfw.html">
      das Original in englischer Sprache</ulink>.  Wenn Sie helfen
      wollen, dieses Kapitel zu &uuml;bersetzen, senden Sie bitte
      eine E-Mail an die Mailingliste &a.de.translators;.</para>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->