Истифодаи SSH тавассути васлаки UNIX ба ҷои sudo барои нест кардани файлҳои suid

Тимоти Равиер аз Red Hat, нигаҳбони лоиҳаҳои Fedora Silverblue ва Fedora Kinoite, роҳи пешгирӣ аз истифодаи утилитаи sudo, ки бит-и suid-ро барои баланд бардоштани имтиёзҳо истифода мебарад, пешниҳод кард. Ба ҷои sudo, барои корбари муқаррарӣ барои иҷрои фармонҳо бо ҳуқуқи реша, пешниҳод карда мешавад, ки утилитаи ssh бо пайвасти маҳаллӣ ба ҳамон система тавассути васлаки UNIX ва санҷиши иҷозатҳо дар асоси калидҳои SSH истифода шавад.

Истифодаи ssh ба ҷои sudo ба шумо имкон медиҳад, ки аз барномаҳои suid дар система халос шавед ва иҷрои фармонҳои имтиёзнокро дар муҳити асосии дистрибутивҳо фаъол созед, ки ҷузъҳои ҷудокунии контейнерро истифода мебаранд, ба монанди Fedora Silverblue, Fedora Kinoite, Fedora Sericea ва Fedora Onyx. Барои маҳдуд кардани дастрасӣ, тасдиқи ваколат бо истифода аз аломати USB (масалан, Yubikey) метавонад ба таври иловагӣ истифода шавад.

Намунаи конфигуратсияи ҷузъҳои сервери OpenSSH барои дастрасӣ тавассути васлаки маҳаллии Unix (як мисоли алоҳидаи sshd бо файли конфигуратсияи худ оғоз карда мешавад):

/etc/systemd/system/sshd-unix.socket: [Воҳид] Тавсифи=OpenSSH Server Unix Socket Documentation=man:sshd(8) man:sshd_config(5) [Socket] ListenStream=/run/sshd.sock Қабул=ҳа [Насб кунед] WantedBy=sockets.target

/ etc / systemd / system /[почтаи электронӣ ҳифз карда шудааст]: [Воҳид] Тавсифи=Демони сервери OpenSSH барои ҳар як пайвастшавӣ (васлаки Unix) Ҳуҷҷат=ман:sshd(8) man:sshd_config(5) Мехоҳад=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 нест PermitEmptyPasswords нест GSSAPIAuthentication no # дастрасӣ ба корбарони интихобшударо маҳдуд мекунад AllowUsers root adminusername # Танҳо истифодаи . AuthorizedKeysFile .ssh Калидҳои /authorized_ # фаъол кардани зерсистемаи sftp sftp /usr/libexec/openssh/sftp-server

Воҳиди systemd-ро фаъол ва ба кор андозед: sudo systemctl демон-аз нав бор кунед sudo systemctl фаъол кунед —акнун sshd-unix.socket

Калиди SSH-и худро ба /root/.ssh/authorized_keys илова кунед

Насб кардани муштарии SSH.

Утилитаи socat -ро насб кунед: sudo dnf install socat

Мо /.ssh/config -ро бо нишон додани socat ҳамчун прокси барои дастрасӣ тавассути васлаки UNIX замима мекунем: Host host.local root корбар # Барои кор аз контейнерҳои ProxyCommand socat - UNIX-CLIENT: / ба ҷои /run/host/run -ро истифода баред: / run/ host/run/sshd.sock # Роҳ ба калиди SSH IdentityFile ~/.ssh/keys/localroot # Дастгирии TTY-ро барои қабати интерактивӣ фаъол созед RequestTTY ҳа # Баромади нолозимро хориҷ кунед LogLevel QUIET

Дар шакли кунунии худ, номи корбар администратор акнун метавонад бидуни ворид кардани парол фармонҳоро ҳамчун реша иҷро кунад. Санҷиши амалиёт: $ ssh host.local [root ~]#

Мо дар bash тахаллуси sudohost эҷод мекунем, то "ssh host.local" -ро иҷро кунем, ки ба sudo монанд аст: 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) group=0(root)

Мо эътимоднома илова мекунем ва аутентификатсияи ду-омилро фаъол месозем, ки дастрасии решаро танҳо ҳангоми ворид кардани аломати USB Yubikey иҷозат медиҳем.

Мо тафтиш мекунем, ки кадом алгоритмҳо аз ҷониби Yubikey мавҷуда дастгирӣ мешаванд: lsusb -v 2>/dev/null | grep -A2 Yubico | grep "bcdDevice" | awk '{$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 танҳо ба корбаре маҳдуд мекунем, ки имтиёзҳои баланд дошта метавонанд (дар мисоли мо, adminusername). Дар /etc/systemd/system/sshd-unix.socket илова кунед: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

Манбаъ: opennet.ru

Илова Эзоҳ