나는 약 5명의 사용자(보안 = 사용자)가 있는 Samba 서버를 가지고 있으며 이러한 사용자가 나의 개입 없이 자신의 비밀번호를 변경할 수 있도록 하는 방법을 원하므로 다음과 같은 아이디어가 있습니다. 이거 안전한가요? 더 나은(더 쉬운) 방법이 있나요? 이 문제를 해결하기 위해 SWAT가 있었지만 더 이상은 그렇지 않습니다.
서버에서: 제한된 사용자 생성(/bin/rbash + 단일 디렉터리 경로)
$ sudo adduser --shell /bin/rbash pwchange
$ cat /etc/passwd
pwchange:x:1001:1001:pwchange,,,:/home/pwchange:/bin/rbash
$ sudo vi /home/pwchange/.bashrc
Add:
export PATH=/usr/local/pwchange
$ sudo ln -s /usr/bin/smbpasswd /usr/local/pwchange/smbpasswd
여기서의 아이디어는 pwchange 사용자가 sambpasswd 명령만 실행할 수 있다는 것입니다. Samba 사용자의 unix 계정에는 비밀번호가 없습니다(즉, 이러한 계정을 통한 로그인은 허용되지 않습니다). Samba 사용자는 셀프 서비스 Samba 비밀번호 변경을 위해서만 이 제한된 계정을 사용할 수 있습니다. 서버를 탐색할 필요가 없습니다!
클라이언트: 터미널 또는 Putty를 통해 Samba 비밀번호 변경(Windows)
user1@A3700:~$ ssh [email protected]
pwchange@V220:~$ smbpasswd -U user1
Old SMB password:
New SMB password:
Retype new SMB password:
Password changed for user user1
답변1
그들 모두에게 동일한 가상 계정에 대한 액세스 권한을 부여하는 것은 현명하지 않습니다. 아무 것도 액세스할 수 없도록 잠그더라도 smbpasswd
서로의 비밀번호는 계속 변경할 수 있습니다. 그리고 악의적인 권한 상승 공격의 가능성은 항상 존재합니다.
기본적으로 원하는 것은 해당 계정의 권한을 smbpasswd
계속 유지하면서 자신의 사용자 계정에서만 명령을 실행할 수 있도록 허용하는 것입니다.nologin
이는 sshd_config의 "ForceCommand" 옵션을 사용하여 수행할 수 있습니다.
이 시도:
Samba 계정 멤버십을 가진 각 사용자에게 동일한 그룹을 부여합니다. 예를 들어 "sambaOnly"라고 가정해 보겠습니다.
#From Root groupadd sambaOnly usermod -a -G sambaOnly Joe
다음으로, 다음을 포함하도록 sshd_config 파일을 변경하려고 합니다.
#From Root cat << EOF >> /etc/ssh/sshd_config Match Group sambaOnly ForceCommand smbpasswd EOF
급속히. 내 이해(및 간단한 테스트)에 따르면 이는 SSH를 통해 로그인하면 자동으로 smbpasswd
명령을 실행하고 그에 따라 메시지가 표시된다는 것을 의미합니다. 그들은 결코 쉘에 접근할 수 없습니다. 명령이 완료되면 자동으로 연결이 끊어지고 셸에 다시 액세스할 수 없습니다.
이것이 원격 시스템에 대한 모든 액세스를 제거할 것인지 100% 확신할 수는 없습니다. 예를 들어, 동일한 시스템에서 서로 다른 SSH 서버를 실행하는 경우 ForceCommand
액세스 제어 구성에 따라 해당 서버를 통해 로그인할 수 있습니다.
또한 터미널에 물리적으로 접근할 수 있는 경우 로그인할 수 있습니다.
그러나 나는 이것이 대부분의 상황에서 매우 강력한 액세스 제어라고 생각합니다.