StuRa:Server/FreeBSD: Unterschied zwischen den Versionen
K (→DNS) |
|||
Zeile 344: | Zeile 344: | ||
* [http://plone.org/products/plone/releases http://plone.org/documentation/kb/freebsdploneapache/preparefreebsd] | * [http://plone.org/products/plone/releases http://plone.org/documentation/kb/freebsdploneapache/preparefreebsd] | ||
== FreeBSD | == [http://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/updating-upgrading.html FreeBSD aktualisieren] == | ||
=== [http://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/updating-upgrading-freebsdupdate.html Aktualisierungen an Haupt- und Unterversionen] === | |||
Dieser Prozess entfernt alte Objekt-Dateien und Bibliotheken, was dazu führt, dass die meisten Anwendungen von Drittherstellern nicht mehr funktionieren. Es wird empfohlen, dass alle installierten Ports entweder entfernt und neu installiert oder zu einem späteren Zeitpunkt mittels ports-mgmt/portupgrade aktualisiert werden. Die meisten Anwender werden wahrscheinlich einen Testlauf mittels des folgenden Kommandos durchführen wollen: | |||
# portupgrade -af | |||
Dies sorgt dafür, dass alles korrekt neu installiert wird. Beachten Sie, dass das Setzen der BATCH-Umgebungsvariable auf yes während dieses Prozesses auf jede Eingabe mit ja antwortet, was es nicht mehr notwendig macht, manuell eingreifen zu müssen. | |||
… | |||
siehe weiter Informationen unter [http://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/updating-upgrading-freebsdupdate.html 25.2.3. Aktualisierungen an Haupt- und Unterversionen ] | |||
== DNS == | == DNS == |
Version vom 1. Mai 2013, 16:54 Uhr
Dies ist die Dokumentation für den Betrieb der Server mit FreeBSD.
Sicherheit
- ports aktuell halten:
- portsnap /var/db/portsnap/INDEX
- edit /etc/crontab:
0 13 * * * root portsnap -I cron fetch && portsnap update && pkg_version -vIL=
- tägliches Audit der (installierten) Ports:
- portaudit /var/db/portaudit/auditfile.tbz
- edit /etc/crontab:
0 14 * * * root portaudit -Fda
- VuXML abonnieren
- http://security.freebsd.org/ mal durchlesen
- National Vulnerability Database (NVD RSS) abonnieren
Paketfilter
- OpenBSD pf
- in /etc/rc.conf:
pf_enable="YES" pf_rules="/etc/pf.conf" pflog_enable="YES" # host system is gateway for jails gateway_enable="YES"
- syslogd an Hauptmaschine binden
- in /etc/rc.conf: (evtl. -ss flag?)
syslogd_flags="-b $MAIN_IP"
- Paketfilter starten:
# /etc/rc.d/pf start
# /etc/rc.d/pflog start
- pf.config: (check via
pfctl -vnf /etc/pf.conf
) (inzwischen veraltet)
### 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
Paketfilter bedienen
- anschalten:
pfctl -e
- ausschalten:
pfctl -d
- sanity check:
pfctl -vnf /etc/pf.conf
- alte Regeln ins Klo und neue in die Auslage:
pfctl -Fa -f /etc/pf.conf
Verweise
- PF: Der OpenBSD Packet Filter
- Jacek Artymiak - Building Firewalls with OpenBSD and PF, 2nd edition
- Peter N. M. Hansteen: The Book of PF, 2nd Edition - A No-Nonsense Guide to the OpenBSD Firewall
FreeBSD audit
- faschistoides Logging von Systemcalls
- präventiv wirkungslos, aber in der post-mortem Analyse extrem hilfreich
- FreeBSD Kapitel 17. Security Event Auditing
- in /etc/rc.conf
auditd_enable="YES"
- start auditd:
# /etc/rc.d/auditd start
- in /etc/security/audit_control:
flags:lo,aa,ex policy:cnt,argv synchronize config: audit -s
- cronjob für die logs: /etc/crontab
0 */12 * * * root /usr/sbin/audit -n
Jails
Jails dienen der Virtualisierung von Betriebssysteminstanzen. Näheres dazu im FreeBSD Handbuch Kapitel 15 - Jails.
Jail Verzeichnis mit ZFS anlegen
- beim ersten Mal
# zfs create zpool/jails
# zfs set mountpoint=/usr/home/jails zpool/jails
- ansonsten reicht es
# zfs create zpool/jails/$JAILNAME
Anlegen eines Jails
# cd /usr/src
- evtl. erst Sourcen installieren: sysinstall-> configure -> distributions
- evtl.
# make buildworld
- Jails liegen unter /home/jails/$JAILNAME
- System für jail bauen:
# make installworld DESTDIR=/home/jails/$JAILNAME
# make distribution DESTDIR=/home/jails/$JAILNAME
- device nodes ins jail packen
# mount -t devfs devfs /home/jails/$JAILNAME/dev
- resolv.conf vom Host kopieren
# cp /etc/resolv.conf /home/jails/$JAILNAME/etc/resolv.conf
- rc.conf editieren:
jail_enable="YES" jail_list="$JAILNAME" ifconfig_bce0_alias0="$JAIL_IP netmask 255.255.255.0" jail_$JAILNAME_rootdir="/path/to/jails/$JAILNAME" jail_$JAILNAME_hostname="$JAILNAME.domain.tld" jail_$JAILNAME_ip="$JAIL_IP" jail_$JAILNAME_devfs_enable="YES" jail_$JAILNAME_devfs_ruleset="devfsrules_jail"
- jail starten
# /etc/rc.d/jail start
- Prozess im jail starten
# jexec $JAIL_ID tcsh
- $JAIL_ID ermitteln mit
# jls
- Defaultrouting einstellen
- etc/rc.conf
- defaultrouting="<IP oder interfacename:network>"
- etc/rc.conf
- portscollection installieren
# portsnap fetch extract
- portscollection updaten
# portsnap fetch update
- evtl. ssh anschalten (in rc.conf)
sshd_enable="YES"
- /etc/host
#.#.#.# JAILNAME.stura.htw-dresden.de
Löschen eines Jails
- ins jailroot wechseln (/home/jails/$JAILNAME)
# chflags -R noschg *
# rm -rf *
# cd .. && rm -r $JAILNAME (ohne ZFS)
# cd .. && zfs destroy tank/PATH/$JAILNAME (mit ZFS)
Tricks, Probleme etc.
- sich evtl. ezjail mal anschauen (war damals kaputt)
- ping aus jails heraus erlauben
- host: allow_raw_socket=1 via
# sysctl security.jail.allow_raw_sockets=1
- bzw. in /etc/sysctl.conf setzen
- Quelle
- host: allow_raw_socket=1 via
- ssh:
- etc/ssh/sshd_config:
ListenAddress 0.0.0.0
ssh
- openssh
- ssh auf anderen port legen
- Vorschläge für /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 #einzelne user nur mit leerzeichen trennen
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
- MTA: postfix
- MDA: maildrop
- IMAP server: dovecot
- MUA (clientseitig) empfohlen:
- Mozilla Thunderbird
- sup
- rubygems installieren
- archiv runterladen und entpacken
- z.B.
wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.10.tgz
- in den entpackten ordner wechseln
- als root:
ruby setup.rb
- rubygems updaten:
gem18 update --system
gem18 install rake
gem18 install ncursesw
... broken?- sup aus den gems installieren:
gem18 install sup
- als user im home verzeichnis:
sup-config
- aufruf:
sup-mail
... und schön durch die emails pflügen
- mutt
- config file "~/.muttrc"
set mbox_type=Maildir set folder="~/Mail" set mask="!^\\.[^.]" set mbox="~/Mail" set spoolfile="~/Mail" set editor="mg" set charset="utf-8" set realname="XXX (StuRa HTW Dresden)" set from="XXX@stura.htw-dresden.de" set use_from=yes set mime_forward=yes set mime_forward_rest=yes
MTA: postfix
- in the email jail
# cd /usr/ports/mail/postfix
# make install clean
- postfix added to group mail -> y
- Would you like to activate Postfix in /etc/mail/mailer.conf -> y
- Einstellungen (Auszug + aliases)
- edit /usr/local/etc/postfix/main.cf:
local_recipient_maps = $alias_maps unknown_local_recipient_reject_code = 550 mynetworks = 127.0.0.0/8 myhostname = mail.stura.htw-dresden.de mydomain = stura.htw-dresden.de myorigin = $mydomain mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain inet_interfaces = all alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ mail_spool_directory = /var/spool/mail relay_domains = stura.htw-dresden.de smtpd_sender_restrictions = reject_unknown_sender_domain, reject_non_fqdn_sender smtpd_recipient_restrictions = reject_invalid_hostname, reject_unknown_recipient_domain, reject_unauth_destination, reject_rbl_client sbl.spamhaus.org, permit smtpd_helo_restrictions = reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, reject_unknown_helo_hostname smtpd_client_restrictions = reject_rbl_client dnsbl.sorbs.net
Links
- The Postfix Home Page
- Postfix UCE HOWTO (Spamkontrolle)
IMAP-Server dovecot
- dovecot
- optionen: kqueue, ssl, managesieve, mysql
# echo 'dovecot_enable="YES"' >> /etc/rc.conf
# cp /usr/local/share/examples/dovecot/dovecot.conf /usr/local/etc/dovecot/dovecot.conf
# cp /usr/local/share/examples/dovecot/dovecot-sql.conf /usr/local/etc/dovecot/dovecot-sql.conf
- dovecot2
- optionen: kqueue, ssl, mysql
# cp /usr/local/share/doc/dovecot/example-config/dovecot.conf /usr/local/etc/dovecot/dovecot.conf
# cp /usr/local/share/doc/dovecot/example-config/dovecot-sql.conf /usr/local/etc/dovecot/dovecot-sql.conf
- in /usr/local/etc/dovecot.conf: (vorerst zum testen)
protocols = imap pop3
disable_plaintext_auth = no
ssl = no
mail_location = mbox:~/mail/:INBOX=/var/mail/%u
mail_privileged_group = mail
protocol imap {
imap_client_workarounds = delay-newmail outlook-idle netscape-eoh tb-extra-mailbox-sep
}
- Krypto drankleben (imap -> imaps, pop3 -> pop3s)
MDA: maildrop
- maildir in users homeverzeichnis anlegen
maildirmake Mail
- im homeverzeichnis die Datei .mailfilter anlegen:
MAILBOX="$HOME/Mail" DEFAULT="$MAILBOX"
- chmod 600 .mailfilter
- maildrop in postfix main.cf einarbeiten
mailbox_command = /usr/local/bin/maildrop -d ${USER}
Tricks etc.
- alias-Adressen anlegen
- edit: /usr/local/etc/postfix/main.cf:
alias_maps = hash:/etc/aliases, hash:/etc/aliases.stura alias_database = hash:/etc/aliases,hash:/etc/aliases.stura
- edit /etc/aliases.stura
- in das Postfix laden:
# newaliases
# postfix reload
# usr/local/etc/rc.d/postfix restart
- SMTP testen:
# nc $JAIL_IP 25
# HELO microsoft.com
# MAIL FROM:<bill@microsoft.com>
# RCPT TO:<test@stura.htw-dresden.de>
# DATA
# From: <bill@microsoft.com>
# To: <stest@stura.htw-dresden.de>
# Subject: hui
# das hätte nicht passieren sollen
# .
# QUIT
Plone
- JoSch damals gebaut, zwischenzeitlich grundsaniert
- Apache installiert
- apache 22 optionen:
- mod_ssl
- mod_rewrite
- mod_deflate
- ipv6
- apr ohne berkeley db und gnu db
- http://plone.org/documentation/kb/freebsdploneapache/preparefreebsd
- http://plone.org/documentation/kb/freebsdploneapache/preparefreebsd
FreeBSD aktualisieren
Aktualisierungen an Haupt- und Unterversionen
Dieser Prozess entfernt alte Objekt-Dateien und Bibliotheken, was dazu führt, dass die meisten Anwendungen von Drittherstellern nicht mehr funktionieren. Es wird empfohlen, dass alle installierten Ports entweder entfernt und neu installiert oder zu einem späteren Zeitpunkt mittels ports-mgmt/portupgrade aktualisiert werden. Die meisten Anwender werden wahrscheinlich einen Testlauf mittels des folgenden Kommandos durchführen wollen:
# portupgrade -af
Dies sorgt dafür, dass alles korrekt neu installiert wird. Beachten Sie, dass das Setzen der BATCH-Umgebungsvariable auf yes während dieses Prozesses auf jede Eingabe mit ja antwortet, was es nicht mehr notwendig macht, manuell eingreifen zu müssen. …
siehe weiter Informationen unter 25.2.3. Aktualisierungen an Haupt- und Unterversionen
DNS
- genutzt werden DNS Server des FoeBuD und des CCC
- zusätzlich (für OpenNIC)
- DE,NRW 217.79.186.148 ns1.nrw.de.dns.opennic.glue Günter Grodotzki yes (no logs kept)
- NZ 27.110.120.30 ns1.nz.dns.opennic.glue Dean Gardiner yes (24 hrs)
Tipps, Tricks etc.
- die Änderungen an Konfigurationsdateien (z.b. in /etc) via git tracken
- disk quotas für jails einrichten
- systemweite make.conf bauen
- rc.conf bzw. /etc/rc neu laden ohne reboot
- Achtung: über Konsole direkt am Gerät (single user mode verliert Netzwerkzugriff!)
# shutdown now (Note: without -r or -h) # return # exit
- netzwerk (services) über ssh neu starten:
# /etc/rc.d/netif restart && /etc/rc.d/routing restart
Eigene Scripte
Wo:
- /root/scripte
Welche:
- Netzwerk neustart
- networkrestart.sh
- Startup script
- startsetup.sh
- ports Updaten
- portsup.sh
- jails bauen
- jailbuilder.sh
- Anwenden
- jailbuilder.sh
# ./jailbuilder.sh $JAILNAME
USB-Stick bauen
- auf einem FreeBSD
- Image runterladen:
wget ftp://ftp.de.freebsd.org/pub/FreeBSD/ISO-IMAGES-amd64/8.2/FreeBSD-8.2-RELEASE-amd64-memstick.img
- Image auf Stick dumpen
dd if=FreeBSD-8.2-RELEASE-amd64-memstick.img of=/dev/da0 bs=64k
Server Setup Beschreibung
- /boot UFS, der Rest ZFS
- irgendwas zum booten nehmen (USB, DVD) und ab in die Fixit shell
- MBR Geometrie baun
gpart create -s mbr ad4
- nachschauen, ob es geklappt hat
gpart show ad4
- den Rest der Platte mit FreeBSD belegen
gpart add -s (aus gpart show Größe -1 )GB -t freebsd ad4
- riesigen BSD-slice anlegen
gpart create -s BSD ad4s1
- partitionen anlegen
gpart add -s 1G -t freebsd-ufs ad4s1 gpart add -s 4G -t freebsd-swap ad4s1 gpart add -t freebsd-zfs ad4s1
- Partition als aktiv markieren (falls andere schon drauf sind und von denen gebootet werden soll)
gpart set -a active -i 1 ad0
Verweise etc.
Intern
Bücher
- Absolute FreeBSD, 2nd Edition
- BSD UNIX Toolbox: 1000+ Commands for FreeBSD, OpenBSD and NetBSD
- Building a Server with FreeBSD 7
- Book of PF, 2nd Edition
- Jacek Artymiak - Building Firewalls with OpenBSD and PF, 2nd edition
- Ending Spam
- Network Know-How - An Essential Guide for the Accidental Admin
- Charles M. Kozierok: TCP/IP Guide - A Comprehensive, Illustrated Internet Protocols Reference
- Dave Taylor: Wicked Cool Shell Scripts - 101 Scripts for Linux, Mac OS X, and UNIX Systems