sudo ๋Œ€์‹  UNIX ์†Œ์ผ“์„ ํ†ตํ•ด SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ suid ํŒŒ์ผ ์ œ๊ฑฐ

Fedora Silverblue ๋ฐ Fedora Kinoite ํ”„๋กœ์ ํŠธ์˜ ๊ด€๋ฆฌ์ž์ธ Red Hat์˜ Timothee Ravier๋Š” 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 ์„œ๋ฒ„ Unix Socket Documentation=man:sshd(8) man:sshd_config(5) [Socket] ListenStream=/run/sshd.sock Accept=yes [์„ค์น˜] WantedBy=sockets.target

/ etc / systemd / system /[์ด๋ฉ”์ผ ๋ณดํ˜ธ]: [๋‹จ์œ„] ์„ค๋ช…=OpenSSH ์—ฐ๊ฒฐ๋ณ„ ์„œ๋ฒ„ ๋ฐ๋ชฌ(Unix ์†Œ์ผ“) Documentation=man:sshd(8) man:sshd_config(5) Wants=sshd-keygen.target After=sshd-keygen.target [Service] ExecStart=- /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=socket

/etc/ssh/sshd_config_unix: # ํ‚ค ์ธ์ฆ๋งŒ ๋‚จ๊น๋‹ˆ๋‹ค. PermitRootLoginhibit-password PasswordAuthentication no PermitEmptyPasswords no GSSAPIAuthentication no # ์„ ํƒํ•œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. AllowUsers root adminusername # .ssh/authorized_keys ์‚ฌ์šฉ๋งŒ ๋‚จ๊น๋‹ˆ๋‹ค(.ssh/authorized_keys2 AuthorizedKeysFile .ssh ์ œ์™ธ). /authorized_ ํ‚ค # sftp ํ•˜์œ„ ์‹œ์Šคํ…œ ํ™œ์„ฑํ™” sftp /usr/libexec/openssh/sftp-server

systemd ์žฅ์น˜๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. sudo systemctl daemon-reload sudo systemctl ํ™œ์„ฑํ™” - ์ด์ œ sshd-unix.socket

/root/.ssh/authorized_keys์— SSH ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

SSH ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

socat ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ค์น˜: sudo dnf install socat

UNIX ์†Œ์ผ“์„ ํ†ตํ•œ ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•œ ํ”„๋ก์‹œ๋กœ socat๋ฅผ ์ง€์ •ํ•˜์—ฌ /.ssh/config๋ฅผ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ํ˜ธ์ŠคํŠธ ํ˜ธ์ŠคํŠธ.local ์‚ฌ์šฉ์ž ๋ฃจํŠธ # ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ž‘์—…ํ•˜๋ ค๋ฉด /run ๋Œ€์‹  /run/host/run์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ProxyCommand socat - UNIX-CLIENT: / run/host/run/sshd.sock # SSH ํ‚ค ๊ฒฝ๋กœ IdentityFile ~/.ssh/keys/localroot # ๋Œ€ํ™”ํ˜• ์…ธ์— ๋Œ€ํ•œ TTY ์ง€์› ํ™œ์„ฑํ™” RequestTTY yes # ๋ถˆํ•„์š”ํ•œ ์ถœ๋ ฅ ์ œ๊ฑฐ LogLevel QUIET

ํ˜„์žฌ ํ˜•์‹์—์„œ๋Š” ์ด์ œ adminusername ์‚ฌ์šฉ์ž๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฃจํŠธ๋กœ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ž‘ ํ™•์ธ: $ ssh host.local [root ~]#

sudo: sudohost() { if [[ ${#} -eq 0 ]]; ๊ทธ๋Ÿฐ ๋‹ค์Œ ssh ํ˜ธ์ŠคํŠธ.local "cd \"${PWD}\"; exec \"${SHELL}\" --login" else ssh ํ˜ธ์ŠคํŠธ.local "cd \"${PWD}\"; exec \ยป${@}\ยปยป fi }

ํ™•์ธ: $ sudohost id uid=0(root) gid=0(root) groups=0(root)

์ž๊ฒฉ ์ฆ๋ช…์„ ์ถ”๊ฐ€ํ•˜๊ณ  XNUMX๋‹จ๊ณ„ ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ Yubikey USB ํ† ํฐ์ด ์‚ฝ์ž…๋œ ๊ฒฝ์šฐ์—๋งŒ ๋ฃจํŠธ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด Yubikey์—์„œ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ง€์›๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. lsusb -v 2>/dev/null | grep -A2 ์œ ๋น„์ฝ” | 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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€