일주일에 하루 동안 Sudoers?


10

상사로부터 프로덕션 레드햇 서버의 sysadmin으로 자원했습니다. 그는 rm -f *얼마 전에 발생한 사고를 피하기 위해 보안을 강화하도록 요청 했습니다.

현재 53 명의 사용자가 시스템에 sudo-ing하고 있으며 이는 감사의 악몽입니다. 특정 요일에만 사용자 액세스를 허용 할 수 있는지 궁금합니다.

예를 들어 'Joe'사용자가 화요일과 목요일에만 로그인하고 일요일에만 'Jane'을 로그인하도록 허용 할 수 있습니까? 수 etc/sudoers이 가능하도록 사용자 정의 할 수?

sudoers를 사용하는 대신 더 나은 방법이 있습니까?


10
매뉴얼 페이지를 읽지 않는 것이 좋습니다. xkcd # 1343 참조
user60684

3
아니요, IMHO를 읽을 수 없기 때문에 설명서를 읽지 말라고 지시하고 있습니다. OP는 읽기 편한 경우 맨 페이지에서 답을 찾을 수 있습니다.
user60684

10
이 작업을 수행 할 수 있지만 사용자는 루트가있는 날마다 항상 sudo 액세스 권한을 되돌릴 수 있습니다.
Nick Matteo

2
@ Mark0978 회사의 이름을 알고 있다면 머릿속에서 웃으면 서 죽을 것입니다. 프로덕션 서버에서 허용되는 것은 수치입니다.
Chris

3
이것은 어리석은 것 같습니다. 단지 Bill이 수요일 아침 시간대가 실행될 때까지 기다려야한다는 것을 의미합니다 rm -rf /.
Michael Hampton

답변:


21

sudo Linux 박스의 다른 모든 것들과 마찬가지로 PAM을 통한 인증을 수행합니다.

따라서이 pam_time.so작업을 수행하는 데 사용할 수 있어야합니다 .

최소한 데비안에서는 기본적으로 해당 모듈이 활성화되어 있지 않습니다. 다음과 같은 줄을 추가해야합니다.

account    requisite  pam_time.so

하나에 /etc/pam.d/sudo만 sudo를하거나 할 수 있도록 /etc/pam.d/common-account시스템의 모든 프로그램을 가능하게합니다 (PAM-인증 업데이트 블록 후).

그런 다음 편집 /etc/security/time.conf하여 제한을 설정하십시오. 서비스 이름은이어야합니다 sudo. 예를 들어 Fred가 sudo금요일 오후 3시에서 오후 5시 사이에만 사용할 수있게하려면 다음을 수행하십시오.

sudo;*;fred;Fr1500-1700

(참고 : 나는 이것을 테스트하지 않았습니다.)

편집 : 분명히, 나는 다른 대답과 다양한 의견에 동의합니다. 너무 많은 사람들이 루트로 너무 많은 명령을 실행하는 것처럼 보이므로 실제로 수정해야합니다. 물론 루트가 될 수 있다면 pam 설정을 편집 할 수 있습니다.


PAM은 구현하기가 복잡해 보이지만 누가 언제 무엇을하는지 더 엄격하게 제어 할 수 있습니다. 수락하고 투표했습니다. 감사합니다.
Chris

2
나는 그를 격려하는 것이 정답이라고 생각하지 않습니다. IMAO이 질문에 대한 정답은 "HILL FOR THE HILLS !!!! 1! 1 !! 1! 1"
o0 '입니다.

이것이 실제로 작동합니까? pam_time.so를 사용하여 "login", "ssh", "gdm", "su"와 같은 다양한 로그인 메커니즘을 제어 할 수 있지만 sudo에서는 작동하지 않습니다. 근무 시간 외의 일반적인 메커니즘으로 인해 누군가가 뿌리 내리는 것을 막고 싶습니다. (방탄이 아님을 미리 알고 누군가가 미리 setuid 쉘이나 백도어를 준비 할 수는 있지만 이런 상황에서는 그런 일이 일어날 것으로 예상하지 않습니다.)
Sam Watkins

20

53 명의 사용자가 일상적인 작업을 수행하기 위해 sudo가 필요한 이유에 대해 의문을 제기합니다. 대부분의 사용자 (심지어 개발자)에게도 sudo는 일상적인 sudo rm -rf *명령 이 아닌 드문 예외가되어야합니다 .

그룹 권한 (또는 고급 ACL)을 사용하여 사람들이 업무를 수행하는 데 필요한 파일 (예 : setuid 또는 sudo'ed 스크립트 또는 바이너리)을 사용하여 다시 시작 서비스와 같은 작업을 수행 할 수있는 파일에 액세스 할 수 있습니까? (보안 setuid / sudo 스크립트를 작성하기가 어렵 기 때문에 정직한 사람들을 정직하게 유지하는 것이 더 좋습니다).

사람들이 일주일에 하루에 sudo 액세스를 제한 할 수 있더라도, 여전히 일주일에 sudo 액세스 권한을 가진 53 명의 사람들이므로 핵심 문제에 실제로 도움이되지 않습니다.

그 문제에 대해 많은 사용자가 프로덕션 서버에 액세스해야하는지 여부에 대해 의문을 제기합니다.


또는 필요한 루트 파일 인 chroot jailed sftp 종류의 설정에 대한 액세스 권한을 게시 할 수 있습니다.
boatcoder

@Johnny이 호스트에서 수행 한 대부분의 작업은 쉘 스크립트를 작성 / 편집하고 실행하는 것입니다. 사용자는 허용되지 않아야합니다 vi/cp/mv/rm. 만 cd하고 more. 다른 건 없어
Chris

@Johnny 디렉토리에 ACL을 설정하면 해당 디렉토리 내의 파일이 기본적으로 ACL 속성을 상속합니까?
Chris

@Chris 예, 디렉토리의 기본 ACL을 설정 한 경우
Michael Hampton

이것은 답변이 아닌 의견이어야합니다. OP의 시나리오가 합리적인지 여부에 관계없이 다른 사람들은 특정 시간에 일부 사용자에 대해 "스도"를 잠글 필요가 있습니다.
Sam Watkins

7

가장 간단한 방법은 구성에 suders.d (inludedir를 통해)를 사용하는 것입니다. 그런 다음 원하는 시간 동안 각 사용자에 대한 규칙을 해당 디렉토리에 배치 할 수있는 크론 작업을 가질 수 있습니다.

#includedir 지시문은 / etc / sudoers에서 sudo.d 디렉토리를 작성하여 규칙의 일부로 sudoers 규칙을 삭제할 수있는 sudo.d 디렉토리를 작성할 수 있습니다.

#includedir /etc/sudoers.d

sudo는 /etc/sudoers.d의 각 파일을 읽고 '~'로 끝나거나 '.'를 포함하는 파일 이름을 건너 뜁니다. 패키지 관리자 또는 편집기 임시 / 백업 파일에 문제가 발생하지 않도록합니다. 파일은 사전 어휘 순서대로 구문 분석됩니다. 즉, /etc/sudoers.d/01_first는 /etc/sudoers.d/10_second 전에 구문 분석됩니다. 정렬은 숫자가 아닌 어휘이므로 /etc/sudoers.d/1_whoops는 /etc/sudoers.d/10_second 다음에로드됩니다. 파일 이름에 일정한 수의 선행 0을 사용하면 이러한 문제를 피할 수 있습니다.

#include를 통해 포함 된 파일과 달리 visudo는 구문 오류가없는 경우 #includedir 디렉토리의 파일을 편집하지 않습니다. 파일을 직접 편집하기 위해 -f 플래그로 visudo를 실행할 수 있습니다.

/etc/sudoers.d/joe는 joe가 액세스하기를 원할 때 존재하며 단순히 파일을 제거하여 액세스를 제거 할 수 있습니다.


1
사용자 별 sudoers 파일 ( 'sudoers.user1'등)에 문제가있었습니다. '~'및 '.' 캐릭터가 내 문제를 해결했습니다. 나는 당신이 설명서를 읽어서 기쁘다! 감사합니다.
Han

0

crontab을 추가하여 사용자를 sudo 그룹에 넣은 다음 두 번째 crontab을 사용하여 해당 사용자를 제거 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.