4 분 소요

📝 사용자 로그인 관련 명령어

  • 다른 사용자로 로그인 su 명령어

    • su [-] [사용자명]

    • 다른 사용자로 로그인할 때 사용합니다.

      • -(dash)의 유무
      • su -root : 입력한 사용자의 사용자 초기화파일 적용
      • su root : 현재 사용자의 환경을 유지, 사용자 초기화파일 적용 x
  • 로그인 한 사용자 확인 who 명령어
    • who : 접속 정보
    • who am i : 현재 터미널에 대한 접속 정보
    • whoami : 로그인명
  • 로그인 내역 확인 last 명령어
    • last : /var/log/wtmp파일을 참조해서 로그인했던 정보를 출력해주는 명령어입니다. 자신의 시스템에 접속한 정보를 확인할 수 있습니다, (IP확인 가능)

PAM 모듈

  • PAM은 리눅스 시스템에서 사용하는 ‘인증 모듈(Pluggable Authentication Modules)’로써 응용 프로그램(서비스)에 대한 사용자의 사용 권한을 제어하는 모듈입니다.

    PAM을 사용하기 이전 리눅스 시스템에서는 사용자를 인증하기 위해 각 응용프로그램에서 자체적으로 로직을 구현하여 사용했습니다. 특히 시스템에 저장된 사용자 정보를 통해 인증할 경우, 응용프로그램이 사용자 정보가 담긴 주요 시스템 파일(etc/passwd)​에 대한 접근 권한을 가지고 있어야 하므로 침해사고의 위험이 존재했습니다. 그 뿐만 아니라 응용프로그램마다 사용자 인증 방식이 상이하여 관리하기에 많은 어려움이 따랐습니다.

    이를 해결하기 위해 PAM이 등장하게 되었으며, PAM의 동작 원리는 다음과 같습니다.

    1. 인증이 필요한 응용프로그램은 더 이상 passwd 파일을 열람하지 않고 ‘PAM’ 모듈에 사용자 인증을 요청합니다.

    2. PAM은 인증을 요청한 사용자의 정보를 가지고 결과를 도출하여 응용프로그램에 전달합니다.

    %EA%B7%B8%EB%A6%BC25.png

    [그림 1] 응용프로그램 자체적으로 사용자 인증하는 과정

    %EA%B7%B8%EB%A6%BC26.png [그림 2] PAM 모듈을 통한 사용자 인증 과정

    PAM 모듈은 소프트웨어의 개발과 인증 및 안전한 권한 부여 체계를 분리하고자 하는 목적으로 만들어졌기 때문에 이를 통한 인증을 수행할 경우, 응용프로그램에서 직접 인증 로직을 구현하지 않아 개발이 간소화될 뿐만 아니라 passwd 파일 등 시스템 파일을 열람하지 않아도 되는 장점이 있습니다. 무엇보다도 가장 큰 장점은 시스템 운영자가 응용프로그램의 인증 동작을 제어할 수 있어 더욱 안전하게 시스템을 운영할 수 있습니다.


PAM 구성

1) PAM의 기본 구조

  • 기본 구조

%EA%B7%B8%EB%A6%BC27.png

· 기본 구조의 예

%EA%B7%B8%EB%A6%BC28.png

2) Module Type

모듈 타입 필드는 PAM에 어떤 종류의 인증을 사용할 것인가를 지정하는 필드로 아래와 같이 4종류의 타입을 설정할 수 있습니다.

%EA%B7%B8%EB%A6%BC29.png

3) Control Flag

PAM에서 사용되는 모듈들이 결과에 따라 어떤 동작을 해야하는지 결정하는 필드입니다.

%EA%B7%B8%EB%A6%BC30.png

5개의 Control Flag 중 “Required”의 경우, 해당 모듈의 결과와 상관없이 다음 모듈을 실행시킵니다. 심지어 다음에 실행된 모듈의 결과보다 더 높은 우선순위를 가지므로 “Required”에서 실패가 되면 최종 인증 결과는 실패가 된다는 사실에 주의해야 합니다.

4) Module Name

이 필드는 사용하고자 하는 모듈의 경로와 이름을 지정하는 필드이며 PAM 모듈은 대부분 /lib/security 또는 /etc/pam.d 디렉터리에 위치한다. 다음은 주요 모듈에 대한 설명입니다.

%EA%B7%B8%EB%A6%BC31.png

  • pam_permit.so, pam_deny.so : 항상 성공/실패를 return, 접근을 허용/거부 ( 가장 일반적인 모듈)
  • pam_warn : 호출한 사용자 및 호스트 정보를 messages 로그에 남김
  • pam_ access : 계정 또는 IP주소를 이용해서 시스템 접근을 허용/거부
  • pam_pwcheck : /etc/login/defs 파일을 참조하여 암호를 확인하는 명령어
  • pam_time : 시간, 쉘 등을 설정할 수 있는 모듈
  • pam_wheel : su 서비스에 사용합니다. su를 이용한 root 접근을 막을 수 있습니다.

5) Module Arguments

모듈-인수는 모듈에게 전달되는 인수를 나타낸다. 각각의 모듈은 각각의 인수를 가지고 있다. 모듈마다 인수가 필요할 수도 필요 없을 수도 있습니다.

%EA%B7%B8%EB%A6%BC32.png


4. PAM을 통한 인증과정 상세

그럼 이제 PAM을 통한 인증 과정을 상세하게 분석 해보자. 여기서는 “su” 명령어 응용프로그램을 기준으로 분석해보겠습니다.

%EA%B7%B8%EB%A6%BC33.png

%EA%B7%B8%EB%A6%BC34.png

%EA%B7%B8%EB%A6%BC35.png

%EA%B7%B8%EB%A6%BC36.png

※ try_first_pass

이전 모듈에서 입력받은 패스워드가 있을 경우, 해당 패스워드로 먼저 인증 시도한다. 이전에 입력받은 패스워드가 없을 경우, 패스워드 입력을 요청합니다.

위의 과정 중 가장 주목해야 하는 단계는 바로 “3” 단계입니다.

“3” 단계에서는 “required” flag를 사용하여 모듈을 실행했기 때문에 인증 요청자가 wheel 그룹에 속하지 않아도 다음 인증 모듈이 실행됩니다. 따라서 wheel 그룹원뿐만 아니라 “모든” 인증 요청자가 “5” 단계까지 인증 과정을 거치게 되며 모두 동일하게 password 입력 요청까지 받게 되는 것입니다.

여기서 앞서 말한 "required" flag의 진면목이 나타납니다. 인증 요청자는 wheel 그룹에 속하지 않아서 인증 실패가 났음에도 불구하고 password 입력 요청을 받았기 때문에 단순히 password 입력 오류라고 생각할 수 있습니다. 이는 에러 발생 원인이 직접적으로 표출되지 않기 때문에 보안상 매우 좋다는 장점을 가집니다.

5. PAM 설정 예제

CASE 1

  • 모듈 : 인수는 모듈에게 전달되는 인수를 나타냅니다. 각각의 모듈은 각각의 인수를 가지고 있습니다. 모듈마다 인수가 필요할 수도 필요 없을 수도 있습니다.

%EA%B7%B8%EB%A6%BC37.png

위의 두 설정파일은 단순히 control flag만 다르지만, 인증 과정과 사용자에게 노출되는 에러문구는 완전히 다르다는 것을 다시한번 상기해야합니다. 설정파일 #1의 경우, 인증 요청자가 “igloo”가 아니더라도 암호 입력을 요구하나, 설정파일 #2에서는 암호를 요구하지 않고 바로 인증 실패가 반환됩니다.

%EA%B7%B8%EB%A6%BC38.png

[그림 3] 설정파일 #1의 인증 결과

%EA%B7%B8%EB%A6%BC39.png

[그림 4] 설정파일 #2의 인증 결과

CASE 2

%EA%B7%B8%EB%A6%BC40.png

다음은 모듈 설정의 순서만 바꾼 것이다. 설정파일 #1의 인증과정은 다음과 같습니다.

\1. su 명령어 요청자가 “igloo” 인지 확인

\2. su 명령어 요청자가 “root” 인지 확인

그러나 여기서 주의할 것이 있습니다. “igloo” 계정인지 확인 하는 모듈의 control flag가 required 이므로 root 계정으로 su 명령어를 사용해도 결국은 인증 실패가 반환됩다. 따라서 위의 설정은 “igloo” 계정만 su 명령어를 사용할 수 있는 설정입니다.

그러나 설정파일 #3의 경우, “root” 계정인지 확인 하는 모듈의 control flag가 sufficient 이므로 설정파일 #1과 달리 “root” 계정과 “igloo” 계정, 즉 2개의 계정에서 su 명령어를 사용할 수 있습니다. 또한, root 계정으로 su 명령어를 사용할 경우, PAM은 요청자가 “igloo”인지 확인하지 않고 바로 인증 성공을 반환하며 인증을 종료합니.

%EA%B7%B8%EB%A6%BC41.png

[그림 5] 설정파일 #1의 인증 결과

%EA%B7%B8%EB%A6%BC42.png

[그림 6] 설정파일 #2의 인증 결과

언뜻 보기에는 비슷하게 보일 수 있으나, 실제로 수행되는 인증 과정과 그 결과는 앞서 확인한 설정파일 #1과 크게 다른 것을 확인할 수 있습니다. 이렇듯 같은 설정이라도 순서가 바뀌면 전혀 다른 결과를 초래하므로 PAM 설정에 각별한 주의가 요구됩니다.

태그:

카테고리:

업데이트:

댓글남기기