Root-Anmeldung nur von einer IP-Adresse aus zulassen

14

Ich habe Centos5.

Gibt es eine Möglichkeit, dass ich mich bei meinem VPS-Server mit Root-Benutzer nur von einer bestimmten IP-Adresse aus anmelden kann?

Ich habe gelesen, dass ich privaten Schlüssel verwenden kann, um mich in sshd anzumelden. Das Problem ist jedoch, dass ich SFTP für alle meine Websites verwende und nicht möchte, dass Nicht-IT-Benutzer Schlüssel verwenden, um sich bei SFTP anzumelden.

ODER Gibt es eine Möglichkeit, dass sich nur root mit Schlüsseln in die Shell einloggen kann, für andere hingegen mit dem normalen Passwort


quelle

Antworten:

15

Ein besserer Weg ist jetzt, das Keyword "Match" zu verwenden:

Match Host myworkstation
        PermitRootLogin yes

oder

Match Address 192.168.1.100
        PermitRootLogin yes

Auf diese Weise können Sie PermitRootLogin auf 'no' setzen, sich aber trotzdem von Ihrer Workstation als root anmelden.

Dies kann zum Beispiel auch verwendet werden, um root die Möglichkeit zu geben, Daten zwischen zwei Hosts zu synchronisieren.

dannyw
quelle
Ihr Rsync-Beispiel ist genau der Anwendungsfall, für den ich diese Frage gegoogelt habe. Vielen Dank! ;)
Jan
Beachten Sie, dass dies nur mit dem umgekehrten DNS der Quell-IP-Adresse funktioniert. (zumindest für mich war es der einzige Weg)
mveroone
9

Es ist im Allgemeinen besser, sich zuerst als nicht privilegierter Benutzer anzumelden und dann "su -" oder "sudo" zu verwenden, um Root-Rechte zu erlangen, aber ...

Sie können die IP-Beschränkung für Ihren Schlüssel jederzeit in ~ root / .ssh / authorized_keys einfügen:

from="192.168.1.100" ssh-rsa AAAAh9uif...auwehuf== [email protected]

Dies würde es ssh erlauben, nur den Schlüssel [email protected] ab 192.168.1.100 zu verwenden.

Cakemox
quelle
Einverstanden, obwohl das für Dinge wie sftp, rsync, sshfs komplizierter zu tun ist ...
mveroone
3

Verwenden:

PermitRootLogin ohne Passwort

In / etc / ssh / sshd_config. Jeder Benutzer mit Ausnahme von root darf Kennwortanmeldungen verwenden. Root muss Schlüssel verwenden, um sich anzumelden.

rubiojr
quelle
Funktioniert diese Slution? hast du das versucht
Ich verwende diese Einstellung in jedem Server, den ich pflege. Es verhindert Root-Bruteforce / Dict-Angriffe. unixhelp.ed.ac.uk/CGI/man-cgi?sshd_config+5
rubiojr
Dies scheint jedoch zu brechen git pull: / etc / ssh / ssh_config: Zeile 68: Falsche Konfigurationsoption: allowrootlogin
geoidesic
Auch PermitRootLogin erscheint nicht inman ssh_config
geoidesic 16.07.17
Auch leicht zu überschreiben mitssh -o PreferredAuthentications=password
geoidesic
2

Bearbeiten sshd_config(normalerweise in /etc/ssh) und Hinzufügen oder Ändern der folgenden Anweisungen

  PermitRootLogin yes
  AllowUsers root@thehosttoallow

Starten Sie dann den Daemon neu

  service ssh restart
Ring-Ø
quelle
Ich glaube, wenn das OP verwendet werden soll AllowUsers, muss er alle Benutzer angeben, auf die er Zugriff haben möchte. In Ihrem Beispiel kann sich root nur über ssh authentifizieren.
EEAA
1
Ja, das ist Absicht. Um jeden Benutzer zu erlauben, *@thehosttoallowläßt in der Tat jeden Benutzer in.
Ring Ø
Auch leicht zu überschreiben mitssh -o PreferredAuthentications=password
geoidesic
0

Warum sollten Sie zunächst verhindern, dass Benutzer die Schlüsselauthentifizierung verwenden? Das ergibt für mich keinen Sinn.

Zweitens, erlauben Sie keine root-Anmeldung über ssh. Tu es einfach nicht - es gibt keinen guten Grund dafür. Es widerspricht jeder Best Practice, und das aus gutem Grund. Wenn Sie Berechtigungen zum Lesen / Schreiben bestimmter Dateien erteilen müssen, sollten Sie über die Standardberechtigungen für das Linux-Dateisystem dazu in der Lage sein. Wenn Sie eine differenziertere Zugriffskontrolle benötigen, schauen Sie sich das Linux-ACL-System an.

EEAA
quelle
Was passiert, wenn ich die Root-Anmeldung deaktiviere und keiner der Benutzer Zugriff auf eine Hauptkonfigurationsdatei hat? Dann bin ich gesperrt, da ich mich nicht über root anmelden kann
1
Wenn Sie die root-Anmeldung über ssh deaktivieren, kann sich root weiterhin über die Konsole anmelden. Außerdem haben Sie immer die Möglichkeit, einem normalen Benutzer root-Berechtigungen über sudo zu erteilen. Dies funktioniert nicht für SFTP, aber als Failback für den Fall, dass Sie Probleme beheben müssen, funktioniert es einwandfrei und ist die bevorzugte Methode zum Gewähren von Berechtigungen.
EEAA
1
@ErikA Das Zulassen rootvon einem eindeutigen Host ist nicht unsicher. Es gab einen Trend gegen den rootZugriff über telnetein paar Jahre zurück (besore sshwar üblich), aber das Zulassen von rootVia sshzu nur einem Host sieht nicht so unsicher aus.
Ring Ø
Sicher, es mag vielleicht "sicher" sein, aber ich werde trotzdem argumentieren, dass es eine schlechte Idee ist. Ich sage dies hauptsächlich aufgrund der Tatsache, dass Benutzer, denen ein einfacher Weg zum Root-Zugriff eingeräumt wird, diesen verwenden, anstatt einen sichereren, angemesseneren Weg zum Zugriff zu verwenden (sudo).
EEAA
2
In Anbetracht der Autorenfrage kann man annehmen, dass er administrative Aufgaben durch den rootBenutzer ausführen möchte . rootIn diesem Fall ist es eine sinnvolle Alternative, den direkten Zugriff von nur einem Host aus zuzulassen .
Ring Ø