Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Server sichern mit ufw
#1
Anfängerhilfe Server vor Fremdangriffen sichern
Die Uncomplicated Firewall (UFW) ist ein benutzerfreundliches Frontend für iptables und hilft dabei,
die Sicherheit Deines Servers zu gewährleisten, indem sie unerwünschte Verbindungen blockiert.
In dieser Anleitung zeige ich Dir, wie Du offene Ports ermitteln und die notwendigen Regeln in UFW konfigurieren kannst.
Schaut auch bei einem Neustart Eures Servers die offenen Ports und Apps an (sudo ufw app list) und sucht nach unbekannten verhalten.

Datei readopenport.sh
Dieses Skript ermittelt die offenen Ports auf Deinem Server und speichert sie in einer Datei namens offene_ports.txt.

--- bash
Code:
#!/bin/bash

# Ermitteln der offenen Ports und Speichern in einer Datei
sudo ss -tuln | awk 'NR>1{print $5}' | grep -oE '[0-9]+$' | sort -n | uniq > offene_ports.txt
---

Datei setufwports.sh
Dieses Skript überprüft, ob UFW installiert ist, und installiert es bei Bedarf.
Anschließend erstellt es ein weiteres Skript ufw_commands.sh,
das die UFW-Befehle zum Öffnen der ermittelten Ports enthält.

--- bash
Code:
#!/bin/bash

# Funktion um zu prüfen, ob ufw installiert ist
function check_ufw_installed {
    if ! command -v ufw &> /dev/null; then
        echo "ufw ist nicht installiert."
        read -p "Möchtest Du ufw installieren? (ja/nein): " choice
        case "$choice" in
          ja|Ja ) sudo apt-get update && sudo apt-get install ufw;;
          * ) echo "ufw wird nicht installiert. Beenden."; exit 1;;
        esac
    else
        echo "ufw ist bereits installiert."
    fi
}

# ufw Installation prüfen
check_ufw_installed

# Datei mit offenen Ports
PORT_FILE="offene_ports.txt"

# Check if file exists
if [[ ! -f $PORT_FILE ]]; then
    echo "Datei $PORT_FILE existiert nicht."
    exit 1
fi

# UFW-Befehle in ufw_commands.sh schreiben und Kopfzeile hinzufügen
{
  echo "#!/bin/bash"
  
  while IFS= read -r port
  do
      echo "sudo ufw allow $port/tcp"
      echo "sudo ufw allow $port/udp"
  done < "$PORT_FILE"
} > ufw_commands.sh

# Skript ausführbar machen
chmod +x ufw_commands.sh

echo "UFW-Befehle wurden in ufw_commands.sh gespeichert und die Kopfzeile wurde hinzugefügt."
---

Zum Schluss müsst ihr noch Eure Firewall starten:
sudo ufw enable

Hier sind die wichtigsten UFW Befehle zur Verwaltung Deiner Firewall:
sudo ufw enable: Aktiviert die Firewall
sudo ufw disable: Deaktiviert die Firewall
sudo ufw default ARG: Setzt die Standardrichtlinie
sudo ufw logging LEVEL: Setzt das Logging auf LEVEL
sudo ufw allow ARGS: Fügt eine Erlaubnisregel hinzu
sudo ufw deny ARGS: Fügt eine Ablehnungsregel hinzu
sudo ufw reject ARGS: Fügt eine Zurückweisungsregel hinzu
sudo ufw limit ARGS: Fügt eine Begrenzungsregel hinzu
sudo ufw delete RULE|NUM: Löscht REGEL oder NUMMER
sudo ufw insert NUM RULE: Fügt REGEL an Stelle NUMMER ein
sudo ufw prepend RULE: Fügt REGEL am Anfang ein
sudo ufw route RULE: Fügt eine Routenzuweisungsregel hinzu
sudo ufw route delete RULE|NUM: Löscht Routenzuweisungsregel oder NUMMER
sudo ufw route insert NUM RULE: Fügt Routenzuweisungsregel an Stelle NUMMER ein
sudo ufw reload: Lädt die Firewall neu
sudo ufw reset: Setzt die Firewall zurück
sudo ufw status: Zeigt den Firewall-Status an
sudo ufw status numbered: Zeigt den Firewall-Status als nummerierte Liste der REGELN an
sudo ufw status verbose: Zeigt den ausführlichen Firewall-Status an
sudo ufw show ARG: Zeigt den Firewall-Bericht
sudo ufw version: Zeigt Versionsinformationen an

Anwendungsprofil-Befehle:
sudo ufw app list: Listet Anwendungsprofile auf
sudo ufw app info PROFILE: Zeigt Informationen zu PROFILE an
sudo ufw app update PROFILE: Aktualisiert PROFILE
sudo ufw app default ARG: Setzt die Standard-Anwendungsrichtlinie
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.



[-] The following 1 user says Thank You to Manfred Aabye for this post:
  • Bogus Curry
Zitieren
#2
Um es gleich vorweg zu nehmen, ich bin ein grosser Fan der ufw und finde jeden Beitrag gut, der dazu motiviert dieses Tool zu verwenden.

Bei der Verwendung dieses Scripts sehe ich allerdings auch Probleme, denn Tools wie ss (oder netstat) zeigen nicht die tatsächlich offenen Ports, sondern Ports die von einem gerade laufenen Programm abgehört werden. Dabei werden auch Ports gelistet die an die interne lokale Adresse gebunden sind und eigentlich gar nicht nach aussen geöffnet werden müssen.

Ich persönlich bin der Meinung, dass man wissen sollte, welche Ports von welcher Anwendung benötigt werden. Vorausgesetzt, dass alle Systeme laufen, kann das mit dem Befehl 'ss -tulp' oder 'ss -tulpn' (Port Nummern statt Namen) abgerufen werden. Ein leicht abgeändertes Besipiel von einem Raspberry Pi der hinter einem Home-Router mit DHCP-Server steht:

Code:
Netid  State  Local Addr:Port         Process                          
udp    UNCONN    0.0.0.0:bootpc        users:(("dhcpcd",pid=971,fd=10))
udp    UNCONN    0.0.0.0:9000          users:(("dotnet",pid=4578,fd=257
udp    UNCONN          *:https         users:(("caddy",pid=972,fd=9))  
udp    UNCONN          *:dhcpv6-client users:(("dhcpcd",pid=971,fd=16))
tcp    LISTEN  127.0.0.1:mysql         users:(("mariadbd",pid=804,fd=19
tcp    LISTEN    0.0.0.0:9000          users:(("dotnet",pid=4578,fd=166
tcp    LISTEN    0.0.0.0:ssh           users:(("sshd",pid=760,fd=3))  
tcp    LISTEN  127.0.0.1:2019          users:(("caddy",pid=972,fd=3))  
tcp    LISTEN  127.0.0.1:45271         users:(("containerd",pid=731,fd=
tcp    LISTEN          *:http          users:(("caddy",pid=972,fd=10))
tcp    LISTEN          *:https         users:(("caddy",pid=972,fd=8))  
tcp    LISTEN       [::]:ssh           users:(("sshd",pid=760,fd=4))
Damit wird ersichtlich, von welcher Anwendung welche Ports benutzt werden (wegen der Übersichtlichkeit habe ich Im Beispiel die Spalten Recv-Q, Send-Q und Peer-Address : Port entfernt).

Die Anbindung des Ports an die Adresse 0.0.0.0 steht unabhängig von der tatsächlichen IP-Adresse für alles was von aussen über IPv4 an den Rechner adressiert wird. [::] gilt entsprechend für IPv6.

127.0.0.1 gilt für Ports die an die interne Adresse (localhost) gebunden sind und somit von aussen nicht zugänglich sein müssen (und somit auch nicht dürfen). Ein * gilt für alle Adressen, egal ob intern oder extern, IPv4 oder IPv6.

Im Beispiel ist der Port 9000 für udp und tcp interessant. Er gehört zum Prozess dotnet. Es sollte allen Betreiber*innen eines OpenSim Servers klar sein, dass es sich damit um OpenSimulator handeln könnte, das mit 'dotnet OpenSim.dll' gestartet wurde.

Damit in Verbinung steht mariadb das an die interne Adresse gebunden ist und im konkreten Fall von der OpenSim benutzt wird. Wenn falsch konfiguriert, kann der Port auch an die externe Adresse gebunden werden und das möchten wir natürlich nicht. Deshalb wollen wir diesen Port auch niemals nach aussen hin öffnen.

Ähnliches gilt für den Prozess containerd, der zu Docker gehört, sowie den Port 2019 von caddy.

Caddy ist ein Web Server, der hier auf allen Schnittstellen an den TCP Ports http (80) und https (443) hört. Da Caddy auch DNS über https unterstützt muss hier der https Port nach aussen hin geöffnet werden. Das kann man der Dokumentation von Caddy entnehmen. Der Port 2019 hingegegen, darf niemals nach aussen hin zugänglich sein, weil darüber über ein API die gesamte Konfiguration zugänglich und somit veränderbar ist.

Da ich mich auf desem Pi von aussen nur über SSH einlogge muss auch dieser Port geöffnet sein. Da ssh-Login-Versuche von aussen aber extrem häufig stattfinden verwende ich auf all meinen Systemen eine andere Port Nummer. Das bedeutet nicht, dass mein System deswegen sicherer ist, aber es hält mir die Logs wesentlich sauberer.

Da bleiben noch die offenen Ports vom Prozess dhcpcd, der auf jedem Raspberry Pi vorinstelliert ist und den es in der Regel auch braucht. Er dient dazu beim Starten von einem DHCP Server (in der Regel vom Router) eine IP Adresse im LAN oder WLAN zu erhalten. Hmmm... muss dieser Port jetzt offen sein oder nicht? Da noch andere Komponenten mithineinspielen ist die Frage gar nicht so einfach zu beantworten. Bevor ich den Port aus den allow-Rules entfernte musste ich mir zuerst eine Notfallstratgeie überlegen, was zu tun ist, falls es nicht funktioniert. Es hat sich dann herausgestellt, dass sich in meinem Fall der Pi beim Starten die IP vom Router holt und in der Tat keine Verbindung von aussen her nötig ist. Ohne den dhcpcd Prozess, hätte mein Pi aber keine im LAN/WAN gültige IP Adresse und er wäre nicht erreichbar.

Der langen Rede kurzer Sinn: ich benötige zur Konfiguration meiner Firewall nur folgende vier Befehle:
Code:
sudo ufw allow ssh
sudo ufw allow http/tcp
sudo ufw allow https
sudo ufw allow 9000

Dem gegenüber steht das Resultat des Scripts von Manni:
Code:
#!/bin/bash
sudo ufw allow 68/tcp
sudo ufw allow 68/udp
sudo ufw allow 80/tcp
sudo ufw allow 80/udp
sudo ufw allow 443/tcp
sudo ufw allow 443/udp
sudo ufw allow 546/tcp
sudo ufw allow 546/udp
sudo ufw allow 922/tcp
sudo ufw allow 922/udp
sudo ufw allow 2019/tcp
sudo ufw allow 2019/udp
sudo ufw allow 3306/tcp
sudo ufw allow 3306/udp
sudo ufw allow 9000/tcp
sudo ufw allow 9000/udp
sudo ufw allow 45271/tcp
sudo ufw allow 45271/udp
Auch wenn damit soweit nichts passieren kann, würde mir das nicht gefallen.

Meine Devise: alles dicht machen und nur öffnen, was es unbedingt braucht! Damit behalte ich auch den Überblick.

P.S. Ja, es kann schon mal passieren, dass man sich selber aussperrt. Nach dem 2. Mal passiert es seltener.
[-] The following 2 users say Thank You to Pius Noel for this post:
  • Bogus Curry, Manfred Aabye
Zitieren
#3
nur eine firewall eizurichten ist reichlich blauäugig, jeder sollte mal auf seinem server

Code:
grep "Failed" /var/log/auth.log

ausführen. es dürfte erschreckend sein. ohne fail2ban wird die ausgabe des befehls schnell sehr unübersichtlich. im übrigen ist ein portscan mit

Code:
sudo nmap -Pn -sS -sV --version-all --reason -v -A -O --osscan-guess -p0-65535 IP-ADRESSE


zu empfehlen.
[-] The following 2 users say Thank You to nihal for this post:
  • Manfred Aabye, Pius Noel
Zitieren
#4
Ubuntu Server Absicherung – Eine Einfache Anleitung für Anfänger

Die Absicherung eines Servers ist entscheidend, um unbefugte Zugriffe und Angriffe zu verhindern. Eine gute Firewall, sichere Anmeldeoptionen und die Konfiguration von SSH sind nur einige der Maßnahmen, die dir helfen, deinen Ubuntu-Server sicherer zu machen.

1. Installiere und Aktiviere UFW (Uncomplicated Firewall)

Eine der einfachsten Möglichkeiten, deinen Server zu sichern, ist die Verwendung einer Firewall. Die UFW ist eine benutzerfreundliche Möglichkeit, eine Firewall zu konfigurieren und zu verwalten.

Schritt 1: Installiere UFW
Öffne dein Terminal und gebe folgenden Befehl ein, um sicherzustellen, dass UFW auf deinem Server installiert ist:

sudo apt-get update
sudo apt-get install ufw

Schritt 2: Aktiviere die Firewall
Standardmäßig wird die Firewall nach der Installation deaktiviert. Um sie zu aktivieren, gebe den folgenden Befehl ein:

sudo ufw enable

Dies blockiert alle eingehenden Verbindungen, es sei denn, du gibst explizit an, welche Verbindungen erlaubt werden sollen.

Schritt 3: Erlaube den SSH-Zugang
Wenn du per SSH auf deinen Server zugreifen möchtest (was normalerweise der Fall ist), musst du sicherstellen, dass SSH-Verbindungen zugelassen werden:

sudo ufw allow ssh

Alternativ kannst du den spezifischen Port angeben (Standardport ist 22), aber dies wird später in diesem Tutorial geändert.

Schritt 4: Überprüfe den Status der Firewall
Um zu prüfen, ob die Firewall aktiv ist und welche Regeln momentan angewendet werden, kannst du folgendes eingeben:

sudo ufw status


2. Ändere den Standard-SSH-Port für zusätzliche Sicherheit

Eine einfache, aber sehr effektive Methode zur Verbesserung der Sicherheit ist das Ändern des SSH-Ports. Der Standard-SSH-Port (Port 22) ist weithin bekannt und ein Ziel für viele Angreifer. Das Ändern des Ports kann potenzielle Angreifer abschrecken.

Schritt 1: Ändere den SSH-Port
Öffne die SSH-Konfigurationsdatei mit einem Texteditor:

sudo nano /etc/ssh/sshd_config

Suche nach der Zeile `Port 22` und ändere den Port auf eine Zahl zwischen 30000 und 65535, zum Beispiel:

Port 34567

Schritt 2: Firewall anpassen
Nachdem du den SSH-Port geändert hast, musst du sicherstellen, dass der neue Port in der UFW-Firewall erlaubt ist. Zum Beispiel, wenn du Port `34567` gewählt hast, gib folgenden Befehl ein:

sudo ufw allow 34567/tcp

Den Standard-Port 22 kannst du dann blockieren, um unnötige Verbindungen zu verhindern:

sudo ufw deny 22/tcp

Schritt 3: SSH-Dienst neu starten
Damit die Änderungen wirksam werden, musst du den SSH-Dienst neu starten:

sudo systemctl restart ssh

Jetzt wird der SSH-Zugang nur noch über den neuen Port ermöglicht. Wenn du dich mit deinem Server verbinden möchtest, musst du beim SSH-Befehl den neuen Port angeben:

ssh -p 34567 username@server_ip


3. Verwende SSH-Schlüssel anstelle von Passwörtern

Passwörter sind oft anfällig für Brute-Force-Angriffe. Eine sichere Alternative sind SSH-Schlüssel , die viel schwieriger zu erraten oder zu knacken sind.

Schritt 1: SSH-Schlüssel erzeugen
Erzeuge ein SSH-Schlüsselpaar auf deinem lokalen Rechner (deinem PC) mit folgendem Befehl:

ssh-keygen

Drücke `Enter`, um den Standard-Speicherort zu wählen. Du kannst auch ein Passwort für zusätzlichen Schutz setzen.

Schritt 2: Kopiere den öffentlichen Schlüssel auf deinen Server
Übertrage deinen öffentlichen Schlüssel auf den Ubuntu-Server:

ssh-copy-id -p 34567 username@server_ip

Gib dein Passwort ein, wenn du dazu aufgefordert wirst.

Schritt 3: Deaktiviere die Passwort-Authentifizierung
Um sicherzustellen, dass nur Schlüssel-basierte Authentifizierung verwendet wird, öffne die SSH-Konfigurationsdatei erneut:

sudo nano /etc/ssh/sshd_config

Stelle sicher, dass die folgenden Zeilen auf "no" gesetzt sind:

PasswordAuthentication no
ChallengeResponseAuthentication no

Schritt 4: SSH-Dienst neu starten
Starte den SSH-Dienst neu, damit die Änderungen wirksam werden:

sudo systemctl restart ssh


4. Aktualisiere regelmäßig dein System

Sicherheitslücken werden ständig entdeckt, daher ist es wichtig, dass dein Ubuntu-System immer auf dem neuesten Stand bleibt.

Schritt 1: Automatische Sicherheitsupdates aktivieren
Du kannst sicherstellen, dass Sicherheitsupdates automatisch installiert werden, indem du folgendes tippst:

sudo apt-get install unattended-upgrades

Schritt 2: Manuelles Update durchführen
Um sicherzustellen, dass dein System alle verfügbaren Updates erhält, führe regelmäßig folgende Befehle aus:

sudo apt-get update
sudo apt-get upgrade


5. Verwende Fail2Ban zur Abwehr von Brute-Force-Angriffen

Fail2Ban ist ein Programm, das automatisch IP-Adressen sperrt, die versuchen, sich wiederholt mit falschen Anmeldeversuchen in dein System einzuloggen.

Schritt 1: Installiere Fail2Ban
Installiere Fail2Ban auf deinem Server:

sudo apt-get install fail2ban

Schritt 2: Starte und aktiviere Fail2Ban
Starten und aktivieren den Fail2Ban-Dienst:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Schritt 3: Überwache Fail2Ban
Um zu sehen, ob Fail2Ban Angreifer blockiert hat, kannst du folgendes eingeben:

sudo fail2ban-client status


Zusammenfassung der wichtigsten Maßnahmen

1. Installiere und aktiviere UFW , um nur erlaubte Verbindungen zu deinem Server zu lassen.
2. Ändere den SSH-Port von 22 auf einen zufälligen Port zwischen 30000 und 65535, um Brute-Force-Angriffe zu erschweren.
3. Verwende SSH-Schlüssel anstelle von Passwörtern, um eine sicherere Authentifizierung zu gewährleisten.
4. Aktualisiere regelmäßig dein System, um immer die neuesten Sicherheitsupdates zu erhalten.
5. Installiere und aktiviere Fail2Ban , um Brute-Force-Angriffe zu verhindern.


Mit diesen grundlegenden Schritten kannst du deinen Ubuntu-Server gut absichern.
Natürlich gibt es noch viele weitere Möglichkeiten, die Sicherheit zu erhöhen, aber dies sind die wichtigsten,
die dir helfen sollten, viele der gängigen Angriffe zu verhindern.
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.



[-] The following 3 users say Thank You to Manfred Aabye for this post:
  • Bogus Curry, Mareta Dagostino, Pius Noel
Zitieren
#5
# ? 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
PHP-Code:
#!/bin/bash

# Funktion zur Prüfung, ob UFW installiert ist
function check_ufw_installed {
    if ! 
command -v ufw &> /dev/nullthen
        
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 [[ -"$SSH_PORT]]; then
        SSH_PORT
=22
    fi

    sudo sed 
-"s/^#Port 22/Port $SSH_PORT/" /etc/ssh/sshd_config
    sudo sed 
-"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 -'s/^#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
    sudo sed 
-'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 -~/.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 -----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!" 


Angehängte Dateien
.zip   osmsafty.zip (Größe: 2,29 KB / Downloads: 4)
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.



[-] The following 3 users say Thank You to Manfred Aabye for this post:
  • Bogus Curry, Dorena Verne, Pius Noel
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste