################ Aufbau: Daemon Abschotten des Daemons Authentifizierung fuer den Daemon (i)pf.rules Eintrag cisco/zebra acl ################ OpenBSD Installation: --------------------- Minimal installation von netz, cd oder derlei starten, stable oder snapshot-version mirror ist ftp.de.openbsd.org:/pub/unix/OpenBSD/3.3/$arch/ Partitionierung slice groesse minimal mountpoint a 100 MB / b 128MB swap (-) d 500MB /usr e 300MB /usr/local f 128MB /tmp g 256MB /var h >96MB /var/log (j 256MB /var/chroot) Mountoptionen sind defaultmaessig schon korrekt, nur noch noexec fuer /tmp und /var/log (/var muss leider exec sein, ausser man legt obiges /var/chroot extra) rc.conf: aktivieren der Nutzung von rc.conf.local und abschalten des inetd USE_RC_LOCAL=ES_HEISST_NICHT_SO_ABER_ICH_HABE_ES_VERGESSEN\ ICH_HABE_NAEMLICH_GARKEIN_AUTO^H^H^H^HOpenBSD INETD=NO ntpdate server: --------------- dies ist eine option fuer /etc/rc.conf.local; hier sollte man sich einen stratum 2 server suchen, und diesen dann auch mit key benutzen! der ntpdate server ist notwendig, da ntp bei einer Differenz zwischen Systemuhr und angefragter Zeit von mehr als einer Stunde aussteigt. Um einen Key zu arbeiten koennen, bietet es sich an, den Admin des Servers zu kontaktieren, ob dieser autokey unterstuetzt. Alternativ koennte man z.B. eine Cisco mit Echtzeitempfaenger oder multicast vom ISP nutzen, allerdings muss dann dieser einen NTP Key anbieten... Notiz: Z.B. ntp.belwue.de tut es offenbar -> testen. syslogd: -------- Logfiles anlegen per Host for node in node1 node2 ...; do touch /var/log/hosts/$node ; done chflags sappend /var/log/hosts/* syslog.conf Hier bitten wir den Syslogd, Meldungen der Remotesysteme ins jeweilige File umzulenken. *.host /var/log/hosts/* bzw. als Kommando: for node in node1 node2 ...; do echo "*.${node} \ /var/log/hosts/$node " >> syslogd.conf; done syslogd -u mit dieser Aenderung in rc.conf.local schaltet man den Syslogd in den 'unsecure' modus, d.h. er akzeptiert auch Logmeldungen fremder Hosts. SYSLOGD_FLAGS="-u" danach kann man den syslogd mit kill `/var/run/named.pid` stoppen und mit /usr/sbin/syslogd -u neu starten; ab dem naechsten Reboot startet er generell mit -u. statische arp eintraege f. syslogdclients hierfuer erstellen wir ein eigenes bootskript, welches dann ueber die inittab oder rc.net ausgefuehrt werden soll; diese statischen Eintraege muessen manuell gepflegt werden und sollten daher zentral liegen. touch /etc/rc.static_arp touch /etc/arp_table chmod 700 /etc/rc.static_arp chmod 700 /etc/arp_table der inhalt sieht folgendermassen aus: #!/bin/ksh #### # /etc/rc.static_arp # read declaration of static arp table entries on startup # #### if [ -r /etc/arp_table ] then arp -s -f arp_table else logger -p security "Could NOT read table of arp adresses.\ see /etc/rc.static_arp" fi # EOF #### # /etc/arp_table #### # z.B. arp -s hostname_oder_ip_node1 hw_adresse arp -s 192.168.10.1 00:02:3a:42:01:55 # EOF pf.conf syslogd nur fuer clients erreichbar Securelevel 2 (rc.securelevel) pf aktivieren ntpd: ----- installation: /usr/ports/net/ntpd ist zumindest bei mir 'broken', also wuerde ich vorschlagen, einfach die aktuelle Version von http://www.meinberg.de/english/info/ntp.htm beziehen. Herunterladen, und mit folgendem Kommando installieren: ./configure --enable-RAWDCF && make && make install bitte noch keinen make clean machen, fuer die DCF ist nachher noch ein wenig Arbeit noetig. in der /etc/rc.conf steht der ntpd bereits auf "YES", also startet er beim naechsten Boot von selbst. konfiguration: touch /etc/ntp.conf mkdir /etc/ntp/ chmod 700 /etc/ntp/ touch /etc/ntp/ntp.keys touch /etc/ntp/ntp.drift Inhalt: #### # NTP Master Server Configuration File # Set to broadcast only # NO manycast support, we don't want to allow anyone to snug in with # stratum 1 :) #### # Use the local clock in `worst case` and log it's drift ratio server 127.127.1.0 fudge 127.127.1.0 stratum 10 driftfile /etc/ntp/ntp.drift # Use the DCF clock later and make it win over anyone else. # see refclocks.html in the distribution. # server 127.127.15.1 # fudge 127.127.15.1 stratum 1 prefer # external servers, see # http://www.eecis.udel.edu/~mills/ntp/servers.html # this is a standard, untrusted server #server hostname1 # this is a pki/autokey authenticed server winning over the others #server hostname2 key autokey version 4 prefer # this is a shared secret authenticated server #server hostname3 key key3 # broadcast our time signal with autokey auth. # warning: this requires a recent ntp4 with the clients, while most # commercial unices are in behind. broadcast 224.0.1.1 autokey # regular broacast, using autokey #broadcast ff05::101 autokey # same,ipv6 # so, alternatively # keys are located in: # /etc/ntp/ntp.keys # restrict access to localhost #restrict 127.0.0.1 #EOF - Schluesselgenerierung - http://www.eecis.udel.edu/~mills/ntp/html/keygen.html - original rfc: - http://www.ietf.org/internet-drafts/draft-ietf-stime-ntpauth-04.txt echtzeituhr der haerteste Punkt ist hier eigentlich testdcf.c zu kompilieren. zumindest, wenn man wie ich nicht programmieren kann. drop root patch? - NETBSD - kompletter chroot, geht aber nur mit /dev/clockctl http://www.onlamp.com/pub/a/bsd/2003/02/13/chroot.html pf erweitern: kein Zugriff auf ntpd. bind() wird davon ja nicht beeinflusst Ausgehender ntp multicast okay. Ausgehende ntp queries und deren Antworten okay. bind9 - Primary Nameserver: --------------------------- Bind 9.2.1 wird standardmaessig mitgeliefert. chroot und -user: mkdir /var/chroot/ 2>/dev/null mv /var/named /var/chroot/ in der rc.conf.local wird das chrooten ausgeloest und syslogd muss nun einen neuen Parameter bekommen: NAMED_OPTIONS="-u named -g named -t /var/chroot/named -c /etc/named.conf" SYSLOGD_OPTIONS="-u -a /var/chroot/named/dev/log" Konfiguration: Die Masterzonen koennen unveraendert in /var/chroot/named/etc/master abgelegt werden. Sie muessen fuer named:named nur lesbar sein. Zu beachten: Die /etc/named.conf ist nur ein Link auf /var/chroot/named/etc/named.conf demgemaess muessen die Pfade zu den Zonenfiles relativ dazu sein. Named hat beim Laden der Zonen von chrootet. ergo saehe das so aus: primary domain.tld{ file="/etc/master/db.domain.tld" } secondaries festlegen und 'replizieren' dns-sec zw. secondaries und primary kein Zugriff auf Nameserver authorize=none :) query-source=53 pf erweitern: kein Zugriff auf dns. bind() wird davon ja nicht beeinflusst ausgehend source 53 okay. antworten okay. named-xfer okay. bind9 - Secondary Nameserver: ----------------------------- chroot wie bei primary, jedoch muessen die secondary zonen fuer named:named schreibbar sein. seconday zonen in named.conf einrichten. Zugriff ist hier 'wenn moeglich dns-sec, sonst 'schade', da einfach nicht fuer jedes OS ein Bind9/SSL sichergestellt werden kann. Hoffentlich kann man es wenigstens Windows beibringen :) Trotzdem macht es Sinn, dns-sec fuer die Clients anzubieten. access regeln dns nur fuer gewuenschte clients nutzbar (!= firewallsystem). pf erweitern: dns nur fuer gewuenschte clients nutzbar (!= firewallsystem). replikation vom primary erlauben certificate authority: ---------------------- diese dient zum absichern der verwandten PKI Struktur; sie ist der einzige erlaubte Zugriff auf dieses System! chroot von Apache/SSL *sehen* http://www.onlamp.com/pub/a/onlamp/2003/02/06/linuxhacks.html ssh der clients auf pki umschwenken. (anmerkung, anno 2009: OpenSSH hat noch immer keinen echten PKI support. F-Secure SSH allerdings schon!) distributiion mit rsync/ssh: ---------------------------- files: ntp.conf + autokey-config bzw. host&groupkey arp_table hosts resolv.conf -------------------------------------------------------------- UNIX-Tuerzu-Doku. (c) Florian Heigl, 2003 Freie unveraenderte Weitergabe, Veraenderungen bei Mitteilung okay. Eine Haftung fuer jedwede Folgen, absichtlich oder uabsichtlich, dieser Anleitung ist ausgeschlossen. --------------------------------------------------------------