wiki:techsheets:paedml6-einstieg

Arbeitspapier zum Einstieg in paedML 6/Ubuntu-Server/IPFire

Stand 14.01.2012

IPFire

  • Aktuelles Core55-ISO von  http://www.ipfire.org/downloads herunterladen.
  • Installation nach Anleitung:  http://www.ipfire.org/support
  • Adress-Einstellungen bei der Installation analog zu  paedML-IPCop-Installation.
  • Auf Webinterface einloggen:  https://10.16.1.254:444.
  • Zeitserver/Uhrzeit einstellen:
    • dienste | Zeitserver:
      • Schaltfläche: Stelle jetzt die Uhrzeit betätigen.
  • SSH-Zugriff aktivieren:
    • system | SSH-Zugriff: Häkchen setzen bei
      • SSH-Zugriff
      • Passwortbasierte Authentifizierung zulassen
      • Authentifizierung auf Basis öffentlicher Schlüssel zulassen
  • Transparenter Proxy:
    • netzwerk | Webproxy anklicken:
      • Aktiviert auf Green
      • Transparent auf Green
  • paedML-IPFire-Addon:
    • Skripte für Internetsperre etc. auf IPFire direkt ablegen und vom Server aus aufrufen. Spart einmal Dateidownload.

Ubuntu Server

  •  64Bit-Version verwenden.
  • Die Server-Variante gibt es nur mit  klassischem textbasiertem Installer (Alternate Installation).
  • Netzwerk-Adresse für internes Interface paedML konform einrichten, damit Internetverbindung über IPFire möglich.
  • Als DNS (vorläufig) & Gateway Firewall-IP verwenden
  • Partitionierungsvorschlag (42GB VDI)
    • root 5GB ext4
    • swap 2GB
    • home 5GB ext4 usrquota,grpquota
    • var 30GB ext4 usrquota,grpquota
  • paedML-Quellendatei /etc/apt/sources.list.d/paedml60.list mit folgendem Inhalt erstellen:
    deb http://pkg.lml.support-netz.de/paedml60-testing ./
    deb-src http://pkg.lml.support-netz.de/paedml60-testing ./
    
  • paedML-Releasekey installieren:
    # wget http://pkg.lml.support-netz.de/paedml-release.asc -O - | apt-key add -
    
  • Quellenlisten aktualisieren und linuxmuster-base installieren:
    # aptitude update
    # aptitude install linuxmuster-base
    
  • paedML einrichten:
    # linuxmuster-setup --first
    
  • SSH-Link zu IPFire einrichten:
    # ssh -p 222 10.16.1.254
    # mkdir .ssh
    # exit
    # scp -P 222 ~/.ssh/id_dsa.pub 10.16.1.254:/root/.ssh/authorized_key
    
  • Stand:
    • sophomorix, nagios und sind nicht installiert.
    • Adminbenutzer adminstrator, pgmadmin, wwwadmin und linbo werden angelegt.
    • Zusätzliche Benutzer können mit smbldap-tools angelegt werden.
    • Schulkonsole zeigt "Internal Server Error".
    • DHCP-, DNS, LINBO, Apache, Postgresql, Mysql, LDAP laufen.
    • import_workstations geht wg. fehlendem sophomorix noch nicht.

Upstart (1)

Prinzip

  • Ersetzt künftig den auf  Runleveln basierten  SysVinit-Bootprozess.
  • Reine Ubuntu-Entwicklung (andere Distris ersetzen  SysVinit durch  systemd).
  • Vollständig abwärtskompatibel zu  SysVinit.
  • Im Moment Mischbetrieb, da noch nicht alle Dienste (z.B. postfix) umgestellt sind.
  • Neuer Ansatz: Dienste werden ereignisorientiert und nicht mehr nacheinander gestartet.
  • Dienste, die nicht von einander abhängig sind, können parallel gestartet werden.
  • Dadurch kann der Bootprozess beschleunigt werden.
  • Upstart soll in der Zukunft nicht nur den Bootprozess steuern sondern zum zentralen Verwaltungsinstrument von allen Systemereignissen werden.

Start-/Stop-Mechanismen

  • Die Datei  /etc/inittab entfällt.
  • Zur Steuerung von Diensten werden sog. Init-Jobs definiert, deren Skripte unter /etc/init mit der Erweiterung .conf abgelegt werden.
  • Die Skripte werden beim Bootprozess automatisch alle abgearbeitet.
  • Im Skript werden die Bedingungen für den Start eines bestimmten Dienstes festgelegt.
  • Zentrales Werkzeug zur Steuerung von Diensten ist initcl.
  • Der Befehl
    # initctl list
    
    gibt eine Liste aller Init-Jobs und ihres Status aus. (2)
  • Das Starten und Beenden von Diensten (Init-Jobs) kann ebenfalls über initctl erfolgen:
    # initctl [start|stop] <init-job>
    
    Alternativ kann auch
    # [start|stop] <init-job>
    
    oder
    # service <init-job> [start|stop]
    
    verwendet werden.
  • Die Runlevel, in denen ein bestimmter Dienst gestartet werden soll, definiert man in der Zeile
    start on runlevel [2345]
    
    der jeweiligen conf-Datei.
  • In welchen Runleveln der Dienst gestoppt werden soll, wird in der Zeile
    stop on runlevel [!2345]
    
    festgelegt. Das Ausrufungszeichen in obigem Beispiel negiert die folgenden Argumente, d.h. der Dienst wird in allen Runleveln außer 2345 beendet.
  • Beim Beenden eines Init-Jobs sendet Upstart ihm das Terminate-Signal (SIGTERM) und erwartet, dass er sich selbst beendet. Geschieht das nicht, wird er nach einigen Sekunden per Kill-Signal (SIGKILL) auf die harte Tour entsorgt.

Konfiguration

  • Beispiel: Die Datei /etc/init/smbd.conf steuert das Start-/Stop-Verhalten des Samba-Dienstes:
    description "SMB/CIFS File Server"
    author      "Steve Langasek <steve.langasek@ubuntu.com>"
    
    start on (local-filesystems and net-device-up)
    stop on runlevel [!2345]
    
    respawn
    
    pre-start script
         RUN_MODE="daemons"
    
         [ -r /etc/default/samba ] && . /etc/default/samba
    
         [ "$RUN_MODE" = inetd ] && { stop; exit 0; }
    
         install -o root -g root -m 755 -d /var/run/samba
    end script
    
    exec smbd -F
    
  • Das Schlüsselwort start on legt die Ereignisse fest, die für den Start des Init-Jobs vorausgesetzt werden. Im Beispiel müssen also für den Start des Samba-Dienstes die lokalen Dateisysteme und das Netzwerk zur Verfügung stehen.
  • stop on definiert, wann der Dienst heruntergefahren wird (s.o.).
  • Das Schlüsselwort respawn veranlasst Upstart den Prozess immer wieder neu zu starten, wenn er sich beendet.
  • Zwischen pre-start script und end script kann man ein Shellskript einfügen, das abgearbeitet wird bevor der eigentliche Dienst gestartet wird.
  • Analog dazu gibt es die Möglichkeit mit post-start script ein Shellskript zu definieren, das parallel zum Start des Dienstes ausgeführt wird.
  • Schließlich sorgt die Anweisung exec für den - von Upstart überwachten - Start des Dienstes.
  • Geänderte Konfigurationsdateien werden erst bei einem Neustart von Upstart eingelesen. Mit dem Befehl
    # initctl reload-configuration
    
    kann das Neueinlesen im laufenden System veranlasst werden.

Zu klären/ToDo

  • Künftig Zeit, DNS & DHCP der Firewall verwenden?
  • Default-Firewalleinstellungen: Was ist erlaubt von GRÜN nach ROT?
  • Internetsperre über CLE?
  • Sicherheitsaktualisierungen automatisch installieren?
  • sophomporix:
    • Abhängigkeit von perl-suid ist obsolet.
    • wird odbc-postgresql noch benötigt?

(1) Links zu Upstart

(2) Ausgabe von initcl list auf minimalem Ubuntu-Server-System:

root@server:~# initctl list
mountall-net stop/waiting
rc stop/waiting
rsyslog start/running, process 534
screen-cleanup stop/waiting
tty4 start/running, process 618
udev start/running, process 260
upstart-udev-bridge start/running, process 252
ureadahead-other stop/waiting
nmbd start/running, process 2475
apport stop/waiting
console-setup stop/waiting
hwclock-save stop/waiting
irqbalance stop/waiting
plymouth-log stop/waiting
tty5 start/running, process 623
smbd start/running, process 2448
failsafe stop/waiting
atd start/running, process 639
dbus start/running, process 545
mounted-var stop/waiting
plymouth stop/waiting
ssh start/running, process 515
udev-fallback-graphics stop/waiting
control-alt-delete stop/waiting
hwclock stop/waiting
mounted-proc stop/waiting
module-init-tools stop/waiting
setvtrgb stop/waiting
cron start/running, process 640
mountall stop/waiting
mounted-debugfs stop/waiting
mounted-run stop/waiting
plymouth-stop stop/waiting
rcS stop/waiting
ufw start/running
wait-for-state stop/waiting
friendly-recovery stop/waiting
rc-sysinit stop/waiting
upstart-socket-bridge start/running, process 421
tty2 start/running, process 630
udevtrigger stop/waiting
mounted-dev stop/waiting
tty3 start/running, process 631
udev-finish stop/waiting
hostname stop/waiting
mountall-reboot stop/waiting
mountall-shell stop/waiting
mounted-tmp stop/waiting
network-interface (lo) start/running
network-interface (eth0) start/running
plymouth-splash stop/waiting
plymouth-upstart-bridge stop/waiting
tty1 start/running, process 757
udevmonitor stop/waiting
dmesg stop/waiting
network-interface-security (network-interface/eth0) start/running
network-interface-security (network-interface/lo) start/running
network-interface-security (networking) start/running
networking stop/waiting
procps stop/waiting
tty6 start/running, process 634
ureadahead stop/waiting