Ubuntu UFW 방화벽 켜기, SSH를 끊지 않는 초보자 점검 순서
AI를 활용하여 생성한 이미지입니다.
Ubuntu 서버를 처음 만지면 방화벽을 켜야 한다는 말부터 듣게 돼요. 그런데 원격으로 접속 중인 상태에서 순서를 잘못 잡으면 SSH 연결이 끊길 수 있어요. UFW는 Ubuntu에서 방화벽 규칙을 다루기 쉽게 만든 도구라서, 먼저 현재 접속 경로를 허용한 뒤 활성화하는 순서가 중요해요.[1]
이 글은 웹 서버를 완성하는 설정이 아니라, 초보자가 UFW를 켜고 상태를 확인하며 실수한 규칙을 되돌리는 기본 흐름에 집중해요. 서버에 직접 연결된 화면이 있다면 부담이 적지만, 원격 터미널만 열려 있다면 아래 경고를 먼저 읽어 주세요.
UFW는 무엇을 하는 도구일까?
UFW(Uncomplicated Firewall)는 Ubuntu의 네트워크 방화벽 규칙을 관리하는 명령줄 도구예요. Ubuntu 문서는 UFW를 사용해 들어오고 나가는 네트워크 트래픽을 제어할 수 있다고 설명해요.[1] 복잡한 규칙을 한꺼번에 작성하기보다, 필요한 포트와 허용 범위를 명령으로 확인하는 방식이에요.
방화벽을 켠다고 서버가 자동으로 안전해지는 것은 아니에요. 열어 둔 포트에 어떤 서비스가 듣고 있는지, 계정과 SSH 인증이 안전한지까지 따로 확인해야 해요.
원격 SSH라면 먼저 접속 경로를 허용해요
현재 터미널이 SSH로 연결돼 있다면 sudo ufw enable부터 실행하지 마세요. 먼저 SSH 서비스에 해당하는 규칙을 넣고, 새 터미널에서 실제 재접속이 되는지 확인하는 편이 안전해요.
sudo ufw allow OpenSSH
sudo ufw status numbered
시스템에 OpenSSH 애플리케이션 프로필이 없다면 실제 SSH 포트를 확인해 명시할 수 있어요.
sudo ufw allow 22/tcp
SSH가 22번이 아닌데 22번만 허용하면 연결이 보호되지 않아요. 현재 SSH 설정과 서버가 실제로 듣는 포트를 먼저 확인하세요. 공유기나 클라우드 보안 그룹에서 별도로 막혀 있다면 UFW만 바꿔도 접속 문제가 해결되지 않아요.
처음에는 상태를 읽는 명령부터 실행해요
UFW를 바꾸기 전에 현재 상태를 기록해 두면 되돌리기 쉬워요.
sudo ufw status verbose
sudo ufw app list
sudo ufw show added
status verbose는 활성화 여부와 기본 정책, 현재 규칙을 보여줘요. app list는 설치된 서비스 프로필을 확인하는 데 쓰고, show added는 직접 추가한 규칙을 다시 읽을 때 유용해요.[2]
방화벽을 켜고 필요한 서비스만 열어요
- SSH 원격 접속 중이면 SSH 규칙이 있는지 확인해요.
- 새 터미널에서 같은 서버로 다시 접속해요.
- 재접속이 확인된 뒤
sudo ufw enable을 실행해요. - 웹 서버라면 실제로 사용할 HTTP·HTTPS 서비스만 허용해요.
- 마지막으로
sudo ufw status verbose를 다시 읽어요.
예를 들어 웹 서비스가 80번과 443번을 써야 한다면 그 서비스에 맞는 프로필이나 포트 규칙만 추가해요. 사용하지 않는 데이터베이스 포트, 관리 도구 포트를 인터넷 전체에 열어 두는 식의 설정은 피하는 게 좋아요. Ubuntu 문서의 예시를 그대로 복사하기보다, 내 서버에서 실제로 필요한 서비스만 남겨야 해요.[1]
규칙을 넓게 열기 전에 범위를 줄여요
| 상황 | 먼저 확인할 것 | 초보자 판단 |
|---|---|---|
| 집 안에서만 접속 | 공유기 내부 주소와 허용 출발지 | 인터넷 전체 허용보다 내부망 범위를 우선해요. |
| 공개 웹 서버 | 실제 웹 포트와 TLS 설정 | 80·443 외 포트는 필요성을 따져요. |
| 원격 관리 서버 | SSH 포트와 인증 방식 | SSH 허용 전에 새 세션 재접속을 확인해요. |
| 테스트용 서비스 | 임시 규칙의 삭제 시점 | 테스트가 끝나면 규칙을 지워요. |
특정 IP나 서브넷만 허용하는 규칙은 오타가 있으면 접속을 막을 수 있어요. 처음에는 좁은 규칙을 하나씩 추가하고, 매번 새 연결로 확인하세요.
잘못 추가한 규칙은 번호로 지워요
규칙을 지울 때 명령을 다시 추측하기보다 번호를 읽고 삭제하는 편이 덜 위험해요.
sudo ufw status numbered
sudo ufw delete 3
sudo ufw status verbose
번호는 현재 목록의 순서예요. 앞의 규칙을 지우면 뒤 규칙의 번호가 바뀔 수 있으므로, 여러 개를 지울 때는 매번 목록을 다시 읽으세요. 규칙을 잠깐 끄고 싶다면 sudo ufw disable을 사용할 수 있지만, 비활성화 상태를 오래 방치하지 않도록 바로 원인을 확인해야 해요.[2]
문제가 생겼을 때 다음 행동
- 현재 SSH 세션을 바로 닫지 말고 오류 메시지를 기록해요.
- 서버 콘솔이나 호스팅사의 비상 콘솔 같은 다른 접속 경로를 확보해요.
sudo ufw status numbered로 방금 추가한 규칙을 확인해요.- 필요하면 잘못된 규칙을 번호로 삭제하고 새 세션을 다시 열어요.
- 클라우드 보안 그룹과 공유기 포트 전달 규칙도 따로 확인해요.
웹 서버가 안 보인다면 UFW만 의심하지 말고 서비스가 실행 중인지, 로컬에서 해당 포트가 열려 있는지, 외부 네트워크 경로가 맞는지 나누어 보세요. 방화벽은 한 단계일 뿐이에요.
작업 전 체크리스트
- 현재 접속이 SSH인지 직접 콘솔인지 확인해요.
- SSH 포트와 허용 규칙을 먼저 확인해요.
- 새 터미널에서 재접속한 뒤 방화벽을 켜요.
- 필요한 서비스 외 포트는 열지 않아요.
- 변경 뒤 번호 목록과 실제 서비스 접속을 다시 확인해요.
Ubuntu의 다른 원격 관리 설정을 함께 다룰 때는 SSH 키 인증을 점검하는 글도 참고할 수 있어요. UFW 규칙과 SSH 인증은 서로 다른 보안 층이므로 한쪽만 바꿔서 전체 보안을 판단하면 안 돼요.