navigato
Goto Top

SSH auf bestimmte IPs für bestimmte User

Hallo zusammen,

ich möchte auf einem CentOS7 für bestimmte OS-Benutzer den Zugriff per SSH nur auf bestimmte IP's erlauben. Ich habe aber im Moment keine schlaue Idee wie man das umsetzen könnte:

Beispiel:
user1 -> 10.2.3.4 und 20.3.4.9 und 30.4.5.0/24, sonst nichts
user2 -> 50.6.7.8 und 10.2.3.4 , sonst nichts

Ist das überhaupt möglich? Ich habe da an die Firewall gedacht, dass die das evtl. kann, aber ich habe noch keine Möglichkeit gefunden wie ich den User da noch filtern kann.

Danke & Gruß
Navigato


Ergänzung
Bei dem SSH Zugriff geht es um ausgehende Verbindungen.

Content-ID: 359469

Url: https://administrator.de/contentid/359469

Ausgedruckt am: 26.11.2024 um 04:11 Uhr

135051
135051 29.12.2017 aktualisiert um 11:09:48 Uhr
Goto Top
Das kannst du in der sshd_config mit solchen Einträgen definieren
AllowUsers user1@10.2.3.4 user1@20.3.4.9 user1@30.4.5.*
https://linux.die.net/man/5/sshd_config

Gruß @135051
maretz
maretz 29.12.2017 um 11:14:02 Uhr
Goto Top
Ich glaube du machst da grad einen grundlegenden Fehler: Bei jedem Serverdienst ist erst mal der Server für die Authentifizierung zuständig. D.h. wenn du am Client das per Firewall oder sonstwie machst ist das bereits falsch. auf 10.2.3.4 / 30.4.5.0/24 ... darf halt nur der User1 einen Account haben. Lasse User2 sich doch verbinden - ohne gültige Zugangsdaten wird das nix. Wenn der gültige Zugangsdaten auf dem Server hat dann ist es wohl auch legitim das er sich darauf verbindet....

Alternativ kannst du vom Server aus natürlich auch filtern von wo sich jemand verbinden darf.... Alternativ auch mittels "allowusers" bzw. "allowgroups" das ganze einschränken falls du eine zentrale Benutzerverwaltung hast aber nicht willst das jeder auf jeden Server darf. Da kannst du ja dann Gruppen anlegen "allowed_on_server1", "allowed_on_server2",....

Hintergrund des ganzen ist: Was machst du wenn sich mal ne IP vom Server ändert - auf allen Clients die neuen IPs eingeben? Oder wenn der Anwender ein privates Gerät mitbringt (ob erlaubt oder nicht), sich eine VM startet,... Du hast dann eine endlose Arbeitsaufgabe geschaffen für etwas was am Server mit der normalen Benutzerverwaltung schnell erledigt ist.
Navigato
Navigato 29.12.2017 um 11:22:29 Uhr
Goto Top
Ergänzung
Bei dem SSH Zugriff geht es um ausgehende Verbindungen.
135051
135051 29.12.2017 aktualisiert um 12:18:29 Uhr
Goto Top
Zitat von @Navigato:

Ergänzung
Bei dem SSH Zugriff geht es um ausgehende Verbindungen.
iptables -A OUTPUT -d X.X.X.X -p tcp --dport 22 -m owner --uid-owner {USERNAME} -j ACCEPT
iptables -A OUTPUT -o ethX -p tcp --dport 22 -j REJECT
Interface, IP und Username natürlich anpassen
Navigato
Navigato 29.12.2017 um 12:20:53 Uhr
Goto Top
Danke.
Ich habe bisher auf dem System mit firewalld gearbeitet? Wie verhält es sich mit firewalld und iptables auf CentOS, kommen sich die nicht in die Quere??
135051
135051 29.12.2017 aktualisiert um 12:22:23 Uhr
Goto Top
Zitat von @Navigato:

Danke.
Ich habe bisher auf dem System mit firewalld gearbeitet? Wie verhält es sich mit firewalld und iptables auf CentOS, kommen sich die nicht in die Quere??
Entweder oder, das Regelwerk sollte damit eigentlich klar sein, einfach auf deine Firewall umsetzen fertig.
Navigato
Navigato 08.01.2018 aktualisiert um 09:48:06 Uhr
Goto Top
Leider muss ich das Thema nochmal aufgreifen. Das es sich bei meinem OS um das CentOS 7 Linux handelt ist über IPTalbes das firewalld "übergestülpt". Ich finde leider keine Beispiele wie ich die obigen iptables rules auf firewall-cmd umsetzen kann.

Gibt das das firewall-cmd Kommando überhaupt her? Hat jemand Erfahrung damit?