[시스템 보안] Unix, Linux 서버 보안 - 1
1. /etc/shadow
가. 구조
□ user_account : encrypted_passwd : last_change : minlife : maxlife : warn : inactive : expires
1) encrypted_passwd
- 구조 : $ID(암호화에 적용된 일방향 해시함수 식별)$Salt(레인보우 테이블 공격 방지)$encrypted_passwd
- * : 패스워드 잠긴 상태(패스워드 로그인 금지, 별도의 인증방식을 통한 로그인 가능)
- !! : 패스워드 잠긴 상태(모든 로그인 금지)
- 빈값 : 패스워드 미설정 상태(패스워드 없이 로그인 가능 상태)
cf. UNIX : NP(로그인 불가), *LK*(패스워드 잠금, 로그인 불가), 빈값(패스워드 미설정, 자동 설정 단계 이동)
2) last_change : 마지막 패스워드 변경일
3) minlife : 패스워드 최소 사용기간(최근 암호 기억 무력화를 통한 익숙한 패스워드 재사용 방지)
4) inactive : 패스워드 만료 후, 잠금까지 비활성화 일 수
나. 관련 파일 및 명령어
□ /etc/login.defs : 리눅스 패스워드 정책 설정 파일
□ pwconv : 패스워드 저장 정책 shadow로 변경
□ pwunconv : 패스워드 저장 정책 일반 패스워드로 변경(/etc/passwd 에 함께 저장)
2. 실행권한
가. 구분
1) RUID : 프로세스를 실행시킨 사용자의 UID
2) RGID : 프로세스를 실행시킨 사용자의 GID
3) EUID : 자원 접근권한판단을 위한 UID → 아.. SID 가 설정되어있으면 해당 값이 파일의 UID 값으로 바뀌겠네
4) EGID : 자원 접근권한판단을 위한 GID → 아.. SGID 가 설정되어있으면 해당 값이 파일의 GID 값으로 바뀌겠네
나. 명령어
□ chmod -s "실행 파일명" : suid 및 sgid 권한 삭제
□ find / -user root -type -f \( -perm 4000 -o -perm 2000\) -exec ls -al {} \;
→ -exec "명령어" -{} : 찾은 파일을 대상으로 뒤에 나오는 명령어를 차례대로 수행해라
→ 루트 디렉터리(/) 에서 사용자가 root 이고 setuid(4000) or setgid(2000)
권한이 설정된 파일을 찾아서 출력(ls -al) 해라(-exec)
다. sticky bit
□ 디렉터리에 대한 권한 설정 → 권한 없는 사용자에 대한 디렉터리 내부 파일 삭제 및 변경 방지
□ ex. chmod o+t /tmp → others 에 권한 추가, 디렉터리에 권한 부여
3. 슈퍼서버(inetd 데몬)
가. 비교
1) stand-alone : 개별 서비스별로 서버 프로세스(데몬)가 존재
2) inetd : 클라이언트 요청은 모두 슈퍼 데몬이 처리하고 개별 서비스를 호출하는 방식
나. /etc/inted.conf
1) 용도 : 슈퍼데몬 최초 실행 시, 해당 파일의 정보를 참조하여 서비스할 프로그램들에 대한 정보 획득
2) 구조
□ 서비스명 소켓타입 프로토콜 플래그(no wait or wait) 사용할 사용자 계정 실행 경로명(절대경로) 실행인수
- 서비스명 : /etc/services 파일에 등록된 포트번호를 참조하여 서비스할 프로세스의 포트를 결정
- 소켓타입 : datagram(udp), stream(tcp)
- 프로토콜 : /etc/protocols 파일에 주어진 프로토콜 중 사용가능한 프로토콜을 설정