우당탕탕

Ubuntu 서버 초기 설정하면서 보안 강화에 비용 차이까지 비교해봤습니다 본문

Linux

Ubuntu 서버 초기 설정하면서 보안 강화에 비용 차이까지 비교해봤습니다

모찌모찝 2026. 6. 23. 13:47

제가 직접 Ubuntu 서버 초기 설정하면서 보안 부분에서 삽질한 경험이 꽤 많아요. 특히 비용과 보안 강화 사이에서 선택할 때 어느 쪽이 더 효율적인지 고민이 많았거든요. 이런 경험을 바탕으로 실제 명령어와 설정값, 그리고 비용 비교까지 꼼꼼히 정리해봤어요.

이 글에서는 Ubuntu 서버를 처음 세팅할 때 꼭 해야 하는 보안 강화 방법과 그에 따른 비용 차이를 구체적으로 알려드릴게요. 각 단계별로 어떤 옵션들이 있고, 비용은 얼마나 차이 나는지 표로 쉽게 비교할 수 있도록 준비했습니다.

개발 환경 / 버전 정보

제가 사용한 환경은 Ubuntu 22.04 LTS 서버이고, 클라우드는 AWS EC2 t3.micro 를 기준으로 했어요. 주요 보안 툴은 UFWFail2ban이며, SSH 연결에는 키 기반 인증을 사용했습니다.

먼저 이렇게 하면 됩니다: 서버 초기 방화벽 설정

사실 이 부분이 가장 기본이면서 중요한데, Ubuntu 기본 방화벽인 UFW(Uncomplicated Firewall)를 활성화하고 SSH만 허용하는 게 시작이에요. 명령어는 다음과 같습니다.

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
sudo ufw status verbose

이렇게 하면 외부에서 SSH 포트(기본 22번)만 열리고, 나머지 모든 들어오는 트래픽은 막히죠. 개인적으로는 여기서 포트 번호를 기본 22번에서 다른 번호로 바꾸는 것도 추천해요. 기본 포트는 공격 대상이 많거든요.

포트 변경은 /etc/ssh/sshd_config 파일에서 Port 22를 원하는 숫자로 수정 후 재시작하면 됩니다.

sudo nano /etc/ssh/sshd_config
# Port 22를 예를 들어 2222로 변경
sudo systemctl restart sshd

SSH 키 인증 직접 설정한 방법

이 부분에서 많이들 헷갈려 하시는데, 저는 비밀번호 대신 SSH 공개키 인증을 사용했어요. 초기 접속할 때만 비밀번호를 쓰고, 이후 접근은 키 인증만 허용하는 게 훨씬 안전하거든요.

먼저 로컬 PC에서 키 쌍을 생성합니다.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

그다음 서버에 공개키를 복사하고 권한 설정이 중요해요.

ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@서버_IP
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

마지막으로 /etc/ssh/sshd_config에서 PasswordAuthentication no로 바꾸면 비밀번호 로그인은 못 하게 돼요.

sudo nano /etc/ssh/sshd_config
# 변경 내용
PasswordAuthentication no

sudo systemctl restart sshd

Fail2ban 설치로 자동 공격 차단하기

저도 처음에는 해커의 무차별 대입 공격 때문에 계정이 뚫릴까봐 무척 걱정했는데, Fail2ban이란 프로그램을 깔아서 로그인 실패 IP를 차단하니까 훨씬 안정적이더라고요.

설치는 매우 간단합니다.

sudo apt update
sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

기본 설정만으로도 3회 이상 실패한 IP는 10분간 차단하는 기본 정책이 적용돼요. 필요하면 설정파일을 열어 직접 조정 가능하죠.

sudo nano /etc/fail2ban/jail.local

# 예시 설정
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600

이렇게 설정하면 5회 실패 시 1시간 동안 IP를 차단합니다. 저는 기본값보다 조금 더 엄격하게 적용했어요.

비용 차이가 이렇게 납니다: 클라우드 비용과 관리 시간

여기서 중요한 건 보안을 강화하는 만큼 비용이 얼마나 늘어날까 하는 점인데요. 제가 직접 사용한 AWS EC2의 경우를 예로 들어 비교해 봤습니다.

항목 기본 서버 (무보안) 보안 강화 서버 차이
월 서버 요금 (t3.micro) $8.47 $8.47 $0.00
관리 자동화 스크립트 비용 $0.00 약 $0.50 (자동화툴 구독) $0.50
보안 모니터링 솔루션 (외부 서비스) $0.00 월 $10 이상 (옵션) 최대 $10+
잠재적 해킹 피해 비용 평균 $3,000 이상 (데이터 손실, 서비스 중단) $0 (적극적 방어) $3,000 이상 절감 예상

요약하자면, 기본적인 보안 설정에 필요한 직접 비용은 거의 없고, 옵션으로 더 강화하는 경우 월 몇 달러에서 10달러 선에서 관리 비용이 늘어나지만, 해킹으로 인한 피해 대비하면 훨씬 저렴하다는 점이죠.

여기서 삽질했던 부분들

실제로 막혔던 에러는 SSH 포트 변경 후 접속 불가 현상이었어요. 처음엔 방화벽 설정을 바꾸지 않아서 접속이 안 됐는데, UFW에 새 SSH 포트 허용 규칙을 추가 안 했더라고요.

sudo ufw allow 2222/tcp
sudo ufw reload

이걸 누락하니 접속 시 "Connection refused" 에러가 계속 났었는데 한참 헤맸어요.

그리고 Fail2ban 설정 시 로그 파일 경로가 다르게 돼서 차단 규칙이 작동하지 않던 게 있었는데, 최신 Ubuntu는 로그 경로가 /var/log/auth.log임을 꼭 확인해야 했습니다.

심화: 비용 절감하면서 더 안전하게 하는 팁

요금제를 저렴하게 쓰면서도 보안을 유지하는 방법 중 하나는 클라우드 제공사의 무료 티어(Free Tier)를 최대한 활용하는 거예요. AWS, GCP, Azure 모두 일정 기간 무료 사용이 가능하니까 여기에 보안 설정을 미리 세팅해 두면 비용 부담 없이 테스트 가능합니다.

또한, 관리 자동화 스크립트를 직접 만들어 쓰면 상용 관리 툴 구독료를 아낄 수 있어요. 저는 bash 스크립트로 UFW, Fail2ban 점검, 로그 알림 등을 자동화했더니 매달 약 $0.5 정도 드는 툴 구독 비용을 절감했어요.

#!/bin/bash
# ufw 상태 점검 및 로그 알림 예시
ufw status verbose | grep -i active
fail2ban-client status sshd
# 추가로 이메일 알림 스크립트 등 구현 가능

이렇게 하면 보안 사고를 초기에 발견해서 피해를 줄일 수 있습니다.

자주 물어보시는 것들

Q. SSH 포트 번호를 꼭 바꿔야 하나요?

A. 꼭 바꿀 필요는 없지만 기본 22번 포트는 공격 대상이 많아서 바꾸는 게 보안에 유리해요. 비용과는 무관하지만 해킹 시도 감소로 관리 시간 비용 절감 효과가 있죠.

Q. Fail2ban 대신 다른 보안 솔루션 추천 있나요?

A. Fail2ban이 가성비 최고인 편이고 무료예요. 하지만 더 고급 모니터링이 필요하면 유료 솔루션(예: CrowdStrike, Datadog)도 고려할 수 있는데 월 비용이 훨씬 높아집니다.

Q. 보안 설정 후 서버 성능 저하가 있나요?

A. 기본적인 UFW, SSH 키 인증, Fail2ban 설정은 거의 성능에 영향 없어요. 다만, 과도한 모니터링이나 고급 보안 툴 설치 시 약간의 CPU, 메모리 사용량 증가는 있을 수 있습니다.

이렇게 직접 부딪혀서 정리한 Ubuntu 서버 보안 강화법과 비용 비교가 실제 운영에 큰 도움이 될 거예요. 처음부터 제대로 세팅해서 관리 시간과 피해 비용을 확실히 줄일 수 있으니까요.

Comments