Server/Hauptsystem

Aus KSS
Wechseln zu: Navigation, Suche

Der Artikel Server/Hauptsystem dient zur Dokumentation des hauptsächlichen Systems des Servers (unserer KSS).

Die <eingegrenzten Bereiche> sind Inhalte, die variabel sind oder hier nicht angegeben werden können.

Inhaltsverzeichnis

Software[Bearbeiten]

FreeBSD

Installation[Bearbeiten]

PT orientierte sich ergänzend an der "Anleitung" FreeBSD 9 mit Root on ZFS.

Installation des Betriebssystems[Bearbeiten]

Starten mit dem Startmedium[Bearbeiten]

  • mit Speicherabbild für den USB-Stick

Einrichtung der Festplatten zur Installation des Betriebssystems[Bearbeiten]

Festplatten einrichten

gpart create -s gpt /dev/ada0
gpart create -s gpt /dev/ada1
gpart create -s gpt /dev/ada2

Partitionierung der Festplatten zur Installation des Betriebssystems[Bearbeiten]

Festplatten partitionieren

gpart add -s 512k -t freebsd-boot ada0
gpart add -s 512k -t freebsd-boot ada1
gpart add -s 512k -t freebsd-boot ada2
gpart add -s 3G -t freebsd-swap ada0
gpart add -s 3G -t freebsd-swap ada1
gpart add -s 3G -t freebsd-swap ada2
gpart add -t freebsd-zfs ada0
gpart add -t freebsd-zfs ada1
gpart add -t freebsd-zfs ada2

Bootloader zur Installation des Betriebssystems[Bearbeiten]

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada2

Spiegeln des SWAP zur Installation des Betriebssystems[Bearbeiten]

SWAP spiegeln (Redundanz erzeugen)

gmirror label -v -b round-robin swap0 ada0p2 ada1p2 ada2p2
gmirror load

Anlegen des Pools für ZFS zur Installation des Betriebssystems[Bearbeiten]

Pool für ZFS anlegen

zpool create gallien mirror ada0p3 ada1p3 ada2p3
zfs set mountpoint=/mnt gallien
zpool export gallien
zpool import -o cachefile=/var/tmp/zpool.cache gallien
zfs set checksum=fletcher4 gallien

Anlegen der Datasets von ZFS zur Installation des Betriebssystems[Bearbeiten]

Datasets von ZFS anlegen

zfs create -o compression=on -o exec=on -o setuid=off gallien/tmp
cdmod 1777 /mnt/tmp
zfs create gallien/usr
zfs create gallien/usr/home
cd /mnt/
ln -s /usr/home home
zfs create -o compression=lzjb -o setuid=off gallien/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off gallien/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off gallien/usr/ports/packages
zfs create -o compression=off -o exec=off -o setuid=off gallien/usr/src
zfs create gallien/var
zfs create -o compression=off -o exec=off -o setuid=off gallien/var/crash
zfs create -o exec=off -o setuid=off gallien/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off gallien/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off gallien/var/mail
zfs create -o exec=off -o setuid=off gallien/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off gallien/var/tmp
chmod 1777 /mnt/var/tmp

Installation des Betriebssystems zur Installation des Betriebssystems[Bearbeiten]

Installation FreeBSD 9.X

tar -xf /usr/freebsd-dist/doc.txz
tar -xf /usr/freebsd-dist/kernel.txz
tar -xf /usr/freebsd-dist/lib32.txz
tar -xf /usr/freebsd-dist/ports.txz
tar -xf /usr/freebsd-dist/src.txz
zfs set readonly=on gallien/var/empty

Konfiguration des FreeBSD nach der Installation des Betriebssystems[Bearbeiten]

Änderung des Rootverzeichnisses nach der Installation des Betriebssystems[Bearbeiten]


Änderung des Rootverzeichnisses

chroot /mnt

Setzen des Passwortes für root nach der Installation des Betriebssystems[Bearbeiten]

root-Passwort setzen

passwd

Anpassung zum Einhängen des SWAP-Mirror für jeden Boot-Vorgang nach der Installation des Betriebssystems[Bearbeiten]

SWAP beim Hochfahren einhängen

ee /mnt/etc/fstab

#Device			Mountpoint	FStype	Options	Dump	Pass#
/dev/mirror/swap0	none		swap	sw	0	0

Anpassung zur Aktivierung von ZFS für jeden Boot-Vorgang nach der Installation des Betriebssystems[Bearbeiten]

Aktivierung des ZFS

ee /etc/rc.conf

zfs_enable="YES"

Laden der benötigten Kernel-Module

ee /boot/loader.conf

zfs_load="YES"
vfs.root.mountfrom="zfs:gallien"
geom_mirror_load="YES"

Anpassung zur Aktivierung der Netzwerkeinstellungen für jeden Boot-Vorgang nach der Installation des Betriebssystems[Bearbeiten]

Grundkonfiguration der Netzwerkeinstellungen

ee /etc/rc.conf

hostname="<hostname der Maschine>"
defaultrouter="<IP des Defaultrouters>"
ifconfig_em0="<IP der Maschine> netmask 255.255.255.0"

Anpassung zur Festlegung der Dauer vom Bootscreen für jeden Boot-Vorgang nach der Installation des Betriebssystems[Bearbeiten]

Festlegung (Reduzierung) der Dauer vom Bootscreen

ee /boot/loader.conf

autoboot_delay="1"

Anpassung zur Festlegung der Zeitzone nach der Installation des Betriebssystems[Bearbeiten]

Änderung der Zeitzone

tzsetup

Europe
Germany

Abmelden aus dem Rootverzeichnisses nach der Installation des Betriebssystems[Bearbeiten]

exit


Kopieren der Informationen zum Pool für ZFS für jeden Boot-Vorgang nach der Installation des Betriebssystems[Bearbeiten]

Informationen zum Pool für ZFS kopieren (oder verschieben)

cp /var/tmp/zpool.cache /mnt/boot/zfs/

einmaliges Aushängen und Festlegung der zukünftige Einhängepunkte der Datasets von ZFS für jeden Boot-Vorgang nach der Installation des Betriebssystems[Bearbeiten]

Datasets von ZFS aushängen und zukünftige Einhängepunkte festlegen

cd /
zfs unmount -a
zfs set mountpoint=legacy gallien
zfs set mountpoint=/tmp gallien/tmp
zfs set mountpoint=/usr gallien/usr
zfs set mountpoint=/var gallien/var

Neustarten nach der Installation des Betriebssystems[Bearbeiten]

FERTIG! (Neustart!)

reboot

Anpassungen und Ergänzungen nach der Installation des Betriebssystems[Bearbeiten]

Anpassung zur Festlegung der Adressen für die Weiterleitung der Mails des Betriebssystems[Bearbeiten]

Erstellung und Weiterleitung von Adressen für Mails vom Betriebssystem

cd /etc/mail
ee alias
make aliases

Erstellung der Liste für Nameserver[Bearbeiten]

ee /etc/resolv.conf

domain <domain.tld>
nameserver "<IPNummer>"
nameserver "<IPNummer>"

Installation der Portscollection[Bearbeiten]

portsnap fetch extract

Bereitstellung von SSH[Bearbeiten]

Konfiguration von OpenSSH[Bearbeiten]

  • openssh
  • ssh auf anderen port legen
  • Vorschläge für sshd_config

ee /etc/ssh/sshd_config

 VersionAddendum
 Port $SSH_PORTNUMMER
 ListenAddress $JAIL_IP
 Protocol 2
 SyslogFacility AUTH
 LogLevel INFO
 LoginGraceTime 1m
 PermitRootLogin no
 StrictModes yes
 MaxAuthTries 4
 MaxSessions 5
 AllowUsers $DER_COOLE_LEUTE_CLUB
 PermitEmptyPasswords no
 X11Forwarding no
 Banner none
  • immer schön manpage lesen und mit dem Feinkamm durchgehen
  • keys + passwörter zur Authentifizierung
  • in jails:ListenAddress 0.0.0.0

Aktivierung von OpenSSH für jeden Boot-Vorgang[Bearbeiten]

ee /etc/rc.conf

sshd_enable="YES"

Anpassung der Sicherheitseinstellungen[Bearbeiten]

Festlegung zur Automatisierung der Updates[Bearbeiten]

  • Automatische Portscollection updaten
  • Mailinfo zusenden zu
  • nicht aktuellen Ports
  • verbugten Ports

ee /etc/crontab

0	13	*	*	*	root	portsnap -I cron fetch && portsnap update && pkg_version -vIL=
0	14	*	*	*	root	portaudit -Fda
0	*/12	*	*	*	root	/usr/sbin/audit -n

Installation der Audit-Unterstützung[Bearbeiten]

  • auditd starten

/etc/rc.d/auditd start

Festlegen der Grundeinstellungen der Audit-Unterstützung[Bearbeiten]
  • flags setzen

ee /etc/security/audit_control

flags:lo,aa,ex
  • synchronize config:

audit -s

Anpassung zur Aktivierung der Audit-Unterstützung für jeden Boot-Vorgang[Bearbeiten]

ee /etc/rc.conf

# Audit Deamon aktivieren
auditd_enable="YES"

Installation des Paket Filters (PF) von OpenBSD und ALTQ[Bearbeiten]

  • Paketfilter starten

/etc/rc.d/pf start
/etc/rc.d/pflog start

Festlegen der Regeln für den Paket Filter[Bearbeiten]

ee /etc/pf.conf

### MAKROS
thishost  "$MAIN_IP"
# portsnap5 204.9.55.80
portsnap_freebsd  "{ 204.109.56.116 204.9.55.80 }"
# auditfile.tbz is beeing fetched from portaudit.freebsd.org
portaudit_freebsd  "69.147.83.36"
# dnsserver from resolv.conf
dnsserver  "{ 85.214.73.63 217.79.186.148 27.110.120.30 204.152.184.76 194.150$
### RULES
# default deny
block in all
block out all
# lokales interface darf ohne einschränkungen
pass in quick on lo0 all
pass out quick on lo0 all
## HOST
# allow ssh
pass in on bce0 proto tcp from any to $thishost port $SSH_PORT
pass out on bce0 proto tcp from $thishost port $SSH_PORT to any
## allow outbound icmp
# echo request
pass out inet proto icmp icmp-type 8 code 0 keep state
# echo reply
pass in inet proto icmp icmp-type 0 code 0 keep state
# destination unreachable
pass in inet proto icmp icmp-type 3 keep state
# allow DNS lookups {also via tcp?} port 53
# what about traversal???
pass out on bce0 proto udp from $thishost to $dnsserver port 53 keep state
# allow portsnap to fetch from freebsd.org (ports?)
pass in on bce0 proto tcp from $portsnap_freebsd to $thishost
pass out on bce0 proto tcp from $thishost to $portsnap_freebsd
# allow portaudit to fetch auditfile.tbz via http
pass in on bce0 proto tcp from $portaudit_freebsd port 80 to $thishost
pass out on bce0 proto tcp from $thishost to $portaudit_freebsd port 80
## JAIL Beispiel (uneingeschränkt -> dumme Idee, ports dienstabhänging freigeben
pass in on bce0 proto { tcp udp icmp } from any to $jail_srs14
pass out on bce0 proto { tcp udp icmp } from $jail_srs14 to any
  • Regeln überprüfen

pfctl -vnf /etc/pf.conf

  • alte Regeln durch die neuen Regeln ersetzen

pfctl -Fa -f /etc/pf.conf

Anpassung zur Aktivierung des Paket Filters für jeden Boot-Vorgang[Bearbeiten]

ee /etc/rc.conf

# Packet Filter aktivieren
pf_enable="YES"
# auf die erstellte Datei mit den Regeln für den Packet Filter verweisen
pf_rules="/etc/pf.conf"
# Log für den Packet Filterlog aktivieren
pflog_enable="YES"

Anpassung zur Aktivierung des Durchroutens aller Jails für jeden Boot-Vorgang[Bearbeiten]

ee /etc/rc.conf

# host system is gateway for jails
gateway_enable="YES"

Anpassung zur Aktivierung der Systemlog-Informationen für jeden Boot-Vorgang[Bearbeiten]

ee /etc/rc.conf

# syslogd an Hauptmaschine binden
syslogd_flags="-b $MAIN_IP"

Anpassung zur Sprache und Zeichensatz[Bearbeiten]

ee /etc/login.conf

# deutsch einstellen
default:\
   …
   :charset=ISO-8859-1:\
   :lang=de_DE.ISO8859-1:\
   …

cap_mkdb /etc/login.conf

Zusammenfassung der Einträge und Anpassung nach der Installation des Betriebssystems[Bearbeiten]

Bei einer Mehrzahl von Einträgen sollte die Datei hier als Zusammenfassung abgebildet werden.
Bei einmaligen Einträgen kann auf den entsprechende Abschnitt verwiesen werden.

/mnt/etc/fstab[Bearbeiten]

siehe #Anpassung zum Einhängen des SWAP-Mirror für jeden Boot-Vorgang nach der Installation des Betriebssystems

/boot/loader.conf[Bearbeiten]

zfs_load="YES"
vfs.root.mountfrom="zfs:gallien"

geom_mirror_load="YES"

autoboot_delay="1"

/etc/rc.conf[Bearbeiten]

zfs_enable="YES"

keymap="german.iso"
hostname="<Name des Servers>"
defaultrouter="<IP(v4)-Adresse des nächsten Routers (im C-Netz)>"
ifconfig_em0="<IP(v4)-Adresse des Servers (host)> netmask 255.255.255.0"

sshd_enable="YES"

# Audit Deamon aktivieren 
auditd_enable="YES"

# Packetfilter aktivieren 
pf_enable="YES"

# Packetfilter Datei 
pf_rules="/etc/pf.conf"

# Packetfilterlog aktivieren 
pflog_enable="YES"

# host system is gateway for jails 
gateway_enable="YES"

# ezjail for jail managment
ezjail_enable="YES"

# syslogd an Hauptmaschine binden 
syslogd_flags="-b <IP(v4)-Adresse des Servers (host)>"
#Aktivierung des IPv6 Supports
ipv6_enable="YES"
ipv6_defaultrouter="<IPv6-Adresse des nächsten Routers>"
ipv6_ifconfig_em0="<IPv6-Adresse des Servers (host)> prefixlen 128"

# host system is gateway for jails with ipv6
ipv6_gateway_enable="YES"

/etc/resolv.conf[Bearbeiten]

siehe #Erstellung der Liste für Nameserver

  • Aus Sicherheitsgründen wurde hier nicht der orginale Dateiinalt hingeschrieben

/etc/ssh/sshd_config[Bearbeiten]

siehe #Konfiguration von OpenSSH

/etc/crontab[Bearbeiten]

siehe #Festlegung zur Automatisierung der Updates

/etc/security/audit_control[Bearbeiten]

sieh #Festlegen der Grundeinstellungen der Audit-Unterstützung

/etc/pf.conf[Bearbeiten]

siehe #Festlegen der Regeln für den Paket Filter

  • Aus Sicherheitsgründen wurde hier nicht der orginale Dateiinalt hingeschrieben

/etc/login.conf[Bearbeiten]

siehe #Anpassung zur Sprache und Zeichensatz

ständige Pflege[Bearbeiten]

Aktualisierung der Portscollection und den installierten Ports[Bearbeiten]

portsnap fetch update && portupgrade -a

Alternativ kann auch portup.sh ausgeführt werden.

Aktualisierung des Hauptsystems und die Jail[Bearbeiten]

freebsd-update fetch install

cd /usr/src
make buildworld

Anpassungen des Systems[Bearbeiten]

Paket Filter bedienen[Bearbeiten]
  • Paket Filter ausschalten

pfctl -d

  • Paket Filter anschalten

pfctl -e

  • Regeln für Paket Filter anpassen

ee /etc/pf.conf

  • Regeln für Paket Filter überprüfen

pfctl -vnf /etc/pf.conf

  • für Paket Filter alte Regeln durch die neuen Regeln ersetzen

pfctl -Fa -f /etc/pf.conf

Bauen von Programmen[Bearbeiten]

/etc/make.conf[Bearbeiten]

Die Beispieldatei ist unter /usr/share/example/etc/make.conf zufinden.

ee /etc/make.conf

CPUTYPE?=nocona

# immer ohne X11 support installieren
WITHOUT_X11= yes
#Dokumente in Deutsch und Englisch (US) installieren
DOC_LANG=       de_DE.ISO8859-15 de_DE.ISO8859-1 en_US.ISO8859-1
#Compilerflags
CFLAGS=-O2 -pipe -fno-strict-aliasing
COPTFLAGS=-O2 -pipe -funroll-loops -ffast-math -fno-strict-aliasing
#Compiler Optimierungsflag an
OPTIMIZED_CFLAGS=YES
#Mit Compiler Optimierungsflag bauen
BUILD_OPTIMIZED=YES
#Mit CPU flags
WITH_CPUFLAGS=YES
#Mit optimierten compiler
WITH_OPTIMIZED_CFLAGS=YES
#Ohne Debugging
WITHOUT_DEBUG=YES

Konfiguration der installierten Ports[Bearbeiten]

Die Abschnitte dieses Abschnittes sind (ausschließlich) alphabetisch geordnet.

ca_root_nss[Bearbeiten]

OPTIONS_FILE_SET+=ETCSYMLINK

curl[Bearbeiten]

OPTIONS_FILE_UNSET+=CARES
OPTIONS_FILE_SET+=CA_BUNDLE
OPTIONS_FILE_UNSET+=CURL_DEBUG
OPTIONS_FILE_UNSET+=GNUTLS
OPTIONS_FILE_SET+=IPV6
OPTIONS_FILE_UNSET+=KERBEROS4
OPTIONS_FILE_UNSET+=LDAP
OPTIONS_FILE_UNSET+=LDAPS
OPTIONS_FILE_UNSET+=LIBIDN
OPTIONS_FILE_UNSET+=LIBSSH2
OPTIONS_FILE_UNSET+=NTLM
OPTIONS_FILE_SET+=OPENSSL
OPTIONS_FILE_SET+=PROXY
OPTIONS_FILE_UNSET+=RTMP
OPTIONS_FILE_UNSET+=TRACKMEMORY

gdbm[Bearbeiten]

WITHOUT_COMPAT=true

git[Bearbeiten]

OPTIONS_FILE_SET+=CONTRIB
OPTIONS_FILE_SET+=CURL
OPTIONS_FILE_SET+=CVS
OPTIONS_FILE_SET+=ETCSHELLS
OPTIONS_FILE_UNSET+=GITWEB
OPTIONS_FILE_UNSET+=GUI
OPTIONS_FILE_UNSET+=HTMLDOCS
OPTIONS_FILE_SET+=ICONV
OPTIONS_FILE_SET+=P4
OPTIONS_FILE_SET+=PERL
OPTIONS_FILE_UNSET+=SVN

libiconv[Bearbeiten]

WITH_EXTRA_ENCODINGS=true

libevent2[Bearbeiten]

WITH_OPENSSL=true
WITH_THREADS=true

m4[Bearbeiten]

WITH_LIBSIGSEGV=true

p5-IO-Socket-SSL[Bearbeiten]

OPTIONS_FILE_UNSET+=IDN
OPTIONS_FILE_SET+=IPV6

pcre[Bearbeiten]

WITH_JIT=true
WITHOUT_LIBEDIT=true

perl5.12[Bearbeiten]

WITHOUT_DEBUGGING=true
WITHOUT_GDBM=true
WITH_PERL_MALLOC=true
WITH_PERL_64BITINT=true
WITH_THREADS=true
WITH_PTHREAD=true
WITH_MULTIPLICITY=true
WITHOUT_SITECUSTOMIZE=true
WITH_USE_PERL=true

portupgrade[Bearbeiten]

WITH_BDB4=true
WITHOUT_BDB1=true

ruby18[Bearbeiten]

WITHOUT_ONIGURUMA=true
WITH_RDOC=true
WITHOUT_DEBUG=true

tmux[Bearbeiten]

WITH_LIBEVENT2=true
WITH_LIBEVENT_STATIC=true
WITH_BACKSPACE=true

wget[Bearbeiten]

WITHOUT_GNUTLS=true
WITH_IPV6=true
WITH_NLS=true
WITH_OPENSSL=true
WITH_IDN=true

zsh[Bearbeiten]

WITH_ZSH_GDBM=true
WITH_ZSH_MEM=true
WITH_ZSH_SECURE_FREE=true
WITH_ZSH_MAILDIR=true
WITH_ZSH_MULTIBYTE=true
WITH_ZSH_PCRE=true
WITHOUT_ZSH_STATIC=true

Installierte Ports[Bearbeiten]

  • autoconf
  • autoconf-wrapper
  • automake
  • automake-wrapper
  • ca_root_nss
  • curl
  • cvsps
  • db41
  • expat
  • gdbm
  • gettext
  • git
  • gmake
  • help2man
  • libevent2
  • libiconv
  • libidn
  • libsigsegv
  • libtool
  • m4
  • p5-Error
  • p5-IO-Socket-SSL
  • p5-Locale-gettext
  • p5-Net-SMTP-SSL
  • p5-Net-SSLeay
  • pcre
  • perl-threaded
  • pkg-config
  • portaudit
  • portupgrade
  • python27
  • ruby
  • ruby18-bdb
  • tmux
  • wget
  • zsh

Konfiguration/Installation Jail[Bearbeiten]

Konfiguration Jail im Host[Bearbeiten]

/etc/sysctl.conf[Bearbeiten]

ee /etc/sysctl.conf

security.jail.allow_raw_sockets=1
  • entweder System neustarten oder auf der Konsole

sysctl security.jail.allow_raw_sockets=1

eingeben um die Einstellungen zuübernehmen

Installation Jail im Host[Bearbeiten]

  • Für die Installation einer Jail wurde das jailbuilder.sh-Script von PT verwendet.

eigene Scripte[Bearbeiten]

Scripte von PT[Bearbeiten]

jailbuilder.sh[Bearbeiten]

basic_creater.py[Bearbeiten]

hosts_creater.py[Bearbeiten]

pf_creater.py[Bearbeiten]

rc_creater.py[Bearbeiten]

networkrestart.sh[Bearbeiten]

portsup.sh[Bearbeiten]

startsetup.sh[Bearbeiten]

Weblinks[Bearbeiten]