SSH-i kasutamine UNIX-sokli kohal sudo asemel, et kõrvaldada suid-failid

Timothee Ravier Red Hat'ist, Fedora Silverblue ja Fedora Kinoite'i projektide hooldaja, pakkus välja viisi, kuidas vältida sudo kasutamist, mis kasutab suid-biti privileegide tõstmiseks. Selle asemel, et kasutada sudo tavakasutaja õigustega root-käskude täitmiseks, soovitatakse kasutada ssh-teenust kohaliku ühenduse jaoks sama süsteemi UNIX-soketi kaudu ja SSH-võtmete alusel õiguslikkuse kontrollimiseks.

SSH kasutamine sudo asemel lubab süsteemist eemaldada suid-programmid ja korraldada privileege omavaid käsklusi konteinerite isoleeritud keskkondades, nagu Fedora Silverblue, Fedora Kinoite, Fedora Sericea ja Fedora Onyx. Juurdepääsu piiramise jaoks võib lisaks kasutada USB-tokeni (näiteks Yubikey) õiguslikkuse kinnitamiseks.

Näide OpenSSH serverikomponentide seadistamisest kohaliku Unix-soketi kaudu juurdepääsuks (käivitame eraldi sshd eksemplari koos 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

Aktiveerime ja käivitame systemd yksuse: sudo systemctl daemon-reload sudo systemctl enable —now sshd-unix.socket

Lisame oma SSH-võtme /root/.ssh/authorized_keys

Seadistame SSH-kliendi töö.

Paigaldame utiliidi socat: sudo dnf install socat

Täiendame /.ssh/config, määrates socat UNIX-soketi kaudu juurdepääsu vaikimisi: Host host.local User root # Kasutame /run/host/run soketi töötamiseks konteineritest ProxyCommand socat — UNIX-CLIENT:/run/host/run/sshd.sock # SSH-võtme asukoht IdentityFile ~/ .ssh/keys/localroot # Lülitame TTY toe interaktiivsele shellile RequestTTY yes # Eemaldame üleliigse väljundi LogLevel QUIET

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

Loome bash'is pseudonymi sudohost, et käivitada „ssh host.local” sudo analoogina: 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 õiguslikkuse kontrollimise ja lülitame sisse kahefaktorilise autentimise, mis lubab juurdepääsu root'ile ainult Yubikey USB-tokeni sisestamisel.

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

Kui kuvatakse 5.2.3 või suurem väärtus, 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 /root/.ssh/authorized_keys

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

Piirame Unix-soketi pääsu ainult kasutajale, kellel on privileegide tõstmine (meie näites – adminusername). Faili /etc/systemd/system/sshd-unix.socket lisame: [Socket] … SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster