sudo 좀 더 공부하기
sudo란?
Linux 및 기타 Unix 유사 운영 체제에서는 root 계정만이 모든 명령을 실행하고 패키지 설치 및 제거, 계정 및 그룹, 시스템 구성 파일 수정 등과 같은 특정 중요한 작업을 수행 할 수 있다.
sudo 명령어를 통하여 다른 일반 사용자가 일부 명령을 실행하고 시스템 작업을 수행하도록 허용 할 수 있는데, 먼저, 최소 사양으로 설치하였을 시 sudo 패키지를 따로 설치해주어야 한다.
중요한 작업을 수행하는 권한에 관련한 문제이니 모든 계정에게 sudo 권한을 부여한다면, 보안상 큰 문제가 있을 것이다. 따라서 /etc/sudoers 라는 sudo 명령어의 config file을 통해 sudo 를 사용 가능한 계정을 제한하고 몇 가지 설정으로 보안을 강화한다.
기본적인 구성은 다음과 같이 확인한다. /etc/sudoers 파일에 sudo의 설정이 있는데, 일반 편집기로 접근하면 안된다! 주석의 안내와 같이, visudo 명령을 통하여 sudoers 파일을 편집한다.
1. sudo 설치 && 세팅
- sudo를 설치하기 위해서는 root로 이동
su - # root계정의 홈으로 전환
- sudo 설치 여부 확인
apt --installed list sudo # sudo 패키지 설치 여부 확인
- 없으면 설치
apt install sudo # sudo 패키지 설치

과제
- Each action using sudo has to be archived, both inputs and outputs. The log file has to be saved in the /var/log/sudo/ folder.
- sudo를 통한 모든 동작(입출력)은 저장되어야 합니다. log 파일들은 /var/log/sudo 폴더에 저장되어야 한다.
요렇게 나와있음
- /var/log/sudo/ 동작이 여기에 저장되어야 하기 때문에
mkdir /var/log/sudo
근데 거지 같은 게 한 번씩 요렇게 됨 당황하지 말고
sudo visudo
visudo를 이용해서 파일 수정

visudo
파일을 보면 Defaults 3개 있고 이상한 거 있을 거임

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 로 제한하는 것이다.
Secure_path
secure_path : sudo에서 제공하는 보안 기능 중 하나
→ 명령어를 찾을 경로를 나열한 환경변수 값
sudo 명령어 → 가상 쉘 생성 - 안에서 실행
⇒ 이 쉘 명령어는 securepath로 저장된 경로에서 바이너리 파일을 찾아 실행하는 것
⇒ 해킹 공격에 대한 방어기능 → sudo를 사용하여 path에 악의적 경로가 포함 되었을때
secure_path에 해당하지 않는다면 이를 무시한다.
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
뒤에 snap/bin 추가

log 정리는 끝남
비밀번호 정책
이제 sudo에서 원하는 비밀번호 정책 추가 해보자

Defaults authfail_message="권한 획득 실패 메세지"
- sudo 비밀번호가 없을 때 없는 비밀번호를 맞추는 것도 wrong passwd의 범주로 생각해 처리해주어야 함
Defaults badpass_message="비밀번호 틀릴때 메세지"
Defaults iolog_dir="/var/log/sudo/"
- input, output로그를 남길 디렉토리를 가르킴
Defaults log_input
- input 로그를 남김
Defaults log_output
- output 로그를 남김
Defaults requiretty
- tty 모드를 사용할 수 있게 함 (로그인 명령 하에 실행되도록 함. cron같은 매크로성 입력 제한)
Defaults passwd_tries=3
- 비밀번호 횟수 설정
'42Seoul > Born2beroot' 카테고리의 다른 글
AppArmor implement (2) | 2023.05.09 |
---|---|
group 설정 implement (0) | 2023.05.09 |
SSH, UFW study (0) | 2023.05.09 |
apt, aptitude study (0) | 2023.05.09 |
LVM, sudo study (1) | 2023.05.09 |