Nganggo SSH dina stop kontak UNIX tinimbang sudo pikeun ngaleungitkeun file suid

Timothee Ravier ti Red Hat, pangropéa proyék Fedora Silverblue sareng Fedora Kinoite, ngusulkeun cara pikeun nyingkahan ngagunakeun utilitas sudo, anu ngagunakeun bit suid pikeun ningkatkeun hak husus. Gantina sudo, pikeun pamaké normal ngaéksekusi paréntah kalawan hak root, diusulkeun ngagunakeun utilitas ssh kalawan sambungan lokal ka sistem anu sarua ngaliwatan stop kontak UNIX jeung verifikasi idin dumasar kana konci SSH.

Ngagunakeun ssh tinimbang sudo ngidinan Anjeun pikeun nyabut program suid dina sistem jeung ngaktipkeun palaksanaan paréntah hak husus dina lingkungan host tina distribusi nu ngagunakeun komponén isolasi wadahna, kayaning Fedora Silverblue, Fedora Kinoite, Fedora Sericea jeung Fedora Onyx. Pikeun ngawatesan aksés, konfirmasi wewenang ngagunakeun token USB (Contona, Yubikey) bisa Sajaba dipaké.

Conto ngonpigurasikeun komponén server OpenSSH pikeun aksés via stop kontak Unix lokal (conto sshd anu misah bakal diluncurkeun sareng file konfigurasi sorangan):

/etc/systemd/system/sshd-unix.socket: [Unit] Katerangan = OpenSSH Server Unix Socket Dokuméntasi = lalaki: sshd (8) lalaki: sshd_config (5) [Stop kontak] ListenStream =/run/sshd.sock Accept = yes [Pasang] WantedBy = sockets.target

/ jsb / systemd / sistem /[email dijaga]: [Unit] Katerangan = OpenSSH per-konéksi server daemon (Unix stop kontak) Dokuméntasi = lalaki: sshd (8) lalaki: sshd_config (5) Hayang = sshd-keygen.target Saatos = sshd-keygen.target [Service] ExecStart = - /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput = stop kontak

/etc/ssh/sshd_config_unix: # Daun ukur auténtikasi konci PermitRootLogin ngalarang-sandi PasswordAuthentication euweuh PermitEmptyPasswords euweuh GSSAPIAuthentication euweuh # ngawatesan aksés ka pamaké nu dipilih AllowUsers root adminusername # Daun ngan pamakéan .ssh/authorized .keys_keyssh. /authorized_ konci # aktipkeun sftp Subsistem sftp /usr/libexec/openssh/sftp-server

Aktipkeun sareng jalankeun unit systemd: sudo systemctl daemon-reload sudo systemctl enable —now sshd-unix.socket

Tambahkeun konci SSH anjeun ka /root/.ssh/authorized_keys

Nyetél klien SSH.

Pasang utilitas socat: sudo dnf install socat

Urang suplement /.ssh/config ku nangtukeun socat salaku proxy pikeun aksés via stop kontak UNIX: Host host.local User root # Use /run/host/run tinimbang /run pikeun digawé tina wadah ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # Path to the SSH key IdentityFile ~/.ssh/keys/localroot # Aktipkeun rojongan TTY pikeun cangkang interaktif RequestTTY yes # Cabut kaluaran teu perlu LogLevel TENGAH

Dina bentuk ayeuna, nami pangguna admin ayeuna bakal tiasa ngaéksekusi paréntah salaku akar tanpa ngalebetkeun kecap konci. Mariksa operasi: $ ssh host.local [root ~]#

Urang nyieun alias sudohost di bash pikeun ngajalankeun "ssh host.local", sarupa sudo: sudohost () {lamun [[ ${#} -eq 0 ]]; teras ssh host.local "cd \"${PWD}\"; exec \"${SHELL}\" --login" lain ssh host.local "cd \"${PWD}\"; eksekusi \»${@}\»» fi }

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

Urang nambahkeun Kapercayaan jeung ngaktipkeun auténtikasi dua-faktor, sahingga aksés root ngan lamun token USB Yubikey diselapkeun.

Urang pariksa algoritma nu dirojong ku Yubikey aya: lsusb -v 2> / dev / null | grep -A2 Yubico | grep "bcdDevice" | awk '{print $2}'

Upami kaluaranna 5.2.3 atanapi langkung ageung, nganggo ed25519-sk nalika ngahasilkeun konci, upami henteu nganggo ecdsa-sk: ssh-keygen -t ed25519-sk atanapi ssh-keygen -t ecdsa-sk

Nambahkeun konci publik kana /root/.ssh/authorized_keys

Tambahkeun tipe konci ngariung kana konfigurasi sshd: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes [email dijaga],[email dijaga]

Kami ngabatesan aksés kana stop kontak Unix pikeun ngan ukur pangguna anu tiasa ngagaduhan hak istimewa (dina conto kami, adminusername). Dina /etc/systemd/system/sshd-unix.socket nambahkeun: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

sumber: opennet.ru

Tambahkeun komentar