Linux Hardening
Paar basics, die man bei Server mal testen kann.
General
Paar Schritte um einen Linux Server grob zu checken:
# liste alle Port die zurzeit offen sind (optional: interne können augeschlossen werden)
ss -tulpen | grep -v 127.0.0.1
# liste alle sockets, die unteranderem auch einen Port öffnen können
systemctl list-sockets
# ↬ unten paar typische Service, die noch aktiviert sein könnten.
ufw ...
# auto upgrades, mind. für Security patches
dpkg-reconfigure unattended-upgrades
systemctl edit apt-daily-upgrade.timer
SSH
PasswordAuthentication no
PermitRootLogin no
AllowGroups ssh-user
# disable
X11Forwarding no
AllowTcpForwarding no
PermitTunnel no
Image
Falls das zur Verfügung gestellt Image bereits upgrades durchgemacht hat:
# list configs die noch übrig sind
apt list | grep "\[residual-config\]"
Penetration Test
- bei Bedarf das LinPeas ausführen.
Auswertung der offenen Ports / Sockets
chrony (0.0.0.0:123/udp)
Wenn der Server nur Zeitbeziehen will, aber nicht anderen Zeitsynchronisierung anbieten soll:
vi /etc/chrony/chrony.d/my.conf
# add
port 0
sudo systemctl restart chronyd
# to check
chronyc tracking
chronyc makestep
timedatectl
exim4 (127.0.0.1:25/tcp)
Wenn man sowieso externe Mail-Server braucht:
systemctl stop exim4
systemctl disable exim4
systemctl status exim4
sudo apt purge exim4 exim4-base exim4-config exim4-daemon-light
systemd resolved
(127.0.0.54:53/udp/tcp) / LLMNR (0.0.0.0:5355/udp/tcp)
DNS (127.0.0.54:53/udp/tcp)
Wird als interner DNS Cache verwendet, daher so lassen.
LLMNR (0.0.0.0:5355/udp/tcp)
LLMNR (Link-Local Multicast Name Resolution) ist bei normalen Netzwerken nicht nötig.
vi /etc/systemd/resolved.conf
[Resolve]
LLMNR=no
sudo systemctl restart systemd-resolved