[Born2beRoot] sudo 설정하기
42seoul Born2beRoot 프로젝트 Mandatory에서 요구하는 sudo 설정 과정이다.
sudo
- 유닉스 및 유닉스 계열 운영 체제에서, 다른 사용자의 보안 권한, 보통 슈퍼유저로서 프로그램을 구동할 수 있도록 하는 프로그램
- 즉, root가 아닌 사용자가 root에 준하는 능력으로 실행할 수 있게 하는 명령어이며, 사용을 허락한 사용자는 모두 사용할 수 있다.
- “substitute user do”(다른 사용자의 권한으로 실행)의 줄임말
- 관리자 권한을 가지지만 근본적으로는 해당 사용자가 내리는 명령이다.
Subject의 내용
- sudo 비밀번호 인증 시 최대 3번까지 시도 가능
- sudo 인증 실패 시 커스텀 경고 메세지 출력
- sudo 명령어 실행 시 로그를
/var/log/sudo
에 저장 - 보안 상의 이유로 TTY에서만 sudo를 실행 가능
- TTY(Tele Type Writer): 콘솔 및 터미널 환경
- 보안 상의 이유로 sudo 실행 시 사용할 수 있는 명령어 경로는 제한되어야 함
먼저 Debian은 sudo가 없기 때문에 sudo 패키지를 설치해야한다. sudo 패키지를 설치하기 위해 root 계정으로 전환한 후 설치를 하고 요구사항을 설정한다.
root 계정 전환
// su: 다른 계정으로 전환 명령어
$ su - // 다른 계정으로 전환 + 해당 계정의 환경변수 적용 (여기에서는 '-'은 'root')
sudo 패키지 설치
$ apt-get install sudo
sudo 패키시 설치 확인
$ dpkg -l | grep 'sudo'
sudo log 저장을 위한 디렉토리 생성
$ mkdir /var/log/sudo
sudo 설정을 위햔 명령어 실행
$ visudo
/etc/sudoers 파일에 sudo 설정이 존재하지만, visudo
은 /etc/sudoers 파일을 관리하기 위한 application으로 안전하게 sudo 파일들을 편집할 수 있기 때문에 일반적인 파일 편집기를 사용하는 것보다 권장된다.
처음 visudo
를 실행할 경우 아래 사진처럼 나오게 된다.
각 Defaults 뒤에 의미하는 바는 다음과 같다.
env_reset
: HOME, LOGNAME, PATH, SHELL, TERM, USER을 제외한 모든 환경 변수를 resetmail_badpass
: 잘못된 패스워드로 sudo 실행 시, 지정된 메일로 보고secure_path
: sudo 명령은 현재 계정의 쉘이 아닌 가상 쉘을 생성하고 그 안에서 실행된다. 이 때, 이 가상 쉘의 환경변수 PATH의 값을secure_path
옵션을 통해 지정한다.
shell 명령어들은 PATH 환경변수에 지정된 경로에서 바이너리 파일을 찾는다.
이 때, sudo 권한이 있는 사용자의 PATH 환경변수에 악성 코드로 인한 경로가 포함되어 있어 특정 명령 실행 시 해당 경로에서 악성 파일이 실행될 경우 시스템에 큰 문제가 생길 것이다.
이러한 상황을 방지하기 위해 sudo가 실행되는 가상 쉘에서 명령어의 바이너리 파일 경로를secure_path
로 제한하는 것이다.
이제 42seoul Born2beRoot 프로젝트 Mandatory에서 요구하는 sudo 설정을 하면 아래와 같다.
각 Defaults 뒤에 의미하는 바는 다음과 같다.
authfail_message
: 권한 획득 실패 시 출력 메세지, 즉 sudo 인증 실패 시 출력 메세지badpass_message
: sudo 인증에서 비밀번호를 틀렸을 경우 출력되는 메세지log_input
: sudo 명령어 실행 시 입력된 명령어를 log로 저장log_output
: sudo 명령어 실행 시 출력 결과를 log로 저장requiretty
: sudo 명령어 실행 시TTY
강제하는 설정iolog_dir
: sudo log 저장 디렉토리 지정passwd_tries
: 비밀번호 인증 시도 횟수 (Default 값: 3)
log의 경우 /var/log/sudo/00/00
에서 확인 할 수 있으며, sudo 명령어 하나마다 하나의 폴더가 생성된다. 폴더에는 총 7개의 log 파일이 존재한다.
-
log
: sudo 실행 시 실행한 위치와 실행한 명령어의 위치 저장 -
stderr
: sudo로 실행한 명령어가 오류로 인해 실행되지 않았을 경우 출력되는 내용 저장 -
stdin
: sudo로 실행한 명령어가 표준 입력을 받은 내용 저장 -
stdout
: sudo로 실행한 명령어가 표준 출력으로 결과를 출력한 내용 저장 -
timing
: session(세션)이 실행된 시간 저장 -
ttyin
: sudo로 실행한 명령어가TTY
로 입력받은 내용 저장 -
ttyout
: sudo로 실행한 명령어가TTY
로 출력한 결과가 저장참고
https://ko.wikipedia.org/wiki/Sudo
https://brownbears.tistory.com/227
Author And Source
이 문제에 관하여([Born2beRoot] sudo 설정하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@octo__/Born2beRoot-sudo-설정하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)