본문 바로가기

시스템 보안

5. 리눅스 파일 권한(1)

반응형

이번 시간에는 시스템에서 정말 중요한 권한관리에 대해 배워볼거야!

상당히 복잡한 주제이지만 시스템 관리에 있어서 매우 중요하기 때문에

시간이 걸리더라도 하나씩 확인하면서 해보도록 하자!

 

 

 

1. 파일 권한과 umask

 

보통 리눅스에서 파일권한을 확인하기 위해 umask라는 명령어를 사용해

umask란 universal mask 라는 뜻인데,

최소한의 권한을 걸어놓고 사용한다는 뜻을 갖고 있어

리눅스는 기본적으로 '0022' 값을 갖고 있는데 이것이 뜻하는 바가 무엇이냐!

0
특수 bit
0
소유자 권한
2
그룹 권한
2
기타 권한

박스 하나의 값을 8진수로 표현하고 있어

하나의 박스에는 r,w,x 총 세개의 비트가 있는데

r=4 w=2 x=1 의 값을 갖고 rwx 권한 모두 갖게 되면 7이라는 값을 갖게돼

그러면 umask를 어떻게 활용한다는 거야?

자, 지금 localhost에 touch 명령으로 jnu 파일을 하나 생성하고 ls-l 명령으로 권한을 확인해볼게

 

 

jnu 파일의 권한이 rw-r--r-- 로 되어있고 이를 숫자로 표현하면 644의 값을 갖게 돼.

리눅스에서 파일 권한은 기본값으로 666을 갖고 있는데, umask와 차집합 연산을 통해

얻어진 결과값을 파일의 권한으로 갖게 되는 거야.

 

<정리>

파일 기본 허가권: 666

디렉토리 기본 허가권: 777

 

리눅스 파일의 권한 = 파일 기본 허가권 - umask 값

리눅스 디렉토리의 권한 = 디렉토리 기본 허가권 - umask 값

 

디렉토리도 하나 생성해서 확인해보면 알 수 있어

 

jnu111 디렉토리의 권한이 rwxr-xr-x로 755의 값을 갖는 것 보이지?

 

 

2. 파일, 디렉토리의 권한별 기능

 

이 부분이 정말로 중요한 파트인데, 바로 r,w,x의 기능이 무엇을 뜻하는지 살펴보는 부분이야

r은 read, w는 write, x는 execute의 줄임말인데, 

파일과 디렉토리에서 r,w,x가 수행하는 일들이 다르기 때문에 확실히 알아야해 

밑의 표를 보고 정리해보도록 하자!

 

< r,w,x의 기능 >

  file directory
r 해당 파일 내용만 읽기 가능 dir 내에서 파일, 디렉토리 목록 출력 가능 ( ls -l 가능 )
w 해당 파일 내용 쓰기, 수정 가능 dir 내에서 파일 생성 및 삭제 가능 ( 파일 수정은 불가 )
x 파일 내용 실행 가능 dir 내부로 진입 가능 ( cd 가능 ) 

 

이렇게 표로만 보고는 확실한 느낌이지 오지 않을거야

그래서! 오늘은 문제를 풀어보면서 그 느낌을 한 번 살려보려고 해

문제를 하나씩 풀어가면서 어떤 느낌인지 알아가보도록 해보자!

 

 

1. 사용자 test1,2,3,4 생성

useradd (test1/test2/test3/test4) -> passwd 명령으로 각 계정 비밀번호도 설정!


2. 디렉토리 korea1,2,3,4,5

(mkdir korea1/2/3/4/5)


3. 파일 생성
- /home/korea1/seoul1.txt, seoul2.txt
- /home/korea2/daejeon1.txt, daejeon2.txt
- /home/korea3/busan1.txt, busan2.txt
- /home/korea4/daegu1.txt, daegu2.txt

touch 명령으로 위의 8개 파일을 만들어 놓자

 

자 여기까지 세팅이 됐다면 여기서부터 문제풀이로 들어가자!



4. test1 사용자만 korea5 디렉토리 진입 허용

chown 명령으로 korea5 디렉토리의 소유자를 test1으로 설정

 

test1을 제외한 다른 계정으로 korea5 계정 진입 실패



5. test1,test2 사용자만 korea4 디렉토리 진입 허용

두 명의 사용자가 하나의 디렉토리로 접근을 하려면 어떻게 해야되지...?

여기서 usermod를 통한 group 계정을 활용해볼거야

test1의 그룹계정에 test2의 그룹계정을 등록해보도록 할거야

usermod -G test1 test2 명령인데 그 결과를 /etc/group에서 확인할 수 있어

 

test1 계정에 test2가 등록되어 있지?

 

이 상태에서 korea4 디렉토리의 group 계정을 test1으로 전환시키고

test1 계정과 test2 계정으로 korea4 디렉토리에 접근해보도록 할게

 

group 권한 전환

chmod :test1 korea4

 

korea4 디렉토리 group 권한 부여

디렉토리 내부 접근 허용이니까 x권한을 부여해주면 돼

chmod g+x korea4

 

chmod g+x 권한을 하기 전의 모습이야 이 명령을 부여하지 않으면 접근 안돼!

 

test1과 test2 권한으로 cd 명령이 가능한 것을 확인할 수 있어 대신, r권한이 없으니까 ls-l 은 안되겠지?

 

결론적으로 group 계정에 등록을 하게되면,

해당 계정을 직접적으로 그룹 권한을 주지 않은 상태여도

해당 권한을 가진 것처럼 사용할 수 있게 되는거야

해커들은 이런 부분을 노려서 권한상승 공격을 시도하는거지!

여기서는 korea4 계정이었지만 만약 root권한을 가진 디렉토리나 파일일 경우

해당 시스템은 매우 취약한 상태에 노출되겠지?

 


6. test3,test4 사용자만 daejeon1.txt, busan1.txt 파일 읽기,쓰기 허용

 

이 문제는 5번문제와 다르게 디렉토리가 아닌 파일에 대한 파일 권한을 다루는 문제야

daejeon1.txt는 korea2 디렉토리에 있고

busan1.txt.는 korea3 디렉토리에 있다는 것을 알고 이 문제를 다뤄보자

 

일단 test3와 test4 두 사용자가 같은 권한을 갖고 있기 때문에

test3의 group 계정에 test4 계정을 등록시키도록 할게

그리고 daejeon1,busan1 파일의 그룹계정을 test3로 바꿔놓으면 돼

 

test3 계정에 test4를 등록했어

 

대전, 부산 파일의 group 계정을 test3로 바꾼 상태

 

그리고 두 파일의 파일 허가권을 그룹계정에게만 r,w 권한을 주려고 해

chmod g+r+w daejeon1.txt

chmod g+r+w busan1.txt

 

마지막으로 korea2,korea3 디렉토리에 접근하려면 디렉토리의 그룹 권한을

test3로 바꿔줘야 돼

chmod :test3 korea2

chmod :test3 korea3

그리고 두 디렉토리의 group 권한에 r과 x 즉, ls -l과 cd 명령이 가능하도록 권한부여를 해야 돼

 

 

적용하고 test4 계정으로 접속해서 해당 디렉토리와 파일을 확인해봤어

test4 계정으로 busan1.txt 파일을 읽고 수정까지 가능하다는 것을 볼 수 있지?

test3 계정은 생략하도록 할게 test4가 가능하다는 것은 test3도 가능한 것이니까!

 



자 오늘은 여기까지 허가권을 가지고 이것저것 한 번 문제를 풀어봤는데,

아직 세 문제정도 더 풀어야될 것이 있어 이 문제들은 특수권한을 이용한 문제들이라

다음 공부시간에 이어서 해보도록 하고  SETUID, SETGID, Stick bit에 대해서도 같이 알아보도록 할게

오늘은 여기서 끝!

 

 

 

반응형

'시스템 보안' 카테고리의 다른 글

8. ICMP 필터  (0) 2021.12.22
7. ping 차단  (0) 2021.12.22
6. 리눅스 파일 권한 (2)  (0) 2021.12.21
4. 로그인 접근 권한  (0) 2021.12.16
3. 계정관리  (0) 2021.12.14