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] Description=OpenSSH Server Unix Socket Documentation=man:sshd(8) man:sshd_config(5) [Socket] ListenStream=/run/sshd.sock Accept=yes [Орнотуу] WantedBy=sockets.target

/ etc / systemd / system /[электрондук почта корголгон]: [Unit] Description=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 # Колдонууну гана калтырат. 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/un ордуна /run/host/run колдонуңуз ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # SSH ачкычына жол IdentityFile ~/.ssh/keys/localroot # Интерактивдүү кабык үчүн TTY колдоосун иштетүү RequestTTY ооба # Керексиз чыгууну алып салуу LogLevel TUIET

Учурдагы формасында колдонуучунун администратор аты эми сырсөздү киргизбестен, буйруктарды root катары аткара алат. Операция текшерилүүдө: $ 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 '{print $2}'

Эгерде чыгаруу 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 розеткасына кирүү мүмкүнчүлүгүн жогорулатылган артыкчылыктарга ээ болгон колдонуучуга гана чектейбиз (биздин мисалда, администратор аты). /etc/systemd/system/sshd-unix.socket ичинде кошуңуз: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Source: opennet.ru

Комментарий кошуу