RedHat EL 서버 스택에 대한 액세스를 외부 검색 도구에 제공하라는 요청을 받았습니다("아니요"는 옵션이 아님). 이 도구를 사용하려면 명령 목록에 대한 sudo 액세스가 필요합니다. 이들 중 대부분은 간단한 목록이거나 단일 옵션으로 잠길 수 있습니다. 그러나 sudo /usr/bin/find도 필요합니다.
분명히 나는 이것에 만족하지 않습니다. find는 -exec 및 친구를 통해 명령을 실행하고 임의 파일을 삭제할 수 있기 때문입니다. 이는 무제한 루트 액세스를 제공하는 것만큼 좋습니다.
간단한 sudo 명령 별칭도 도움이 되지 않을 것이라고 생각합니다. 경로 와일드카드(첫 번째 인수)가 포함되어야 하고 이후 인수도 허용되기 때문입니다. sudo로 실행할 때 /usr/bin/find에서 안전하지 않은 명령을 비활성화하는 것이 가능/실행 가능합니까?
결론적으로:
일반적인 검색이 이루어지도록 합니다.
/usr/bin/sudo /usr/bin/find /some/path/or/other -mtime +3 -print /usr/bin/sudo /usr/bin/find /home -executable -ls
exec/execdir/delete 사용 방지: 예:
/usr/bin/sudo /usr/bin/find /some/path/or/other -name '*' -type f -exec /bin/rm -f {} \; /usr/bin/sudo /usr/bin/find / -ctime -1 -delete
답변1
명령에 대한 액세스 권한을 제공하여 규칙을 우회해야 한다고 말씀하셨는데 , 더 해로운 의도를 sudo
요구하기 위해 할 수 있는 일이 분명히 있습니다 . sudo
다른 RBAC 구현의 기본 거부 위치에서 특정 액세스를 허용하는 대신 액세스 권한이 부여된 후 액세스를 잠그려고 시도하기 때문에 작업에 완벽한 도구는 아닙니다.
나는 제한 없이 접근할 수 있는 감사자를 결코 신뢰하지 않을 것입니다. 그들의 임무는 보안 프로필을 손상시키고 취약점을 찾는 것입니다. 시스템이 더 안전할수록 그들과 악의적인 사람들이 자물쇠를 따기가 더 어려워집니다.
규칙을 순차적으로 적용하여 작동 하므로 sudo
실행을 허용하는 명령부터 시작한 다음 해당 명령에 대한 다양한 옵션을 제한하는 규칙을 추가하세요. sudoers
다음을 사용하도록 파일 을 수정할 수 있습니다 .
%auditor ALL = /usr/bin/lsattr,
/usr/bin/find,
! /usr/bin/find *-exec*,
! /usr/bin/find *-ok*,
! /usr/bin/find *-delete*
이렇게 하면 감사자가 -exec, -execdir, -ok, -okdir 또는 -delete를 사용하여 실행하도록 허용하지 않고도 find를 실행할 수 있습니다. 또한 모든 파일을 모든 콘텐츠로 덮어쓸 수 있도록 허용하는 차단 및 조건자를 -fprint
고려할 -fprintf
수도 있습니다 .-fls
find no-execution.txt
또는 같은 명령 도 차단합니다 find . -name '*-ok*'
.
tom@evil:~$ sudo id
uid=0(root) gid=0(root) groups=0(root),999(lightsd)
tom@evil:~$ sudo find . -mtime -50
.
./.bashrc
./.kshrc
./.bash_history
./.bash_logout
./.profile
tom@evil:~$ sudo find . -mtime 5 -exec ls -la {} \;
Sorry, user tom is not allowed to execute '/usr/bin/find . -mtime 5 -exec ls -la {} ;' as root on localhost.
tom@evil:~$ sudo find . -mtime -5 -name .kshrc -delete
Sorry, user tom is not allowed to execute '/usr/bin/find . -mtime -5 -name .kshrc -delete' as root on localhost.
이것은 좋은 sudoers 프로필을 구축하고 유지하기 위한 PITA이지만 특히 규정 준수 환경에서는 노력할 가치가 있다고 생각합니다.
답변2
루트로 에스컬레이션할 수 있는 부분적으로 신뢰할 수 있는 사용자에게 액세스 권한을 부여해야 하는 경우 로깅에 집중하고 로깅을 회피하기 위해 "sudo su"의 일부 변형을 사용하는 것은 더 이상 사용되지 않으며 악의적인 작업으로 간주된다는 점을 분명히 합니다.
신뢰할 수 있는 사용자의 하위 집합이 출입할 수 없는 원격 로그 서버에 로그인하고 로그 서버가 감독 대상 시스템에 대한 지속적인 네트워크 연결을 모니터링하도록 합니다(따라서 네트워크를 중단하여 로그 항목을 단순히 억제할 수 없음).