Skip to content
TUWLAB.com
Linux

[Linux] Sudo 명령의 Secure Path

Posted 2014. 11. 28 Updated 2015. 04. 24 Views 2403 Replies 0

sudo 명령은 해당 명령을 잠시 다른 계정(주로 root)의 권한으로 실행하고자 할 때, 계정 전환 등의 절차 없이 유용하게 사용할 수 있는 명령입니다. 다른 계정의 권한을 빌릴 수 있다는 말은 그 계정으로 할 수 있는 모든 일을 할 수 있다는 것을 의미하므로 사용시 유의해야 합니다.

보안상 상당히 위해가 될 수 있는  명령이기 때문에 리눅스 시스템에서는 모든 계정에게 sudo 명령을 사용할 수있는 권한을 부여하지 않고, sudoers라는 설정 파일을 통해 이 명령을 사용할 수 있는 계정의 범위를 한정합니다.

sudo에서 제공하는 또 다른 보안 기능 중 하나가 바로 Secure Path입니다. 이는 sudo 명령을 실행할 때 사용하는 가상 쉘의 PATH 정보를 설정합니다. 다시 말하면, sudo 명령을 실행할 때 현재 계정의 쉘이 아닌 새로운 쉘을 생성하고 그 안에서 명령을 실행하는데, 이 때 명령을 찾을 경로를 나열한 환경변수인 PATH값이 바로 이 secure_path가 됩니다.

즉, sudo 명령을 통해 실행하는 명령은 현재 계정의 쉘 환경도, 대신 실행하는 계정의 쉘 환경도 아닌 특별히 정의된 제 3의 쉘 환경에서 샌드박스 형태로 실행됩니다.

sudo 명령의 Secure Path 기능은 특히 보안상 매우 중요한데, 바로 트로이목마 해킹 공격에 대한 일차적인 방어 기능을 제공하기 때문입니다. 즉, 사용자의 부주의로 인해 현재 계정의 PATH에 악의적인 경로가 포함된 경우, 이를 무시함으로써 sudo를 통한 전체 시스템이 해킹되는 경우를 방지할 수 있습니다.


트로이목마 공격 시나리오

Secure Path 기능이 없거나 해제한 경우, 다음과 같은 트로이목마 공격이 가능합니다.

1. sudo 실행 권한이 있는 사용자가 개인적으로 사용하기 위해 인터넷을 통해 프로그램을 다운받고, 이를 사용자 권한으로 실행했습니다.

2. 이 프로그램에 현재 사용자의 PATH 정보를 변경하는 악성 코드가 숨어있었고, 프로그램이 실행되면서 사용자의 PATH 맨 앞부분에 /path/to/trojan:을 추가합니다. 이 디렉토리 안에는 루트 패스워드를 변경하고 외부 서버로 이 사실을 통보하는 cp라는 프로그램(변조된 cp)이 위치합니다. PATH의 맨 앞부분에 이 경로가 위치하므로, 이제부터 사용자가 cp 명령을 실행할때는 이 '변조된 cp'가 실행됩니다.

3. 사용자가 자신의 소유가 아닌 디렉토리로 파일을 복사 하기 위해 sudo cp 명령을 사용합니다. 이 때, 본래 시스템에 설치되어 있는 cp가 아닌 '변조된 cp'가 실행되며, sudo를 통해 실행되었기 때문에 루트 패스워드를 성공적으로 변경하고 외부 서버로 정보를 전송합니다. 명령을 실행한 사용자에게는 정상적인 cp를 실행한 것처럼 위장하기 위해 실제 파일을 복사하는 작업도 수행합니다. 사용자가 볼 때는 파일 복사가 정상적으로 이루어졌으므로, 아무런 이상도 알아차리지 못합니다.


Secure Path가 문제의 원인인 경우

현재 계정 및 대상 계정에서 이상 없이 실행되는 명령이 현재 계정에서 sudo -u {{대상 계정}} ~~ 과 같은 방법으로 실행했을 때 'Command Not Found' 오류가 발생한다면, 이는 Secure Path에 해당 명령이 있는 경로가 등록되어 있지 않기 때문입니다.

이 경로를 Secure Path에 항상 등록할 필요가 없으며, 이번 한 번만 실행하려 한다면 해당 명령의 절대경로를 입력해서 명령을 실행하면 됩니다. 명령의 절대경로를 잘 모를 경우, 다음과 같이 which를 사용해서 명령을 작성할 수 있습니다.

sudo -u git -H `which bundle` install --deployment --without development test mysql aws

해당 경로가 신뢰할 수 있으며, 앞으로도 지속적으로 사용할 필요가 있다면, 다음 방법을 이용하여 Secure Path를 수정하도록 합니다.


Secure Path 수정하기

sudoers 파일은 소유자인 root에게도 쓰기권한이 부여되어 있지 않으므로 임의로 수정할 수 없습니다. (그렇다고 chmod로 쓰기권한을 부여하는 것은 심각한 보안상 문제를 야기합니다.)

sudoers 파일을 수정하려 하는 경우 별도의 위치에 새로운 sudoers 파일을 작성해서, 원래 파일에 덮어쓰기를 하는 방법을 사용해야 합니다.

단, vi나 vim이 설치된 경우 sudoers 파일을 수정하는 visudo명령을 사용하면 유용합니다.

sudo visudo

sudoers 파일의 아래쪽에서 다음 줄을 찾고, 여기에 필요한 Secure Path를 덧붙입니다.

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin


서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
49 Linux [Ubuntu] Windows와 멀티부팅 환경에서 시간이 맞지 않는 현상 해결하기 TUW 2017.06.08 3
48 Linux [Ubuntu] 원격 Shell에서 로그인 사용자 디스플레이에 GUI 프로그램 실행하기 TUW 2016.03.07 1268
47 Linux Root권한 없이 Wireshark 사용하기 file TUW 2017.06.03 918
46 Linux fstab과 sshfs fuse를 활용한 원격 디렉토리 자동 마운트하기 TUW 2016.01.12 4273
45 Linux 한글 입력기 나비(Nabi)에서 한/영 키가 인식되지 않는 경우 file TUW 2017.06.03 756
44 Linux [VirtualBox] 가상머신 Windows 7 에서 Aero 기능 활성화하기 file TUW 2017.06.03 1573
43 Linux [VirtualBox] Windows 7 물리 디스크 부팅 (Raw Disk Booting or Native Booting) - 방법 1 file TUW 2017.06.14 1610
42 Linux [VirtualBox] Windows 7 물리 디스크 부팅 (Raw Disk Booting or Native Booting) - 배경 file TUW 2017.06.03 1622
41 Linux [Linux] Screen 터미널 에뮬레이션 프로그램 사용하기 TUW 2015.08.19 1514
40 Linux Intelli Backup: File system 및 Database 백업 자동화 Bash 스크립트 TUW 2017.06.15 2363
» Linux [Linux] Sudo 명령의 Secure Path TUW 2015.04.24 2403
38 Linux [Linux] fdisk 활용 외: 파티션 생성, 배드블록 검사, 파일시스템 생성 TUW 2015.04.24 4406
37 Linux TCPDump를 활용하여 패킷 모니터링하기 TUW 2014.10.28 3190
36 Linux [ColorGCC] 컴파일 경고 및 오류메시지 컬러로 출력하기 file TUW 2017.06.03 8083
35 Linux Linux 루트 디렉토리 구성 TUW 2015.09.21 10458
34 Linux SSHFS를 활용한 원격 디렉토리 마운트 TUW 2014.04.24 8804
목록
Board Pagination Prev 1 2 3 4 Next
/ 4

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5