Menggunakan SSH melalui soket UNIX alih-alih Sudo untuk membuang file suid

Timothee Ravier dari Red Hat, pengelola proyek Fedora Silverblue dan Fedora Kinoite, mengusulkan cara untuk menghindari penggunaan utilitas sudo, yang menggunakan bit suid untuk meningkatkan hak istimewa. Alih-alih sudo, agar pengguna biasa dapat menjalankan perintah dengan hak root, diusulkan untuk menggunakan utilitas ssh dengan koneksi lokal ke sistem yang sama melalui soket UNIX dan verifikasi izin berdasarkan kunci SSH.

Menggunakan ssh alih-alih sudo memungkinkan Anda untuk menyingkirkan program suid pada sistem dan mengaktifkan eksekusi perintah istimewa di lingkungan host distribusi yang menggunakan komponen isolasi kontainer, seperti Fedora Silverblue, Fedora Kinoite, Fedora Sericea, dan Fedora Onyx. Untuk membatasi akses, konfirmasi otoritas menggunakan token USB (misalnya Yubikey) juga dapat digunakan.

Contoh konfigurasi komponen server OpenSSH untuk akses melalui soket Unix lokal (instance sshd terpisah akan diluncurkan dengan file konfigurasinya sendiri):

/etc/systemd/system/sshd-unix.socket: [Unit] Deskripsi=Dokumentasi Soket Unix Server OpenSSH=man:sshd(8) man:sshd_config(5) [Socket] ListenStream=/run/sshd.sock Accept=yes [Instal] WantedBy=sockets.target

/ etc / systemd / system /[email dilindungi]: [Unit] Deskripsi=Daemon server OpenSSH per koneksi (soket Unix) Dokumentasi=man:sshd(8) man:sshd_config(5) Wants=sshd-keygen.target After=sshd-keygen.target [Layanan] ExecStart=- /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=soket

/etc/ssh/sshd_config_unix: # Hanya menyisakan otentikasi kunci PermitRootLogin melarang kata sandi PasswordAuthentication no PermitEmptyPasswords no GSSAPIAuthentication no # membatasi akses ke pengguna yang dipilih AllowUsers root adminusername # Hanya menyisakan penggunaan .ssh/authorized_keys (tanpa .ssh/authorized_keys2 AuthorizedKeysFile .ssh /kunci_ resmi # aktifkan sftp Subsistem sftp /usr/libexec/openssh/sftp-server

Aktifkan dan luncurkan unit systemd: sudo systemctl daemon-reload sudo systemctl aktifkan β€”sekarang sshd-unix.socket

Tambahkan kunci SSH Anda ke /root/.ssh/authorized_keys

Menyiapkan klien SSH.

Instal utilitas socat: sudo dnf install socat

Kami melengkapi /.ssh/config dengan menentukan socat sebagai proxy untuk akses melalui soket UNIX: Host host.local User root # Gunakan /run/host/run alih-alih /run untuk bekerja dari container ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # Jalur ke kunci SSH IdentityFile ~/.ssh/keys/localroot # Aktifkan dukungan TTY untuk shell interaktif RequestTTY yes # Hapus keluaran yang tidak diperlukan LogLevel QUIET

Dalam bentuknya yang sekarang, nama pengguna admin sekarang dapat menjalankan perintah sebagai root tanpa memasukkan kata sandi. Memeriksa operasi: $ ssh host.local [root ~]#

Kami membuat alias sudohost di bash untuk menjalankan β€œssh host.local”, mirip dengan sudo: sudohost() { if [[ ${#} -eq 0 ]]; lalu ssh host.local "cd \"${PWD}\"; exec \"${SHELL}\" --login" else ssh host.local "cd \"${PWD}\"; eksekutif \Β»${@}\»» fi }

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

Kami menambahkan kredensial dan mengaktifkan otentikasi dua faktor, memungkinkan akses root hanya ketika token USB Yubikey dimasukkan.

Kami memeriksa algoritma mana yang didukung oleh Yubikey yang ada: lsusb -v 2>/dev/null | grep -A2 Yubico | grep "Perangkat bcd" | awk '{cetak $2}'

Jika outputnya 5.2.3 atau lebih tinggi, gunakan ed25519-sk saat membuat kunci, jika tidak gunakan ecdsa-sk: ssh-keygen -t ed25519-sk atau ssh-keygen -t ecdsa-sk

Menambahkan kunci publik ke /root/.ssh/authorized_keys

Tambahkan pengikatan tipe kunci ke konfigurasi sshd: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes [email dilindungi],[email dilindungi]

Kami membatasi akses ke soket Unix hanya untuk pengguna yang memiliki hak istimewa yang lebih tinggi (dalam contoh kami, nama pengguna admin). Di /etc/systemd/system/sshd-unix.socket tambahkan: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Sumber: opennet.ru

Tambah komentar