Bastion-Server: Erstellen Sie Benutzer, die nur Zugriff auf den Zielserver per SSH haben.

Bastion-Server: Erstellen Sie Benutzer, die nur Zugriff auf den Zielserver per SSH haben.

Wir haben einen Bastion-Server. Wir sollten einige Benutzer haben, die per SSH vom lokalen Server über Bastion nach C unter Verwendung von ProxyCammand und privatem Schlüssel eine Verbindung herstellen müssen.

Ich möchte Benutzer und Gruppen erstellen, die NUR Zugriff auf SSH vom Bastion-Host haben sollen (dies geschieht über ProxyCommand). Sie müssen auch keine Dateien lesen.

Wie kann ich das machen? Gibt es eine Möglichkeit?

Wenn das oben genannte nicht möglich ist, besteht die andere Alternative darin, nur Lesezugriff auf zulässige Dateien zu gewähren, mit Ausnahme von eingeschränkten Dateien (standardmäßig vom Betriebssystem festgelegt), die nur für ihre Gruppen Lesezugriff haben.

Antwort1

So gestatten Sie einem bestimmten Benutzer nur die Verwendung bestimmter Befehle:

  1. Ändern Sie die Benutzer-Shell in die eingeschränkte Bash:

    chsh -s /bin/rbash <username>
    
  2. Erstellen Sie ein Bin-Verzeichnis unter dem Home-Verzeichnis des Benutzers:

    sudo mkdir /home/<username>/bin
    sudo chmod 755 /home/<username>/bin
    
  3. Ändern Sie den Standardpfad des Benutzers in dieses Bin-Verzeichnis:

    echo "PATH=$HOME/bin" >> /home/<username>/.bashrc
    echo "export PATH >> /home/<username>/.bashrc
    
  4. Erstellen Sie symbolische Links für die Befehle, die der Benutzer benötigt:

    sudo ln -s /bin/<command> /home/<username>/bin/
    
  5. Verhindern Sie, dass der Benutzer Änderungen vornimmt ~/.bashrc, indem Sie es unveränderlich machen:

    chattr +i /home/<username>/.bashrc
    

Auf diese Weise erstellen Sie nur symbolische Links zu den Befehlen, die Sie zulassen möchten.

Um dasselbe für mehr als einen Benutzer zu tun, können Sie ein Bash-Skript erstellen, das diese Befehle enthält und den Namen des Benutzers als Parameter hat.

BEARBEITEN: In CentOS ist rbash möglicherweise nicht direkt implementiert und es muss möglicherweise ein symbolischer Link erstellt werden. Ähnliches gilt für einige andere Versionen von GNU/Linux wie Red Hat:

# cd /bin
# ln -s bash rbash

Quelle

Bearbeitung2:

Wenn rbash zu restriktiv ist, kann auch die normale Bash verwendet werden. Das ist allerdings mit mehr Arbeit verbunden: Sie müssen die Ausführung fast aller Befehle untersagen, indem Sie for und andere Befehle /binverwenden , die Sie nicht verwenden möchten, sodass sie für den Benutzer schreibgeschützt und insbesondere nicht ausführbar sind.setfacl -m u:user1:r /bin/susu

Sehendiese Antwort für mehr Details.

Antwort2

Netzwerktraffic

Sie könneniptablesSo begrenzen Sie den Netzwerkverkehr:

# Allow port 22 traffic to a specific IP/hostname for a specific user
iptables -A OUTPUT -p tcp --dport 22 -d allowed_host -m owner --uid-owner username -j ACCEPT 
# Block all other outgoing port 22 (SSH) traffic
iptables -A OUTPUT -p tcp --dport 22 -d 0.0.0.0/0 -j REJECT

Dateisystemzugriff

Um den Dateisystemzugriff einzuschränken, können Sie verwendenDateisystemberechtigungen

Sie müssen auch keine Dateien lesen.

Um sich anmelden zu können, müssen sie einige Dateien lesen können:

  • Das Home-Verzeichnis des Benutzers
  • Die ausführbare Datei und alle Bibliotheken der Benutzer-Shell

Um einem normalen Benutzer den Lesezugriff zu verbieten, können Sie das Flag „Für alle lesbar“ aus einer Datei entfernen, die dem Root gehört, oder das Flag „Für alle ausführbar und für alle lesbar“ aus einem Verzeichnis entfernen, das dem Root gehört:

# chmod o-r secret-file
# ls -l secret-file
-rw-r-----  1 root  root  0 Mar 27 13:23 secret-file

# chmod o-rx secret-dir/
# ls -ld secret-dir/
drwxr-x---  2 root  root  64 Mar 27 13:24 secret-dir/

verwandte Informationen