VirtualBox Debian - sudo 및 sudoers

2021. 6. 9. 23:06Linux \ UNIX

 

Linux 및 기타 Unix 유사 운영 체제에서는 root 계정만이 모든 명령을 실행하고

패키지 설치 및 제거, 계정 및 그룹, 시스템 구성 파일 수정 등과 같은

특정 중요한 작업을 수행 할 수 있다.

 

sudo 명령어를 통하여 다른 일반 사용자가 일부 명령을 실행하고

시스템 작업을 수행하도록 허용 할 수 있는데,

먼저, 최소 사양으로 설치하였을 시 sudo 패키지를 따로 설치해주어야 한다.

apt install sudo

 

 

중요한 작업을 수행하는 권한에 관련한 문제이니
모든 계정에게 sudo 권한을 부여한다면, 보안상 큰 문제가 있을 것이다.

따라서 /etc/sudoers 라는 sudo 명령어의 config file을 통해

sudo 를 사용 가능한 계정을 제한하고

몇 가지 설정으로 보안을 강화한다.

기본적인 구성은 다음과 같이 확인한다.

/etc/sudoers 파일에 sudo의 설정이 있는데, 일반 편집기로 접근하면 안된다!

주석의 안내와 같이, visudo 명령을 통하여 sudoers 파일을 편집한다.

 

Defaults 뒤의 각 옵션이 의미하는 바는 다음과 같다.


env_reset : HOME, LOGNAME, PATH, SHELL, TERM, USER을 제외한 모든 환경 변수를 reset시킨다.

 

mail_badpass : 잘못된 패스워드로 sudo를 실행했을 시, 지정된 메일로 보고한다.

 

secure_path : sudo 명령은 현재 계정의 쉘이 아닌 가상 쉘을 생성하고 그 안에서 실행된다.

이때 이 가상 쉘의 환경변수 PATH의 값을  secure_path 옵션을 통해 지정하는 것이다.

 

shell 명령어들은 PATH 환경변수에 지정된 경로에서 바이너리 파일을 찾는다.

 sudo 권한이 있는 사용자의 PATH 환경변수에
악성코드로 인한 경로가 포함되어 있어 특정 명령 실행시 해당 경로에서 악성 파일이 실행될 경우를 가정하자.

 

이러한 상황에서 유저가 sudo를 통해 시스템 전반에 대한 권한을 부여받은 채 해당 명령을 실행한다면...

시스템에 큰 문제가 생길 것이다.

이러한 상황을 방지하기 위해 sudo 가 실행되는 가상 쉘에서 명령어의 바이너리 파일 경로를

secure_path 로 제한하는 것이다.

 

기본 옵션 이외에 추가적으로 설정해 준 옵션.

 

passwd_tries : sudo 명령을 실행할 때, 패스워드 오류 가능 횟수를 지정한다.

 

badpass_message : 잘못된 패스워드가 입력되었을 시, custom message를 출력한다.

 

log_input, log_output, iolog_dir : sudo 를 통해 실행된 명령들, Input과 output에 대한 log 파일을 iolog_dir에 저장한다.

 

requiretty : tty환경에서만 sudo 명령이 실행될 수 있도록 한다. 

이 옵션을 설정하면, cron 명령어에서 실행되는 경우 등에서는 sudo 명령을 사용할 수 없게 된다.

다음 링크를 참고.

https://nostressdev.tistory.com/8

 

sudoers - requiretty 옵션

이 옵션에 대하여 오해가 있었는데, 시스템에 직접 연결된 tty에서만 sudo가 실행이 되고 원격 접속을 통한 터미널 환경, 즉 pts에서는 실행이 안될 것이라고 생각했다! 이를 테스트하기 위해 ssh

nostressdev.tistory.com

 

 

다른 유용한 sudoers의 옵션들에 관한 링크.

 

https://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/

 

10 Useful Sudoers Configurations for Setting 'sudo' in Linux

In Linux and other Unix-like operating systems, only the root user can run all commands and perform certain critical operations on the system such as install and update, remove packages, create users and groups, modify important system configuration files

www.tecmint.com