SUID 권한 - 어느 것이 맞나요?

SUID 권한 - 어느 것이 맞나요?

Linux 서버를 보호하려고 하며 SUID에 대한 경험이 거의 없습니다. 실행 후

find / -perm +4000

많은 프로그램이 발견되었습니다. 상충되는 조언을 본 적이 있습니다.여기그리고여기활성화해야 할 것과 활성화하지 말아야 할 것은 무엇입니까?

SUID 활성화됨
/bin/su
/usr/bin/passwd
/usr/bin/gpasswd
/sbin/unix_chkpwd

SUID 비활성화됨
/usr/bin/crontab
/usr/bin/newgrp
/bin/ping
/bin/ping6
/bin/umount
/bin/mount
/usr/bin/chsh
/usr/bin/chfn
/usr/libexec/pt_chown
/usr/bin/sudo
/usr/bin/sudoedit
/usr/bin/chage
/usr/sbin/userhelper
/usr/sbin/usernetctl
/usr/sbin/suexec

불확실한
/usr/libexec/openssh/ssh-keysign
/sbin/pam_timestamp_check

서버는 Linux/SFTP 사용자가 거의 없는 여러 사이트를 호스팅합니다.
무엇을 바꿔야 할까요? 또한 테스트는 어떻게 해야 하나요?

답변1

자신이 무엇을 하고 있는지 확실하지 않다면 배포판이 원하는 대로 하도록 하십시오. 이 질문을 한다면, 당신이 충분히 모른다는 뜻입니다. 그러니 내버려두세요.

setuid가 필요한 프로그램은 배포판에서 setuid가 어떻게 설정되어 있는지에 따라 다릅니다. 예를 들어, 페도라대부분의 setuid 사용을 setcap로 대체했습니다.. 예를 들어, ping에는 CAP_NET_RAWIO원시 소켓을 여는 기능이 필요합니다. 이는 setcap CAP_NET_RAWIO권한 격리가 향상되거나 setuid 루트(전통적인 방법, setcap 실행 파일이 필요하지 않음)가 되어 소켓을 얻을 수 있습니다.

귀하가 나열한 프로그램은 일반 사용자가 실행하도록 되어 있지만 실행하려면 추가 권한이 필요합니다. setuid 비트를 제거하면 시스템이 손상됩니다. 예를 들어, ping작동이 중지됩니다(루트로 로그인하지 않은 경우). 당신은 루트가 될 수 있지만 su루트가 될 수는 없습니다 sudo. 이는 전체 요점을 무너뜨립니다 sudo. 사용자는 crontab을 설정할 수 없습니다. 등.

전용 서버에서는 깨뜨린 것 중 일부가 중요하지 않을 수 있습니다. 그러나 올바른 일을 하고 있다는 것을 알고 있는 경우에만 배포판의 기본 설정을 변경해야 하며 그 반대는 아닙니다. 가용성은 보안의 일부라는 점을 기억하십시오. 서버에 접근하지 못하도록 잠그거나 문제를 진단하고 해결하지 못한다면 보안이 침해된 것입니다.

답변2

귀하가 나열한 프로그램은 일반적으로 안전하고 신뢰할 수 있는 것으로 간주되므로 개인적으로 신경쓰지 않을 것입니다. 예를 들어 sudosuid 비트를 설정하지 않는 것은 의미가 없습니다. chsh chfn등도 마찬가지다 . 정말로 서버를 보호하고 싶다면 다음 실행 파일에 suid 권한을 부여하면 됩니다.

  • ping/ ping6진단상의 이유로.
  • suexec다른 사용자로 cgi 스크립트 실행
  • su또는sudo
  • pt_chown당신이 가지고 있지 않다면devpts

ssh-keysign호스트 기반 인증에만 사용되므로 suid 비트를 제거할 수 있습니다.http://lists.freebsd.org/pipermail/freebsd-stable/2006-October/029737.html

또한 사용자에게 쉘 액세스 권한이 없고 해당 디렉토리가 루트로 지정되지 않았는지 확인해야 합니다.

정말로 서버를 보호하고 싶다면 다음을 고려해야 합니다.SELinux.

답변3

selinux는 (그것이 있는 시스템에서) 많은 일을 처리합니다. 따라서 selinux를 사용하는 경우 모든 setuid 항목은 그대로 두고 selinux 정책이 제공하는 것보다 더 많은 권한을 가져서는 안 됩니다.

관련 정보