Linux 시스템을 사용하려면 로그인을 해야함, 사용자 ID와 PW가 필요함
PW를 입력하면 Linux는 /etc/passwd 파일에는 해쉬로 암호화된 PW가 있지만, /etc/passwd에 PW를 저장하지 않고 /etc/shadow에 저장할 수도 있음
/etc/passwd 파일 구조
root : x : 0 : 0 : root : /root : /bin/bash
(1) :(2):(3):(4) : (5) : (6) : (7)
/etc/shadow 파일 구조
root : $1Fz4q1Gje/ : 14806 : 0 : 99999 : 7 : : :
(1) : (2) : (3) : (4) : (5) :(6):(7):(8):(9)
Linux에서 PW 만료날짜를 확인하는 명령
chage -I <사용자명>
Join the ripper를 사용한 패스워드 크래킹(Cracking)
크래킹(Craking)?
john --format=raw-MD5 /root/passwd.txt --crack-status
Linux의 PW 변경
/etc/passwd 파일 수정한다??

파일 소유자인 root만 읽기/쓰기가 가능함, 따라서 수정 못하네?
ㄴㄴ, 패스워드를 변경하려면 passwd 프로그램을 실행해야 하고, 이 프로그램이 /etc/passwd파일을 수정하하는 방식임, passwd 프로그램은 /usr/bin/passwd에 있는데

실행 권한을 나타내는 x field에 소문자 's'는 특수 권한, 실행 시 해당 파일의소유자의 권한으로 실행
이 파일의 소유자는 root라서 root, 같은 그룹, 다른 사용자도 모두 실행 가능
일반 사용자도 순간적으로 소유자인 root의 권한을 획득 => 이를 특수 권한인 setuid라고 함
Linux의 권한 관리
소유자, 그룹, 다른 사용자
읽기 r, 쓰기 w, 실행 x
파일을 만들때마다 사용자가 매번 권한을 부여하기는 귀찮음-> Default 권한
이러한 Default 권한 값을 가지고 있는 것이 unmask
umask명령어를 통해 umask값 확인, 0022 라면
666 - 022 = 644
단, Directory 생성을 mkdir 명령을 통해 생성하면 Default 권한이 666이 아닌,777 - 022 = 755가 됨
따라서 보안상 가장 안전한 umask 설정 값은 Directory 생성을 고려해서 unmask 077이라고 할 수 있음.
chmod 권한값 파일명 : 예로 chmod 777 test.txt , 최고권한은 777, 각자 rwx 알지?ㅇㅋchmod 권한의미 파일명 : 예로 chmod u+x, g+w, o-r test.txtsetuid
chmod 4000 해당실행파일setgid
chmod 2777 해당Directory 으로 setgid를 부여하면 다른 사용자가 해당 Directory에 쓰기를 할 수 있다
/var/mail Directory는 소유자가 root이고 그룹이 mail이며 setgid가 설정되어 있음/var/mail에 자신의 Directory를 생성하고 메일을 보관할 수 있게 됨sticky bit
공용 Directory를 만들어 누구나 자유롭게 사용할 수 있도록 함
chmod 1000 해당Directory
해당 Directory는 누구나 자유롭게 사용할 수 있지만, 해당 Directory삭제는 소유자만(root 제외) 가능하다.
예로) /tmp Directory를 확인하면 drwxrwxrwt로 나타나며, 여기서 t라는 것은 sticky bit가 설정되어있음을 의미함
특수 권한 파일 검색
find / -perm 4000 -print 등등... 숫자만 4, 2, 1 으로 바꾸면 됨
하지만, 실제 4000을 검색했을때는 정확하게 4000권한이 있는 파일만 검색함(대문자 S만 있는..). 소문자 "s" 로 설정된 파일은 검색하지 못함
따라서, find / -perm 4755 -print로 하면 실행 권한을 가지고 있는 setuid를 찾을 수 있음.
ls 명령어 상세 내용
(1) (2)(3) (4) (5) (6) (7) (8)
drwxr-xr-x 2 root root 4096 6월 29 14:54 bin
(1)은 10글자로 첫 글자는 d, l, - 처럼 이루어져 있으며 l은 링크, -는 파일을 의미
(2)는 하드링크 번호로 링크된 파일의 수를 의미
(3), (4)는 소유자, 소유 그룹의 이름을 의미
(5)는 byte 단위의 파일 크기, 보통 4096이면 Directory임
(6), (7)은 파일 생성 또는 수정 일자
(8)은 파일 및 Directory 이름