728x90
반응형
홈서버나 리눅스 서버를 외부에 공개한다면
가장 먼저 해야 할 작업은 SSH 보안 강화입니다.
비밀번호 로그인 상태로 포트만 열어두면
몇 분 안에 무차별 공격이 들어옵니다.
이번 글에서는:
- SSH 키 생성
- 공개키 등록
- 비밀번호 로그인 차단
- 포트 변경
- 보안 점검 방법
까지 운영 가능한 수준으로 정리합니다.
1️⃣ SSH 공격이 발생하는 이유
포트 22를 열어두면 전 세계 봇이 다음을 시도합니다:
- root 계정 로그인
- admin / test / user 계정 무차별 대입
- 사전 대입 공격(Dictionary Attack)
로그를 보면 수만 건 시도됩니다.
따라서 반드시:
- 비밀번호 로그인 차단
- Key 기반 인증만 허용
으로 전환해야 합니다.
2️⃣ SSH Key 생성 (Mac 기준)
🔹 Mac 터미널에서 실행
ssh-keygen -t ed25519 -C "myserver-key"
설명:
| 옵션 | 의미 |
|---|---|
| ed25519 | 현재 가장 안전한 알고리즘 |
| -C | 키 식별용 코멘트 |
저장 위치
기본값 엔터:
/Users/사용자/.ssh/id_ed25519
패스프레이즈는 설정 권장 (추가 보안)
생성 결과
~/.ssh/id_ed25519 ← 개인키 (절대 유출 금지)
~/.ssh/id_ed25519.pub ← 공개키 (서버에 등록)
3️⃣ 서버에 공개키 등록
🔹 방법 1 (가장 쉬운 방법)
ssh-copy-id 사용자명@서버IP -p 포트번호
예:
ssh-copy-id gamto@192.168.0.10 -p 10022
🔹 방법 2 (수동 등록)
공개키 내용 확인:
cat ~/.ssh/id_ed25519.pub
출력된 한 줄을 복사
서버에서:
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
붙여넣기
권한 설정 (매우 중요):
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
4️⃣ SSH 설정 변경 (보안 강화 핵심)
설정 파일 수정
sudo nano /etc/ssh/sshd_config
아래 항목 수정
🔐 1) 비밀번호 로그인 차단
PasswordAuthentication no
🔐 2) 루트 로그인 차단
PermitRootLogin no
🔐 3) SSH 포트 변경 (선택사항)
기본 22 → 예: 10022
Port 10022
🔐 4) 공개키 인증만 허용 확인
PubkeyAuthentication yes
설정 저장 후 재시작
sudo systemctl restart ssh
또는
sudo systemctl restart sshd
⚠️ 매우 중요
재시작 전에 새 터미널에서 Key 로그인 테스트하세요.
기존 세션은 닫지 마세요.
5️⃣ Key 방식으로 접속하기
ssh 사용자명@서버IP -p 10022
특정 키 지정 시:
ssh -i ~/.ssh/id_ed25519 사용자명@서버IP -p 10022
6️⃣ 접속 확인 방법
비밀번호 입력을 요구하지 않으면 성공
로그 확인:
sudo journalctl -u ssh -n 50
7️⃣ 추가 보안 (Fail2ban)
설치:
sudo apt install fail2ban
상태 확인:
sudo fail2ban-client status sshd
자동으로 공격 IP 차단됩니다.
8️⃣ 보안 점검 체크리스트
| 항목 | 상태 |
|---|---|
| PasswordAuthentication no | ✅ |
| PermitRootLogin no | ✅ |
| Key 로그인 정상 동작 | ✅ |
| 포트 변경 | 선택 |
| Fail2ban 활성화 | 권장 |
9️⃣ 포트 변경은 꼭 해야 할까?
보안 수준 비교:
| 설정 | 보안 수준 |
|---|---|
| 비밀번호 로그인 | ❌ 매우 위험 |
| Key 로그인 | ✅ 충분히 안전 |
| Key + 포트 변경 | ✅ 추가 보안 |
실제로는:
Key 로그인만 제대로 설정해도 매우 안전합니다.
🔎 실제 공격 로그 예시
Failed password for root from 45.x.x.x port 52411
Key 기반으로 전환하면:
Failed publickey for root
→ 비밀번호 공격 자체가 불가능
🔥 최종 권장 구조
SSH 포트 변경
+ Key 로그인만 허용
+ root 로그인 금지
+ fail2ban
이 상태면 가정용 서버 운영에 충분히 안전합니다.
🎯 마무리
SSH는 서버 보안의 첫 관문입니다.
비밀번호 로그인 상태로 서버를 외부에 공개하는 것은
집 문을 열어두는 것과 같습니다.
Key 기반 인증으로 전환하면
무차별 공격은 거의 의미를 잃습니다.
728x90
반응형
댓글