본문 바로가기

OS & network/solaris

솔라리스의 사용자 보안 강화법

이 포스팅은 데일리시큐(http://www.dailysecu.com )에 기고한 문서입니다.

 

오늘 제가 이야기 하려는 것은 보안의 기본중에 기본인 시스템 보안, 그 중에서 사용자 보안에 대해서 이야기 하려고 합니다.
그리고 시스템중에서도 특히 솔라리스 시스템에 대한 사용자 보안에 대해서 간략하게 보안 강화법을 제공해 볼까 합니다.
기회가 되면 추가적으로 솔라리스 시스템의 보안 기능에 대해서 포스팅 하도록 하겠습니다.

전통적으로 솔라리스와 같은 유닉스 시스템은 보안에 대해 윈도우 보다 강하다는 인식이 강했지만, 시스템의 보안은 결국은 관리자가 얼마나 관심있게 관리하고 부지런한가에 달려있다고 해도 과언이 아닙니다.

따라서, 이러한 방법이 솔라리스 시스템에 대한 완벽한 보안을 보증할 수는 없지만, 보다 강력한 보안체계로 여러분들의 솔라리스 유닉스 시스템을 보호해 줄 것이라는 사실은 분명합니다.

추후 솔라리스의 다양한 보안 기능에 대해서 기고해 볼 수 있도록 노력해 보겠습니다.


솔라리스의 사용자 보안 강화법

 


1. 보다 강력한 패스워드 제약 조건

여러 해킹 및 침해사고를 보면 가장 기본적인 보안대책인 패스워드가 터무니없이 약하게 구성되어 있다는 것에 놀라곤 합니다.
통상적으로 솔라리스 8과 같은 하위 솔라리스 시스템은 기본적으로 /dev/default/passwd 파일에 의해 패스워드 길이에 대한 제한이 걸려 있지만 6~ 8자사이에서 입력값을 적용하는 정도 였습니다.
현재 사용중인 솔라리스 10 이나 솔라리스 11 과 같은 상위 버전의 시스템에서는 보다 강력한 패스워드 정책의 적용이 가능합니다.

시스템에서 /etc/default/passwd 파일을 열어 확인해 보면 과거 버전부터 지원되었던 사용자 보안 정책에 대한 설정이 가능함을 알 수 있습니다.

MAXWEEKS=4
MINWEEKS=3
PASSLENGTH=8




MAXWEEKS와 MINWEEKS는 사용자가 3주에서 4주(한달)사이에 패스워드를 변경하도록 요구 합니다.
PASSLENGTH는 기본값이 6이며, 이를 8로 설정하면 패스워드를 8자까지 사용할 수 있도록 합니다. 이 길이를 6 보다 적게 설정해도 6자로 설정됩니다. 물론 보안강화를 위해 8로 변경하여 설정하기를 바랍니다.
솔라리스 10 부터 추가적용된 설정값들은 아래와 같습니다.

HISTORY=10
MINDIFF=3
MINALPHA=2
MINNONALPHA=1
MINUPPER=1
MINLOWER=0
MAXREPEATS=0
MINSPECIAL=1
MINDIGIT=1
WHITESPACE=YES

이 설정값들의 의미를 이름으로만으로 확인할 수 있겠지만 알파벳을 최소 몇자이상, 숫자를 몇자 이상, 특수문자, 공백 등등 최소 패스워드 정책을 보다 강력하게 제약할 수 있습니다.

따라서, 문자만 사용하는 패스워드나 단순하게 이루어진 패스워드를 사용자가 사용하지 못하도록 강제 할 수 있게 됩니다.
HISTORY의 경우 현재 보기에서는 10으로 설정되어 있는데, 이는 사용자가 매번 변경했던 패스워드를 10개까지 기억하고 있어서 추후 사용자가 특정 패스워드를 돌려 쓰기 하지 못하도록 하는 기능으로 매우 유용하도록 할 수 있습니다.

이러한 기능이외에도 /etc/security/policy.conf 파일을 이용하면 사용자의 암호를 md5, sha256과 같은 해쉬를 이용해서 보다 패스워드를 안전하게 관리할 수 있습니다.
아래는 /etc/security/policy.conf의 일부 내용으로 패스워드 해쉬에 지원가능한 알고리즘 입니다.

CRYPT_ALGORITHMS_ALLOW=1,2a,md5,5,6

여기에서 1 , 2a는 bsd 기반 알고리즘으로 보다 상세한 정보는 매뉴얼 페이지에서 확인하시기 바랍니다. Md5는 md5 해쉬를 , 5는 SHA 256 을 , 6는 SHA512 를 의미 합니다.
이와 관련되어 사용되는 라이브러리는 아래와 같습니다.

1 crypt_bsdmd5.so.1
2a crypt_bsdbf.so.1
md5 crypt_sunmd5.so.1
5 crypt_sha256.so.1
6 crypt_sha512.so.1

솔라리스 10 에서는 기본적으로 아래와 같이 설정되어 있습니다.
CRYPT_DEFAULT=__unix__


이를 아래와 아래와 같이 변경하면 SHA256기반으로 해쉬하여 패스워드를 저장하게 되어 보다 안전하게 패스워드를 관리할 수 있습니다.
CRYPT_DEFAULT=5

솔라리스 11의 패스워드 요구 기본 사항은 최소 6자 이상 , 최소 1자 이상의 영문자와 숫자가 포함되도록 되어 있으며 , 해당 패스워드는 SHA256으로 해쉬되어 저장됩니다.


2. 일반 사용자에 대한 계정 잠금

일반적으로 특정 사용자의 반복적인 로그인 실패는 시스템 감사 프로세스에 의해 탐지 및 적발되어야 하며, 로그 증적으로 이루어져야 합니다.
그러나, 무차별 대입 공격 등의 자동화된 공격도구에 의해 패스워드 크래킹이 이루어질 수 있으므로 이에 대한 대응책으로 임계치를 설정하여 반복적인 로그인 실패시에 사용자 잠금(Lock)이 이루어질 수 있도록 해야 합니다.
사용자 잠금 설정은 시스템 전역 차원에서 사용하는 방법과 사용자별 잠금정책을 별도 설정하는 방법으로 이루어 집니다.

시스템 전역 설정
/etc/security/policy.conf 를 열어서 아래의 설정값을 확인합니다.
#LOCK_AFTER_RETRIES=NO

해당 설정값에서 주석을 제거하고 NO를 YES로 변경합니다.
LOCK_AFTER_RETRIES=YES

해당 설정 완료 후 /etc/default/login 파일의 RETRIES 항목의 주석을 제거하고 재시도 회수를 조정하면 됩니다. 기본값은 5 였으며, 5회 재시도를 3회 재시도로 변경한 것입니다.
RETRIES=3


사용자별 잠금정책

사용자별 잠금정책은 아래와 같이 사용하면 됩니다.
#usermod –K lock_after_retries=yes user01

이렇게 설정하면 user01 은 lock_after_retries 에 의해 추후 3회의 반복적인 로그인 실패시 사용자가 잠궈지게 됩니다.

몇가지 간단한 설정만으로도 보다 강력한 사용자 패스워드 관리 및 사용자 보호를 수행할 수 있게 됩니다.