Suid файлдарынан құтылу үшін sudo орнына UNIX ұяшығы арқылы SSH пайдалану

Red Hat-тен Тимоти Равиер, Fedora Silverblue және Fedora Kinoite жобаларының қолдаушысы, артықшылықтарды күшейту үшін suid битін пайдаланатын sudo утилитасын пайдаланбаудың жолын ұсынды. Sudo орнына, кәдімгі пайдаланушыға түбірлік құқықтары бар пәрмендерді орындау үшін UNIX ұясы арқылы сол жүйеге жергілікті қосылыммен және SSH кілттері негізінде рұқсаттарды тексеру арқылы ssh утилитасын пайдалану ұсынылады.

Sudo орнына ssh пайдалану жүйедегі suid бағдарламаларынан құтылуға және Fedora Silverblue, Fedora Kinoite, Fedora Sericea және Fedora Onyx сияқты контейнерді оқшаулау құрамдастарын пайдаланатын дистрибутивтердің хост ортасында артықшылықты пәрмендерді орындауға мүмкіндік береді. Қолжетімділікті шектеу үшін USB таңбалауышы (мысалы, Yubikey) арқылы өкілеттікті растауды қосымша пайдалануға болады.

Жергілікті Unix ұясы арқылы қол жеткізу үшін OpenSSH сервер құрамдастарын конфигурациялау мысалы (жеке sshd данасы өзінің конфигурация файлымен бірге іске қосылады):

/etc/systemd/system/sshd-unix.socket: [Unit] Сипаттама=OpenSSH Server Unix Socket Documentation=man:sshd(8) man:sshd_config(5) [Socket] ListenStream=/run/sshd.sock Accept=yes [Орнату] WantedBy=sockets.target

/ т.б / systemd / жүйе /[электрондық пошта қорғалған]: [Unit] Сипаттама=OpenSSH әр қосылым серверінің демоны (Unix ұясы) Құжаттама=man:sshd(8) man:sshd_config(5) Wants=sshd-keygen.target After=sshd-keygen.target [Қызмет] ExecStart=- /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=сокет

/etc/ssh/sshd_config_unix: # Тек кілт аутентификациясын қалдырады PermitRootLogin prohibit-password PasswordAuthentication no PermitEmptyPasswords жоқ GSSAPIAuthentication no # Таңдалған пайдаланушыларға рұқсатты шектейді AllowUsers root adminusername # Тек қана пайдалануды қалдырады/autsthhorized/autsthhorized (.autsthhorized. AuthorizedKeysFile .ssh /өкілетті_ кілттер # sftp ішкі жүйесін қосу sftp /usr/libexec/openssh/sftp-server

Жүйелік блокты іске қосыңыз және іске қосыңыз: sudo systemctl демон-қайта жүктеңіз sudo systemctl қосу — енді sshd-unix.socket

SSH кілтін /root/.ssh/authorized_keys ішіне қосыңыз

SSH клиентін орнату.

Socat утилитасын орнатыңыз: sudo dnf install socat

UNIX ұясы арқылы кіру үшін socat прокси ретінде көрсету арқылы /.ssh/config толықтырамыз: Host host.local Пайдаланушы түбірі # Контейнерлерден жұмыс істеу үшін /run/host/run орнына ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # SSH кілтіне жол IdentityFile ~/.ssh/keys/localroot # Интерактивті қабықша үшін TTY қолдауын қосыңыз RequestTTY иә # Қажет емес LogLevel QUIET шығысын жою

Ағымдағы пішінде пайдаланушының әкімші аты енді құпия сөзді енгізбестен түбірлік ретінде пәрмендерді орындай алады. Операция тексерілуде: $ ssh host.local [root ~]#

Sudo сияқты «ssh host.local» іске қосу үшін bash тілінде sudohost бүркеншік атын жасаймыз: sudohost() { if [[ ${#} -eq 0 ]]; содан кейін ssh host.local "cd \"${PWD}\"; exec \"${SHELL}\" --login" else ssh host.local "cd \"${PWD}\"; exec \»${@}\»» fi }

Тексеру: $ sudohost id uid=0(root) gid=0(root) groups=0(root)

Біз тіркелгі деректерін қосамыз және екі факторлы аутентификацияны қосамыз, бұл тек Yubikey USB таңбалауышы енгізілгенде түбірлік қатынасқа рұқсат береді.

Қолданыстағы Yubikey қандай алгоритмдерге қолдау көрсететінін тексереміз: lsusb -v 2>/dev/null | grep -A2 Yubico | grep "bcdDevice" | awk '{2$XNUMX} басып шығару'

Егер шығыс 5.2.3 немесе одан жоғары болса, кілттерді жасау кезінде ed25519-sk пайдаланыңыз, әйтпесе ecdsa-sk пайдаланыңыз: ssh-keygen -t ed25519-sk немесе ssh-keygen -t ecdsa-sk

Ашық кілтті /root/.ssh/authorized_keys ішіне қосады

Sshd конфигурациясына байланыстыратын кілт түрін қосыңыз: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes [электрондық пошта қорғалған],[электрондық пошта қорғалған]

Біз Unix ұяшығына рұқсатты артықшылықтарға ие болатын пайдаланушыға ғана шектейміз (біздің мысалда, adminusername). /etc/systemd/system/sshd-unix.socket ішінде мынаны қосыңыз: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Ақпарат көзі: opennet.ru

пікір қалдыру