Ubuntu 24.04 초기 보안 설정 완벽 가이드 – SSH 방화벽 UFW 설정

1. 왜 Ubuntu 서버 초기 보안 설정이 중요한가?

서버를 처음 구축하고 나서 “일단 돌아가면 됐지, 보안은 나중에 해도 되겠지”라고 생각했던 적 있으신가요? 저도 그랬습니다. 그런데 며칠 뒤 로그를 확인했더니 중국, 러시아 등 전 세계에서 SSH 접속 시도가 수천 건씩 찍혀있더라고요. 정말 소름 돋았습니다.

1.1. 서버 해킹의 80%는 초기 설정 미흡에서 발생

보안 업계의 통계에 따르면 서버 해킹 사고의 약 80%가 초기 보안 설정을 제대로 하지 않아서 발생한다고 합니다. 특히 클라우드 서버는 공인 IP가 할당되는 순간부터 자동화된 봇들의 공격 대상이 됩니다. 기본 포트, 약한 비밀번호, 방화벽 미설정 등은 해커들이 가장 먼저 노리는 취약점이에요.

1.2. 방화벽: 해킹 방어의 첫 번째 관문

방화벽은 서버의 첫 번째 방어선입니다. 외부에서 들어오는 모든 트래픽을 검사하고, 허용된 포트로의 접근만 허용하죠. Ubuntu 24.04 초기 보안 설정 완벽 가이드 SSH 방화벽 설정은 서버를 외부 공격으로부터 보호하는 가장 기본적이면서도 강력한 방법입니다.

1.3. 개발자가 꼭 알아야 할 보안 설정 체크리스트

Ubuntu 서버를 처음 설치한 후 반드시 해야 할 보안 설정들을 정리해봤습니다:

  • SSH 서버 설치 및 상태 확인
  • UFW 방화벽 활성화 및 필수 포트만 허용
  • SSH 기본 포트 변경 (22번 포트는 공격 1순위)
  • SSH 키 인증 설정 및 비밀번호 인증 비활성화
  • 불필요한 서비스 제거 및 자동 업데이트 설정

이 글에서는 위 체크리스트 중 가장 중요한 SSH와 방화벽 설정을 중심으로 설명드리겠습니다.

2. SSH 서버 설치와 상태 확인

2.1. OpenSSH Server 설치하기

Ubuntu 24.04를 새로 설치하면 SSH 서버가 기본으로 설치되어 있지 않을 수 있습니다. 먼저 SSH 서버가 설치되어 있는지 확인하고, 없다면 설치해야 합니다.

SSH 서버 설치 명령어:

sudo apt update
sudo apt install openssh-server -y

설치 중 패키지 관리자가 의존성을 자동으로 해결해줍니다. 보통 10~20초 정도면 설치가 완료됩니다.

2.2. SSH 서비스 상태 확인 및 자동 실행 설정

설치가 완료되면 SSH 서비스가 정상적으로 실행 중인지 확인해야 합니다.

sudo systemctl status ssh

출력 결과에서 Active: active (running) 이라는 문구가 보이면 정상입니다. 만약 inactive 상태라면 다음 명령어로 시작할 수 있습니다:

sudo systemctl start ssh
sudo systemctl enable ssh

enable 명령어는 서버 재부팅 시 SSH 서비스가 자동으로 시작되도록 설정합니다. 이걸 안 하면 재부팅 후 서버 접속이 안 돼서 당황할 수 있어요. (저도 한 번 당했습니다…)

2.3. SSH 접속 테스트 방법

같은 네트워크 내에서 또는 로컬에서 SSH 접속이 정상적으로 되는지 테스트해봅니다.

ssh username@서버IP주소

비밀번호를 입력하고 접속이 되면 SSH 서버가 정상적으로 작동하는 것입니다. 여기까지 문제없이 진행되었다면 이제 본격적으로 Ubuntu 24.04 초기 보안 설정 완벽 가이드 SSH 방화벽 설정을 시작할 준비가 된 것입니다.

Ubuntu 24.04 초기 보안 설정 완벽 가이드 SSH 방화벽 관련 이미지

3. UFW 방화벽 설정: 필수 포트만 열기

3.1. UFW란 무엇이고 왜 사용하는가?

UFW(Uncomplicated Firewall)는 Ubuntu에서 기본으로 제공하는 방화벽 관리 도구입니다. iptables보다 훨씬 직관적이고 사용하기 쉽기 때문에 초보자에게 적합합니다. 복잡한 규칙 없이 몇 줄의 명령어만으로 강력한 방화벽을 구축할 수 있습니다.

특징 iptables UFW
사용 난이도 어려움 (복잡한 문법) 쉬움 (직관적인 명령어)
설정 속도 느림 (많은 옵션 필요) 빠름 (간단한 명령어)
초보자 적합성 낮음 높음
세밀한 제어 매우 높음 중간 (기본 기능 충분)

3.2. SSH 포트(22) 허용 및 방화벽 활성화

⚠️ 주의: 반드시 SSH 포트를 먼저 허용한 후 방화벽을 활성화해야 합니다! 순서를 바꾸면 자기 자신도 접속이 끊깁니다.

올바른 순서는 다음과 같습니다:

# 1단계: SSH 포트 허용
sudo ufw allow 22/tcp

# 2단계: 방화벽 활성화
sudo ufw enable

# 3단계: 상태 확인
sudo ufw status verbose

처음 ufw enable 명령을 실행하면 “기존 SSH 연결이 끊길 수 있습니다”라는 경고 메시지가 나타납니다. 이미 22번 포트를 허용했다면 걱정하지 않아도 됩니다. ‘y’를 입력하고 진행하세요.

3.3. 방화벽 규칙 확인 및 관리 명령어

방화벽 설정 후 현재 적용된 규칙을 확인하는 것이 중요합니다.

sudo ufw status numbered

이 명령어는 규칙에 번호를 붙여서 보여줍니다. 특정 규칙을 삭제하고 싶을 때는 다음과 같이 합니다:

sudo ufw delete 번호

자주 사용하는 UFW 명령어들을 정리하면:

  • sudo ufw allow 포트번호/프로토콜: 특정 포트 허용
  • sudo ufw deny 포트번호: 특정 포트 차단
  • sudo ufw delete allow 포트번호: 허용 규칙 삭제
  • sudo ufw disable: 방화벽 비활성화 (위급 상황용)
  • sudo ufw reset: 모든 규칙 초기화

4. SSH 보안 강화: 포트 변경과 접속 제한

4.1. 기본 포트 22를 변경해야 하는 이유

SSH의 기본 포트인 22번은 전 세계 해커들이 가장 먼저 공격하는 포트입니다. 서버 로그를 보면 22번 포트로 들어오는 무차별 대입 공격(brute force attack)을 쉽게 확인할 수 있습니다. 포트 변경만으로도 자동화된 봇 공격의 99%를 막을 수 있습니다.

항목 기본 포트(22) 사용 비표준 포트 사용
자동 공격 노출 매우 높음 (하루 수천 건) 매우 낮음 (거의 없음)
설정 난이도 쉬움 중간 (설정 파일 수정 필요)
접속 편의성 높음 중간 (포트 번호 기억 필요)
보안 수준 낮음 높음

4.2. SSH 포트 변경 실전 가이드 (2233 예시)

Ubuntu 24.04 초기 보안 설정 완벽 가이드 SSH 방화벽에서 가장 효과적인 설정 중 하나가 바로 SSH 포트 변경입니다. 2233번 포트로 변경하는 전체 과정을 단계별로 설명하겠습니다.

1단계: SSH 설정 파일 백업

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

혹시 모를 실수에 대비해 항상 백업을 먼저 만드는 습관을 들이세요.

2단계: SSH 설정 파일 편집

sudo nano /etc/ssh/sshd_config

파일에서 #Port 22 라고 주석 처리된 부분을 찾습니다. 주석(#)을 제거하고 포트 번호를 변경합니다:

Port 2233

Ctrl+O로 저장하고 Ctrl+X로 나갑니다.

3단계: 새 포트를 방화벽에 허용

sudo ufw allow 2233/tcp

4단계: SSH 서비스 재시작

sudo systemctl restart ssh

5단계: 새 포트로 접속 테스트

⚠️ 중요: 기존 SSH 세션을 끊지 말고 새 터미널 창에서 테스트하세요!

ssh -p 2233 username@서버IP주소

새 포트로 정상 접속이 확인되면 이제 기존 22번 포트를 막을 수 있습니다:

sudo ufw delete allow 22/tcp

처음에 이 작업을 할 때 순서를 잘못 지켜서 서버 접속이 끊긴 적이 있습니다. 클라우드 콘솔로 접속해서 겨우 복구했죠. 여러분은 꼭 새 세션에서 테스트 후 기존 포트를 막으시길 바랍니다.

Editor’s Pick

인체공학 버티컬 마우스
장시간 코딩 손목 보호

자세히 보기

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

4.3. ufw limit로 무차별 대입 공격 차단하기

ufw limit 명령은 동일 IP에서 30초 내에 6회 이상 접속 시도 시 자동으로 차단하는 기능입니다. 간단한 Fail2ban 효과를 낼 수 있습니다.

sudo ufw delete allow 2233/tcp
sudo ufw limit 2233/tcp

기존 allow 규칙을 삭제하고 limit으로 다시 추가합니다. 이제 무차별 대입 공격을 시도하는 IP는 자동으로 일정 시간 차단됩니다.

5. SSH 키 인증 설정: 비밀번호 없이 안전하게 접속하기

5.1. SSH 키 인증이 비밀번호보다 안전한 이유

비밀번호는 아무리 복잡하게 만들어도 무차별 대입 공격에 취약합니다. 하지만 SSH 키는 2048비트 이상의 암호화를 사용하기 때문에 사실상 뚫기 불가능합니다.

인증 방식 비밀번호 인증 SSH 키 인증
보안 수준 중간 (비밀번호 강도 의존) 매우 높음 (2048bit 이상 암호화)
무차별 공격 취약성 높음 거의 없음
편의성 중간 (매번 입력 필요) 높음 (자동 로그인)
초기 설정 난이도 쉬움 중간

5.2. SSH 키 생성 및 서버 등록 단계별 가이드

Ubuntu 24.04 초기 보안 설정 완벽 가이드 SSH 방화벽 설정의 마지막 단계는 SSH 키 인증 설정입니다.

1단계: 로컬 PC에서 SSH 키 생성 (Windows/Mac/Linux)

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

엔터를 계속 누르면 기본 위치(~/.ssh/id_rsa)에 키가 생성됩니다. 패스프레이즈를 설정하면 추가 보안이 가능하지만, 자동화 스크립트에서는 불편할 수 있습니다.

2단계: 공개 키를 서버에 복사

ssh-copy-id -p 2233 username@서버IP주소

포트를 변경했다면 -p 옵션으로 포트 번호를 지정해야 합니다. 비밀번호를 한 번 입력하면 공개 키가 서버의 ~/.ssh/authorized_keys 파일에 자동으로 추가됩니다.

3단계: 키 인증으로 접속 테스트

ssh -p 2233 username@서버IP주소

비밀번호 입력 없이 바로 접속되면 성공입니다!

5.3. 비밀번호 인증 비활성화로 보안 완성하기

SSH 키 인증이 정상적으로 작동하는 것을 확인했다면, 이제 비밀번호 인증을 완전히 비활성화할 수 있습니다. 이렇게 하면 키 파일 없이는 절대 접속할 수 없게 됩니다.

sudo nano /etc/ssh/sshd_config

다음 항목들을 찾아서 수정합니다:

PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no

저장 후 SSH 서비스를 재시작합니다:

sudo systemctl restart ssh

⚠️ 주의: 비밀번호 인증을 비활성화하기 전에 반드시 SSH 키로 접속이 되는지 확인하세요. 그렇지 않으면 서버에 영원히 접속하지 못할 수도 있습니다.

저는 처음에 너무 서둘러서 SSH 키 테스트도 안 하고 바로 비밀번호 인증을 껐다가 큰 낭패를 봤습니다. 다행히 클라우드 콘솔이 있어서 복구했지만, 정말 식은땀이 났습니다.

6. 자주 묻는 질문 (FAQ)

Q. 포트를 변경했는데 SSH 접속이 안 돼요

가장 흔한 원인은 방화벽에서 새 포트를 허용하지 않았거나, SSH 서비스를 재시작하지 않은 경우입니다. 다음을 순서대로 확인해보세요:

  • sudo ufw status로 새 포트가 허용되어 있는지 확인
  • sudo systemctl status ssh로 SSH 서비스 상태 확인
  • 클라우드 서비스를 사용 중이라면 클라우드 콘솔의 보안 그룹/방화벽 설정도 확인
  • /var/log/auth.log 파일에서 접속 실패 로그 확인

그래도 안 된다면 클라우드 콘솔이나 물리적 접속으로 서버에 들어가 설정을 다시 확인해야 합니다.

Q. UFW 활성화 후 서버 접속이 끊겼어요

SSH 포트를 허용하기 전에 방화벽을 활성화한 경우입니다. 클라우드 서비스라면 웹 콘솔로 접속할 수 있습니다. 접속 후 다음 명령어로 복구하세요:

sudo ufw allow 22/tcp  # 또는 변경한 포트 번호
sudo ufw reload

물리 서버라면 직접 접속해서 동일한 작업을 수행하거나, 급한 경우 sudo ufw disable로 방화벽을 비활성화한 후 처음부터 다시 설정할 수 있습니다.

Q. SSH 키를 분실했을 때 대처 방법은?

SSH 키를 분실하고 비밀번호 인증도 비활성화되어 있다면 정말 난감한 상황입니다. 다음 방법들을 시도해볼 수 있습니다:

  • 클라우드 콘솔이나 VNC를 통한 직접 접속
  • 서버에 직접 접속하여 비밀번호 인증 임시 활성화
  • 새로운 SSH 키 생성 후 서버의 ~/.ssh/authorized_keys에 수동으로 추가

이런 일을 방지하려면 SSH 키를 여러 곳에 백업해두고, 여러 개의 공개 키를 서버에 등록해두는 것이 좋습니다.

Q. 회사 방화벽 때문에 SSH 포트가 막혀있다면?

회사나 공공 와이파이에서 22번 외 포트가 막혀있는 경우가 종종 있습니다. 이럴 때는:

  • SSH를 443번 포트(HTTPS)로 설정하면 대부분의 방화벽을 통과할 수 있습니다
  • SSH 터널링이나 VPN을 이용하는 방법도 있습니다
  • 모바일 핫스팟을 임시로 사용하는 것도 방법입니다

다만 443번 포트를 사용하면 웹 서버와 충돌할 수 있으니, 웹 서버는 별도 포트를 사용하거나 역방향 프록시를 구성해야 합니다.

Q. 방화벽 설정 후 특정 서비스가 작동하지 않아요

방화벽을 활성화하면 허용하지 않은 모든 포트가 차단됩니다. 웹 서버(80, 443), 데이터베이스(3306, 5432) 등 사용하는 서비스의 포트를 추가로 열어줘야 합니다:

sudo ufw allow 80/tcp   # HTTP
sudo ufw allow 443/tcp  # HTTPS
sudo ufw allow 3306/tcp # MySQL (외부 접속이 필요한 경우만)

데이터베이스는 보안상 외부에서 직접 접속하지 못하도록 막고, SSH 터널을 통해서만 접근하는 것을 권장합니다.

7. 결론: 보안 설정 체크리스트와 다음 단계

7.1. 지금까지 설정한 보안 항목 총정리

이 Ubuntu 24.04 초기 보안 설정 완벽 가이드 SSH 방화벽 글에서 다룬 핵심 보안 설정들을 체크리스트로 정리했습니다:

  • ✅ SSH 서버 설치 및 자동 실행 설정 완료
  • ✅ UFW 방화벽 활성화 및 필수 포트만 허용
  • ✅ SSH 기본 포트를 비표준 포트로 변경 (예: 2233)
  • ✅ ufw limit로 무차별 대입 공격 방어 설정
  • ✅ SSH 키 인증 설정 및 비밀번호 인증 비활성화

이 5가지 설정만으로도 서버 보안이 기본 상태에 비해 수십 배 향상됩니다. 실제로 이 설정들을 적용하고 나서 로그를 확인하니 공격 시도가 거의 0에 가깝게 줄어들었습니다.

7.2. 추가로 고려해야 할 보안 설정 (Fail2ban, 2FA 등)

기본 보안 설정이 완료되었다면 다음 단계로 더 강력한 보안을 구축할 수 있습니다:

  • Fail2ban: 로그를 모니터링하여 반복적인 접속 시도를 자동으로 차단하는 도구입니다. ufw limit보다 훨씬 강력하고 세밀한 제어가 가능합니다.
  • 2단계 인증(2FA): Google Authenticator 등을 연동하여 SSH 접속 시 추가 인증 단계를 거치도록 설정할 수 있습니다.
  • 자동 보안 업데이트: unattended-upgrades 패키지로 보안 패치를 자동으로 설치하도록 설정합니다.
  • SELinux/AppArmor: 프로세스 수준의 접근 제어로 더 강력한 보안을 제공합니다.
  • 로그 모니터링: Logwatch나 rsyslog 등으로 이상 징후를 자동으로 감지하고 알림을 받을 수 있습니다.

7.3. 정기적인 보안 점검 루틴 만들기

보안은 한 번 설정하고 끝나는 게 아닙니다. 정기적인 점검이 필수입니다. 제가 실제로 사용하는 월간 보안 점검 루틴을 공유합니다:

  • 매주: sudo ufw status로 방화벽 규칙 확인, 불필요한 규칙 제거
  • 매주: sudo apt update && sudo apt upgrade로 시스템 업데이트
  • 매월: /var/log/auth.log 확인하여 이상 접속 시도 분석
  • 매월: netstat -tulpn으로 실행 중인 서비스 및 열린 포트 점검
  • 분기별: 사용하지 않는 계정 및 서비스 제거
  • 분기별: SSH 키 교체 및 백업 확인

저는 이 작업들을 cron과 스크립트로 자동화해서 매주 리포트를 이메일로 받고 있습니다. 자동화에 대한 내용은 다음 포스트에서 다룰 예정입니다.

Ubuntu 24.04 초기 보안 설정 완벽 가이드 SSH 방화벽 설정은 서버 운영의 첫걸음입니다. 처음에는 복잡하고 어렵게 느껴질 수 있지만, 한 번 제대로 설정해두면 마음 편하게 서버를 운영할 수 있습니다. 저도 처음에는 실수도 많이 하고 시행착오를 겪었지만, 지금은 새 서버를 받으면 20분 안에 모든 보안 설정을 끝낼 수 있게 되었습니다.

보안은 선택이 아니라 필수입니다. 오늘 당장 서버에 접속해서 이 글의 체크리스트대로 설정을 점검해보세요. 혹시 빠뜨린 부분이 있다면 지금이라도 늦지 않았습니다. 여러분의 서버가 안전하게 운영되길 바랍니다!

Ubuntu 24.04 초기 보안 설정 완벽 가이드 SSH 방화벽 상세 정보

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤