상사로부터 프로덕션 레드햇 서버의 sysadmin으로 자원했습니다. 그는 rm -f *
얼마 전에 발생한 사고를 피하기 위해 보안을 강화하도록 요청 했습니다.
현재 53 명의 사용자가 시스템에 sudo-ing하고 있으며 이는 감사의 악몽입니다. 특정 요일에만 사용자 액세스를 허용 할 수 있는지 궁금합니다.
예를 들어 ‘Joe’사용자가 화요일과 목요일에만 로그인하고 일요일에만 ‘Jane’을 로그인하도록 허용 할 수 있습니까? 수 etc/sudoers
이 가능하도록 사용자 정의 할 수?
sudoers를 사용하는 대신 더 나은 방법이 있습니까?
답변
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 설정을 편집 할 수 있습니다.
답변
53 명의 사용자가 일상적인 작업을 수행하기 위해 sudo가 필요한 이유에 대해 의문을 제기합니다. 대부분의 사용자 (심지어 개발자)에게도 sudo는 일상적인 sudo rm -rf *
명령 이 아닌 드문 예외가되어야합니다 .
그룹 권한 (또는 고급 ACL)을 사용하여 사람들이 업무를 수행하는 데 필요한 파일 (예 : setuid 또는 sudo’ed 스크립트 또는 바이너리)을 사용하여 다시 시작 서비스와 같은 작업을 수행 할 수있는 파일에 액세스 할 수 있습니까? (보안 setuid / sudo 스크립트를 작성하기가 어렵 기 때문에 정직한 사람들을 정직하게 유지하는 것이 더 좋습니다).
사람들이 일주일에 하루에 sudo 액세스를 제한 할 수 있더라도, 여전히 일주일에 sudo 액세스 권한을 가진 53 명의 사람들이므로 핵심 문제에 실제로 도움이되지 않습니다.
그 문제에 대해 많은 사용자가 프로덕션 서버에 액세스해야하는지 여부에 대해 의문을 제기합니다.
답변
가장 간단한 방법은 구성에 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가 액세스하기를 원할 때 존재하며 단순히 파일을 제거하여 액세스를 제거 할 수 있습니다.
답변
crontab을 추가하여 사용자를 sudo 그룹에 넣은 다음 두 번째 crontab을 사용하여 해당 사용자를 제거 할 수 있습니다.