리눅스 서버 보안 기본2️⃣ (주제 : 강력한 비밀번호 관리 및 다단계(멀티) 인증 : 복잡한 비밀번호 정책 설정 , PAM을 이용한 OTP , FIDO2 등의 현업에서 사용하는 다단계 인증 적용 방법 안내)
안녕?! 오늘은 두 번째 리눅스 보안 시간으로 비밀번호 관리에 대해 이야기하려고 해.
요즘 세상은 온라인에 개인 정보가 여기 저기 다 흩어져 있어서, 아무나 드나들 수 있는 홈페이지를 관리하면 큰일 나! 마치 현관문 비밀번호를 <1234>로 해놓고 사는 것과 똑같지. 상상만 해도 아찔하지? 자, 오늘은 비밀번호 관리를 현업에 입장에서 어떻게 하는지 소개해 줄게
🏢 첫 번째! 비밀 번호 : 복잡하고 강력한 비밀번호 만들기
집에 귀한 물건이 많을수록 현관문 비밀번호를 복잡하고 어렵게 설정하는 것처럼, 온라인 계정도 마찬가지다. 쉬운 비밀번호, 유추할 수 있는 비밀번호는 해커한테 "여기 귀중한 물건 많아요~"라고 광고하는 거나 다름이 없다. 그럼! 강력한 비밀번호를 만드는 방법은 무엇이 있을까?
- 길게! 아주 길게 : 최소 9자 이상으로 만들어 보자
- 숫자, 영어, 대문자, 소문자, 특수문자 섞기!! 다양한 조합으로 비밀번호를 설정하면 쉽게 알 수 없겠지?
- 개인 정보는 절대 금지 : 유추할 수 있는 번호(예를 들어 전화번호 뒷자리, 아이디와 동일한 거 등)는 금지
- 단어 조합도 위험해 : 단어도 브루드포스 공격으로 다 뚫리는 거 잊지 마
- 사이트마다 다른 비밀번호 쓰기 : 한 곳이 뚫리더라도 다른 곳은 살아야지. (Feat : 산사람은 살아야지~)
🏤 두 번째! : 다단계 인증 (MFA)으로 강력하게!!
아무리 강력한 비밀번호로 관리한다고 하더라도 100% 안전하다고 볼 수 없는 거 알지? 튼튼한 자물쇠는 채워졌지만, 창문은 활짝 열린 거랑 똑같아. 자! 그래서 요즘 현업에서는 다단계 인증 (MFA : Multi-Factor Authentication )이라는 2단계 인증 시스템을 갖추고 있어
다단계 인증은 다양한 인증 방식과 연동할 수 있어,
가까운 데는 카카오톡 연동도 가능하고 SMS 등과 같이 있어. 그럼 무엇으로 연동이 가능한지 볼까?
구분 | 설명 |
OTP (One-Time-Password) | 스마트폰 앱 (대표적으로 구글 Authenticator )이 생성하는 일회용 비밀번호야. 매번 로그인 할 때마다 새로운 비밀번호로 진행 해야 하기 떄문에 매우 안전해 |
FIDO2(Fast Identity Online 2) | USB 형태의 보안 키나 스마트폰 생체 인증(지문,얼굴인식) 기능을 이용하는 인증 방식이야. 비밀번호 없이도 로그인 할 수 있어서 편리하고 강력해 |
SMS 인증 | 휴대폰 문자로 "인증번호"가 전송되고 그 번호를 입력하는 방식이야. 휴대폰 번호가 탈취될 위험이 있어 보안은 조금 떨어져. |
이메일 인증 | 이메일로 전송된 링크를 클릭 하거나 인증번호가 전송되고 입력하는 방식이야 |
생체 인식(지문 , 얼굴인식) | 스마트폰이나 노트북에 내장된 지문 센서나 얼굴 인식 기능을 이용하는 방식이야 |
🏦 세 번째! PAM (Pluggable Authentication Modules) 이란 무엇일까?
두 번째 까지는 이해되었지? 이제는 조금 어려운 이야기를 해보려고 해. 바로 PAM (Pluggable Authentication Modules) 이야. 이건 마치 레고 블록처럼 다양한 인증 방식을 시스템에 쉽게 연결하고 사용할 수 있도록 해주는 기술이야.
예를 하나 들어볼까? 비밀번호 인증, OTP 인증 , FIDO2 인증 등 다양한 인증방식이 있잖아. 이걸 네가 원하는 대로 골라서 시스템에 적용할 수 있게 해주는 기술이야.
PAM을 사용하면 시스템 관리작 어떤 인증 방식을 사용할지 유연하게 설정할 수 있는 장점이 있고, 새로운 인증 방식이 나오더라도 쉽게 추가 가능 한 게 장점 중에 장점!!
자, 두 번째 나온 MFA 방식에 대해 좀 풀어서 알려줄게
기능 | 비밀번호 인증 | OTP인증 | FIDO2 인증 | SMS 인증 | 이메일 인증 |
보안성 | 낮음 ⬇️ | 높음⬆️ | 매우 높음⬆️⬆️ | 중간 ➡️ | 중간 ➡️ |
편의성 | 높음⬆️ | 중간 | 높음⬆️ | 높음⬆️ | 높음⬆️ |
추가장비 | 없음 | 스마트폰 | 보안 키 (Option) | 없음 | 없음 |
네트워크 디펜더스(의존성) | 낮음⬇️ | 높음⬆️ | 낮음 ⬇️ | 높음⬆️ | 높음⬆️ |
피싱 공격 방어 | 취약 | 강함⬆️ | 매우 강함⬆️⬆️ | 취약 ⬇️ ⬇️ | 취약 ⬇️ ⬇️ |
실전으로 넘어가 보자!
🍉실전! PAM을 이용한 다단계 인증 적용 방법
PAM은 주로 리눅스 같은 서버 환경에서 많이 사용해. 간단하게 OTP나 FIDO2를 PAM에 적용하는 예시를 알려 줄게
Chapter1. OTP 설치
✅ Google Authenticator를 예로 설명해볼게
1️⃣ 필요 패키지를 설치해보자
sudo apt-get install libpam-google-authenticator
2️⃣ Google Authenticator 설정
google-authenticator
~/.google_authenticator // 파일 생성 확인
🚡 해당 파일이 있는 비밀 키와 QR 코드를 Google Authenticator앱에 등록해줘야 해
3️⃣ PAM 설정 파일 수정
/etc/pam.d/sshd #파일 열어
include common-auth 또는 auth required pam_permit.so #줄 앞에 다음 줄을 추가
auth required pam_google_authenticator.so nullok
(❗️ nullok 옵션은 OTP 인증이 설정되지 않은 사용자에게는 비밀번호 인증만으로 로그인을 허용한다는 의미야 )
4️⃣ SSH 설정 수정
vi /etc/ssh/sshd_config
hallengeResponseAuthentication Yes
AuthenticationMethods 필드에 password keyboard-interactive 또는 publickey,password keyboard-interactive # 둘중 하나 추가
wq
sudo systemctl restart sshd #ssh 서비스 재시작
✈️ 마무리
오늘 알려준 비밀번호 관리법은 다단계 인증(MFA)으로 더욱 튼튼하고 강력하게 서버 관리를 해줄 수 있어.
한번 설정했다고 끝이 아니고 (개인은) 비밀번호는 주기적으로 변경해 주고 (서버관리자는) 새로운 보안 위협에 대해서 꾸준한 관심을 가져야 해.