Status Quo: Neuer Server / IPv6 Services bei UUGRN

February 16, 2013

Hallo zusammen,

die letzten Wochen habe ich den neuen UUGRN Vereinsserver fertig gemacht und weitgehend in Betrieb genommen. Der neue Server löst den Anfang 2006
gekaufen Server top.uugrn.org ab, der bis heute auf einem P4 mit 2GB RAM seinen Dienst verrichtet hat.

Auf dem alten Server war vieles “gewachsen” und wurde daher reichlich unflexibel, der Server läuft bis jetzt noch unter FreeBSD 7.4 (i386).

Der neue Server (top3.uugrn.org) läuft mit dem aktuellen FreeBSD 9.1 (amd64).

Migration Altsysteme

Ich wollte aufgrund der großen Differenzen keine alten Jails 1:1 auf dem neuen Server hochfahren, auch wenn dies vermutlich weitgehend
geklappt hätte. Aus diesem Grund habe ich alle UUGRN-Services und (fast) alle aktiven Mitglieder-Jails auf den neuen Server neu aufgebaut!

Mitglieder, die seit sehr langer Zeit gar nichts mehr mit ihren Jails gemacht haben wurden nicht migriert, die Jails sind aber noch offline vorhanden (Backup) und können auf Wunsch neu aufgebaut werden.

Jail vermisst? Einfach melden!

Neubau statt Migration

Da ich einen stark automatisierten Buildprozess für Packages und Images habe und jetzt außerdem auf ZFS aufsetzen kann, kann ich mit verhältnismäßig wenig Aufwand ein komplettes neues Jail anlegen.

IPv6

Die gesamte Migration bringt auch weitere Neuerungen: Alle Services, die wir über IPv4 anbieten, bieten wir prinzipiell jetzt auch unter IPv6 an. Es könnte irgendwo noch Ausnahmen geben, da wurde es schlichtweg noch nicht reinkonfiguriert.

Das bedeutet aber auch, dass Mitglieder mit Zugang auf shell.uugrn.org oder eigenen Jails nicht nur via IPv6 hinkommen, sondern auch von dort
wieder wegkommen.

Aktuelle Services/Jails

Aktuell haben wir folgende Jails am laufen:

  • shell.uugrn.org (Special: sshd auf port 443/tcp für Proxy-CONNECT)
  • web.uugrn.org (Wiki, Blogs, Planet, …)
  • irc.uugrn.org
  • lists.uugrn.org (Mailman und Web-Archive)
  • mail.uugrn.org (interner MTA, Mailrouting, Virtuser, outgoing-MX, …)
  • news.uugrn.org (demnächst, läuft noch auf dem alten Jail)
  • xmpp.uugrn.org (noch nicht in Betrieb)
  • mysql.uugrn.org
  • uugrn.uugrn.org (Vereinswebseite, Vorstand, Mitgliederverwaltung)
  • bnc.uugrn.org (IRC-Bouncer, User können eigene v6-Adressen bekommen, mit rDNS!)
  • ftp.uugrn.org (v4+v6, ftp, http, https)
  • fbsd9.uugrn.org (Buildsystem)
  • qa.uugrn.org (Qualitätssicherung, Testumgebung)
  • diverse Mitglieder-Jails.

Verluste

Bei der Migration der Dienste wurden manche Dinge nicht mit übernommen, beispielsweise ist der Webserver auf shell.uugrn.org ersatzlos entfallen mangels erkennbarer aktiver Nutzung. Sollte jemand einen Webserver benötigen richtige ich gerne ein eigenes Jail dafür ein.

Neue Jails

Es existieren folgende fertige Images, aus denen sich ad-hoc neue Jails anlegen lassen:

  • virgin: das enthält nur und ausschließlich das Ergebnis von “make installworld distribution” und ist so nicht nutzbar.
  • tiny: virgin plus zahlreiche Einstellungen, die ein Jails benutzbar machen, keine Packages!
  • small: tiny + bash coreutils sudo gsed findutils nano screen portupgrade pkg_cutleaves portaudit
  • medium: small + vim-lite emacs mc gnupg mutt slrn tin irssi lynx w3m wget rsync procmail figlet fetchmail”
  • large: medium + links rar unrar zip zsh gawk ksh93 pwgen unix2dos muh climm graphviz ImageMagick dovecot apache22 php5 php5-extensions
  • webstatic: tiny + apache22
  • webphp: webstatic + php5 php5-extensions ImageMagick

Das ist jeweils die Basis für ein neues Jail. Ein einmal installiertes Jail kann natuerlich per Packages oder durchselbst kompilieren von Ports (make install clean) beliebig verändert oder erweitert werden.

Mailrouting

Ich habe das Mailrouting (IMHO) vereinfacht und gewachsene Altlasten entsorgt. Da gab es teilweise arg verworrene, sich widersprechende Konfigurationen verteilt über mail/mx1, shell, verein und lists. Mailadressen wurden teilweise mit alias UND per virtusertable auf verschiedene Ziele konfiguriert etc.

Das “vereinfachte” Mailkonzept sieht so aus:

  • Incoming Mails via mx1 und mail (mx2 wird es bald auch einen geben), mailrouting anhand von Domains in die jeweiligen Jails (mailertable)
  • Outgoing-Mails einheitlich via mail.uugrn.org
  • @uugrn.org: Mails @uugrn.org werden nur via mx1.uugrn.org eingeliefert und gespamfiltert und weitergeleitet auf mail.uugrn.org und werden dort ausschließlich(!) per virtusertable weiter verteilt. Unbekannte Adressen @uugrn.org haben einen catch-all auf “error:5.7.0:550 Address invalid” umgeleitet.
  • Für Mitglieder bestehen idR Weiterleitungen auf externe Mailadressen oder auf user_at_shell.uugrn.org oder user_at_user.uugrn.org. Wer das nutzt, sollte prüfen, dass es jetzt noch tut.
  • @uugrn.de: Unter dieser Domain haben wir nur die allerwichtigsten Roleaccounts als Alias für die jeweiligen .org eingerichtet.
  • Mailinglisten (Listenadresse und alle Request-Adressen) grundsätzlich über @mailman.uugrn.org erreichbar, im Falle von UUGRN-eigenen Mailinglisten existieren passende Virtuser-Weiterleitungen in der Form listename@uugrn.org listename@mailman.uugrn.org
  • Mitglieder-Domains werden per Mailrouting direkt in die jeweiligen Mitglieder-Jails geroutet, der dortige MTA (sendmail) muss entsprechend Mails annehmen können.

DNS / Eigene Domains

Jedes Mitglied kann im eigenen Jail eigene Domains hosten. Entsprechendes Mailrouting gibts dann gratis dazu.

UUGRN hostet seine Domains (und diverse rDNS) im Vereinsjail “uugrn.uugrn.org” als Hidden Primary. Öffentliche DNS sind ns{1,2,3}.jpru.de, weitere (inoffizielle) slaves sind u.a. auf top3.uugrn.org, welcher auch gleichzeitig der primäre recursor für alle Jails ist, d.h. Änderungen an der Zone werden auf dem Server sofort
wirksam (also-notify) und sehr zeitnah auch an die öffentlichen DNS-Server notifiziert, Vorausgesetzt man hat die serial erhöht und die zone reloaded.

IRC/BNC/DNS/IPv6

Wer eine eigene Domain hat und damit ins IRC möchte, kann auf bnc.uugrn.org einen User und eine *persönliche* IPv6-Adresse mit rDNS auf einen Namen aus der eigenen Domain bekommen, also zB nickname!user_at_foo.example.com

Wer BNC will aber keine Domain hat, kann wahlweise mit nick!user_at_bnc.uugrn.org (v4+v6) oder nick!user_at_wunschname.uugrn.org (nur v6) auf einen oder mehrere IRC-Server eigener Wahl zugreifen und dazu die Vorteile eines BNC (wir bieten znc mit SSL) insgesamt nutzen.

Was fehlt?

  • VIMAGE: Jails können innerhalb eines vollkommen autonomen IP-Stacks betrieben werden, d.h. eigenes IP-Setup, Routing, Firewalling, …
  • ping ist weiterhin nicht möglich, sorry (raw sockets).
  • XMPP ist vorbereitet, tut aber noch nicht. Hilfe gesucht.
  • shared memory gibts auch noch nicht, AFAIK sind shared memory segmente (immernoch) nicht “jailbar” und stellen daher eine Sicherheitslücke zwischen den Jails dar. Möglicherweise kann ich Shared memory “per jail” erlauben und auf diese Weise ein dediziertes PostgreSQL betreiben. Es gibt da so Ansätze, mir fehlt die Zeit und die Motivation.
  • Eigene DNS-Server: Domains laufen bei uns idR via TWX/Jürgen Unger und somit über seine Server. Die Zonen können bei uns lokal editiert werden. Komplett eigene DNS würden uns unabhängiger/flexibler machen, birgt aber auch ein erhöhtes Ausfallrisiko und ggf. Kosten (verteilt aufgestellte Systeme). Ich kann mit dem aktuellen Stand gut leben.
  • mx2.uugrn.org … irgendwo ganz weit extern als Fallback für einen Totalausfall (Server, Netze, Standort). Wer könnte uns was mit sendmail hosten? FreeBSD oder debian willkommen, eigene root-Rechte erforderlich.
  • jailed-ZFS: Eigene Volumes im Jail managen, zB Snapshots, Rollback, … Müsste Out-of-the-Box funktionieren, ich hab nur noch nicht die richtigen Stellschrauben gefunden, um das (gefahrlos) für alle root@mitgliederjails zu aktivieren.
  • debian-kfreebsd Image: Ich habe irgendein altes RC von wheezy schon vorbereitet, aber da muss *nur* noch Finetuning passieren, damit die debian-Jails auch ordentlich funktionieren. Bootstrappen von debian/kfreebsd aus FreeBSD ist PITA, d.h. es funktioniert *etwas*. Der alternative Ansatz ist, ein zB in VirtualBox installiertes wheezy verwenden als Staging für den Bau der eigentlichen Images mittels debootstrap.
    Da ich das Ganze in meiner Freizeit baue, hatte ich bisher einfach keine Lust das Thema voranzutreiben. Wer gerne selbst ein Debian statt FreeBSD-Jail haben möchte, sollte sich einfach bei mir melden (zwecks Motivation) und außerdem suche ich noch Probanden, also experimentierfreudige Debian-Gurus, die das von mir gebaute auseinandernehmen oder reparieren und (nichtreligiöse) konstruktive Kritik anbringen können.
    Wenn sich jemand von euch die Zeit nimmt, nehme ich sie mir auch, das Thema “debian-Jail” habe ich schon seit sehr vielen Jahren auf dem Radar und hab es mangels Durchhaltevermögen und Motivation nie wirklich umgesetzt.
  • Menschen mit KnowHow, Engagement und Zeit, also Du!

Fragen? Anregungen?

Viele Grüße
Raphael


Updates in diversen Jails

March 13, 2010

Nachdem portaudit mal wieder ne Weile gemeckert hat, dass sudo unsicher sei habe ich heute die meisten Infrastruktur- und Projekt-Jails mit Hilfe von vorkompilierten Packages auf den aktuellen Stand gehoben.

Mit dabei waren:

Die Vorgehensweise für Jails, die überwiegend aus Packages gebaut sind ist straight-forward:
# portaudit
# portsdb -Fu
# portversion -FvL=
# portupgrade -aPP

Ich empfehle allen Jail-Inhabern diese Prozedur regelmäßig auszuführen. Wer lieber selbst kompiliert wird wissen wie das geht und es dann sicher auch selbst können.

ggf. Probleme mit Apache 2.2 und openssl

Zwischenzeitlich hatte ich ein Apache 2.2 Package gebaut, welches gegen ein älteres openssl in den Ports gelinkt ist (mod_ssl oder so). OpenSSL wurde upgedatet und hat dabei scheinbar irgendwelche internen Funktionen umbenannt, jedenfalls meckert diese spezielle Package-Version von Apache rum wegen mod_ssl. Hier hilft

# portupgrade -fPP www/apache22

… das reinstalliert den Apache 2.2 mit dem aktuellen Package, auch wenn die Versionsnummer ein Update nicht erforderlich machen würde.

Hintergrundinfo: freebsd.forum41.uugrn.org

Die Packages werden auf freebsd.forum41.uugrn.org gebaut. Dieses Jail läuft auf charm.uugrn.org und managt alle FreeBSD-Angelegenheiten, ist u.a. auch ein cvsup-Mirror, der 4x am Tag aktualisiert wird. Weiterhin läuft hier auch ein Distfile-Mirror, der basierend auf den tagesaktuellen Ports alle fehlenden Distfiles versucht zu fetchen und nicht mehr benötigte distfiles wieder verwirft. Auf diese Weise haben wir im Forum41 einen ständig aktuellen distfile-Mirror für FreeBSD (ca. 56GB), der per vom Forum41 aus per ftp, http, rsync und cifs angesprochen werden kann.

Have Fun!
Raphael


E-Mail Aliases und Weiterleitungen für Mitglieder

October 25, 2009

Seit ein paar Tagen gibt es einen automatischen und systematischen Export der Mitgliedertabelle hin zum Mailserver. Ziel ist es, dass jedes aktive Mitglied via @uugrn.org und .@uugrn.org erreichbar ist, was beispielsweise für die Benutzung aller Dienste wichtig ist, die nur mit “internen” Mailadressen genutzt werden können, etwa blogs.uugrn.org.

Technisch umgesetzt ist diese Weiterleitung mit sendmail/virtusertable, die automatisch – täglich per cron oder bei Bedarf auch manuell durch einen Vorstand getriggert – exportiert wird. Als Alternative dazu ist die Weiterleitung in ein UUGRN-Postfach, das per pop3s / imaps gepollt werden kann angedacht.

Unterm Strich entspricht das der bisherigen manuell gepflegten Lösung über sendmail-Aliases, wie sie seit den Anfangszeiten von UUGRN e.V. auf dem Shell/Vereinsserver üblich war. Wer keine derartige Weiterleitung möchte kann – wie bisher auch – das von einem Admin so eintragen lassen.

Have fun!
Raphael