SSH használata UNIX socketen keresztül sudo helyett a suid fájlok eltávolítására

Timothee Ravier a Red Hattől, a Fedora Silverblue és a Fedora Kinoite projektek karbantartója javasolta a sudo segédprogram használatát, amely a suid bitet használja a jogosultságok kiterjesztésére. A sudo helyett, ha egy normál felhasználó root jogokkal hajthat végre parancsokat, javasoljuk, hogy az ssh segédprogramot használja, helyi kapcsolattal ugyanahhoz a rendszerhez UNIX-aljzaton keresztül, és SSH-kulcsokon keresztül ellenőrizze az engedélyeket.

Az ssh használata a sudo helyett lehetővé teszi, hogy megszabaduljon a suid programoktól a rendszeren, és engedélyezze a privilegizált parancsok végrehajtását a konténerleválasztó összetevőket használó disztribúciók gazdakörnyezetében, mint például a Fedora Silverblue, a Fedora Kinoite, a Fedora Sericea és a Fedora Onyx. A hozzáférés korlátozásához a jogosultság megerősítése USB-token (például Yubikey) használatával is használható.

Példa az OpenSSH kiszolgáló összetevőinek konfigurálására helyi Unix socketen keresztüli eléréshez (egy külön sshd példány indul el saját konfigurációs fájllal):

/etc/systemd/system/sshd-unix.socket: [Egység] Description=OpenSSH Server Unix Socket Documentation=man:sshd(8) man:sshd_config(5) [Socket] ListenStream=/run/sshd.sock Accept=yes [Telepítés] WantedBy=sockets.target

/ Etc / systemd / system /[e-mail védett]: [Unit] Description=OpenSSH kapcsolatonkénti szerver démon (Unix socket) Documentation=man:sshd(8) man:sshd_config(5) Wants=sshd-keygen.target After=sshd-keygen.target [Szolgáltatás] ExecStart=- /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=socket

/etc/ssh/sshd_config_unix: # Csak kulcshitelesítést hagy meg PermitRootLogin block-password PasswordAuthentication nincs PermitEmptyPasswords nincs GSSAPIAuthentication no # korlátozza a hozzáférést a kiválasztott felhasználókhoz AllowUsers root adminusername # Csak a .ssh/Fissauthorized_keysshsauthorized_keyssha/ le .ssh /authorized_ keys # enable sftp alrendszer sftp /usr/libexec/openssh/sftp-server

Aktiválja és indítsa el a rendszeregységet: sudo systemctl daemon-reload sudo systemctl enable – most sshd-unix.socket

Adja hozzá az SSH-kulcsot a /root/.ssh/authorized_keys mappához

Az SSH kliens beállítása.

Telepítse a socat segédprogramot: sudo dnf install socat

Az /.ssh/config fájlt kiegészítjük a socat proxy megadásával UNIX-aljzaton keresztüli hozzáféréshez: Host host.local Felhasználói root # A /run/host/run használata /run helyett a /run helyett a konténerekből való munkához ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # Az SSH kulcs elérési útja IdentityFile ~/.ssh/keys/localroot # TTY támogatás engedélyezése az interaktív shell számára RequestTTY igen # A szükségtelen kimenet eltávolítása LogLevel QUIET

Jelenlegi formájában a felhasználó adminusername mostantól képes lesz rootként parancsokat végrehajtani jelszó megadása nélkül. A művelet ellenőrzése: $ ssh host.local [root ~]#

Létrehozunk egy sudohost aliast a bash-ban az „ssh host.local” futtatásához, hasonlóan a sudo-hoz: sudohost() { if [[ ${#} -eq 0 ]]; majd ssh host.local "cd \"${PWD}\"; exec \"${SHELL}\" --login" else ssh host.local "cd \"${PWD}\"; végrehajt \»${@}\»» fi }

Ellenőrzés: $ sudohost id uid=0(root) gid=0(root) groups=0(root)

Hitelesítési adatokat adunk hozzá, és engedélyezzük a kéttényezős hitelesítést, amely csak akkor teszi lehetővé a root hozzáférést, ha Yubikey USB-token van behelyezve.

Ellenőrizzük, hogy a meglévő Yubikey mely algoritmusokat támogatja: lsusb -v 2>/dev/null | grep -A2 Yubico | grep "bcdDevice" | awk '{print $2}'

Ha a kimenet 5.2.3 vagy újabb, használja az ed25519-sk parancsot a kulcsok generálásakor, ellenkező esetben használja az ecdsa-sk parancsot: ssh-keygen -t ed25519-sk vagy ssh-keygen -t ecdsa-sk

Hozzáadja a nyilvános kulcsot a /root/.ssh/authorized_keys fájlhoz

Adjon hozzá egy kulcstípus-kötést az sshd konfigurációhoz: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes [e-mail védett],[e-mail védett]

A Unix sockethez való hozzáférést csak a magasabb jogosultságokkal rendelkező felhasználókra korlátozzuk (példánkban adminusername). Az /etc/systemd/system/sshd-unix.socket fájlban add hozzá: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Forrás: opennet.ru

Hozzászólás