Benotzt SSH iwwer e UNIX Socket anstatt Sudo fir vu suid Dateien lass ze ginn

Den Timothee Ravier vu Red Hat, en Ënnerhalter vun de Fedora Silverblue a Fedora Kinoite Projeten, huet e Wee proposéiert fir de Sudo Utility ze vermeiden, deen de suid Bit benotzt fir Privilegien ze eskaléieren. Amplaz vu Sudo, fir en normale Benotzer fir Kommandoen mat Rootrechter auszeféieren, gëtt proposéiert den ssh Utility mat enger lokaler Verbindung zum selwechte System iwwer eng UNIX Socket ze benotzen an d'Verifizéierung vun de Permissiounen op Basis vun SSH Schlësselen.

Benotzt ssh anstatt sudo erlaabt Iech Süd Programmer um System ze läschen an d'Ausféierung vun privilegiéierten Kommandoen am Host-Ëmfeld vun Verdeelungen z'erméiglechen, déi Containerisolatiounskomponenten benotzen, wéi Fedora Silverblue, Fedora Kinoite, Fedora Sericea a Fedora Onyx. Fir Zougang ze beschränken, kann d'Bestätegung vun der Autoritéit mat engem USB Token (Zum Beispill Yubikey) zousätzlech benotzt ginn.

E Beispill fir d'Konfiguratioun vun OpenSSH Server Komponenten fir Zougang iwwer eng lokal Unix Socket (eng separat sshd Instanz gëtt mat senger eegener Konfiguratiounsdatei gestart):

/etc/systemd/system/sshd-unix.socket: [Eenheet] Beschreiwung=OpenSSH Server Unix Socket Documentation=man:sshd(8) man:sshd_config(5) [Socket] ListenStream=/run/sshd.sock Akzeptéieren=jo [Installéieren] WantedBy=sockets.target

/ etc / systemd / system /[Email geschützt]: [Eenheet] Beschreiwung=OpenSSH pro Connection Server Daemon (Unix Socket) Documentation=man:sshd(8) man:sshd_config(5) Wants=sshd-keygen.target After=sshd-keygen.target [Service] ExecStart=- /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=socket

/etc/ssh/sshd_config_unix: # Verlooss nëmmen Schlësselauthentifikatioun PermitRootLogin verbidden-Passwuert PasswuertAuthentifizéierung kee PermitEmptyPasswords keng GSSAPIAuthentifizéierung nee # limitéiert den Zougang zu ausgewielte Benotzer Erlaabt Benotzer root adminusername # Verlooss nëmmen d'Benotzung vun .ssheysauthorized/2autoriséierten_keysauthorized/. .ssh /authorized_ keys # aktivéieren sftp Subsystem sftp /usr/libexec/openssh/sftp-server

Aktivéiert a lancéiert d'Systemd Eenheet: sudo systemctl daemon-reload sudo systemctl aktivéieren - elo sshd-unix.socket

Füügt Ären SSH Schlëssel op /root/.ssh/authorized_keys

Astellung vum SSH Client.

Installéiert de socat Utility: sudo dnf installéiere socat

Mir ergänzen /.ssh/config andeems Dir socat als Proxy fir Zougang iwwer eng UNIX Socket spezifizéiert: Host host.local Benotzerroot # Benotzt /run/host/run amplaz /run fir aus Container ze schaffen ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # Wee zum SSH-Schlëssel IdentitéitsFile ~/.ssh/keys/localroot # Aktivéiert TTY-Ënnerstëtzung fir déi interaktiv Shell RequestTTY jo # Onnéideg Ausgang LogLevel QUIET erofhuelen

A senger aktueller Form kann de Benotzer Adminusername elo Kommandoen als Root ausféieren ouni e Passwuert anzeginn. Kontrolléiert d'Operatioun: $ ssh host.local [root ~]#

Mir kreéieren e sudohost Alias ​​​​am bash fir "ssh host.local" ze lafen, ähnlech wéi sudo: sudohost () {wann [[ ${#} -eq 0]]; dann ssh host.local "cd \"${PWD}\"; exec \"${SHELL}\" --login" soss ssh host.local "cd \"${PWD}\"; exec \»${@}\»» fi }

Check: $ sudohost id uid=0(root) gid=0(root) group=0(root)

Mir addéieren Umeldungsinformatiounen an aktivéieren zwee-Faktor Authentifikatioun, erlaabt root Zougang nëmmen wann e Yubikey USB Token agebaut ass.

Mir kontrolléieren déi algorithms vun der bestehend Yubikey ënnerstëtzt ginn: lsusb -v 2>/dev/null | grep -A2 Yubico | grep "bcdDevice" | awk '{print $2}'

Wann d'Ausgab 5.2.3 oder méi ass, benotzt ed25519-sk wann Dir Schlësselen generéiert, soss benotzt ecdsa-sk: ssh-keygen -t ed25519-sk oder ssh-keygen -t ecdsa-sk

Füügt den ëffentleche Schlëssel un /root/.ssh/authorized_keys

Füügt eng Schlësseltypverbindung un d'sshd Konfiguratioun: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes [Email geschützt],[Email geschützt]

Mir beschränken den Zougang zum Unix Socket op nëmmen de Benotzer deen Privilegien erhöht kann (an eisem Beispill, Adminusername). An /etc/systemd/system/sshd-unix.socket add: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Source: opennet.ru

Setzt e Commentaire