Defnyddio SSH dros soced UNIX yn lle sudo i gael gwared ar ffeiliau sid

Cynigiodd Timothee Ravier o Red Hat, un o gynhalwyr prosiectau Fedora Silverblue a Fedora Kinoite, ffordd i osgoi defnyddio'r cyfleustodau sudo, sy'n defnyddio'r darn suid i gynyddu breintiau. Yn lle sudo, er mwyn i ddefnyddiwr arferol weithredu gorchmynion gyda hawliau gwraidd, cynigir defnyddio'r cyfleustodau ssh gyda chysylltiad lleol â'r un system trwy soced UNIX a gwirio caniatâd yn seiliedig ar allweddi SSH.

Mae defnyddio ssh yn lle sudo yn caniatáu ichi gael gwared ar raglenni sid ar y system a galluogi gweithredu gorchmynion breintiedig yn yr amgylchedd gwesteiwr o ddosbarthiadau sy'n defnyddio cydrannau ynysu cynhwysydd, megis Fedora Silverblue, Fedora Kinoite, Fedora Sericea a Fedora Onyx. Er mwyn cyfyngu ar fynediad, gellir defnyddio cadarnhad awdurdod gan ddefnyddio tocyn USB (er enghraifft, Yubikey).

Enghraifft o ffurfweddu cydrannau gweinydd OpenSSH ar gyfer mynediad trwy soced Unix lleol (bydd enghraifft sshd ar wahân yn cael ei lansio gyda'i ffeil ffurfweddu ei hun):

/etc/systemd/system/sshd-unix.socket: [Unit] Description=Gweinydd OpenSSH Unix Socket Documentation=man:sshd(8) dyn:sshd_config(5) [Soced] ListenStream=/run/sshd.sock Derbyn=ie [Gosod] WantedBy=socedi.target

/ etc / systemd / system /[e-bost wedi'i warchod]: [Unit] Disgrifiad=ellyll gweinydd OpenSSH per-cysylltiad (soced Unix) Documentation=man:sshd(8) dyn:sshd_config(5) Wants=sshd-keygen.target After=sshd-keygen.target [Gwasanaeth] ExecStart= - /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=soced

/etc/ssh/sshd_config_unix: # Yn gadael dilysiad allweddol yn unig PermitRootLogin gwahardd-cyfrinair CyfrinairAuthentication dim PermitEmptyPasswords dim GSSAPIA Dilysu dim # yn cyfyngu mynediad i ddefnyddwyr dethol AllowUsers root adminusername # Yn gadael dim ond y defnydd o .ssh/authorized_keyskeys/authorized_keys/authorized. / bysellau awdurdodedig_ # galluogi sftp Is-system sftp /usr/libexec/openssh/sftp-server

Ysgogi a lansio'r uned systemd: sudo systemctl daemon-reload sudo systemctl galluogi —now sshd-unix.socket

Ychwanegwch eich allwedd SSH i /root/.ssh/authorized_keys

Sefydlu'r cleient SSH.

Gosodwch y cyfleustodau socat: sudo dnf install socat

Rydym yn ategu /.ssh/config trwy nodi socat fel dirprwy ar gyfer mynediad trwy soced UNIX: Host host.local User root # Defnyddiwch /run/host/run yn lle / rhedeg i weithio o gynwysyddion ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # Llwybr at yr allwedd SSH IdentityFile ~/.ssh/keys/localroot # Galluogi cefnogaeth TTY ar gyfer y plisgyn rhyngweithiol RequestTTY oes # Dileu allbwn diangen LogLevel QUIET

Yn ei ffurf bresennol, bydd yr enw defnyddiwr defnyddiwr nawr yn gallu gweithredu gorchmynion fel gwraidd heb nodi cyfrinair. Wrthi'n gwirio'r gweithrediad: $ssh host.local [root ~]#

Rydym yn creu alias sudohost yn bash i redeg “ssh host.local”, tebyg i sudo: sudohost() { os [[ ${#} -eq 0 ]]; yna ssh host.local "cd \"${PWD}\"; exec \"${SHELL}\" --login" arall ssh host.local "cd \"${PWD}\"; exec \»${@}\»» fi }

Gwiriwch: $ sudohost id uid=0(root) gid=0(root) groups=0(root)

Rydym yn ychwanegu tystlythyrau ac yn galluogi dilysu dau ffactor, gan ganiatáu mynediad gwreiddiau dim ond pan fydd tocyn USB Yubikey yn cael ei fewnosod.

Rydym yn gwirio pa algorithmau sy'n cael eu cefnogi gan y Yubikey presennol: lsusb -v 2>/dev/null | grep -A2 Yubico | grep "bcdDevice" | dewis '{argraffu $2}'

Os yw'r allbwn yn 5.2.3 neu fwy, defnyddiwch ed25519-sk wrth gynhyrchu bysellau, fel arall defnyddiwch ecdsa-sk: ssh-keygen -t ed25519-sk neu ssh-keygen -t ecdsa-sk

Yn ychwanegu'r allwedd gyhoeddus i /root/.ssh/authorized_keys

Ychwanegu rhwymiad math allweddol i'r ffurfweddiad sshd: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes [e-bost wedi'i warchod],[e-bost wedi'i warchod]

Rydym yn cyfyngu mynediad i'r soced Unix i'r defnyddiwr yn unig a all gael breintiau dyrchafedig (yn ein enghraifft, enw defnyddiwr). Yn /etc/systemd/system/sshd-unix.socket ychwanegu: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Ffynhonnell: opennet.ru

Ychwanegu sylw