kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

Cyber Security

[정보보안] SSH 접속 시 OTP(추가인증수단) 등록하여 서버접근통제하기

까마기 2020. 1. 6. 15:56
728x90
반응형

1. 개요

- SSH를 이용한 서버터미널 접근 시 보통 IP/SSH port 및 ID/PW 정보만 알고있으면 접근이 가능하다. 보통은 방화벽에서 IP를 허용/차단함으로써 접근 사용자를 통제하는데, 관리자 및 특수권한이 있는 계정에 대해서는 ID/PW 이외에 강화된 인증수단을 마련하는 것이 정보시스템을에 대한 접근을 통제함에 있어 효과적이다. 

 

 * 근거 : ISMS-P 인증기준 2.6.2 정보시스템 접근

 

 * 인증기준 : 서버, 네트워크시스템 등 정보시스템 접근을 허용하는 사용자, 접근제한 방식, 안전한 접근수단 등을 정의하여 통제하여야 한다. 

 

 * 주요 확인사항

 : 서버, 네트워크시스템, 보안시스템 등 정보시스템 별 운영체제(OS)에 접근이 허용되는 사용자, 접근 가능 위치, 접근 수단 등을 정의하여 통제하고 있는가?

 : 정보시스템에 접속 후 일정시간 업무처리를 하지 않는 경우 자동으로 시스템 접속이 차단되도록 하고 있는가?

 : 정보시스템의 사용목적과 관계없는 서비스를 제거하고 있는가?

 : 주요 서비스를 제공하는 정보시스템은 독립된 서버로 운영하고 있는가?

 

 * 관련 법규

 : 개인정보 보호법 제29조(안전조치의무)

 : 정보통신망법 제28조(개인정보의 보호조치)

 : 개인정보의 안전성 확보조치 기준 제6조(접근통제)

 : 개인정보의 기술적,관리적 보호조치 기준 제4조(접근통제)

 

- 대기업, 공기업, 대학교, 금융권 등 비교적 대규모의 정보시스템 인프라를 갖추고 User수가 많을 경우에는 보안솔루션을 도입하여 해당 요건을 충족시키곤 한다. ex) Hiware (계정관리솔루션)

 

- 하지만 소기업, 중소기업의 경우 비용, 인력, 관리 등의 문제로 이러한 보안솔루션을 구축, 운영하는 것이 쉽지 않은 현실이다. 이에 각 기업의 보안담당자는 최소한의 보안 조치가 필요하다. 이러한 관점에서 google authenticator를 사용하여 리눅스시스템에 OTP를 적용함으로써 최소한의 강화된 인증수단을 마련할 수 있을 것이다.

 

 

2. google authenticator 설치

 - 소스 및 패키지 설치로 구분되며, 본 포스팅에서는 패키지 설치로 진행하였다.

 - 환경 : Ubuntu 18.04 LTS

 - 설치구분 : yum 패키지 설치

# yum install google-authenticator -y

 

 

3. Two-factor 인증을 사용하기 위한 계정 생성

test 계정 생성

3. OTP 를 이용한 Two-factor 인증을 사용하려는 계정으로 google-authenticator 명령을 실행한다.

 

$ google-authenticator -t -d -r 3 -R 30 -s ~/.ssh/google_authenticator

 

  • -t, --time-based: 시간 기반 OTP 를 설정.

  • -d, --disallow-reuse: 이전에 사용한 TOTP 토큰의 재사용을 금지

  • -l, --label=<label>: 사용할 label 을 지정하며 구분할 수 있도록 해당 서버의 이름이나 도메인 이름등을 입력하며 여기서는 webserver 로 label 을 지정
  • -i, --issuer=<issuer>: 사용할 발급자를 지정하며 여기에서는 사이트의 메인 도메인 이름을 입력
  • -r, --rate-limit=N:  -R로 설정한 M초동안 허용할 로그인 횟수를 지정
  • -R, --rate-time=M: M 초동안 허용할 로그인 횟수를 지정하며 -r 3 -R 30 은 30초 이내에 최대 3번의 로그인 시도를 허용
  • -S, --step-size=S: OTP 토큰을 갱신할 시간을 지정하며 기본 값은 30이며 이경우 30초마다 토큰을 새로 생성
  • -w, --window-size=W: OTP 토큰은 -S 로 지정한 토큰 갱신 시간(예: 30초) 동안만 유효하지만 입력시 초 단위로 이를 맞추기는 쉽지 않음. 즉 31초에 입력할 경우 OTP 토큰이 갱신되므로 무효화되어 버리며 이런 불편함을 줄이이고 -w 로 지정한 시간만큼 앞위로 유효하게 되며 5로 지정할 경우 토큰 갱신 시간이 30초라면 35초까지 해당 OTP 토큰이 유효
  • -s, --secret=<file>: google otp 의 secret 을 저장할 파일 경로를 지정하며 기본 설정은 $HOME/.google_authenticator 이지만 SELinux를 사용하는 경우 ssh 데몬의 접근을 차단해서 제대로 동작하지 않으므로 SELinux 를 사용하는 경우 .ssh 폴더에 넣어야 제대로 동작함

해당 경로 아래 .ssh/google_authenticator가 생성되어야 함

4. Google OTP 등록

 위 QR 코드를 모바일 google otp 어플에서 바코드 스캔하여 OTP를 등록한다.

 

 

5. 로그인 시도

ID/PW를 입력하면 위와 같이 OTP 코드를 입력하라는 화면이 나온다.

모바일 단말기의 Google OTP 어플로 확인 후 입력하면 로그인이 되는 것을 확인할 수 있다.

 

 

 

* 문제가 되는 부분, 기타 의견, 코멘트, 지적 등은 댓글로 부탁드립니다. 감사합니다.

반응형