본문 바로가기

System Hacking

1~2일차] 보안 가이드[계정관리]

 

1. root 계정 원격 접속 제한

1). 취약점 개요

root계정은 시스템을 관리하는 하주 중요한 계정이기 때문에 root계정의 원격 접속 허용은 공격자에게 더 좋은 기회를 제공할 수 있으므로 root의 원격 접속은 금지하여야 한다.

 

2). 점검 방법

1). #> vi /etc/pam.d/login

    해당 파일에 빨간박스 2행의 내용이 주석처리 되어있다면 root보안 인증을 하지 않아 취약한 것이고, 주석이 되어있지 않아야 root 인증  을 함으로 보안이 되어있는 것이다.

 

2). #> vi /etc/securetty

파일 내 *pts/x 관련 설정이 존재하는 경우 위의 pam 모듈 설정과 관계 없이 root 계정 접송을 허용하므로 반드시 securetty 파일에서 pts/x 관련 설정 제거가 필요하다.

 

3). 조치 방안

위의 24~26행의 주석 or 삭제 해준다면, 조치 완료.

※  tty(terminal-teletype) : 서버와 연결된 모니터, 키보드 등을 통해 사용자가 콘솔로 직접 로그인 할 경우.

    pts(pseudo-terminal, 가상터미널) : Telnet, SSH, 터미널 등을 이용하여 접속할 경우. (따라서 보안을 위해서는 pts가 존재하면 안된다.)
 

 


 

 

2. 패스워드 복잡성 설정

1). 취약점 개요

사용자 계정 암호를 유추하기 쉽게 설정할 경우 비인가자의 시스템 접근을 허용하게 하는 위험이 존재한다. 따라서 영문/숫자/특수문자가 혼합된 8자리 이상의 패스워드가 설정된 경우가 양호하다고 판단 할 수 있다.

 

2). 점검 방법

부적절한 패스워드 유형

1). 사전에 나오는 단어나 이들의 조합

2). 길이나 너무 짧거나, NULL인 패스워드

3). 키보드 자판의 일련의 나열 abcd, qwer 등..

4). 사용자 계정 정보에서 유추 가능한 단어들

#> vi /etc/shadow 파일에서 패스워드를 점검해야 한다.

 

3). 조치 방안

영문, 숫자, 특수문자를 조합하여 계정명과 상이한 8자 이상의 패스워드 설정( 패스워드 설정에 대해서는 후에 나온다.)

 

 


 

 

3. 계정 잠금 임계값 설정

1). 취약점 개요

침입자에 의한 패스워드 무작위 대입 공격(Brute Force Attack) 이나 패스워드 추측공격 발생 시 암호입력 실패 횟루를 적정하게 제한함으로써 자동공격을 차단하고 공격 시간을 지체시켜 패스워드 유출 위험을 줄일 수 있다.

 

2). 점검 방법

#> cat /etc/pam.d/system-auto를 확인하여 

auth 컨텍스트 부분에 auth required /lib/security/pam_tally.so deny=5 unlock_time=120 no_magic_root이 있는지 확인.

-> deny = 5 ( 5회 입력 실패 시 패스워드 잠금 )

-> unlock_time ( 계정 잠김 후 마지막 계정 실패 시간으로부터 설정된 시간이 지나면 자동 계정 잠김 해제 )

-> no_magic_root ( root에게는 패스워드 잠금 설정을 적용하지 않음 )

-> reset ( 접속 시도 성공 시 실패한 횟수 초기화 )

account 컨텍스트 부분에 account required /lib/security/pam_tally.so no_magic_root reset이 있는지 확인한다.

 

3). 조치 방안

없으면 적절하게 기입해준다.

 


 

 

4. 패스워드 파일 보호

1). 취약점 개요

패스워드 정보를 평문으로 저장하는 경우 정보 유출 피해가 발생할 수 있으므로 패스워드를 암호화하여 보호해야 한다. 쉐도우 패스워드를 사용하여 "/etc/shadow" 파일에 암호화된 패스워드가 저장되도록 하고 특별 권한 있는 사용자들만 읽을 수 있도록 제한한다.

/etc/passwd 파일은 일반 사용자도 읽을 수 있는 파일이기 때문에 패스워드는 /etc/shadow 파일에 저장되어있다.

 

2). 점검 방법

#> cat /etc/shadow 파일이 존재하는지 확인해야한다. /etc/passwd 파일에서 파일 내 두번째 필드가 암호인데 그 부분이 x로 되어있고 shadow파일에서 암호화 되어 저장된다.

          

 

 

3). 조치 방안

shadow system 이용하지 않으면 설정이 #> pwumconv 로 되어 있는 것으로 다음과 같이 비밀번호 2번째 필드가 공개되어있다.

 

이때 pwconv로 shadow system을 활성화 해주면 다음과 같이 2번째 필드드분이 x로 바뀌고 이제 /etc/shadow 에서 비밀번호를 관리하게 된다.

 

 


 

 

5. root 이외의 UID가 '0'금지

1). 취약점 개요

컴퓨터는 어떤 사용자인지를 아이디가 아닌 UID로 번호로서 인식을 한다. 만약 일반사용자도 root 계정으로 다음 그림과 같이

#> vi /etc/passwd를 통해 4번째 필드(UID)를  root와 동일한 0으로 만든다면 test-1의 사용자도 컴퓨터는 root로 인식하게 된다.

 

2). 점검 방법

#> vi /etc/passwd를 열어서 UID가 0인것을 찾아본다.

 

3). 조치 방안

#> vi /etc/passwd에 UID가 0인 계정이 있다면 중복되지 않게 바꿔준다.

 

 


 

 

6. root 계정 su 제한

1). 취약점 개요

권한이 없는 일반 사용자가 su 명령어를 사용하여 로그인을 시도하고 패스워드 무작위 대입 공격(Brute Force Attack)이나 패스워드 추측 공격 (Password Guessing)을 통해 root 권한을 획득할 수 있음. su 명령어 사용이 허용된 사용자만 root계정으로 접속할 수 있도록 함.

 

2). 점검 방법

즉 특정 사용자 그룹을 제외한 사용자 들은 #>su - 명령어를 이용하여 root계정으로 전환할 수 있으면 안된다. 보통 wheel 그룹에 속한 사용자만 su 명령어 사용권한을 부여한다.

 

3). 조치 방안

#> vi /etc/pam.d/su 폴더의 4행과 6행을 확인하자. 6행의 주석을 풀면 wheel 그룹 사용자만 su - 이용가능하고 4행의 경우는 신뢰가 추가된 것을 확인할 수 있는데 이는 su - 를 하면 password를 입력하지도 않고 root계정으로 전환이 가능하다.

 

 


 

 

7. 패스워드 최소 길이 설정 

1). 취약점 개요

패스워드 무작위 대입 공격이나 패스워드 추측 공격을 피하기 위하여 패스워드 최소 길이가 설정되어 있는지 점검함. 패스워드 최소 길이가 설정되어 있지 않거나, 짧게 설정되어 있을 경우 쉽게 유추될 수 있음.

 

2). 점검 방법

#> vi /etc/login.defs 27행의 부분 확인.

 

3). 조치 방안

PASS_MIN_LEN을 8로 변경한다.

 

 


 

 

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

1). 취약점 개요

패스워드 최대 사용기간을 설정하지 않은 경우 일정 기간 경과 후에도 유출된 패스워드로 접속이 가능하다. 악의적인 사용자로부터 계속적인 접속을 차단하기 위해 패스워드 최대 사용기간을 설정하여 주기적으로 변경할 수 있도록 한다. 

 

2). 점검 방법

#> vi /etc/login.defs 25번행의 부분 확인.

취약 : 패스워드 최대 사용기간이 90일 이하로 설정되어 있지 않는 경우

 

3). 조치 방안

양호 : 패스워드 최대 사용기간이 90일 이하로 설정되어 있는 경우

 

 


 

 

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

1). 취약점 개요

패스워드 최소 사용기간을 설정하지 않은 경우 사용자에게 익숙한 패스워드로 변경이 가능하며, 이를 재사용함으로써 패스워드의 정기적인 변경은 무의미해질 수 있다. 이전 암호를 그대로 재사용하는 것을 방지하기 위해 최근 암호 기억 설정을 함께 적용하여 패스워드를 보호한다.

 

2). 점검 방법

#> vi /etc/login.defs 26행의 부분 확인.

 

3). 조치 방안

패스워드 최소 사용기간이 설정되어 있지 않는 경우 1로 설정을 바꿔준다

 

.


 

 

10. 불필요한 계정 제거

1). 취약점 개요

OS나 Package 설치 시 Default로 생성되는 계정은 대부분 Default 패스워드를 사용하는 경우가 많으며 패스워드 추측공격에 악용될 수 있으므로 시스템에서 이용하지 않는 Default 계정 및 의심스러운 특이한 계정의 존재 유무를 확인 후 삭제한다. 또한 퇴직, 전직, 휴직 등의 이유로 더 이상 사용하지 않는 계정, 불필요한 계정, 의심스러운 계정은 제거해야 한다.

 

2). 점검 방법

#>vi /etc/passwd에서 아래에 나온 기본적으로 차단하는 Default 계정을 살펴본다.

 

3). 조치 방안

1). #> vi Default_user을 통해 위의 계정을 입력해준다.

2). #> cat user | xargs -i userdel -r {}   //user 파일의 출력의 결과가 userdel 명령어의 인자로 사용된다.

 

 


 

11. 관리자 그룹에 최소한의 계정 포함

1). 취약점 개요

시스템을 관리하는 root 계정이 속한 그룹은 시스템 운영 파일에 대한 접근권한이 부여되어 있으므로 최소한의 계정만 등록되어 있어야 한다. 해당 그룹 관리가 이루어지지 않으면 허가되지 않은 일반 사용자가 관리자의 권한으로 시스템에 접근할 수 있으며, 파일 수정 및 변경 등의 악의적인 작업으로 인한 시스템 운영에 피해를 줄 수 있다.

 

2). 점검 방법

#> cat /etc/group을 통해 root 그룹에 불필요한 계정이 있는지 확인한다.

 

3). 조치 방안

점검 후 불필요한 계정이 있다면 조치해 준다.

 


 

12. 계정이 존재하지 않는 GID 금지

1). 취약점 개요

미흡한 계정 그룹 관리로 인해 구성원이 없는 그룹이 존재할 경우 해당 그룹 소유의 파일이 비인가자에게 노출될 위험이 있다.

 

2). 점검 방법

#> cat /etc/group을 확인

불필요한 그룹 1). 해당 그룹이 소유한 파일이 없을 경우  2). 해당 그룹으로 동작하는 프로세스가 없을 경우

 

3). 조치 방안

불필요한 그룹에 해당하는 경우 제거해 준다.

 


 

13. 동일한 UID 금지

1). 취약점 개요

UNIX 시스템은 모든 사용자 계정에 UID를 부여하여 해당 UID로 사용자 이름, 패스워드, 홈 디렉터리 등과 같은 사용자 정보를 대응 시킨다. 만약 중복된 UID가 존재할 경우 시스템에서 동일한 사용자로 인식하여 문제가 발생할 수 있으며, 공격자에 의한 개인 정보 및 관련 데이터 유출 발생 시에도 감사 추적이 어렵게 된다.

 

2). 점검 방법

#> vi /etc/passwd를 확인

 

3). 조치 방안

중복되는 UID가 있다면 변경해 준다.

 


 

 

 

14. 사용자 Shell 점검

1). 취약점 개요

로그인이 필요 없는 계정을 이용해 시스템에 접근하여 사용자의 명령어를 해석하고 악용할 가능성이 있으므로, /bin/nologin 로그인을 금지한다.

 

2). 점검 방법

#>cat /etc/passwd를 통해  불필요한 계정을 확인 한다. 마지막 필드가 로그인할때 사용하는 쉘이다.

 

 

3). 조치 방안

로그인이 불필요한 계정을 찾아서 계정 맨 마지막에 /bin/nologin를 부여한다.

 

 


 

15 Session Timeout 설정

1). 취약점 개요

계정이 접속된 상태로 방치될 경우 권한이 없는 사용자에게 중요한 시스템이 노출되어 악의적인 목적으로 사용될 수 있으므로 일정 시간 이후 어떠한 이벤트가 발생하지 않으면 연결을 종료하는 Session Timeout 설정이 필요하다. 

 

2). 점검 방법

#> vi /etc/profile 파일에 TIMEOUT 설정이 있는지 확인한다.

 

3). 조치 방안

해당 설정이 없다면 부팅시 실행되는 /etc/profile 파일에 TIMEOUT=600 설정을 해준다. 이렇게 한다면 일정 시간 이후 어떠한 이벤트가 발생하지 않으면 10분 후 Session이 끊어지게 된다.