아메바시큐리티

유닉스/리눅스 인증 본문

유닉스&리눅스 보안

유닉스/리눅스 인증

am2ba 2021. 4. 21. 00:57

로그인 과정

(1) 사용자 계정과 패스워드 입력

(2) 로그인 담당 프로그램이 입력한 패스워드의 해시값과, /etc/shadow에 기록된 해시 값을 비교(이전에는 /etc/passwd사용)

(3) 패스워드 확인 후 로그인 프로그램은 쉘이 사용할 변수들을 근거로 초기 환경을 설정

(4) 절차가 끝나면 로그인 쉘 실행

 

/etc/passwd

UNIX는 시스템 관리자가 사용자 계정을 만들 때마다 해당 사용자와 관련된 정보를 /etc/passwd파일에 저장한다.

passwd 파일에는 UNIX 시스템을 이용하는데 필요한 기본정보들이 저장되어 있다.

/etc/passwd 파일

각 필드는 : 로 구분된다.

[1] root : 유저 이름

[2] x : 비밀번호 (현재는 해시값을 shadow파일에 저장하여 /etc/passwd 에는 x로 표시되어 있다.

[3] 0 : user id

[4] 0 : group id

[5] root : comment

[6] /root : home directory

[7] : /bin/bash : login shell

 

UID와 GID가 0으로 변경된 계정이 있는 지 주기적으로 확인해야한다. 

계정의 UID나 GID가 갑자기 0으로 변경되었다는 것은 시스템에 취약점이 존재하고, 공격자가 해당 취약점을 이용해서 계정의 권한을 강제로 상승시켰을 확률이 높다. 따라서 이를 주기적으로 확인하여 변화가 있는지 확인해야 한다. 

/etc/passwd 파일의 변경은 자주 일어나지 않기 때문에 해당 파일의 해시값을 이용하여 해시값이 변경될 때 알림이나 로그를 만들어 확인할 수 있다. 

 

/etc/shadow

/etc/shadow 파일

/etc/shadow 파일은 user의 비밀번호의 해시값이 들어가 있는 파일이다. 해당 파일은 root 권한이 없으면 열람할 수 없다. 대신 자신의 패스워드 변경시에는 해당 파일에 쓸 수 있는 권한이 생긴다. 이것은 setuid와 관련이 있는데 이는 다른 글에서 확인할 수 있다. 

위에 그림에서 볼 수 있는 것과 같이 root라는 계정의 패스워드가 해시값 형태로 저장되어 있다. 

리눅스에서는 로그인 시에 입력받은 패스워드의 해시값과 /etc/shadow 파일에 존재하는 해시값을 비교하여 로그인 성공 여부를 확인한다.