1. 파일 및 디렉토리 속성정보(MetaData) 분석
1.1. 원본-rw-r--r-- 1 root root 2 2월 17 09:31 a.txt
1.2. 분석
- - : 파일 유형
- 파일 (-), 디렉토리 (d), Symbolic link (1)
- rw- : user(owner) 권한
- r - 읽기(4), w - 쓰기(2), x - 실행(1)
- r-- : group 권한
- r - 읽기(4), w - 쓰기(2), x - 실행(1)
- r-- : 기타사용자(other)
- r - 읽기(4), w - 쓰기(2), x - 실행(1)
- 1 : link 개수
- root : 소유주(owner)
- root : 그룹(group)
- 2 : 그룹(group)
- 2월 17 09:31 : 파일이나 디렉토리가 마지막으로 수정된 시간
- a.txt : 파일이나 디렉토리의 이름
※ 파일 속성 정보 확인
2. 권한 변경 및 Test
2.1. chmod
2.2. 사용자 지정 옵션
- ugoa : u(user), g(group), o(other), a(all)
- + : 권한 추가
- - : 권한 제거
- rwx : r(읽기), w(쓰기), x(실행)
※ a.txt 파일에 user 실행 권한 부여
※ a.txt 파일에 그룹, 기타사용자 실행 권한 부여
※ a.txt 파일에 유저 실행 권한 제거, 기타사용자 쓰기 권한 부여
※ a.txt 파일에 유저, 그룹, 기타사용자 읽기 권한 제거
※ a.txt 파일의 모든 사용자에게 읽기 권한 부여
※ 2 디렉토리 및 그 아래에 있는 모든 파일 및 디렉토리에 유저/그룹/기타사용자, 읽기/쓰기/실행 권한 부여
2.3. 8진수 법
- u : 4(r) + 2(w) + 1(x)
- g : 4(r) + 2(w) + 1(x)
- o : 4(r) + 2(w) + 1(x)
- 777 : 첫 번쨰 숫자 user, 두 번째 숫자 group, 세 번쨰 숫자는 other 권한
※ a.txt에 755 권한 부여 ( user: rwx, group: rx, other: rx )
※ 현재 디렉토리 및 그 아래에 있는 모든 파일 및 디렉토리에 755 권한 부여
2.4. umask
- 파일 및 디렉토리 생성 시 모든 권한을 부여하며 보안상 문제가 발생함으로 최소 권한 법칙에 근거하여 파일 및 디렉토리의 최대 권한에서 umask 만큼을 빼서 파일 및 디렉토리 생성
- 디렉토리의 최대 권한은 777, 파일의 최대 권한은 666
- 디렉토리의 경우 해당 디렉토리에 접근하기 위해서는 반드시 x(실행) 권한이 있어야 함.
- 파일의 경우 sh 명령어도 강제 실행이 가능함으로 또한 rw 권한만으로 충분하기에 666
※ 현재 umask 값 확인
- umask 값을 확인해보면 022로 설정되어 있는 것을 확인할 수 있다.
- 디렉토리 생성 시 디렉토리의 최대 권한인 777에 umask값 022를 적용하여 755(rwxr-xr-x) 권한으로 자동 적용된다.
- 파일 생성 시 파일의 최대 권한인 666에 umask값 022를 적용하여 644(rs-r--r--) 권한으로 자동 적용된다.
※ umask값 0044로 변경 후 파일 및 디렉토리 생성
- 디렉토리 생성 시 디렉토리의 최대 권한인 777에 umask값 044를 적용하여 733(rwx-wx-wx) 권한으로 자동 적용된다.
- 파일 생성 시 디렉토리의 최대 권한인 766에 umask값 044를 적용하여 722(rwx-w--w-) 권한으로 자동 적용된다.
2.5. chown 소유권 변경
umask | 022 | 044 | ||
최대권한 | 777 | 766 | 777 | 766 |
umask 적용 값 | 755 | 744 | 733 | 722 |
2.6. chown 소유권 변경
- chown 사용자id.그룹id [파일명]
- chown 사용자id [파일명]
- chown .그룹id [파일명]
- -R : 하위 디렉토리 속성 전파, 단 명령어 이후 새로 생성하는 파일에는 적용 안됨
※ a.txt 파일의 소유주 a로 변경
※ a.txt 파일의 그룹 b로 변경
※ a.txt 파일의 소유주, 그룹 다시 root로 변경
※ 2 디렉토리 아래에 있는 모든 파일 및 디렉토리의 소유주는 a, 그룹은 b로 변경 (-R 옵션)
2.7. 특수 권한
- setuid (4000 )
- 실행권한에 s : setuid 권한부여, 실행권한 있음
- 실행권한에 S : setuid 권한부여, 실행권한 없음
- 해당 권한이 설정된 파일이 실행되는 동안에는 소유주의 권한으로 실행된다.
- 실행되는 동안 소유주 권한을 갖게 되므로, 꼭 필요한 경우가 아닐 경우에는 사용하지 않는다.
- ex) # chmod 4775 [파일명] //실행 권한 있음
- # chmod 4655 [파일명] //실행 권한 없음
※ /etc/passwd 파일 및 /usr/bin/passwd 명령어 권한 확인
- 일반 사용자는 passwd 명령어를 사용하여 본인의 패스워드를 변경할 수 있다.
- /etc/passwd 파일을 확인해보면 일반사용자에게는 쓰기 권한이 없는 것을 확인할 수 있다. 어떻게 passwd 파일을 변경할 수 있을까?
- /usr/bin/passwd 명령어의 권한을 확인해보면 setuid 가 설정되어있다.
- 일반 사용자가 passwd 명령어를 실행하는 동안에는 소유주인 root 권한을 갖게 된다. 따라서, 일반사용자도 passwd 명령어를 사용하여 /etc/passwd 파일 수정이 가능하게 된다.
- setgid (2000)
- 실행권한에 s : setgid 권한부여, 실행권한 있음
- 실행권한에 S : setgid 권한부여, 실행권한 없음
- 해당 권한이 설정된 파일이 실행되는 동안에는 그룹의 권한으로 실행된다.
- ex) # chmod 6775 [파일명] //실행 권한 있음
- # chmod 6765 [파일명] //실행 권한 없음
- stickybit (1000)
- 실행권한에 t : stickybit 권한부여, 실행권한 있음
- 실행권한에 T : stickybit 권한부여, 실행권한 없음
- 해당 권한이 설정된 디렉토리에서는 파일이나 디렉토리를 생성한 사용자만 삭제 가능. 단 최고 관리자인 root는 영향을 받지 않는다.
- ex) # mkdir 2 //stickybit는 디렉토리에 권한 부여
- # chmod 7777 [디렉토리명] //실행 권한 있음
- # chmod 7776 [디렉토리명] //실행 권한 없음
※ /tmp 디렉토리 아래에 a 유저로 a.txt 파일을 생성한 후 삭제한다.
- /tmp 디렉토리에 stickybit 권한이 부여된걸 확인할 수 있다.
- /tmp 디렉토리에 유저 a로 로그인하여 a.txt 파일 생성
- 생성한 a.txt 파일이 정상적으로 삭제되는지 확인한다.
※ /tmp 디렉토리 아래에 a 유저로 a.txt 파일을 생성한 후, b 유저로 로그인하여 a.txt 파일을 삭제한다.
- b 유저로 로그인하여 a.txt 파일을 삭제한다.
- a.txt 파일 삭제 시 메세지가 출력되며, 권한이 부여되지 않아 파일을 삭제할 수 없는 것을 확인할 수 있다.
- setuid, setgid, stickybit 권한 부여 실습
※ a.txt 파일에 setuid, 실행 권한 함께 부여
※ a.txt 파일에 setuid 권한 부여, 소유주 실행 권한은 부여하지 않음
※ a.txt 파일에 setuid/setgid/실행 권한 부여
※ a.txt 파일에 setuid/setgid 권한 부여, 이때 소유주/그룹 실행 권한은 부여하지 않음
※ 2 디렉토에 stickybit 권한 부여
3. MAC time
3.1. 침해사고 분석 시 파일 및 디렉토리의 접근시간(A), 권한변경(C), 내용수정(M) 시간 정보는 분석에 필수적인 정보임. 따라서 MAC Time 공격자의 시간대별 활동 정리에 필수
※ test.txt 파일 생성 후 파일 정보 확인
※ test.txt 파일 내용 확인 후 파일 정보 확인
- cat 명령어로 파일 내용 확인 후, Access time이 변경 됨
- 파일 수정 시간은 변경되지 않음
※ test.txt 파일 권한 변경 후 파일 정보 확인
- 파일 권한 변경 후, Change time이 변경 됨
- 파일 수정 시간은 변경되지 않음
※ test.txt 파일 내용 수정 후 파일 정보 확인
- 파일 내용 수정 후, Modify/Change time이 변경 됨
- 파일 수정 시간이 변경된 것을 확인할 수 있다.
- 따라서 ls -l 명령어 입력시 확인되는 일시 정보는 파일의 마지막 수정 시간이다.
ad.
- which [명령어] : 명령어의 위치 확인
'Linux' 카테고리의 다른 글
06. CentOS7 명령어 - useradd, usermod, userdel, group (0) | 2022.02.22 |
---|---|
05. CentOS7 명령어 - vi 편집기 (0) | 2022.02.22 |
03. CentOS7 명령어 - touch, Archive, 압축(zip, gzip, bzip2, xz) (0) | 2022.02.22 |
02. CentOS7 기본 명령어 (0) | 2022.02.22 |
01. Linux (0) | 2022.02.22 |