Raspberry Pi에서 이중 인증을 설정하는 방법

Raspberry Pi는 이제 어디에나 있습니다. 이것이 위협 행위자와 사이버 범죄자의 시선을 사로잡는 이유입니다. 이중 인증으로 Pi를 보호하는 방법을 보여드리겠습니다.

놀라운 라즈베리 파이

그만큼 라즈베리 파이 싱글 보드 컴퓨터입니다. 2012년 영국에서 시작하여 아이들이 코드를 만지작거리고, 만들고, 배우게 하려는 목적으로 시작되었습니다. 원래 폼 팩터는 전화 충전기로 구동되는 신용 카드 크기의 보드였습니다.

HDMI 출력, USB 포트, 네트워크 연결을 제공하고 Linux를 실행합니다. 나중에 제품에 통합되거나 헤드리스 시스템으로 실행되도록 설계된 더 작은 버전이 라인에 추가되었습니다. 가격은 미니멀리스트의 경우 $5부터 다양합니다. 파이 제로, $75까지 파이 4B/8GB.

그 성공은 놀랍습니다. 이 작은 컴퓨터 중 3천만 대 이상이 전 세계적으로 판매되었습니다. 취미 생활자는 다음을 포함하여 놀랍고 영감을 주는 일을 했습니다. 풍선을 타고 우주의 가장자리로 떠다닌다..

아아, 컴퓨팅 플랫폼이 충분히 널리 보급되면 필연적으로 사이버 범죄자의 관심을 끌게 됩니다. 얼마나 많은 Pi가 기본 사용자 계정과 암호를 사용하고 있는지 생각하면 끔찍합니다. Pi가 공개되어 있고 다음을 통해 인터넷에서 액세스할 수 있는 경우 보안 쉘 (SSH), 보안이 되어야 합니다.

Pi에 귀중한 데이터나 소프트웨어가 없더라도 Pi가 실제 대상이 아니기 때문에 보호해야 합니다. 일단 위협 행위자가 네트워크에 발판을 마련하면 그는 실제로 관심이 있는 다른 장치로 이동합니다.

이중 인증

인증 또는 시스템에 대한 액세스 권한을 얻으려면 하나 이상의 요소가 필요합니다. 요인은 다음과 같이 분류됩니다.

알고 있는 것: 암호 또는 -구와 같은 것입니다.
가지고 있는 것: 휴대폰, 물리적 토큰 또는 동글과 같은 것.
당신이 무엇인가: 지문이나 망막 스캔과 같은 생체 인식 판독.

MFA(다단계 인증)에는 암호와 다른 범주의 하나 이상의 항목이 필요합니다. 이 예에서는 비밀번호와 휴대폰을 사용합니다. 휴대폰은 Google 인증 앱을 실행하고 Pi는 Google 인증 모듈을 실행합니다.

휴대폰 앱은 QR 코드를 스캔하여 Pi에 연결됩니다. 이것은 Pi에서 휴대폰으로 일부 시드 정보를 전달하여 번호 생성 알고리즘이 동일한 코드를 동시에 생성하도록 합니다. 코드는 시간 기반의 일회용 암호 (TOTP).

  Fix Zoom이 카메라를 감지할 수 없음

연결 요청을 받으면 Pi가 코드를 생성합니다. 휴대전화의 인증 앱을 사용하여 현재 코드를 확인하면 Pi에서 비밀번호와 인증 코드를 묻습니다. 연결하려면 비밀번호와 TOTP가 모두 정확해야 합니다.

파이 구성

일반적으로 Pi에 SSH를 사용하는 경우 헤드리스 시스템일 가능성이 높으므로 SSH 연결을 통해 구성합니다.

두 개의 SSH 연결을 만드는 것이 가장 안전합니다. 하나는 구성 및 테스트를 수행하고 다른 하나는 안전망 역할을 합니다. 이렇게 하면 Pi에서 자신을 잠그더라도 두 번째 활성 SSH 연결이 계속 활성화됩니다. SSH 설정을 변경해도 진행 중인 연결에는 영향을 미치지 않으므로 두 번째 설정을 사용하여 변경 사항을 되돌리고 상황을 해결할 수 있습니다.

최악의 상황이 발생하여 SSH를 통해 완전히 잠긴 경우에도 Pi를 모니터, 키보드 및 마우스에 연결한 다음 일반 세션에 로그인할 수 있습니다. 즉, Pi가 모니터를 구동할 수 있는 한 계속 로그인할 수 있습니다. 그러나 그렇게 할 수 없는 경우 2단계 인증이 작동하는지 확인할 때까지 안전망 SSH 연결을 열어 두어야 합니다.

물론 궁극적인 제재는 운영 체제를 Pi의 마이크로 SD 카드에 다시 플래시하는 것이지만, 이를 피하도록 합시다.

먼저 Pi에 두 개의 연결을 만들어야 합니다. 두 명령 모두 다음 형식을 취합니다.

ssh [email protected]

이 Pi의 이름은 “watchdog”이지만 대신 yours 이름을 입력합니다. 기본 사용자 이름을 변경한 경우 해당 사용자 이름도 사용하십시오. 우리는 “파이”입니다.

안전을 위해 다른 터미널 창에 이 명령을 두 번 입력하여 Pi에 두 개의 연결을 갖도록 하십시오. 그런 다음 그 중 하나를 최소화하여 방해가 되지 않고 실수로 닫히지 않도록 합니다.

연결하면 인사말이 표시됩니다. 프롬프트는 사용자 이름(이 경우 “pi”)과 Pi의 이름(이 경우 “watchdog”)을 표시합니다.

“sshd_config” 파일을 수정해야 합니다. 나노 텍스트 편집기에서 이를 수행합니다.

sudo nano /etc/ssh/sshd_config

다음 줄이 표시될 때까지 파일을 스크롤합니다.

ChallengeResponseAuthentication no

“아니오”를 “예”로 바꿉니다.

Ctrl+O를 눌러 변경 사항을 nano에 저장한 다음 Ctrl+X를 눌러 파일을 닫습니다. 다음 명령을 사용하여 SSH 데몬을 다시 시작합니다.

sudo systemctl restart ssh

Google 인증기를 설치해야 합니다. 플러그형 인증 모듈 (PAM) 라이브러리. 응용 프로그램(SSH)은 Linux PAM 인터페이스를 호출하고 인터페이스는 요청되는 인증 유형을 서비스하는 적절한 PAM 모듈을 찾습니다.

  testdisk를 사용하여 Linux에서 삭제된 파일을 복구하는 방법

다음을 입력합니다.

sudo apt-get install libpam-google-authenticator

앱 설치

Google OTP 앱을 사용할 수 있습니다. 아이폰 그리고 기계적 인조 인간, 휴대 전화에 적절한 버전을 설치하기만 하면 됩니다. 이 유형의 인증 코드를 지원하는 Authy 및 기타 앱을 사용할 수도 있습니다.

이중 인증 구성

SSH를 통해 Pi에 연결할 때 사용할 계정에서 다음 명령을 실행합니다(sudo 접두사는 포함하지 않음).

google-authenticator

인증 토큰을 시간 기반으로 할 것인지 묻는 메시지가 표시됩니다. Y를 누른 다음 Enter 키를 누릅니다.

빠른 응답 (QR)코드가 생성되는데 80열 터미널 창보다 넓어서 스크램블 됩니다. 코드를 보려면 창을 더 넓게 드래그하세요.

QR 코드 아래에 몇 가지 보안 코드도 표시됩니다. 이것들은 ‘.google_authenticator’라는 파일에 기록되지만 지금 사본을 만들고 싶을 수도 있습니다. TOTP를 얻을 수 있는 능력을 상실한 경우(예: 휴대폰을 분실한 경우) 이 코드를 사용하여 인증할 수 있습니다.

네 가지 질문에 답해야 합니다. 그 중 첫 번째 질문은 다음과 같습니다.

Do you want me to update your "/home/pi/.google_authenticator" file? (y/n)

Y를 누른 다음 Enter 키를 누릅니다.

업데이트하시겠습니까?

다음 질문은 30초 창 내에서 동일한 코드를 여러 번 사용하는 것을 방지할 것인지 묻습니다.

Y를 누른 다음 Enter 키를 누릅니다.

세 번째 질문은 TOTP 토큰에 대한 승인 창을 넓힐 것인지 묻습니다.

이에 대한 답으로 N을 누른 다음 Enter를 누르십시오.

마지막 질문은 “속도 제한을 활성화하시겠습니까?”입니다.

Y를 입력한 다음 Enter 키를 누릅니다.

명령 프롬프트로 돌아갑니다. 필요한 경우 터미널 창을 더 넓게 드래그하거나 터미널 창에서 위로 스크롤하여 전체 QR 코드를 볼 수 있도록 합니다.

휴대폰에서 인증 앱을 연 다음 화면 오른쪽 하단의 더하기 기호(+)를 누릅니다. “QR 코드 스캔”을 선택한 후 단말기 창에서 QR 코드를 스캔합니다.

Pi의 호스트 이름을 따서 명명된 인증 앱에 새 항목이 나타나고 그 아래에 6자리 TOTP 코드가 나열됩니다. 읽기 쉽도록 3자리 2그룹으로 표시되지만 6자리 1자리 숫자로 입력해야 합니다.

  Linux에서 Macbook 터치패드 제스처를 얻는 방법

코드 옆의 애니메이션 원은 코드가 얼마나 더 오래 유효할 것인지를 나타냅니다. 완전한 원은 30초를 의미하고, 반원은 15초를 의미하는 식입니다.

모든 것을 함께 연결

편집할 파일이 하나 더 있습니다. SSH에 사용할 PAM 인증 모듈을 알려야 합니다.

sudo nano /etc/pam.d/sshd

파일 상단 근처에 다음 줄을 입력합니다.

#2FA

auth required pam_google_authenticator.so

TOTP를 요청할 시기를 선택할 수도 있습니다.

비밀번호를 입력한 후: 위 이미지와 같이 “@include common-auth” 아래에 이전 줄을 입력합니다.
암호를 묻기 전에 “@include common-auth” 위에 이전 줄을 입력합니다.

모듈을 설치하기 위해 이전에 apt-get 명령과 함께 사용한 하이픈(-) 대신 “pam_google_authenticator.so”에 사용된 밑줄(_)에 유의하십시오.

Ctrl+O를 눌러 변경 사항을 파일에 쓴 다음 Ctrl+X를 눌러 편집기를 닫습니다. SSH를 마지막으로 다시 시작해야 합니다. 그러면 완료됩니다.

sudo systemctl restart ssh

이 SSH 연결을 닫고 이 다음 단계를 확인할 때까지 다른 안전망 SSH 연결을 실행 상태로 두십시오.

인증 앱이 휴대폰에서 열려 있고 준비되어 있는지 확인한 다음 Pi에 대한 새 SSH 연결을 엽니다.

ssh [email protected]

비밀번호를 입력한 다음 코드를 입력해야 합니다. 숫자 사이에 공백 없이 휴대폰의 코드를 입력합니다. 비밀번호와 마찬가지로 화면에 표시되지 않습니다.

모든 것이 계획대로 진행된다면 Pi에 연결할 수 있어야 합니다. 그렇지 않은 경우 안전망 SSH 연결을 사용하여 이전 단계를 검토하십시오.

죄송합니다

위의 “safer”에서 “r”을 보았습니까?

실제로 이제 Raspberry Pi에 연결할 때 이전보다 더 안전하지만 100% 안전한 것은 없습니다. 이중 인증을 우회하는 방법이 있습니다. 이들은 사회 공학, 중간자(man-in-the-middle) 및 man-at-endpoint 공격, SIM 스와핑 및 여기서 설명하지 않을 기타 고급 기술에 의존합니다.

완벽하지 않다면 왜 이 모든 것을 귀찮게 할까요? 글쎄, 같은 이유로 당신은 떠날 때 현관문을 잠급니다. 비록 자물쇠를 고를 수 있는 사람들이 있지만 대부분은 그렇게 할 수 없습니다.