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:
Ändern Sie die Benutzer-Shell in die eingeschränkte Bash:
chsh -s /bin/rbash <username>
Erstellen Sie ein Bin-Verzeichnis unter dem Home-Verzeichnis des Benutzers:
sudo mkdir /home/<username>/bin sudo chmod 755 /home/<username>/bin
Ändern Sie den Standardpfad des Benutzers in dieses Bin-Verzeichnis:
echo "PATH=$HOME/bin" >> /home/<username>/.bashrc echo "export PATH >> /home/<username>/.bashrc
Erstellen Sie symbolische Links für die Befehle, die der Benutzer benötigt:
sudo ln -s /bin/<command> /home/<username>/bin/
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
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 /bin
verwenden , 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/su
su
Sehendiese Antwort für mehr Details.
Antwort2
Netzwerktraffic
Sie könneniptables
So 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/