Notkun SSH yfir UNIX fals í stað sudo til að losna við suid skrár

Timothee Ravier frá Red Hat, umsjónarmaður Fedora Silverblue og Fedora Kinoite verkefnanna, lagði til leið til að forðast að nota sudo tólið, sem notar suid bitann til að auka forréttindi. Í stað sudo, fyrir venjulegan notanda til að framkvæma skipanir með rótarréttindum, er lagt til að nota ssh tólið með staðbundinni tengingu við sama kerfi í gegnum UNIX fals og staðfestingu á heimildum byggðar á SSH lyklum.

Notkun ssh í stað sudo gerir þér kleift að losna við suid forrit á kerfinu og gera kleift að framkvæma forréttindaskipanir í hýsilumhverfi dreifinga sem nota ílátaeinangrunaríhluti, eins og Fedora Silverblue, Fedora Kinoite, Fedora Sericea og Fedora Onyx. Til að takmarka aðgang er einnig hægt að nota staðfestingu á heimild með USB-táki (til dæmis Yubikey).

Dæmi um að stilla OpenSSH miðlara íhluti fyrir aðgang í gegnum staðbundna Unix fals (sérstakt sshd tilvik verður sett af stað með eigin stillingarskrá):

/etc/systemd/system/sshd-unix.socket: [Eining] Lýsing=OpenSSH Server Unix Socket Documentation=man:sshd(8) man:sshd_config(5) [Socket] ListenStream=/run/sshd.sock Samþykkja=já [Setja upp] WantedBy=sockets.target

/ etc / systemd / system /[netvarið]: [Eining] Lýsing=OpenSSH fyrir hverja tengingu miðlara (Unix fals) Documentation=man:sshd(8) man:sshd_config(5) Wants=sshd-keygen.target After=sshd-keygen.target [Þjónusta] ExecStart=- /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=socket

/etc/ssh/sshd_config_unix: # Skilur aðeins eftir lykilauðkenningu PermitRootLogin bannað-lykilorð LykilorðAuthentication no PermitEmptyPasswords engin GSSAPIAautentication no # takmarkar aðgang að völdum notendum. Leyfa notendum rót adminusername # Skilur aðeins eftir notkun .ssheysauthorized/Fithorizedkeys/. .ssh /authorized_ lyklar # virkja sftp undirkerfi sftp /usr/libexec/openssh/sftp-þjónn

Virkjaðu og ræstu systemd eininguna: sudo systemctl daemon-reload sudo systemctl enable —nú sshd-unix.socket

Bættu SSH lyklinum þínum við /root/.ssh/authorized_keys

Að setja upp SSH biðlarann.

Settu upp socat tólið: sudo dnf settu upp socat

Við bætum við /.ssh/config með því að tilgreina socat sem proxy fyrir aðgang í gegnum UNIX fals: Host host.local Notandarót # Notaðu /run/host/run í stað /run til að vinna úr gámum ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # Slóð að SSH lykilnum IdentityFile ~/.ssh/keys/localroot # Virkja TTY stuðning fyrir gagnvirku skelina RequestTTY já # Fjarlægðu óþarfa úttak LogLevel QUIET

Í núverandi formi mun notandinn adminusername nú geta framkvæmt skipanir sem rót án þess að slá inn lykilorð. Athugar aðgerðina: $ ssh host.local [root ~]#

Við búum til sudohost samnefni í bash til að keyra “ssh host.local”, svipað og sudo: sudohost() { if [[ ${#} -eq 0 ]]; þá ssh host.local "cd \"${PWD}\"; exec \"${SHELL}\" --login" else ssh host.local "cd \"${PWD}\"; exec \»${@}\»» fi }

Athugaðu: $ sudohost id uid=0(rót) gid=0(rót) hópar=0(rót)

Við bætum við skilríkjum og virkum tvíþætta auðkenningu, sem leyfum aðeins aðgang að rótum þegar Yubikey USB tákn er sett í.

Við athugum hvaða reiknirit eru studd af núverandi Yubikey: lsusb -v 2>/dev/null | grep -A2 Yubico | grep "bcdDevice" | awk '{prenta $2}'

Ef úttakið er 5.2.3 eða hærra, notaðu ed25519-sk þegar þú býrð til lykla, annars notaðu ecdsa-sk: ssh-keygen -t ed25519-sk eða ssh-keygen -t ecdsa-sk

Bætir almenningslyklinum við /root/.ssh/authorized_keys

Bættu lykiltegundarbindingu við sshd stillinguna: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes [netvarið],[netvarið]

Við takmörkum aðgang að Unix falsinu við aðeins notandann sem getur haft réttindi aukin (í okkar dæmi, adminusername). Í /etc/systemd/system/sshd-unix.socket bæta við: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Heimild: opennet.ru

Bæta við athugasemd