Použití SSH přes UNIX socket místo sudo pro zbavení se suid souborů

Timothee Ravier z firmy Red Hat, údržbář projektů Fedora Silverblue a Fedora Kinoite, navrhl způsob, jak se vyhnout používání utility sudo, která využívá suid bit pro zvýšení oprávnění. Místo sudo, pro vykonávání příkazů s právy root běžným uživatelským účtem, se navrhuje využít utilitu ssh s místním připojením k téže systémové jednotce prostřednictvím UNIX socketu a kontrolou oprávnění na základě SSH klíčů.

Použití ssh místo sudo umožňuje zbavit se suid programů v systému a uspořádat provádění privilegovaných příkazů v hostitelském prostředí distribucí, které používají kontejnerovou izolaci komponentů, jako jsou Fedora Silverblue, Fedora Kinoite, Fedora Sericea a Fedora Onyx. Pro omezení přístupu lze navíc použít potvrzení oprávnění pomocí USB tokenu (například Yubikey).

Příklad nastavení serverových komponent OpenSSH pro přístup přes místní Unix socket (bude spuštěna samostatná instance sshd se svým konfiguračním souborem):

/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

Aktivujeme a spouštíme jednotku systemd: sudo systemctl daemon-reload sudo systemctl enable —now sshd-unix.socket

Přidáme svůj SSH klíč do /root/.ssh/authorized_keys

Nastavujeme práci SSH klienta.

Nainstalujeme utilitu socat: sudo dnf install socat

Doplníme /.ssh/config, uvedením socat jako proxy pro přístup přes UNIX socket: Host host.local User root # Používáme /run/host/run místo /run pro práci z kontejnerů ProxyCommand socat — UNIX-CLIENT:/run/host/run/sshd.sock # Cesta k SSH klíči IdentityFile ~/ .ssh/keys/localroot # Zapneme podporu TTY pro interaktivní shell RequestTTY yes # Odstraníme zbytečný výstup LogLevel QUIET

V současné podobě nyní uživatel adminusername bude moci vykonávat příkazy s právy root bez zadání hesla. Otestujeme práci: $ ssh host.local [root ~]#

Vytvoříme v bash alias sudohost pro spuštění „ssh host.local“ podobně jako sudo: sudohost() { if [[ ${#} -eq 0 ]]; then ssh host.local „cd \“${PWD}\“; exec \“${SHELL}\“ —login“ else ssh host.local „cd \“${PWD}\“; exec \“${@}\““ fi }

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

Přidáme kontrolu oprávnění a zapneme dvoufaktorovou autentizaci, která umožňuje přístup k root pouze při vložení USB tokenu Yubikey.

Zkontrolujeme, jaké algoritmy podporuje existující Yubikey: lsusb -v 2>/dev/null | grep -A2 Yubico | grep „bcdDevice“ | awk ‘{print $2}’

Pokud je vyvedena hodnota 5.2.3 nebo vyšší, použijte ed25519-sk při generování klíčů, jinak použijte ecdsa-sk: ssh-keygen -t ed25519-sk nebo ssh-keygen -t ecdsa-sk

Přidává veřejný klíč do /root/.ssh/authorized_keys

Přidáváme vazbu na typ klíče do konfigurace sshd: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes sk-ecdsa-sha2-nistp256@openssh.com,sk-ssh-ed25519@openssh.com

Omezení přístupu k Unixovému socketu pouze pro uživatele, kterému lze zvýšit oprávnění (v našem příkladu - adminusername). Do /etc/systemd/system/sshd-unix.socket přidáme: [Socket] … SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster