SSH kasutamine UNIX-sokli peal sudo asemel suid-failide vältimiseks

Timothee Ravier Red Hatist, Fedora Silverblue ja Fedora Kinoite projektide hoidja, pakkus välja viisi sudo kasutamisest eemaldumiseks, mis kasutab suid-bitti privileegide tõstmiseks. Selle asemel, et kasutada sudo, et tavakasutaja saaks käivitada root-õigustega käske, soovitatakse kasutada ssh utiliiti, tehes kohaliku ühenduse sama süsteemiga läbi UNIX-soketi ning SSH-võtmete põhjalike volituste kontrollimisega.

ssh kasutamine sudo asemel võimaldab eemaldada süsteemist suid-programmad ja korraldada privileegitud käskude täitmist host-keskkonnas, kasutades komponentide konteineriseerimist, nagu Fedora Silverblue, Fedora Kinoite, Fedora Sericea ja Fedora Onyx. Ligipääsu piiramise täiendavaks meetodiks võib olla USB-tokeni (näiteks Yubikey) abil volituste kinnitamine.

OpenSSH serverikomponentide seadistamise näide kohaliku Unix-soketi kaudu ligipääsuks (käivitama hakatakse eraldi sshd eksemplari oma konfiguratsioonifailiga):

/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 [Install] WantedBy=sockets.target

/etc/systemd/system/sshd-unix@.service: [Unit] Description=OpenSSH per-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: # Оставляет только аутентификацию по ключам PermitRootLogin prohibit-password PasswordAuthentication no PermitEmptyPasswords no GSSAPIAuthentication no # ограничиваем доступ выбранным пользователям AllowUsers root adminusername # Оставляем только использование .ssh/authorized_keys (без .ssh/authorized_keys2 AuthorizedKeysFile .ssh/authorized_keys # включаем sftp Subsystem sftp /usr/libexec/openssh/sftp-server

Aktiveeri ja käivita systemd üksus: sudo systemctl daemon-reload sudo systemctl enable —now sshd-unix.socket

Lisa oma SSH-võti failile /root/.ssh/authorized_keys

Seadista SSH-klient.

Paigaldame utiliidi socat: sudo dnf install socat

Täiendame /.ssh/config, määrates socat'i Unix-soketiga ligipääsemiseks: Host host.local User root # Kasutame /run/host/run asemel /run'i konteineritest töötamiseks ProxyCommand socat — UNIX-CLIENT:/run/host/run/sshd.sock # SSH-klahvi tee IdentityFile ~/.ssh/keys/localroot # Luba TTY toega interaktiivset shelli RequestTTY yes # Eemaldame liigse väljundi LogLevel QUIET

Praeguses vormis saab kasutaja adminusername nüüd käivitada käske root'i õigustes ilma parooli sisestamata. Kontrollime tööd: $ ssh host.local [root ~]#

Loome bash'is hüüdnime sudohost, et käivitada «ssh host.local» sarnaselt sudo'le: sudohost() { if [[ ${#} -eq 0 ]]; then ssh host.local «cd \»${PWD}\»; exec \»${SHELL}\» —login» else ssh host.local «cd \»${PWD}\»; exec \»${@}\»» fi }

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

Lisame volituste kontrolli ja lülitame sisse kahefaasilise autentimise, mis lubab root'i ligipääsu ainult Yubikey USB-tokeni sisestamise korral.

Kontrollime, milliseid algoritme toetab olemasolev Yubikey: lsusb -v 2>/dev/null | grep -A2 Yubico | grep «bcdDevice» | awk ‘{print $2}’

Kui välja on antud 5.2.3 või kõrgem versioon, kasutame võtmete genereerimisel ed25519-sk, vastasel juhul — ecdsa-sk: ssh-keygen -t ed25519-sk või ssh-keygen -t ecdsa-sk

Lisab avaliku võtme faili /root/.ssh/authorized_keys

Lisame võtme tüübi seose sshd konfiguratsiooni: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes sk-ecdsa-sha2-nistp256@openssh.com,sk-ssh-ed25519@openssh.com

Piirame juurdepääsu Unix-soketile ainult sellele kasutajale, kellel on privileegide tõstmine lubatud (meie näites — adminusername). Failis /etc/systemd/system/sshd-unix.socket lisame: [Socket] … SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster