| Wichtig |
Irgendwo, in einer parallelen Realität,
wurde diese Seite fertiggestellt und auf den aktuellen Stand
gebracht. Leider versuchst
du aber gerade, sie vom falschen Universum aus aufzurufen. Deshalb siehst du hier einen unvollständigen und nicht gut geprüften Text — bitte genieße ihn deshalb mit Vorsicht. |
| Im Klartext: die Texte in dieser Datei sind nicht auf einem aktuellen Stand - sie können also, zumindest für unser Netz, nur als Hinweis dienen, wo man tiefer graben sollte... |
Apache/PHP brauchen unbedingt die pakete x-libs (x), expat und sablot (beide sgml). Ansonsten verwenden wir die Standardkonfiguration, die um einige virtuelle Server ergänzt wurde.
Der Standard-Unix-Druckdienst ist bei uns eingerichtet, die Konfiguationsdatei printcap enthält folgende Drucker:
| lpbuero (lp) | Büro-Drucker (PS-fähig) (zugangsbeschränkt auf Gruppe lpbuero) |
| lpicaf1 | Internetcafé-Drucker |
| lpicaf2 | Internetcafé-Drucker mit autoaccept (siehe Internetcafe)(zugangsbeschränkt auf Gruppe lpbuero) |
| fax | Büro-Drucker-Alias mit Zugriffsrechten für Gruppe uucp |
Der Druckmechanismus des Internetcafé ist im Kapitel Dienste ausführlich beschrieben
Installiert ist der Fax-Server Hylafax sowie ein Mail-to-Fax-Gateway.Wichtig ist , dass unser Dr. Neuhaus Smarty-Faxmodem nur mit einem speziellen Treiber unterstützt wird. Ferner verwenden wir ein modifiziertes Empfangs-Script, dass die Faxe auf den Postscript-Drucker ausgibt, anstelle sie auf dem Server zu archivieren.
Syslog ist einer der Dienste, bei denen wir aus der Reihe tanzen und nicht das Standard-Programm verwenden. Wir verwenden stattdessen syslog-ng, ein erweitertes Paket, dass vor allem deutlich bessere Filter-Funktionen bietet.
Das Programm ist so konfiguriert, dass es im Extern-Netz (DMZ) sowie im Büro-Netz (primär-Interface) auf Nachrichten hört und diese unter /var/log in einem Unterverzeichnis mit dem Rechnernamen und einer Datei für den Dienst ablegt. Folgende Dateien verwenden wir zur Zeit:
| Mail-Dienste (postfix, amavis, fetchmail) | |
| bind | DNS-Server |
| proxy | Proxy-Dienste (teils Squid, Proxy-Suite, Delegated) |
| dhcp | DHCP-Server |
| rpc | RPC, NFS etc. |
| cron | Cron-Meldungen |
| fax | HylaFax |
| printer | Druckerangelegenheiten |
| kernel | Kernel-Meldungen |
| packetfilter | Paketfilter-Logs |
| ssh | SSH-Server |
| dsl | DSL-Daten |
| isdn | ISDN-Infos |
| samba | SMB-Server (Windows-Netz-Server) |
| rinetd | Verbindungsweiterleitung (für SSH-Externzugriff) |
| incoming_calls | Eingehende Telefonanrufe auf der ISDN-Karte |
| sonstiges | Alles, was nicht in die anderen Dateien past. |
Daneben haben wir noch Unterverzeichnisse für Dienste, die kein Syslog verwenden, angelegt. Hierbei sind "Monsterdienste" wie Apache oder Squid in eigenen Unterverzeichnissen untergebracht, Programme, die nur eine Datei beanspruchen, hingegen unter "services". Alle Logs werden auch auf Console 10 ausgegeben, was keinem Rechner zugeordnet werden kann, wird in der Datei /var/log/messages abgelegt. Diese gesamellten Einstellungen werden in der Datei /etc/syslog-ng/syslog-ng.conf abgelegt.
Besonderes Feature ist noch, dass immer, wenn eine bestimmte Meldung durch das DSL erzeugt wird, der DNS-Server reloaded wird. Damit kann, jedesmal, wenn die Internetverbindung neu aufgebaut wird, dafür gesorgt werden, dass die Daten über die Root-Server aktualisiert werden, um eventuelle Probleme durch die Flatrate-Zwangstrennung zu verhindern. In der Konfigurationsdatei wird dies durch folgende Zeilen erreicht:
| Code |
001 destination bind_reload { 002 program ("/usr/local/scripts/bindreload.pl"); 003 }; 004 005 filter dsl_bind_reload { 006 program ("^ppp") and match ("Local IP address changed"); 007 }; 008 009 log { 010 source (gateway); 011 filter (dsl_bind_reload); 012 destination (bind_reload); 013 }; 014 |
Die entsprechende, eine Zeile lange, Meldung wird an ein Programm weitergegeben, dass vom Standard-Input jeweils eine Zeile liest und danach den Server neu Startet. Es handelt sich hierbei um ein kleines, in Perl geschriebenes, Script.
Für die Dienste, die in chroot-Umgebungen laufen, ist es nötig weitere log-Sockets einzurichten, so dass unsere localhost-Quelle folgendermaßen aussieht:
| Code |
001 002 source localhost { 003 # internal syslog messages 004 internal (); 005 # usual path for messages from local processes 006 unix-stream("/dev/log"); 007 # messages from localhost 008 udp(ip(127.0.0.1) port (514)); 009 # Kernel messages 010 file ("/proc/kmsg"); 011 }; 012 |
Um nicht neben Syslog noch das Programm klogd laufen lassen zu müssen, lassen wir syslog die entsprechenden Daten aus der Datei /proc/kmsg auslesen. Hierzu muss nur bei der Quellendefinition in der Konfigurationsdatei eine Zeile eingefügt werden:
| Code |
001 002 source localhost { 003 ... 004 # Kernel messages 005 file ("/proc/kmsg"); 006 }; 007 |
Das nicht mehr verwendete klogd-Paket haben wir vom System eliminiert — da jedoch die Paketverwaltung über Konflikte meckert, haben wir ein Dummy-Paket erstellt, das vorgibt, klogd zu enthalten.
Etliche Megabytes kommen zusammen, wenn die Logdateien nicht regelmäßig geleert werden. Wir verschieben wöchentlich die alten Dateien in ein Unterverzeichis old, in sie durchschnittlich noch 12 Wochen überdauern. Diese stupide Aufgabe wird automatisch über das Programm logrotate erledigt. Dieses wird über eine Konfigurationsdatei gesteuert und täglich per cron aufgerufen.
Der Mailserver "postfix", der auf unserem Server läft, schickt alle ausgehenden Mails per SMTP direkt an die Zielserver. Bei der Einrichtung haben wir die Standard-Verzeichnisse gewählt, wie sie auch im Kapitel Dienste beschrieben sind. Die Installation von Postfix wird dort auch beschrieben, so dass hier nur ein kurzer Ausblick auf unsere Konfiguration gegeben wird. Die transport-agents aus der Datei master.cf, die wir nicht brauchen, haben wir auskommentiert: uucp, cyrus, ifmail, bstmp.
Die Konfigurationsdateien sind komplett neu erstellt.
Die Aliases haben wir auf drei Dateien geteilt, um unseren User-Verwaltungs-Scripten die Arbeit zu erleichtern. Die system-nahen aliases, die von den Scripten nicht bearbeitet werden sollen, liegen in /etc/aliases.system, die von den Scripten erstellten in /etc/aliases.users. Die System-Aliases müssen einmal eingerichtet werden. Wir haben hierbei alle Aliases auf root versammelt und dann root auf die Admins verteilt. Die dritte Datei enthält die Adressen der Mailinglistenverwaltung und der Mailinglisten.
Zum Empfangen der Mails direkt über unseren Server wäre eine Standleitung nötig. Da wir diese nicht haben, wurden Alternativen gesucht. UUCP fiel aus, da unser Provider es nicht anbietet. Insofern musste der umständliche Weg über mehrere POP-Postfächer gewählt werden. Diese werden über das Programm fetchmail abgeholt. Neben der rc-Datei (wir verwenden hierfür die Debian-Originaldatei), die es beim Systemstart startet, benötigt fetchmail noch eine Konfigurationsdatei. Diese wird komplett durch die Benutzerverwaltung erstellt.
Der Mailserver prüft alle Mails über den Virenscanner amavis. In AMaViS haben wir noch über ein Patch einen MIME-Typencheck integriert. Die Meldungen wurden auch über Patches verändert und es wurde ein Patch integriert, dass einen Received-Header unter Postfix einfügt. Konfiguriert wird der Scanner über die zentrale Datei /etc/mail/amavisd.conf, da wir den Quellcode entsprechend geändert haben (einfach nach /etc/amavisd.conf suchen und den Wert ändern).
Das Mirroring hat serverseitig kaum Anforderungen. Es braucht nur die NFS-Freigabe des Verzeichnisses /mirror, da von dort das Client-System gebootet wird und die Archive dort erstellt werden. Die Konfiguration erfolgt am Server durch das Bearbeiten der Dateien unter /mirror/etc, das aber normalerweise über die Weboberfläche geschehen sollte. Die Struktur ist im Kapitel Dienste ausführlich beschrieben.
Als NFS-Server dient der übliche User-Space-Dämon. Wir hatten immer wieder Probleme, dass sätlicher (!) Zugriff immer wieder verweigert wurde. Der User-Space-Daemon lässt sich feiner einstellen (z.B. Listen-Port, Protokoll), deshalb verwenden wir diese Version. Im Widerspruch zu der man-Page hat wurden die Zugriffe von den Ports, die die Clients nutzen, erst erlaubt, als wir "secure" als Parameter für jede Freigabe angegeben haben. Desweiteren hatten wir Probleme, mehrere Clients pro Zeile anzugeben, so dass wir für jede Angabe eine eigene Zeile verwendet haben
Wie schon beim Paketfilter beschrieben, gibt es eine Nezt-Policy, bei der quasi sämtlicher Traffic über Proxys geleitet wird (SAFE). Neben Squid haben wir noch einen Proxy für FTP und einen Proxy für POP3 in Betrieb. SMTP kann über unseren Mailserver verwendet werden. Proxys in chroot-Umgebungen erfordern noch, dass dem Syslog-Daemon angegeben wird, dass im dev-Unterverzeichnis des cages ein log-Socket angelegt wird.
Für POP3 kommt delegate zum Einsatz, der auf Port 112 gebunden ist und über eine DNAT-Regel angsprochen wird, die sämtlichen Traffic, der als Zielport 110 hat, auf diesen Proxy leitet. Dieser delegate läuft in einem Chroot-Cage, dass neben den Daten, die delegate beim Kompilieren in seinem Home-Verzeichnis ablegt, noch einige Libraries enthalten muss. Die Einstellungen des Programms werden im Init-Script über die Kommandozeile übergeben.
Der Proxy für FTP kommt aus der SuSE Proxy Suite und arbeitet in Verbindung mit einer DNAT-Regel für Port 21 für die Clients völlig transparent. Hierzu sind noch einige Einstellungen in der Konfigurationsdatei nötig. Auch der FTP-Proxy läuft in einer chroot-Umgebung, in die über den Standard-Befehl chroot gewechselt wird (nicht über die Angabe in Konfigurationsdatei). Das Verzeichnis wird also im Start-Shutdown-Script angegeben
Wir verwenden zwei verschiedene Konfigurationen für unsere selbstkompilierte SSH. Eine Konfiguration dient für die erste Instanz des Daemons, die die internen Netze versorgt. Hier können sich alle normalen Benutzer mit Protokoll Version 2 anmelden. Die zweite Konfiguration, die wir für den Prozess, der das externe Interface versorgt, verwenden, ist etwas restriktiver: hier können sich nur Benutzer der Gruppe admin anmelden
Der Internetzugang für die Clients wird zum Teil über IP Masquerading ermöglicht. Wenngleich dies auch das Gateway komplett übernehmen könnte, macht auch der Server erde NAT, da dadurch auch bei einem Eindringen ins Gateway das lokale Netz verborgen bleibt. Die Dienste, die der Server hierbei durchlässt, sind bei der Firewall-Konzeption genannt. Desweiteren ist ein Proxy installiert, der einerseits den Download der Internet-Files beschleunigen kann und andererseits über einen redirector die Möglichkeit bietet, den Verkehr zu filtern und so den Zugriff auf Hardcore-Seiten etc. zu sperren. Wir verwenden Squid in Kombination mit SquidGuard als Redirector. Die Blacklists für Squidguards setzen sich aus den vorgeschlagenen und einer eigenen über die Sperrseitenverwaltung erstellten zusammen.
Nachdem die Software früher immer mit Pointer-Fehlern abgestürzt ist, hat APC endlich ein Programm herausgebracht, das startet. Wenn die Batterie der USV zur Neige geht, wird der Server automatisch heruntergefahren. Ist das Stromnetz wieder funktionfähig, werden die Rechner automatisch wieder hochgefahren
Eine einfache Alternative zur Konsolen-Administration ist die Konfiguration über einen Browser. Wir verwenden hierzu Webmin, das auf Port 1999 hört. Webmin muss in das Verzeichnis entpackt werden, in dem es später residieren soll. Dort ruft man dann das setup-Programm auf und macht die Grundeinstellung. Bei uns liegt Webmin im Verzeichnis /usr/local/webmin - die Einstellungen waren folgende:
| Code |
001 002 config file dir = /usr/local/etc/webmin 003 log file dir = /var/log/erde/webmin 004 port = 1999 005 ssl = y 006 start at boot time = y 007 |
Wir haben neben den Standardmodulen noch das Modul IMonC sowie ein Modul für die Netzbedienung (für jedes Netz eine Kopie) installiert. Unter Dienste findet sich eine Beschreibung, wie das Netzmodul konfiguriert wird.
XInetD (POP3, Zeitsyncronisation)Wir verwenden nicht das Standard-Programm inetd, sondern xinetd, da dieser sehr viel mehr Konfigurationsmöglichkeiten bietet. Insbesondere war wichtig, dass man ihn ein oder mehrere bestimmte Interfaces binden kann.
FirewallDie Paketfilter-Beschreibung findet ihr hier
Wir verwenden ein selbstgeschriebenes Script, dass die Benutzer erstellt, aktualisiert sowie löscht. Es kümmert sich um Unix-Benutzer, Webmin, Samba sowie die Mail-Aliases und -Verteiler. Eine kurze Anleitung findet sich unter dem Link oben.
Sonstiges...Nach der Installation des Grundsystems und dem Aufräumen der Verzeichnisse sind noch einige kleine Anpassungen notwendig.