기술 가이드

CentOS 7에서 WiKID 이중 인증으로 SSH 보안 강화

6 min read 시스템 보안 업데이트됨 03 Oct 2025
CentOS 7 SSH를 WiKID 2단계 인증으로 보호
CentOS 7 SSH를 WiKID 2단계 인증으로 보호

CentOS 7 서버의 SSH 접속을 WiKID(또는 RADIUS) 기반 이중 인증으로 보호하는 단계별 가이드입니다. WiKID 도메인/네트워크 클라이언트 설정, pam_radius 빌드·설치, PAM·sshd 설정, 테스트 및 문제 해결, 보안 권장사항을 포함합니다. 원격 서버 잠금 사고를 방지하려면 먼저 로컬 관리자 계정 또는 콘솔 접근을 확보하세요.

개요

SSH는 원격 관리에 안전한 채널을 제공하지만, 공개키 관리·패스프레이즈 강제·키 만료 등 일부 감사 항목에서는 제한이 있습니다. 이 문서에서는 WiKID Strong Authentication System을 사용해 CentOS 7에서 RADIUS 기반 이중 인증(One-Time Passcode + PIN)을 구현하는 방법을 설명합니다. 기본 흐름은 다음과 같습니다.

  • WiKID 서버에서 도메인 생성
  • WiKID에서 대상 서버를 네트워크 클라이언트로 등록(Shared Secret 설정)
  • CentOS 7에서 pam_radius 설치 및 PAM 구성
  • SSH 및 PAM 동작 테스트 및 보강

중요: 이 가이드는 CentOS 7 환경을 전제로 하며, SELinux/방화벽 정책, 32/64비트 라이브러리 경로 차이 등을 고려해야 합니다.

WiKID 서버: 도메인 추가

WiKID 도메인 추가 화면 스크린샷

도메인 서버 코드는 외부 IP를 0으로 패딩한 형태로 입력합니다. 예: 외부 IP가 54.83.0.181이면 도메인 코드(서버 코드)는 054083000181 입니다. 도메인 아이디는 WiKID 내에서 서버 그룹, root 접근 그룹 등 용도로 분리할 수 있습니다.

중요: 도메인 코드 형식을 잘못 입력하면 클라이언트 등록 시 식별이 실패합니다.

네트워크 클라이언트 생성

WiKID 관리 UI에서 Network Client 탭을 선택하고 Create New Network Client를 클릭합니다. 이름과 SSH 게이트웨이의 내부 IP를 입력하고 Protocol은 RADIUS, Domain은 앞서 만든 도메인을 선택합니다.

네트워크 클라이언트 생성 화면 스크린샷

Add를 클릭하면 Shared Secret을 입력하는 화면이 나옵니다. 이 Shared Secret은 CentOS 서버에서 pam_radius 설정 시 필요합니다.

RADIUS 공유 비밀 입력 화면 스크린샷

이 과정을 네트워크의 각 서버(또는 게이트웨이)마다 반복합니다.

CentOS 7에서 SSH에 pam_radius 구성

이 섹션은 pam_radius 소스 빌드·설치, PAM 구성, sshd 설정, 테스트 및 기본적인 보강을 다룹니다.

1) 준비: 의존성 설치

먼저 빌드와 관련된 패키지를 설치합니다.

$ sudo yum install -y pam-devel gcc make wget

SELinux가 활성화된 환경이라면 파일 복사 후 SELinux 컨텍스트를 조정해야 할 수 있습니다(아래 참조).

2) pam_radius 소스 다운로드 및 빌드

현재 예제에서는 pam_radius-1.3.17을 사용합니다. 아래 명령으로 다운로드하고 압축을 풉니다.

$ wget ftp://ftp.freeradius.org/pub/radius/pam_radius-1.3.17.tar.gz
$ tar -xzvf pam_radius-1.3.17.tar.gz
$ cd pam_radius-1.3.17
$ make

빌드 과정에서 경고가 발생할 수 있으나 pam_radius_auth.so 파일(.so)이 생성되면 정상적으로 빌드된 것입니다.

3) 라이브러리 복사 (시스템 아키텍처에 따라)

생성된 .so 파일을 시스템의 PAM 라이브러리 디렉토리로 복사합니다.

32비트 시스템:

$ sudo cp pam_radius_auth.so /lib/security/

64비트 시스템:

$ sudo cp pam_radius_auth.so /usr/lib64/security/

SELinux가 Enforcing 상태라면 복사 후 엔포스먼트 레이블을 업데이트합니다:

$ sudo restorecon -v /usr/lib64/security/pam_radius_auth.so

(경로는 시스템에 따라 달라질 수 있습니다.)

4) PAM에 RADIUS 서버 정보 추가

pam_radius는 /etc/pam_radius_auth.conf 파일을 참조합니다. 파일이 없으면 생성하세요.

$ sudo vim /etc/pam_radius_auth.conf

파일 형식은 아래 예시와 같습니다(공백으로 구분).

#   
192.0.2.10 my_shared_secret 3

설명: 첫번째 필드에 WiKID(RADIUS) 서버 IP 또는 호스트네임, 두번째 필드에 WiKID에서 설정한 Shared Secret, 세번째 필드는 타임아웃/재시도 관련 숫자입니다. 실제 환경에서는 운영 네트워크 주소와 비밀을 입력하세요.

권장: pam_radius_auth.conf 파일 권한을 제한합니다.

$ sudo chmod 600 /etc/pam_radius_auth.conf
$ sudo chown root:root /etc/pam_radius_auth.conf

5) SSH PAM 설정 (/etc/pam.d/sshd)

sshd가 PAM을 통해 RADIUS 인증을 호출하도록 /etc/pam.d/sshd 파일을 수정합니다. 편집 전 반드시 원본을 백업하세요.

$ sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
$ sudo vim /etc/pam.d/sshd

파일에서 적절한 위치(일반적으로 auth 섹션)에 pam_radius 모듈을 추가합니다. 예: 두번째 줄로 추가하는 패턴을 사용하면 로컬 테스트가 더 안전합니다.

# 기존 auth 관련 라인 이후에 추가
auth       sufficient    /usr/lib64/security/pam_radius_auth.so

주의: 경로는 시스템에 따라 /lib/security 또는 /usr/lib64/security 일 수 있습니다. 위 예시에서 사용하는 경로를 실제 복사한 경로와 일치시켜야 합니다.

설정 의미: ‘sufficient’는 해당 모듈이 성공하면 추가 검사가 필요 없음을 의미합니다. 원격 서버 잠금을 방지하려면 초기에는 ‘sufficient’로 두고 충분히 테스트한 뒤 ‘required’로 변경하는 것을 권장합니다.

6) sshd 설정 (선택적 보안 강화)

원격에서 RADIUS만으로 로그인하도록 강제하려면 /etc/ssh/sshd_config에서 PasswordAuthentication, ChallengeResponseAuthentication, UsePAM 관련 설정을 검토하세요.

예: 비밀번호 인증을 완전히 끄려면(주의: 콘솔 접근 없으면 잠김 위험)

PasswordAuthentication no
ChallengeResponseAuthentication yes
UsePAM yes

변경 후 sshd 재시작:

$ sudo systemctl restart sshd

7) 테스트: 로그 모니터링과 인증 테스트

테스트 중에는 다른 세션을 유지하거나 콘솔 접근을 확보해두세요. 테스트 시 아래 로그를 실시간으로 확인하면 원인 파악에 도움이 됩니다.

$ sudo tail -f /var/log/secure

클라이언트에서 SSH 접속을 시도하면 WiKID에서 OTP를 발급받아 이를 사용해 접속해야 합니다. 문제가 발생하면 로그에 pam_radius 또는 sshd 관련 에러가 남습니다.

추가 테스트 도구(운영 환경에 설치되어 있을 때):

  • radtest 또는 radeapclient로 RADIUS 요청을 직접 테스트할 수 있습니다. 이들 도구는 FreeRADIUS 클라이언트 패키지에서 제공합니다.

문제 해결 요약

  • pam_radius_auth.so를 못 찾는다면: 파일 경로 및 PAM 파일 내 모듈 경로를 확인하세요.
  • 인증 실패가 발생하면: /var/log/secure와 WiKID 서버 로그를 확인해 Shared Secret 또는 도메인 코드가 일치하는지 확인하세요.
  • SELinux 관련 거부가 보이면: audit.log에서 거부 항목을 확인하고 restorecon 또는 setsebool로 조정하세요.
  • 방화벽 문제: RADIUS(일반적으로 UDP 1812, 1813 또는 legacy 1645/1646 포트)를 허용해야 합니다.

보안 권장사항 및 운영 주의사항

  • 초기 테스트 기간에는 절대 원격 서버에서 root 계정과 단 하나의 접속 수단만을 사용해 변경하지 마세요. 콘솔/관리 인터페이스 접근을 확보하세요.
  • 충분한 테스트 후 PAM에서 ‘sufficient’를 ‘required’로 바꿔 RADIUS 인증만 허용할지 결정하세요.
  • WiKID에서 계정 비활성화는 즉시 RADIUS 인증 차단이므로 퇴사·권한 변경에 유리합니다.
  • 모든 인증 시도를 중앙 로그(예: SIEM)로 수집해 감사 기록을 보관하세요.
  • 공개키(authorized_keys) 관리와 RADIUS를 병행하면 이중으로 보호할 수 있습니다. 그러나 공개키 만료 기능은 RADIUS가 직접 제공하지 않으므로 키 관리 정책을 별도로 운영하세요.

Important: 원격 서버에서 인증 설정을 변경할 때는 잠김(lockout)을 방지하도록 항상 백업 세션이나 물리 콘솔을 확보하십시오.

운영 체크리스트

  • WiKID에 도메인 생성 및 도메인 코드 확인
  • 각 서버를 Network Client로 등록하고 Shared Secret 기록
  • pam_radius 빌드 및 시스템 라이브러리 경로에 설치
  • /etc/pam_radius_auth.conf 생성 및 권한 제한
  • /etc/pam.d/sshd에 pam_radius 모듈 추가(초기: sufficient)
  • sshd_config 변경 및 서비스 재시작(필요 시)
  • /var/log/secure로 실시간 테스트 및 WiKID 로그 확인
  • 보안 정책(SELinux, 방화벽) 확인

역할별 체크리스트

시스템 관리자:

  • pam_radius 설치 및 라이브러리 경로 확인
  • 파일 권한과 SELinux 컨텍스트 점검
  • 로그와 테스트 결과 기록

인프라/네트워크 관리자:

  • RADIUS 포트(예: UDP 1812) 네트워크 경로 및 방화벽 허용
  • WiKID 서버와의 라우팅 및 DNS 확인

감사자(External/Internal auditor):

  • 인증 이벤트 로깅, 계정 비활성화 절차 문서 확인
  • MFA(OTP+PIN) 흐름과 책임자 승인 절차 검토

호환성 및 마이그레이션 팁

  • RHEL 계열(CentOS 7 포함)에서는 pam_radius 빌드/설치 방식이 유사합니다. 다만 라이브러리 디렉토리(/lib/security 또는 /usr/lib64/security)와 패키지 버전에서 차이가 날 수 있으니 배포판별 경로를 확인하세요.
  • Windows AD/LDAP와의 통합이 필요하다면 WiKID 서버에서 RADIUS 요청을 LDAP/AD로 위임하도록 구성하여 인증과 권한(authorization)을 분리할 수 있습니다.

1줄 용어집

  • RADIUS: 원격 인증 다이얼인 사용자 서비스(원격 인증 프로토콜)
  • WiKID: OTP 기반 이중 인증 서버/솔루션
  • PAM: Pluggable Authentication Modules, 리눅스 인증 플러그인 프레임워크
  • OTP: One-Time Password(일회용 비밀번호)

자주 묻는 질문

WiKID를 사용하면 SSH 공개키 인증은 필요 없나요?

WiKID(RADIUS)만으로 로그인 흐름을 강제할 수 있으나, 공개키 인증은 여전히 추가적인 보안층으로 권장됩니다. 두 방식을 조합해 보호 수준을 높일 수 있습니다.

pam_radius를 설치했는데 로그인 시 모듈을 찾을 수 없다는 에러가 뜹니다. 어떻게 하나요?

PAM 모듈 경로가 잘못되었거나 파일 권한/SELinux 컨텍스트 문제일 가능성이 큽니다. /etc/pam.d/sshd 내 모듈 경로와 실제 파일 경로를 비교하고, restorecon으로 컨텍스트를 재설정하세요. 또한 /var/log/secure와 audit.log에서 구체적 오류 메시지를 확인합니다.

원격 서버에서 RADIUS 인증만 허용하면 잠기지 않을까요?

가능합니다. 운영팀은 변경 전에 반드시 콘솔 접근 또는 대체 관리자 계정을 확보하고 실무 테스트를 충분히 진행해야 합니다. 초기에는 ‘sufficient’를 사용해 정상 동작을 확인한 뒤 ‘required’로 변경하세요.

결론

WiKID를 통한 RADIUS 기반 이중 인증은 CentOS 7에서 SSH 접속 보안을 크게 향상시킵니다. 핵심은 도메인 및 네트워크 클라이언트 구성, pam_radius의 올바른 설치와 PAM 설정, 그리고 충분한 테스트입니다. 변경 전 콘솔 접근을 확보하고 단계적으로 적용하면 잠금 사고를 예방할 수 있습니다.

요약: WiKID 도메인 등록 → 네트워크 클라이언트 생성(Shared Secret) → pam_radius 빌드/설치 → /etc/pam_radius_auth.conf 구성 → /etc/pam.d/sshd 수정 → 테스트 및 보완.

더 알아보기:

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

smartmontools로 SMART 모니터링 설정 가이드
시스템관리

smartmontools로 SMART 모니터링 설정 가이드

Ubuntu/Debian에서 Logjam 방어 가이드
서버 보안

Ubuntu/Debian에서 Logjam 방어 가이드

다크스카이(Dark Sky) 초단기 강수 예보 가이드
날씨

다크스카이(Dark Sky) 초단기 강수 예보 가이드

CentOS 7 SSH를 WiKID 2단계 인증으로 보호
시스템 보안

CentOS 7 SSH를 WiKID 2단계 인증으로 보호

Windows 10 자동 업데이트 수동 제어 가이드
Windows

Windows 10 자동 업데이트 수동 제어 가이드

Stay Dry Roofing 인디애나폴리스 고용 가이드
홈서비스

Stay Dry Roofing 인디애나폴리스 고용 가이드