특정 보안 조치 설정

특정 보안 조치 설정

Oracle 8 시스템에 특정 보안 조치를 설정해야 합니다.

Unix 그룹에 일부 사용자가 추가됩니다.

이러한 사용자는 sudoers/wheel 그룹에 있어서는 안 되며, 그룹에 관리자 권한을 부여해서도 안 됩니다.

이 그룹에 속하면 해당 사용자는 특정 스크립트를 실행할 수 있지만 변경할 수는 없습니다.

이러한 스크립트는 해당 사용자가 실행할 때 특정 파일을 읽고 수정할 수 있어야 하지만, 사용자는 다른 방법으로 이러한 파일에 액세스하거나 읽을 수 없어야 합니다.

이 배열이 작동하려면 Unix 파일 권한/폴더 구조/그룹 멤버십을 어떻게 설정해야 합니까?

답변1

사용자는 새 그룹에 쉽게 추가될 수 있습니다. 스크립트(실행 파일과 달리)는 setgid/setuid 권한을 통해 권한을 할당할 수 없으므로 그룹에서는 sudoers선택한 스크립트 세트를 실행할 때 사용자에게 권한을 부여하기 위해 파일에 항목이 필요합니다 . (이 권한은 액세스할 필요가 없으며 실제로도 안됩니다 root.)

초기점. 우리는 이 그룹을 이라고 부르고 사용자 와 을 ops갖게 될 것입니다 . 그들은 우리가 생성해야 하는 user 권한으로 스크립트를 실행할 수 있어야 합니다 . 사용자와 그룹에 동일한 이름을 사용하는 것을 선호할 수도 있지만 여기서는 어느 것이 어느 것인지 명확하게 구분했습니다.alicebob/opt/scriptsprivops

먼저 대상 사용자, 멤버십 그룹을 생성하고 여기에 사용자를 추가합니다.

useradd privops
groupadd ops
usermod -a -G ops alice
usermod -a -G ops bob

이제 다음을 사용하여 visudo파일에 새 줄을 추가합니다 sudoers(또는 직접 만드는 것이 더 좋습니다 visudo /etc/sudoers.d/ops).

%ops ALL=(privops) NOPASSWD: /opt/scripts/*

이 시점에서 Alice와 Bob은 사용자로서 sudo이 디렉터리에서 스크립트를 실행할 수 있습니다. 디렉터리의 스크립트는 그룹 구성원만 실행할 수 있는지 확인하세요./opt/scriptsprivopsops

chown root:ops /opt/scripts/*
chmod ug=rx,o= /opt/scripts/*

제한된 액세스 파일이 해당 사용자 계정의 소유이고 privops해당 사용자 계정에서만 읽고 쓸 수 있는지 확인해야 합니다.

chown privops:ops /opt/privdata/*
chmod u=rw,go= /opt/privdata/*

사용 예(첫 번째 통과):

# As alice
sudo -u privops /opt/scripts/myscript arg1 arg2…

스크립트의 유용성을 높이려면 스크립트가 스스로 호출하도록 만드세요( sudo아직 대상 사용자가 아닌 경우).

#!/bin/sh
if [ "$(id -nu)" != 'privops' ]
then
    exec sudo -u privops "$0" "$@"
    exit 1
fi

# original code continues from here…

그런 다음 Alice와 Bob은 이와 같은 명령을 사용하고 이를 자신의 컴퓨터에 추가할 수도 있습니다.$PATH

/opt/scripts/myscript arg1 arg2…

# Or
export PATH="$PATH:/opt/scripts"
myscript arg1 arg2…

/opt/scripts왜냐하면 스크립트 가 특별한 주의를 기울여 작성되고 호출자가 침입할 기회가 없도록 스크립트에 권한을 추가하기 때문입니다 . 이러한 유형의 솔루션이 익숙하지 않은 것 같으므로 전문가의 조언을 구하는 것이 좋습니다.

답변2

이 작업을 다르게 수행하는 것을 고려하십시오. 사용자가 상승된 권한으로 스크립트를 실행하도록 허용하는 대신 이러한 사용자가 보다 제한된 작업을 수행하고 별도의 프로세스를 사용하여 해당 작업 및 응답을 모니터링할 수 있도록 허용하십시오.

/opt/commands이를 달성하는 한 가지 방법은 특정 권한이 있는 그룹(아마도)의 사용자가 쓸 수 있는 디렉토리를 설정하는 것입니다.삭제 제한다른 사람이 소유한 파일을 삭제하지 못하도록 플래그를 지정합니다.

그러면 전용 사용자로 실행되는 별도의 프로세스가 그곳에서 새 파일을 찾습니다(inotify를 사용하거나 10분마다 실행하여 확인하는 등). 새 파일이 다음과 같은 경우주의 깊게 정의된 특수 이름 목록, 해당 스크립트를 실행하여 숨겨진 파일을 수정하십시오. "명령" 파일에는 입력으로 사용할 수 있는 콘텐츠도 포함될 수 있습니다. 이 입력을 "삭제"하고 가능한 어떤 방식으로도 사용하지 않도록 매우 주의해야 합니다.처형된— 하지만 이는 제한된 쉘 스크립트를 안전하게 만드는 것보다 더 쉬운 문제입니다. (그래도 망가지기 쉽습니다!)

이러한 간접적인 접근 방식은 사용자가 실제로가지다비밀 파일을 읽고 쓸 수 있는 권한이지만 제한되어야 합니다.실제로이 방법.

이것은 "시스템 관리자가 작동하게 만드는" 해킹입니다. 전 시스템 관리자로서 저는 이 점에 대해 전혀 부끄러움을 느끼지 않습니다. 그러나 파일 시스템 기반 접근 방식을 사용하는 대신 다음을 사용하는 것이 좋습니다.버스,지금 바로기본적으로 이러한 상황을 위해 설계되었습니다..

관련 정보