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