diff --git a/Linux/SSH/README.md b/Linux/SSH/README.md new file mode 100644 index 0000000..9501658 --- /dev/null +++ b/Linux/SSH/README.md @@ -0,0 +1,137 @@ +# Erstellen einer sicheren SSH Anmeldung + +```bash +#!/bin/bash + +SSH_CONFIG_DIR="/etc/ssh/sshd_config.d" +SSH_MAIN_CONFIG="/etc/ssh/sshd_config" +SSH_CONFIG_FILE="$SSH_CONFIG_DIR/secure.conf" + +# Überprüfe und installiere sudo, falls nicht vorhanden +if ! command -v sudo &> /dev/null; then + echo "sudo ist nicht installiert. Versuche, sudo zu installieren..." + + if command -v apt &> /dev/null; then + apt update && apt install -y sudo + elif command -v dnf &> /dev/null; then + dnf install -y sudo + elif command -v apk &> /dev/null; then + apk add sudo + else + echo "Nicht unterstütztes System. Bitte sudo manuell installieren." + exit 1 + fi +else + echo "sudo ist bereits installiert." +fi + +# Installiere OpenSSH-Server, falls nicht vorhanden +if ! command -v sshd &> /dev/null; then + echo "OpenSSH-Server wird installiert..." + + if command -v apt &> /dev/null; then + sudo apt update && sudo apt install -y openssh-server + elif command -v dnf &> /dev/null; then + sudo dnf install -y openssh-server + elif command -v apk &> /dev/null; then + sudo apk add openssh + else + echo "Nicht unterstütztes System. Bitte OpenSSH manuell installieren." + exit 1 + fi +else + echo "OpenSSH-Server ist bereits installiert." +fi + +# SSHD-Konfigurationsverzeichnis sicherstellen und alte Konfigs löschen +echo "Lösche bestehende Konfigurationen in $SSH_CONFIG_DIR ..." +sudo mkdir -p $SSH_CONFIG_DIR +sudo rm -f $SSH_CONFIG_DIR/* + +# Haupt-sshd_config aufräumen und Include setzen +echo "Passe die Haupt-sshd_config an..." + +sudo tee $SSH_MAIN_CONFIG > /dev/null </dev/null; then + echo "Benutzer $user existiert." + VALID_USERS+="$user " + else + read -p "Benutzer $user existiert nicht. Soll dieser erstellt werden? (y/n): " CREATE_USER + if [ "$CREATE_USER" == "y" ]; then + sudo adduser $user + sudo passwd $user + sudo usermod -aG wheel $user + echo "Benutzer $user wurde erstellt und zur sudo-Gruppe hinzugefügt." + + # SSH-Verzeichnis und authorized_keys erstellen + sudo mkdir -p /home/$user/.ssh + sudo touch /home/$user/.ssh/authorized_keys + sudo chown -R $user:$user /home/$user/.ssh + sudo chmod 700 /home/$user/.ssh + sudo chmod 600 /home/$user/.ssh/authorized_keys + + read -p "Möchtest du einen SSH Public Key für $user hinzufügen? (y/n): " ADD_KEY + if [ "$ADD_KEY" == "y" ]; then + read -p "Füge den SSH Public Key hier ein: " SSH_KEY + echo "$SSH_KEY" | sudo tee -a /home/$user/.ssh/authorized_keys + fi + VALID_USERS+="$user " + fi + fi +done + +# SSH-Konfigurationsdatei erstellen +echo "Erstelle SSH-Konfigurationsdatei..." + +sudo tee $SSH_CONFIG_FILE > /dev/null <