본문 바로가기
OS/Linux

[Linux] CentOS - 접근 제어 - PAM 이론

by BTC_프로틴 2022. 4. 26.

사용자 로그인 관련 명령어

su [-] [사용자명]
: 다른 사용자로 로그인 할 때 사용

 

  • dash (-)의 유무
  • su -root : 입력한 사용자의 사용자 초기화파일 적용
  • su root: 현재 사용자의 환경을 유지, 사용자 초기화파일 적용하지 않음.

 

who
: 접속 정보
[root@localhost ~]# who
root     tty1         2022-04-26 10:06
root     pts/0        2022-04-26 10:06 (laptop-6ccrl66l.mshome.net)

 

who am i
: 현재 터미널에 대한 접속 정보
[root@localhost ~]# who am i
root     pts/0        2022-04-26 10:06 (laptop-6ccrl66l.mshome.net)

 

whoami
: 로그인명
[root@localhost ~]# whoami
root

 

last
: 로그인 내역 확인
[root@localhost ~]# last
root     pts/0        laptop-6ccrl66l. Tue Apr 26 10:06   still logged in
root     tty1                          Tue Apr 26 10:06   still logged in
reboot   system boot  3.10.0-1160.el7. Tue Apr 26 10:05 - 10:27  (00:21)
root     pts/0        laptop-6ccrl66l. Tue Apr 19 11:12 - 11:19  (00:06)
root     pts/0        laptop-6ccrl66l. Tue Apr 19 10:28 - 11:12  (00:43)
root     tty1                          Tue Apr 19 10:28 - 11:19  (00:51)
reboot   system boot  3.10.0-1160.el7. Tue Apr 19 10:27 - 10:27 (6+23:59)
...
  • /var/log/wtmp 파일을 참조해서 로그인했던 정보를 출력해주는 명령어 자신의 시스템에 접속한 정보를 확인 가능
  • 추가적으로 시스템 부팅과 관련된 정보 확인 가능

 

PAM 모듈

PAM (Pluggable Authentication Modules) 이란?

  • 시스템에 공통적인 인증 방법을 제공
  • 어떤 보안 인증 기능을 추가할 때 모듈로 만들어서 쉽게 보안 설정 내용들을 교체 또는 추가 제거가 가능
  • 모듈의 종류는 다양하며 각각 모듈의 기능을 정확히 파악하는 것이 중요
  • 프로그램이 사용자 인증 필요하면 PAM 라이브러리를 호출
  • PAM 라이브러리는 호출되면 호출한 으용프로그램의 설정 파일을 검사, 설정 파일의 내용에 PAM 모듈을 적용
  • 설정 파일이 없으면, 기본 설정 파일 사용 (other)
  • 설정 파일은 사용자 인증을 검사하기 위해 필요한 유형(형식)을 가짐

 

PAM 설정 파일

/etc/pam.d
: pam을 적용한 프로그램이나 서비스의 설정 내용을 저장해둔 파일들이 모여 있는 디렉토리

 

  • 설정파일형식
auth sufficient pam_rootok.so  
module_type config_flag module_path module_argument
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.

auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
  • Module_type : PAM이 어떤 타입의 인증을 사용할 것인지를 지정
    - auth : 사용자 인증에 사용하며 올바른 패스워드인지 아닌지 확인
    - account : 계정 관리를 수행, 사용자의 위치, 시간, 권한 등을 지정하여 접근을 결정
                   ex) 특정 사용자는 콘솔로만 아침 9시부터 6시까지만 root로 접근 가능
    - password : 사용자가 패스워드를 변경할 수 있는 모듈 지정
    - session : 사용자가 인증 받기 전후에 수행되어야 할 작업을 지정
                  ex) 로그 기록

  • Config_flag : PAM에서 사용되는 모듈들이 결과에 따라 어떤 동작을 취할 지 결정
    - required : 이 모듈이 성공값을 반환해야 최종 인증에 성공(실패 시 밑의 다른 설정도 전부 다시 확인)
    - requisite : 이 모듈이 성공값을 반환해야 최종 인증에 성공(실패 시 바로 최종 인증 실패)(엄격한 설정)
    - sufficient : 이 모듈이 성공값을 반환하면 바로 인증 성공
    - optional : 선택사항, 일반적으로 무시, 다른 플래그에 의한 최종 결과가 불분명할 시 optional 값이 적용
    - include : 다른 설정 파일을 불러옴

  • Modult_path : /usr/lib64/security 디렉토리 내의 어떤 모듈을 사용할 지 지정, 모듈 이름을 지정
    - Module_argument : 모듈에 전달되는 매개변수 값을 나타냄
    - debug : 시스템 로그 파일에 디버그 정보를 남기게 함
    - no_warm : 모듈이 경고 메시지를 보내지 않게 함

 

PAM 모듈의 종류

[root@localhost ~]# cd /usr/lib64/security
[root@localhost security]# ls
pam_access.so     pam_ftp.so        pam_permit.so          pam_tally2.so
pam_cap.so        pam_group.so      pam_postgresok.so      pam_time.so
pam_chroot.so     pam_issue.so      pam_pwhistory.so       pam_timestamp.so
pam_console.so    pam_keyinit.so    pam_pwquality.so       pam_tty_audit.so
pam_cracklib.so   pam_lastlog.so    pam_rhosts.so          pam_umask.so
pam_debug.so      pam_limits.so     pam_rootok.so          pam_unix.so
pam_deny.so       pam_listfile.so   pam_securetty.so       pam_unix_acct.so
pam_echo.so       pam_localuser.so  pam_selinux.so         pam_unix_auth.so
pam_env.so        pam_loginuid.so   pam_selinux_permit.so  pam_unix_passwd.so
pam_exec.so       pam_mail.so       pam_sepermit.so        pam_unix_session.so
pam_faildelay.so  pam_mkhomedir.so  pam_shells.so          pam_userdb.so
pam_faillock.so   pam_motd.so       pam_stress.so          pam_warn.so
pam_filter        pam_namespace.so  pam_succeed_if.so      pam_wheel.so
pam_filter.so     pam_nologin.so    pam_systemd.so         pam_xauth.so
  • pam_permit_so, pam_deny.so : 항상 성공/실패를 return 접근을 허용/거부 (가장 일반적인 모듈)
  • pam_warm : 호출한 사용자 및 호스트 정보를 messages 로그에 남김
  • pam_access : 계정 또는 IP주소를 이용해서 시스템 접근을 허용/거부
  • pam_pwcheck : /etc/login.defs 파일을 참조하여 암호를 확인하는 명령어
  • pam_securetty : /etc/securetty 파일을 참조하여 터미널 장치가 root로 접근 할 수 있는지 없는지 판단
  • pam_time : 시간, 쉘 등을 설정할 수 있는 모듈
  • pam_wheel : su 서비스에 사용함, su를 이용한 root 접근을 막을 수 있음

 

 

출처 : https://www.youtube.com/channel/UCl9zTDOvOxdCfUt1HqVwwdg

'OS > Linux' 카테고리의 다른 글

[Linux] CentOS - 접근 제어 - PAM 실습  (0) 2022.05.03
WEB 구축  (0) 2022.04.29
[Linux] 리눅스 파일시스템  (0) 2022.04.22
[Linux] CentOS - 사용자 관리 - 패스워드 정책  (0) 2022.04.19
[Linux] Vi editor - 단축키  (0) 2022.04.14

댓글