Ubuntu 서버 보안 설정 – SSH, UFW, fail2ban 완벽 가이드
대박코드 작업일지
2026.03.01 (Day 3) – 3화 1부: SSH, 서버 접속 시작하다
1. SSH 서버 접속
- Vultr 대시보드에서 서버 정보 확인 (IP, Username, Password)
- VSCode 터미널에서
sshpass를 이용해 SSH 접속 성공 - 접속 명령어:
ssh root@**********
서버 상태 확인 결과
- 호스트명: vultr
- OS: Ubuntu 24.04, Linux 6.8.0
- 메모리: 955MB 중 330MB 사용 (625MB 여유)
- 디스크: 23GB 중 6.1GB 사용 (16GB 여유)
2. 시스템 업데이트
apt update→ 47개 패키지 업데이트 가능 확인apt upgrade -y→ 47개 패키지 전부 최신 버전으로 업그레이드- 커널 업데이트 포함 (6.8.0-100 → 6.8.0-101)
3. 방화벽 설정 (UFW)
- 설정 전: 모든 포트가 열려 있는 상태 (위험)
- 허용한 포트:
- 22 (SSH) → 서버 접속용
- 80 (HTTP) → 웹사이트 접속
- 443 (HTTPS) → 보안 웹사이트 접속
- 나머지 포트: 전부 차단 (deny incoming)
ufw enable→ 방화벽 활성화 완료
4. 새 사용자 생성
- root는 모든 권한을 가진 슈퍼 관리자 → 보안상 위험
- 일반 사용자
************생성 - sudo 그룹에 추가 (필요할 때만 관리자 권한 사용)
이슈: 비밀번호 설정 실패
- 문제:
*********비밀번호 설정 시 “BAD PASSWORD: The password contains the user name in some form” 에러 발생 - 원인: Ubuntu PAM 보안 정책이 사용자 이름(
***********)이 포함된 비밀번호를 거부 - 해결: 사용자 이름이 포함되지 않은 비밀번호로 변경 → 설정 성공
5. 보안 점검 & 추가 조치
점검 결과
- root 원격 로그인: 허용 상태 (위험)
- fail2ban: 미설치 (위험)
- 서버 생성 15시간 만에 이미 647번의 해킹 시도 발견!
조치 1: root 원격 로그인 차단
/etc/ssh/sshd_config에서PermitRootLogin yes→PermitRootLogin no변경- SSH 서비스 재시작 (
systemctl restart ssh) - 이후 root 계정으로 원격 접속 불가, ********* 계정으로만 접속
조치 2: fail2ban 설치
- fail2ban: 반복적으로 로그인 시도하는 IP를 자동 차단하는 보안 도구
apt install -y fail2ban→ 설치 즉시 작동- 설치 직후 결과:
- 총 실패한 로그인 시도: 647번
- 자동 차단된 IP: 7개 (157.245.107.129, 170.64.174.172, 64.227.173.94, 208.68.37.15, 138.68.74.135, 46.101.236.51, 45.148.10.240)
최종 서버 보안 상태
| 항목 | 설정 전 | 설정 후 |
| —— | ——— | ——— |
| 시스템 업데이트 | 47개 미업데이트 | 최신 |
| 방화벽 (UFW) | 꺼짐 | SSH/HTTP/HTTPS만 허용 |
| root 원격 접속 | 허용 | 차단 |
| fail2ban | 미설치 | 설치 완료 (7개 IP 차단) |
| 사용자 계정 | root만 존재 | ********* (sudo) 추가 |
서버 접속 정보
| 구분 | 값 |
| —— | —— |
| IP | ************* |
| 일반 사용자 | ************* |
| 접속 명령어 | ************** |
※ root 원격 접속 차단됨 — 긴급 시 Vultr 콘솔에서만 접속 가능
다음에 할 것
1. 3화 2부: WordPress 설치 (Nginx + PHP + MySQL + WordPress)
2. 3화 3부: 도메인 연결 + 블로그 공개 → v0.2 마일스톤