15.02.2025, 11:57
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2025, 12:49 von Manfred Aabye.)
# ? Was dieses Skript macht:
# 1️⃣ Firewall & Sicherheitsmaßnahmen
# ✅ UFW (Uncomplicated Firewall) prüfen & installieren
# ➡ Falls UFW nicht installiert ist, wird sie automatisch installiert.
# ✅ SSH-Port ändern
# ➡ Der Benutzer kann einen neuen SSH-Port wählen, um Angriffe auf Port 22 zu vermeiden.
# ✅ SSH-Schlüssel-Authentifizierung aktivieren
# ➡ Deaktiviert das Login per Passwort und erlaubt nur noch Schlüssel-Authentifizierung.
# ✅ Automatische Sicherheitsupdates aktivieren
# ➡ Installiert unattended-upgrades, um sicherzustellen, dass dein Server immer aktuell bleibt.
# ✅ Fail2Ban installieren & aktivieren
# ➡ Schützt vor Brute-Force-Angriffen durch das automatische Sperren von IP-Adressen.
# 2️⃣ Offene Ports & Firewall-Regeln
# ✅ Alle offenen Ports anzeigen
# ➡ Zeigt, welche Ports von welchen Programmen genutzt werden (ss -tulpn).
# ✅ Benutzer entscheidet, welche Ports geöffnet werden
# ➡ Er kann manuell wählen, welche Ports über UFW freigegeben werden sollen.
# ✅ Firewall-Regeln anwenden
# ➡ Blockiert alle eingehenden Verbindungen, erlaubt aber ausgehenden Traffic.
# ✅ SSH-Dienst neu starten
# ➡ Wendet alle Änderungen an der SSH-Konfiguration an.
# 3️⃣ Erhöhte Sicherheit & Analyse
# ✅ Überprüfung fehlgeschlagener Login-Versuche
# ➡ Nutzt grep "Failed" /var/log/auth.log, um Angriffsversuche zu erkennen.
# ✅ Optionaler Portscan mit nmap
# ➡ Falls gewünscht, führt nmap einen umfassenden Scan aller 65.535 Ports durch.
# ? Warum ist dieses Skript wichtig?
# ✔ Minimiert Angriffsfläche: UFW schließt alle unnötigen Ports.
# ✔ Schützt gegen Brute-Force: SSH-Schlüssel & Fail2Ban sichern den Zugriff.
# ✔ Reduziert Sicherheitsrisiken: Automatische Updates verhindern Exploits.
# ✔ Gibt dir volle Kontrolle: Du entscheidest, welche Ports wirklich nötig sind.
Skript osmsafty.sh
# 1️⃣ Firewall & Sicherheitsmaßnahmen
# ✅ UFW (Uncomplicated Firewall) prüfen & installieren
# ➡ Falls UFW nicht installiert ist, wird sie automatisch installiert.
# ✅ SSH-Port ändern
# ➡ Der Benutzer kann einen neuen SSH-Port wählen, um Angriffe auf Port 22 zu vermeiden.
# ✅ SSH-Schlüssel-Authentifizierung aktivieren
# ➡ Deaktiviert das Login per Passwort und erlaubt nur noch Schlüssel-Authentifizierung.
# ✅ Automatische Sicherheitsupdates aktivieren
# ➡ Installiert unattended-upgrades, um sicherzustellen, dass dein Server immer aktuell bleibt.
# ✅ Fail2Ban installieren & aktivieren
# ➡ Schützt vor Brute-Force-Angriffen durch das automatische Sperren von IP-Adressen.
# 2️⃣ Offene Ports & Firewall-Regeln
# ✅ Alle offenen Ports anzeigen
# ➡ Zeigt, welche Ports von welchen Programmen genutzt werden (ss -tulpn).
# ✅ Benutzer entscheidet, welche Ports geöffnet werden
# ➡ Er kann manuell wählen, welche Ports über UFW freigegeben werden sollen.
# ✅ Firewall-Regeln anwenden
# ➡ Blockiert alle eingehenden Verbindungen, erlaubt aber ausgehenden Traffic.
# ✅ SSH-Dienst neu starten
# ➡ Wendet alle Änderungen an der SSH-Konfiguration an.
# 3️⃣ Erhöhte Sicherheit & Analyse
# ✅ Überprüfung fehlgeschlagener Login-Versuche
# ➡ Nutzt grep "Failed" /var/log/auth.log, um Angriffsversuche zu erkennen.
# ✅ Optionaler Portscan mit nmap
# ➡ Falls gewünscht, führt nmap einen umfassenden Scan aller 65.535 Ports durch.
# ? Warum ist dieses Skript wichtig?
# ✔ Minimiert Angriffsfläche: UFW schließt alle unnötigen Ports.
# ✔ Schützt gegen Brute-Force: SSH-Schlüssel & Fail2Ban sichern den Zugriff.
# ✔ Reduziert Sicherheitsrisiken: Automatische Updates verhindern Exploits.
# ✔ Gibt dir volle Kontrolle: Du entscheidest, welche Ports wirklich nötig sind.
Skript osmsafty.sh
PHP-Code:
#!/bin/bash
# Funktion zur Prüfung, ob UFW installiert ist
function check_ufw_installed {
if ! command -v ufw &> /dev/null; then
echo "UFW ist nicht installiert. Installation wird durchgeführt..."
sudo apt-get update
sudo apt-get install -y ufw
else
echo "UFW ist bereits installiert."
fi
}
# Funktion zum Ändern des SSH-Ports
function change_ssh_port {
echo "Gib den neuen SSH-Port ein (Standard: 22):"
read -r SSH_PORT
if [[ -z "$SSH_PORT" ]]; then
SSH_PORT=22
fi
sudo sed -i "s/^#Port 22/Port $SSH_PORT/" /etc/ssh/sshd_config
sudo sed -i "s/^Port 22/Port $SSH_PORT/" /etc/ssh/sshd_config
echo "SSH-Port wurde auf $SSH_PORT geändert."
}
# Funktion zur Aktivierung der SSH-Schlüssel-Authentifizierung
function enable_ssh_keys {
sudo sed -i 's/^#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
sudo sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
echo "SSH-Schlüssel-Authentifizierung wurde aktiviert."
}
# Funktion zur Generierung eines SSH-Schlüssels
function create_ssh_key {
echo "Möchtest du ein neues SSH-Schlüsselpaar erstellen? (ja/nein)"
read -r choice
if [[ "$choice" == "ja" ]]; then
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
echo "SSH-Schlüssel wurde erstellt."
fi
}
# Funktion zur Aktivierung automatischer Updates
function enable_auto_updates {
echo "Aktiviere automatische Sicherheitsupdates..."
sudo apt-get install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
echo "Automatische Updates wurden aktiviert."
}
# Funktion zur Installation und Aktivierung von Fail2Ban
function install_fail2ban {
echo "Installiere Fail2Ban..."
sudo apt-get update
sudo apt-get install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
echo "Fail2Ban wurde installiert."
}
# Funktion zur Anzeige aktuell offener Ports
function list_ports {
echo "Offene Ports auf diesem System:"
ss -tulpn | awk '{print $1, $2, $5, $7}' | column -t
}
# Funktion zur Konfiguration der benötigten Ports
function configure_ports {
echo "Welche Ports sollen geöffnet werden? (Trenne sie mit Leerzeichen, z. B. '22 80 443')"
read -r PORTS
for PORT in $PORTS; do
sudo ufw allow "$PORT"
echo "Port $PORT wurde geöffnet."
done
}
# Funktion zur vollständigen Firewall-Konfiguration
function configure_firewall {
echo "Konfiguriere Firewall..."
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
echo "Firewall-Regeln angewendet: Eingehender Traffic wird blockiert, ausgehender ist erlaubt."
}
# Funktion zum Scannen nach fehlgeschlagenen Login-Versuchen
function check_failed_logins {
echo "Überprüfung fehlgeschlagener Login-Versuche..."
grep "Failed" /var/log/auth.log | tail -20
}
# Funktion zum Durchführen eines Portscans mit nmap
function perform_portscan {
echo "Möchtest du einen Portscan durchführen? (ja/nein)"
read -r choice
if [[ "$choice" == "ja" ]]; then
echo "Gib die Ziel-IP für den Portscan ein:"
read -r TARGET_IP
sudo nmap -Pn -sS -sV --version-all --reason -v -A -O --osscan-guess -p0-65535 "$TARGET_IP"
fi
}
# Hier beginnt die Konfiguration
# UFW Installation prüfen
check_ufw_installed
# SSH-Port ändern
change_ssh_port
# SSH-Schlüssel-Authentifizierung aktivieren
enable_ssh_keys
# SSH-Schlüssel generieren (optional)
create_ssh_key
# Automatische Updates aktivieren
enable_auto_updates
# Fail2Ban installieren
install_fail2ban
# Offene Ports anzeigen
list_ports
# Benutzer soll selbst entscheiden, welche Ports wirklich geöffnet werden
configure_ports
# Firewall aktivieren und konfigurieren
configure_firewall
# SSH-Dienst neu starten
sudo systemctl restart ssh
# Überprüfung auf fehlgeschlagene Logins
check_failed_logins
# Optional: Portscan durchführen
perform_portscan
echo "Alle Sicherheitsmaßnahmen wurden erfolgreich angewendet!"
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.