Paggamit sa SSH sa usa ka UNIX socket imbis nga sudo aron makuha ang suid file

Si Timothee Ravier gikan sa Red Hat, usa ka tigmentinar sa Fedora Silverblue ug Fedora Kinoite nga mga proyekto, misugyot og paagi aron malikayan ang paggamit sa sudo utility, nga naggamit sa suid bit aron madugangan ang mga pribilehiyo. Imbis nga sudo, para sa usa ka normal nga tiggamit nga magpatuman sa mga mando nga adunay mga katungod sa gamut, gisugyot nga gamiton ang ssh utility nga adunay lokal nga koneksyon sa parehas nga sistema pinaagi sa usa ka UNIX socket ug pag-verify sa mga pagtugot base sa mga yawe sa SSH.

Ang paggamit sa ssh imbes nga sudo nagtugot kanimo sa pagkuha sa suid nga mga programa sa sistema ug makahimo sa pagpatuman sa mga pribilihiyo nga mga sugo sa host environment sa mga distribusyon nga naggamit sa mga sangkap sa pag-inusara sa sudlanan, sama sa Fedora Silverblue, Fedora Kinoite, Fedora Sericea ug Fedora Onyx. Aron mapugngan ang pag-access, ang pagkumpirma sa awtoridad gamit ang usa ka USB token (pananglitan, Yubikey) mahimo usab nga magamit.

Usa ka pananglitan sa pag-configure sa mga sangkap sa OpenSSH server alang sa pag-access pinaagi sa usa ka lokal nga socket sa Unix (usa ka bulag nga pananglitan sa sshd ang ilunsad nga adunay kaugalingon nga file sa pag-configure):

/etc/systemd/system/sshd-unix.socket: [Unit] Deskripsyon=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 / sistema /[protektado sa email]: [Yunit] Deskripsyon=OpenSSH kada-koneksyon server daemon (Unix socket) Dokumentasyon=man:sshd(8) man:sshd_config(5) Gusto=sshd-keygen.target Human=sshd-keygen.target [Serbisyo] ExecStart=- /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=socket

/etc/ssh/sshd_config_unix: # Gibilin lang ang yawe nga authentication PermitRootLogin prohibit-password PasswordAuthentication no PermitEmptyPasswords walay GSSAPIAuthentication no # gipugngan ang pag-access sa pinili nga mga user AllowUsers root adminusername # Ibilin lang ang paggamit sa .ssh/withoutauthorized_keyssh. /authorized_ keys # enable sftp Subsystem sftp /usr/libexec/openssh/sftp-server

I-aktibo ug ilunsad ang systemd unit: sudo systemctl daemon-reload sudo systemctl enable β€”karon sshd-unix.socket

Idugang ang imong SSH key sa /root/.ssh/authorized_keys

Pag-set up sa kliyente sa SSH.

I-install ang socat utility: sudo dnf install socat

Gidugangan namo ang /.ssh/config pinaagi sa pagpiho sa socat isip proxy alang sa pag-access pinaagi sa UNIX socket: Host host.local User root # Paggamit /run/host/run imbes nga /run aron magtrabaho gikan sa mga sudlanan ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # Path to the SSH key IdentityFile ~/.ssh/keys/localroot # Enable TTY support for the interactive shell RequestTTY yes # Remove unnecessary output LogLevel QUIET

Sa kasamtangan nga porma niini, ang user adminusername makahimo na karon sa pagpatuman sa mga sugo isip gamut nga walay pagsulod og password. Pagsusi sa operasyon: $ ssh host.local [gamut ~]#

Naghimo kami og sudohost alias sa bash aron magpadagan sa "ssh host.local", susama sa sudo: sudohost() {kon [[ ${#} -eq 0 ]]; unya ssh host.local "cd \"${PWD}\"; exec \"${SHELL}\" --login" else ssh host.local "cd \"${PWD}\"; exec \»${@}\»» fi }

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

Nagdugang kami og mga kredensyal ug gi-enable ang two-factor authentication, nga nagtugot sa root access lamang kung ang usa ka Yubikey USB token gisal-ot.

Atong susihon kung unsang mga algorithm ang gisuportahan sa naglungtad nga Yubikey: lsusb -v 2>/dev/null | grep -A2 Yubico | grep "bcdDevice" | awk '{print $2}'

Kung ang output kay 5.2.3 o mas dako, gamita ang ed25519-sk sa paghimo og mga yawe, kung dili gamita ang ecdsa-sk: ssh-keygen -t ed25519-sk o ssh-keygen -t ecdsa-sk

Gidugang ang yawe sa publiko sa /root/.ssh/authorized_keys

Pagdugang ug key type nga nagbugkos sa sshd configuration: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes [protektado sa email],[protektado sa email]

Gilimitahan namo ang pag-access sa Unix socket ngadto lamang sa tiggamit nga adunay mga pribilehiyo nga gipataas (sa among pananglitan, adminusername). Sa /etc/systemd/system/sshd-unix.socket idugang: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Source: opennet.ru

Idugang sa usa ka comment