SSH:n käyttäminen UNIX-liitännässä sudon sijaan suid-tiedostojen poistamiseksi

Timothee Ravier Red Hatista, Fedora Silverblue- ja Fedora Kinoite -projektien ylläpitäjä, ehdotti tapaa välttää sudo-apuohjelman käyttöä, joka käyttää suid-bittiä oikeuksien laajentamiseen. Sudon sijasta tavallisille käyttäjille, jotka suorittavat komentoja pääkäyttäjän oikeuksin, suositellaan käytettäväksi ssh-apuohjelmaa paikallisella yhteydellä samaan järjestelmään UNIX-pistorasian kautta ja SSH-avaimiin perustuvien käyttöoikeuksien tarkistamiseen.

Kun käytät ssh:ta sudon sijaan, voit päästä eroon järjestelmästä suid-ohjelmista ja mahdollistaa etuoikeutettujen komentojen suorittamisen kontineristyskomponentteja käyttävien jakeluiden, kuten Fedora Silverblue, Fedora Kinoite, Fedora Sericea ja Fedora Onyx, isäntäympäristössä. Pääsyn rajoittamiseksi voidaan käyttää lisäksi valtuutuksen vahvistusta USB-tunnuksella (esimerkiksi Yubikey).

Esimerkki OpenSSH-palvelinkomponenttien määrittämisestä käytettäväksi paikallisen Unix-pistorasian kautta (erillinen sshd-ilmentymä käynnistetään omalla asetustiedostollaan):

/etc/systemd/system/sshd-unix.socket: [Unit] Description=OpenSSH Server Unix Socket Documentation=man:sshd(8) man:sshd_config(5) [Socket] ListenStream=/run/sshd.sock Accept=yes [Asenna] WantedBy=sockets.target

/ Etc / systemd / järjestelmä /[sähköposti suojattu]: [Yksikkö] Kuvaus=OpenSSH yhteyskohtainen palvelimen daemon (Unix-liitäntä) Documentation=man:sshd(8) man:sshd_config(5) Wants=sshd-keygen.target After=sshd-keygen.target [Palvelu] ExecStart=- /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=socket

/etc/ssh/sshd_config_unix: # Jättää vain avaintodennusta PermitRootLogin block-password PasswordAuthentication ei PermitEmptyPasswords ei GSSAPIAuthentication no # rajoittaa pääsyä valittuihin käyttäjiin AllowUsers root adminusername # Jättää vain .sshoutakeysauthorized_keysshsa le .ssh /authorized_ keys # enable sftp Subsystem sftp /usr/libexec/openssh/sftp-server

Aktivoi ja käynnistä systemd-yksikkö: sudo systemctl daemon-reload sudo systemctl enable —nyt sshd-unix.socket

Lisää SSH-avain kansioon /root/.ssh/authorized_keys

SSH-asiakkaan asetukset.

Asenna socat-apuohjelma: sudo dnf install socat

Täydennämme /.ssh/config-tiedostoa määrittämällä socat välityspalvelimeksi UNIX-pistokkeen kautta: Host host.local Käyttäjän root # Käytä /run/host/run sijaan /run sijasta työskennelläksesi säilöistä ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # SSH-avaimen polku IdentityFile ~/.ssh/keys/localroot # Ota TTY-tuki käyttöön interaktiiviselle kuorelle RequestTTY kyllä ​​# Poista tarpeeton tulos LogLevel QUIET

Nykyisessä muodossaan käyttäjän adminusername voi nyt suorittaa komentoja root-käyttäjänä ilman salasanaa. Tarkistetaan toimintoa: $ ssh host.local [root ~]#

Luomme bashissa sudohost-aliaksen suorittamaan "ssh host.local", samalla tavalla kuin sudo: sudohost() { if [[ ${#} -eq 0 ]]; sitten ssh host.local "cd \"${PWD}\"; exec \"${SHELL}\" --login" else ssh host.local "cd \"${PWD}\"; suorittaa \»${@}\»» fi }

Tarkista: $ sudohost id uid=0(juuri) gid=0(juuri)ryhmät=0(juuri)

Lisäämme tunnistetiedot ja otamme käyttöön kaksivaiheisen todennuksen, mikä sallii pääkäyttäjän pääsyn vain, kun Yubikey USB-tunnus on asetettu.

Tarkistamme, mitä algoritmeja olemassa oleva Yubikey tukee: lsusb -v 2>/dev/null | grep -A2 Yubico | grep "bcdDevice" | awk '{print $2}'

Jos tulos on 5.2.3 tai uudempi, käytä ed25519-sk avaimia luodessasi, muussa tapauksessa ecdsa-sk: ssh-keygen -t ed25519-sk tai ssh-keygen -t ecdsa-sk

Lisää julkisen avaimen kansioon /root/.ssh/authorized_keys

Lisää avaintyypin sidos sshd-kokoonpanoon: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes [sähköposti suojattu],[sähköposti suojattu]

Rajoitamme pääsyn Unix-liitäntään vain sellaiselle käyttäjälle, jolla voi olla korotettuja oikeuksia (esimerkissämme adminusername). Lisää tiedostoon /etc/systemd/system/sshd-unix.socket: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Lähde: opennet.ru

Lisää kommentti