Sicherheit
Da ich mich eine Zeit lang viel mit iptables beschäftigt habe, habe ich auf der
Skriptseite ein Skript veröffentlicht, das einen Eindruck von den
Firewallmöglichkeiten von Linux (ab Kernel 2.4) geben soll. Dieses läßt sich noch erheblich verschärfen
bzw. um QoS (siehe
lartc) erweitern.
Lokale Sicherheit:
- Biospasswort, booten nur von hdd erlauben
- Passort für den Bootmanager, verbieten von Bootoptionen ohne Passwort
- keine schwachen Passwörter
- keine unnötigen Benutzer
- benötigen alle Benutzer eine Shell? falls nicht auf /bin/false stellen
- Passwort shadowing benutzen
- rlogin verbieten (einloggen ohne Passwort)
- hosts.equiv entfernen
Netzwerk Sicherheit:
- unnötige Dienste abschalten (inetd.conf, runlevel überprüfen)
- verbleibende Dienste absichern (Konfiguration überprüfen; Zugriffsmöglichkeiten einschränken, wenn möglich/sinnvoll)
- regelmäßig sicherheitsrelevante
Updates durchführen
In diesem Kontext dürften die beiden folgenden Befehle hilfreich sein:
"netstat -atu" zeigt offene Ports sowie die Interfaces dazu an.
"netstat -anp | grep 22" nennt den Dienst der Port 22 bindet.
Der Zugriff zu verschiedenen Diensten (portmap, nfs, ..)lässt sich über den tcpwrapper einschränken.
/etc/hosts.deny
ALL: ALL EXCEPT localhost
/etc/hosts.allow
# z.B.: nfs (durch Kommata getrennte Liste zugriffsberechtigter Clients/Netze)
portmap: 192.168.57.3
mountd: 192.168.57.3
statd: 192.168.57.3
lockd: 192.168.57.3
/etc/ssh/sshd_config
# relevante Parameter
# soll auf den Rechner via ssh auch von aussen zugegriffen werden können,
# kann man den Port auf einen hohen einstellen
#Port ?????
# nur interner Zugriff:
Port 22
ListenAddress 192.168.57.1 # 'interne IP-Adresse'
# ansonsten beachten:
Protocol 2
PermitRootLogin no
IgnoreRhosts yes
StrictModes yes
RhostsAuthentication no
RhostsRSAAuthentication yes
RSAAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
# soweit möglich von AllowUsers und AllowHosts (bzw. AllowGroup) Gebrauch machen
/etc/php4/apache(2)/php.ini
# relevante Parameter
register_globals = off
safe_mode = on # nur in webhosting umgebungen mit mehreren usern und suphp sinnvoll
open_basedir = /var/www # DocumentRoot des Webservers bzw. Verzeichnisse mit Webinhalten
# gegebenenfalls in der VirtualHost-Konfig
magic_quotes_gpc = on
allow_url_fopen = no
disable_functions = system, exec, shell_exec, passthru, phpinfo, show_source, popen, proc_open
#safe_mode_exec_dir = # gegebenenfalls, siehe auch safe_mode
/etc/samba/smb.conf
# relevante Parameter
security = user
encrypt passwords = true
invalid users = root
interfaces = eth0 # internes LAN-Interface
bind interfaces only = yes
hosts allow = 192.168.57.0/255.255.255.0 # lokales Netz
hosts deny = 0.0.0.0/0
# falls anonymer Zugriff erlaubt sein soll:
guest account = nobody
map to guest = Bad User
/etc/security/limits.conf
Einschränkungen definieren
iptables logging
Das normale LOG target von iptables schreibt seine Nachrichten in /var/log/syslog.
Viel schöner ist es, wenn das Firewalllog in eine eigene Datei oder gar in eine Datenbank
geschrieben wird.
Dazu 'ulogd' (gegebenenfalls zusätzlich z.B. mysql plugin) installieren und
das Target der Loggingregeln anpassen.
z.B.: ... -j ULOG --ulog-nlgroup 1 --ulog-cprange 100 --ulog-prefix "BAD PACKET: "
# nlgroup - netlink multicast group (vgl. /etc/ulogd.conf)
# cprange - wieviel bytes zum ulog daemon geschickt werden
angepasste mountoptionen
/boot defaults,nosuid,nodev,noexec
/home defaults,nosuid,nodev
/tmp defaults,nosuid,nodev,noexec
/usr defaults,nodev,ro
/var defaults,nosuid,nodev,noexec
Damit man dennoch weiterhin apt sorgenlos nutzen kann, den Tip auf der Debianseite beachten.