본문 바로가기

System/Linux

Linux/2-factor-Authentication/GoogleOTP사용하기

반응형
# 설치
- 확장 레퍼지토리 설치
  • yum -y install epel-release
- yum -y install google-authenticator

# 환경 구성
- CentOS 6.7 64bit


# PAM 설정
- /etc/pam.d/sshd
  • 추가
    auth required pam_google_authenticator.so [옵션] 
    • 옵션
      nullok :  google_authenticator로 키 생성시 -s로 secret 파일의 위치를 정해줄 수 있는데 여기서 그 위치의 파일을 읽어오지 못하면 1-factor인증을 진행하는 옵션이다. 이 옵션이 존재하지 않는 기본 값은 2-factor 인증을 함.
    • forward_pass : client에서 2-factor 인증을 하지 못하는 경우 password 입력시 Password+veri_code로 처리하도록 하는 옵션
    • no_increment_htop : 실패시 카운트를 올리지 않는 옵션.
    • 설정파일 명시하기
      secret=${HOME}/.ssh/google_authenticator 등 다른경로를 명시하면된다.
>> 주의사항 위 추가 코드의 순서가 맨 위로 오도록하여야 패스워드 입력전에 veri code 입력 부분이 출력된다.

# ssh 서비스 설정
- etc/ssh/sshd_config
  • PasswordAuthentication yes
  • ChallengeResponseAuthentication yes
  • UsePAM yes
- sshd 재구동
  • service sshd restart

# hostname 변경
- hostname 이 localhost일 때 식별을 위해 변경해 줄 필요가 있는 경우.
  • 부팅시 변경
    • 레드햇 계열
      /etc/sysconfig/network의 HOSTNAME= 변경
    • 우분투
    • /etc/hostname 에 호스트네임 입력
  • /etc/hosts 변경
    • 자신을 가리키는 정보에 변경한 호스트를 추가해줌.

# Secret file 생성
- 접속하고자 하는 계정으로 변경
  • su - [계정명]
- .ssh 폴더 생성
  • mkdir ~/.ssh
- 접속권한 부여
  • chmod 700 ~/.ssh
- Secret file 생성
  • google-authenticator -t -d --label=[도메인] --issuer=[도메인] -r 3 -R 30
    • 추가적인 옵션
- 명령어 입력시 출력되는 url로들어가 바코드를 스캔하여 계정을 등록하거나 Your new Secret key is : "~"의 ~ 부분을 입력하여 계정을 등록한다.

# ssh 접속
- ssh [계정명]@[호스트명]또는 putty와 같은 원격 접속 프로그램으로 접속하면 verification code와 패스워드를 입력하는 창이 출력된다.

결과 
#오류 해결
- 첫번째는 SElinux가 활성화 되어 있는 경우 verification이 되지 않는다.
  • SELinux 비활성화
    • /etc/sysconfig/selinux의 SELIUX=enforcing을 SELINUX=disabled로 변경 후 저장
  • reboot
- 두번째는 시간이 맞지않는 경우 Timebased-OTP이기 때문에 시간을 재설정해주어야한다.
  • 시간을 재설정하는 도구인 ntp 설치
    • yum -y install ntp
    • ntpdate pool.ntp.org
    • 시작시 자동시작되게 설정
      • chkconfig ntpd on



반응형