Betrifft OS: |
---|
![]() |
Das hier vorgestellte Verfahren ist als Grundlage für einen FreeBSD Server auf der Basis einer x86 Hardware. Da ich nur mit älterer Hardware oder mit MiniITX Boards BSD nutze kann ich für moderne Prozessoren keine Aussage treffen. Bitte beachten, dass ich eigentlich alles was hier steht bei anderen abgeschrieben habe. Ich bedanke mich ausdrücklich und hoffe keinerlei Rechte zu verletzen.
# setenv HTTP_PROXY http://<Name des Servers>:<Port des Servers> # setenv FTP_PROXY $HTTP_PROXY # setenv ftp_proxy $HTTP_PROXY # setenv http_proxy $HTTP_PROXY # setenv FTP_PASSIVE 1
# cd /usr/ports/sysutil/portsnap # make install clean
Das dauert dann bis alles übersetzt und empfangen wurde. Es muss eine Internetverbindung vorhanden sein. Danach wird die Konfiguration eingestellt.
# cd /usr/local/etc # cp portsnap.conf.sample portsnap.conf
Jetzt kann der neueste Stand der Ports abgerufen werden.
# cd /usr/ports # /usr/local/sbin/portsnap fetch
Das dauert einige Zeit. Es werden etwa 50MB aus dem Internet geladen. Danach wird das System ausgepackt.
# /usr/local/sbin/portsnap update
Wenn das nicht geht, dass sollte das folgende Kommando ausgeführt werden
# /usr/local/sbin/portsnap extract
Danach muss portupgrade installiert werden.
# cd /usr/ports/sysutils/portupgrade # make install clean
Das dauert eine ganze Weile und installiert auch Ruby und anderes. Jetzt können die Ports auf den neuesten Stand gebracht werden
# portupgrade -a
Das sollte nur beim ersten mal direkt nach der Installation so gemacht werden. Später muss man sich die Ports ansehen, die verändert werden sollen. Den Status der Ports nach einem Update des Portsystems kann mit folgendem Kommando ermittelt werden.
# pkg_version -v
Updates auf Ports sollten dann mit
# portupgrade -R <Port Name>
durchgeführt werden um alle Ports mit zu verändern, zu denen der Port eine Abhängigkeit hat. ACHTUNG! Die Ports, die von diesem abhängig sind werden damit nicht verändert.
# cd /usr/ports/security/portaudit # make install clean
Das folgende Kommando zeigt installierte Ports mit Sicherheitsproblemen an
# portaudit -Fda Die angegebenen Ports sollten dann aktualisiert werden, nach dem nächsten %%portsnap%% Kommando.
# cd /usr/ports/shells/bash # make install clean
Ermitteln, ob Syslog auf Port 514 lauscht.
# sockstat -4
Editiere die Datei /etc/rc.conf
. Damit wird sichergestellt, dass Syslog läuft und keine Meldungen von außen annimmt.
syslogd_enable="YES" syslogd_flags="-ss"
Starte den Syslog Daemon neu, um die Einstellung zu aktivieren
# /etc/rc.d/syslogd restart
Sicherstellen, dass /tmp beim Systemstart gelöscht wird Editiere /etc/rc.conf
clear_tmp_enable="YES"
Unterdrücke ICMP redirect Pakete und starte Logging für diese Pakete. Diese Pakete erlauben es einem Angreifer den gesamten Verkehr des Hosts mitzuhören. Editiere /etc/rc.conf
icmp_drop_redirect="YES" icmp_log_redirect="YES"
Ändere folgende Einstellungen in /etc/rc.conf
# Do not turn on RFC1323 extensions tcp_extensions="YES" # Disable probing of idle TCP connections to verify the peer is up and reachable tcp_keepalive="YES" # Do not respond to broadcast ping packets icmp_bmcastecho="NO" # ICMP error response bandwith limiting. Helps protect against DoS attacks. icmp_bandlim="YES"
Editiere die Datei /etc/login.conf
:passwd_format=md5:\
abändern in
:passwd_format=blf:\
Die Login Datenbank neu aufbauen
# cap_mkdb /etc/login.conf
Ändere die Passwörter der existierenden User Für root
# passwd
Für andere Benutzer
# passwd <User>
Prüfe, ob es geklappt hat
# vi /etc/master.passwd
Die Passwörter müssen jetzt mit $2 beginnen. Jetzt ändere die Konfiguration für adduser Editiere die Datei /etc/auth.conf
crypt_default=blf
Die Loginzeit auf der Konsole beschränken, wenn keine Eingaben erfolgen. Passwortlänge und Verfallzeit angeben. (Das macht aber nicht immer Sinn.) Editiere die Datei /etc/login.conf Suche den Eintrag
:ignoretime@:\
Addiere darunter die Zeile
:idletime=30:\] :passwordtime=90d:\ :mixpasswordcase=true:\ :minpasswordlen=10:\
Baue die Login Datenbank neu
# cap_mkdb /etc/login.conf
Damit beim Schliessen der (t)csh die gemachten Bildschirmausgaben gelöscht werden, muss in der Konfigurationsdatei /etc/csh.logout die Zeile:
clear
hinzugefügt werden.
Auch den Text vor dem „login:“-Prompt ist veränderbar. Dazu muss man die Konfigurationsdatei /etc/gettytab editieren. Suche die Zeile für die Default-Werte, die mit:
:cb:ce:ck:lc:
beginnt. Dort zwischen dem ersten r und dem letzen Doppelpunkt dieser Zeile kann man reinschreiben was man will als Pre-Login-Message.
Um zu verhindern, dass Benutzer mit „top“ die Prozesse von anderen Benutzern sehen muss /etc/sysctl.conf geändert werden
security.bsd.see_other_uids=0
Dadurch werden den Benutzern nur die Prozesse angezeigt, von denen sie auch Besitzer sind. Nur root sieht weiterhin alle Prozesse.
Um per su root Rechte zu bekommen muss der Benutzer in der Gruppe wheel sein. Editiere /etc/group Trage den gewünschten Benutzer als Mitglied der Gruppe wheel ein.
wheel:*:root,<meinUser>
Wenn root per SSH einloggen soll, so ist folgendes zu tun
Das will aber doch keiner, ODER???
Nur das sichere SSH Protokoll verwenden
root Login auf den terminals verhindern
console none unknown off secure
Lösche das Wort secure und speichere die Datei. Setze Benutzerrechte, sodass nicht jeder alles sehen kann.
# chmod 700 /root
# chflags schg /bin/* # chflags schg /sbin/* # chflags schg /usr/sbin/*
Das kann mit dem Kommando chflags noschg ... wieder zurückgesetzt werden, wenn updates gemacht werden. Der securitylevel sollte aber 0 sein.
# cd /var/log # chmod 600 * # chmod 640 wtmp
Weiter geht es mit:
Installation von NTP zur Zeitsynchronisierung