커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 보안(security) 도움말
검색 : 사이트 WHOIS 웹서버 종류

보안권고 (1, 자료 1)
보안툴 및 장비 (13, 글 1, 자료 11)
보안뉴스 / 정보 (3)
방화벽, 패킷 필터링 / IDS (15, 글 6, 자료 11)
보안문서 - 네트워크 보안 (1, 자료 12)
보안문서 - 시스템 보안 (7, 글 1, 자료 17)
보안문서 - 무선랜(WLAN) 보안 (자료 6)
보안문서 - 해킹 / 공격 (6, 자료 13)
바이러스(virus) / 웜 / 백신 (11, 글 4, 자료 3)
보안 통계 (자료 5)
암호화 및 인증 (3, 자료 3)
원격 OS 탐지 / OS 핑거프린팅 (4, 글 1, 자료 6)

  Linux, FreeBSD에서 비밀번호 정책 설정 작성일 : 2008/01/03 21:48
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 12044
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      제  목 : Linux, FreeBSD에서 비밀번호 정책 설정
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2007.12.21(금)
    수정일 : 2008.1.3(목)

    Linux와 FreeBSD에서 비밀번호의 유효기간과 최소 길이를 제한하는 방법을 간단히 설명한다.

    1. Linux에서

    /etc/login.defs 파일 PASS_.. 시작하는 설정값을 통해서 비밀번호 설정을 제어하게 된다.



    PASS_MAX_DAYS : 비밀번호의 최대 유효일  (기본값 : 99999. 365이면 1년)
    PASS_MIN_DAYS : 비밀번호를 변경할 수 없는 최소일 (기본값 : 0. 만료전이면 언제나 변경 가능)
    PASS_WARN_AGE : 비밀번호 만료 전에 주어지는 경고일 (기본값 : 0)
    PASS_MIN_LEN  : 비밀번호의 최소 길이

    login.defs 를 수정하면, 새로 생성되는 ID에 대해서 바로 적용이 된다. 그렇다면 기존에 생성되어 있는 ID는 어떻게 되는가? 기존 ID는 login.defs 변경 전의 설정을 갖고 있다. 위 설정 중 고려할 설정값은 PASS_MAX_DAYS, PASS_MIN_LEN인데, PASS_MAX_DAYS는 login.defs 변경 전의 설정값을 따르게 되고, PASS_MIN_LEN은 해당 ID가 새롭게 비밀번호를 변경하게 되면 그 때 부터 적용받게 된다. 기존 ID의 비밀번호 유효일 조정은 chage 명령을 이용하면 쉽게 가능하다. (shadow파일을 직접 수정할 수도 있지만 권장하지 않음)



    chage -l truefeel 명령으로 확인하고,
    chage -M 365 truefeel 로 최대 유효일을 변경할 수 있다.



    2. FreeBSD 4.x에서

    /etc/login.conf 파일에 비밀번호 정책을 설정하며, 일반 사용자는 'default:' class에 설정하고, root는 'root:' class 에 설정한다.




    passwordtime=    비밀번호의 최대 유효일  (365d이면 1년)
    minpasswordlen=  비밀번호의 최소 길이
    mixpasswordcase= 비밀번호가 반드시 대소문자 섞여서 사용하기를 바라면 true 로 설정

     
    default:\
       ... 생략 ...
       :passwordtime=365d:\
            :minpasswordlen=8:\

    root:\
       :ignorenologin:\
       :passwordtime=180d:\
            :minpasswordlen=8:\
            :idletime=120m:\
            :tc=default:
     


    설정시 주의할 것은

    1) 각 class가 끝나기 전까지는 역슬래쉬(\)를 넣어 끝나지 않았음을 표시해야 하며,
    2) 'root:' class에서 설정시에 설정값은 tc=default 보다 위에 있어야 한다.
       예를들어 'default:' class에 passwordtime=365d 설정이 있다고 가정하자. 그리고 다음과 같이 설정되어 있을 경우, passwordtime=180d 설정값은 무시되고, 대신 default에 있는 365일이 적용된다.

     
    root:\
       ... 생략 ...
            :tc=default:\
       :passwordtime=180d:   <-- default 에 이미 설정값이 있다면 적용되지 않음
     


    설정이 완료됐으면 'cap_mkdb /etc/login.conf' 명령을 실행해야한다.
    기존 ID에 대한 비밀번호 만료일 변경은 chsh 명령으로 설정할 수 있으며, 다음과 같이 저장하면 2008년 3월 1일에 만료된다. 또는 비밀번호를 변경(passwd 명령이용)하면 자동으로 현재일 기준으로 passwordtime이 적용된다.

     
    # chsh truefeel
    ... 생략 ...
    Change [month day year]: 03 01 2008
    ... 생략 ...
     


    3. FreeBSD 6.x (또는 5.x)에서

    FreeBSD 6.x에서는 login.conf 설정 대신에 pam_passwdqc PAM 모듈을 사용하여 비밀번호의 길이와 복잡성 정도를 설정한다.
    /etc/pam.d/passwd 를 보면 다음과 같이 pam_passwdqc.so 모듈 부분이 주석처리되어 있을 것이다.

     
    #password       requisite       pam_passwdqc.so         enforce=users
     


    다음과 같이 설정을 하면 비밀번호 변경시 8자리 이상의 비밀번호를 입력해야하며 반드시, 2가지 이상의 문자종류(대문자, 소문자, 숫자, 그외(특수문자) 등)를 섞어야 한다.

     
    password        requisite       pam_passwdqc.so         min=disabled,8,8,8,8 passphrase=0 match=0 similar=permit enforce=users
     


    min=disabled,8,8,8,8 을 min=disabled,N1,N2,N3,N4으로 표현했을 때, 각 의미를 살펴보자.

    N1 : 2가지의 문자조합으로 했을 때 문자열의 최소 길이
    N2 : passphrase를 사용할 때(위에서는 passphrase=0으로 사용하지 않음) passphrase의 길이
    N3 : 3가지 이상의 조합을 했을 때 문자열의 최소 길이
    N4 : 모든조합(4가지 조합)을 했을 때 문자열의 최소 길이. 즉, 대소문자+숫자+특수문자 등이 모두 들어간 경우

    만약 min=disabled,12,10,8,6 라고 설정했다면,
    - 2가지 조합(이를테면 대문자+소문자 라던지, 대문자+숫자 등등)이면 12자리 이상이어야 하며,
    - 3가지이상 조합이면 8자리 이상 (예. trueTR99 => 소문자+대문자+숫자)
    - 4가지 조합이면 6자리만 되어도 비밀번호를 만족하게 된다.
      (예. trTR9! => 소문자+대문자+숫자+특수문자)
    이 때 주의할 것은 마지막 문자가 숫자인 경우 해당 숫자는 조합수에서 빠지며, 첫문자가 대문자인 경우도 조합수에서 빠진다. 예를들어, trTR9!는 4가지 조합이지만, trTR!9는 6자리로 이뤄진 3가지 조합으로 인식한다. trTR!89는 마지막 '9'를 빼더라도 소문자+대문자+특수문자+숫자로 4가지 조합이 된다.

    similar=permit 은 비밀번호 변경시 그 이전 비밀번호와 유사해도 허용함을 의미한다.

    4. 참고자료

    * FreeBSD의 login.conf 의 맨페이지
      http://threads.seas.gwu.edu/cgi-bin/man2web?program=login.conf§ion=5
    * Hardening FreeBSD (Updated: 06/27/2005)
      http://www.bsdguides.org/guides/freebsd/security/harden.php
    * pam_passwdqc 홈페이지와 man page
      http://www.openwall.com/passwdqc/

      커피닉스 카페 최근 글
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
    [05/16] (주)후이즈 시스템엔지니어 (경력자) 모집
    [02/15] [AWS] Cloudfront edge 확인하기
    [01/20] Mobile Service/eCommerce 기업에서 Server / Java / PHP 개발자 구인
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Mobile 개발자를 모십니다.
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Web Front 개발자를 모십니다.
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Server 개발 팀장을 모십니다.
    [12/21] 브라우저별 SHA1 퇴출 시점
    [09/15] [구인] 시스템엔지니어 (경력)
    [08/05] Re: 칼리리눅스 텔넷관련
    [08/04] 칼리리눅스 텔넷관련
    [06/29] 또 다른 무료 SSL 인증서, Let's Encrypt
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~