공부/정보보안기사 실기

[Section 02] UNIX/Linux 서버 취약점 (116 ~ 125pg)

남쪽마을밤송이 2022. 4. 14. 13:34

 [01 계정 관리] 

 (1) root 이외의 UID는 0 금지 

개요

  • root와 동일한 UID를 가진 계정 존재 시 root 권한으로 시스템 접근이 가능하므로 root의 UID를 가진 계정이 존재하지 않도록 확인

보안설정

  • /etc/passwd 파일 내 UID 확인
    • root 이외의 계정이 UID=0인 경우 확인하고 변경하거나 계정 삭제
  • UID 변경
    • SOLARIS, LINUX, HP-UX : usermod 명령으로 UID가 0인 일반 계쩡의 UID 변경
      ex) usermod -u 2016 algisa
    • AIX : chuser 명령으로 UID가 0인 일반 계정의 UID를 100 이상 설정
      ex) chuser id=2016 algisa

 (2) 패스워드 복잡성 설정 

개요

  • 사용자 계정(root 및 일반 계정 모두 해당) 암호를 유추하기 쉽게 설정할 경우 비인가자의 시스템 접근을 허용하게 하는 위험이 존재

보안설정

  • 부적절한 패스워드 유형
    • 사전에 나오는 단어니 이들의 조합
    • 길이가 너무 짧어가 NULL인 패스워드...
  • 패스워드 관리 방법
    • 영문 숫자 특수문자를 조합하여 계정명과 상이한 8자 이상의 패스워드 설정
    • 자주 패스워드를 변경한다....

패스워드 최소 길이 설정

  1. 패스워드 정책 파일을 수정하여 패스워드 최소 길이를 8자 이상으로 설정
  2. 점검 파일 위치 및 점검 방법
    1. SOLARIS : /etc/default/passwd
    2. LINUX : /etc/login.defs
    3. AIX : /etc/security/user
    4. HP-UX : /etc/dafault/security

패스워드 최대 사용기간 설정

  • 개요
    • 패스워드 최대 사용기간을 설정하여 악의적인 사용자로부터 계속적인 접속을 차단해야 한다.
  • 보안설정
    • 패스워드 정책 설정파일을 수정하여 패스워드 최대 사용기간을 90일(12주)로 설정

패스워드 최소 사용기간 설정

  • 개요
    • 패스워드 최소 사용기간을 설정하지 않은 경우 사용자에게 익숙한 패스워드로 변경이 가능하며 이를 재사용함으로써 패스워드의 정기적인 변경은 무의미해질 수 있음
  • 보안설정
    • 패스워드 정책 설정파일을 수정하여 패스워드 최소 사용기간을 1일(1주)로 설정

패스워드 파일 보호

  • 개요
    • 패스워드 정보를 평문으로 저장하는 경우 정보 유출 피해가 발생할 수 있으므로 shadow 패스워드를 사용하고 권한이 있는 사용자들만 읽을 수 있도록 제한
  • 보안 설정
    • 보통 /etc/shadow 파일의 존재를 확인하고 /etc/passwd 파일 내 두 번째 필드가 'x'로 표시되는지 확인하면 됨

Session Timeout 설정

  • 개요
    • 계정이 접속된 상태로 방치될 경우 권한이 없는 사용자에게 중요시스템이 노출되어 악의적인 목적으로 사용될 수 있으므로 일정 시간 이후 어떠한 이벤트가 발생하지 않으면 연결을 종료하는 세션 타임아웃 설정이 필요하다.
  • 보안설정
    • 관리자 계정명 확인
      • 세션 타임아웃을 600초 이하로 설정한다.

 [02 파일 및 디렉터리 관리] 

 (1) root 홈, 패스 디렉터리 권한 및 패스 설정 

개요

  • root 계정의 path 환경변수에 '.'이 포함되어 있으면 root 계정으로 접속한 관리자가 의도하지 않은 현재 디렉터리에 위치하고 있는 명령어가 실행될 수 있다. 즉 "."이 /usr/bin, /bin, /sbin 등 명령어들이 위치하고 있는 디렉터리보다 우선하여 위치하고 있을 경우, root 계정으로 접속한 관리자가 특정 명령을 실행하면, 불법적으로 현재 디렉터리에 위치시킨 파일을 실행하여 예기치 않은 결과를 가져올 수 있다.
  • PATH 환경변수에 '.'이 맨 앞 또는 중간에 위치하고 있으면 root가 의도하지 않은 명령이 실행될 수 있으므로 PATH 환경변수의 마지막으로 이동시키거나 불필요한 경우 삭제한다.
  • 보안설정
    • $PATH 변수를 확인하여 경로 맨 앞 또는 중간에 "."가 포함되어 있는지 여부를 확인하고 맨 뒤로 이동시키거나 불필요한 경우 삭제한다.
    • SHELL에 따라 참조되는 환경설정 파일
      • /bin/sh : /etc/profile/, $HOME/ .profile
      • /bin/bash : /etc/profile, $HOME/ ./bash_profile
      • /bin/ksh : /etc/profile, $HOME/ .profile $HOME/kshrc
      • /bin/csh : /etc/.login, $HOME/ .cshc, $HOME /.login

 (2) 파일 및 디렉터리 소유자/소유그룹 설정 

개요

  • 소유자/소유그룹이 존재하지 않는 파일 및 디렉터리는 현재 없는 소유자/소유그룹의 소유였거나 관리 소홀로 인해 생긴 파일일 가능성이 있음
  • 사용하지 않는 디렉터리나 파일일 경우 시스템 자원 낭비가 될수 있고 중요 파일 및 디렉터리일 경우 관리가 되지 않는 문제가 있다.

보안설정

  • 소유자 또는 소유그룹이 존재하지 않는 파일/디렉터리 검색
    • 실습을 위해 algisa2 계정 및 그룹 생성 후 파일 두개를 생성한다. ls 명령을 통해 확인해보면 소유자/소유그룹이 정상적이다.
    • userdel 명령을 통해 algisa2 계정을 삭제한 후 ls 명령을 통해 확인해보면 uid/gid 정보만 남아있을 뿐 소유자/소유그룹이 표시되지 않는다.
    • find 명령의 -nosuer, -nogroup 옵션을 통해 소유자/소유그룹이 존재하지 않는 파일/디렉터리를 검색한다.
  • 파일 소유자/소유그룹 변경 또는 불 필요시 삭제
    • chown, chgrp 명령을 통해 소유자/소유그룹을 변경한다.

 (3) world writable 파일 점검 

개요

  • world writable 파일이란 모든 사용자(others)에게 쓰기 권한이 부여되어 있는 파일을 말한다.
  • 모든 사용자가 접근 및 수정할 수 있는 권한으로 설정된 파일이 존재할 경우 일반 사용자의 실수 또는 악의적으로 주요 파일 정보를 변경할 수 있기 때문에 시스템 장애나 추가적인 공격에 활용될 수 있는 문제점이 있다.

보안설정

  • world writable 파일/디렉터리 검색
    • find 명령의  '-perm -2'옵션을 통해 others에 쓰기권한이 부여된 파일/디렉터리를 검색
  • 모든 사용자에게 쓰기 권한을 제거하거나 불필요한 파일/디렉터리일 경우 삭제한다.
    • 대상 파일/디렉터리에 chmod 명령을 이용하여 others에 쓰기 권한을 제거하거나 rm 명령을 이용해 삭제한다.

 (4) 주요 파일 소유자 및 권한 설정 

개요

  • /etc/passwd 파일 : 사용자 정보를 담고 있는 파일로 root 소유의 644 이하의 권한을 설정한다.
  • /etc/shadow 파일 : 사용자의 암호화된 패스워드 정보를 담고 있는 파일로 root 이외에는 접근을 못하도록 root 소유의 400 이하의 권한을 설정한다.
  • /etc/hosts 파일 : IP와  호스트 이름을 매핑하는데 사용하는 파일로 외부의 불법적인 접근에 의한 조작 시 악의적인 시스템에 접근할 가능성이 있으므로 root 소유의 600이하 권한을 설정한다.
  • /etc/(x)inetd.conf 파일 : inetd 데몬에 의한 설정파일로 외부의 불법적인 접근에 의해 악의적인 프로그램을 등록하고 root 권한으로 실행할 가능성이 있으므로 root 소유의 600 이하의 권한을 설정한다.
  • /etc/syslog.conf 파일 : syslogd 데몬에 대한 설정파일로 주요 로그파일에 대한 설정정보를 가지고 있다. 해당 파일의 접근권한이 적절하지 않아 외부의 불법적인 접근에 의해 변경되는 경우 시스템 로그가 정상적으로 기록되지 않아 침입자의 흔적 또는 시스템 오류 사항을 정확하게 분석할 수 없으므로 root 이외의 사용자는 해당 파일을 변경할 수 없도록 root 소유의 644 이하의 권한을 설정한다.
  • /etc/services 파일 : 서비스 관리(서비스별 포트/프로토콜 정보)정보를 담고 있는 파일로 접근권한이 적절하지 않아 외부의 불법적인 접근에 의해 변경되는 경우 정상적인 서비스를 제한하거나 허용되지 않은 서비스를 등록하는 등의 위험이 있으므로 root 소유의 644이하의 권한을 설정한다.