우분투 방화벽 설정의 중요성과 기초 학습 목표
우분투 서버를 인터넷에 연결하여 운영할 때 외부의 무단 접근을 차단하는 것은 시스템 관리의 기본이자 가장 중요한 단계입니다. 우분투 환경에서는 기본적으로 강력하고 직관적인 방화벽 도구인 UFW(Uncomplicated Firewall)를 제공합니다. 이번 글에서는 초보 서버 운영자가 실수하기 쉬운 SSH 접속 차단 사고를 예방하면서, 웹서버 포트 등 필요한 서비스 포트를 안전하게 개방하고 점검하는 전체 절차를 다룹니다.
이 글을 통해 독자 여러분은 UFW 설치 여부 확인부터 기본 정책 설정, SSH 접속 유지를 위한 예외 처리, 특정 포트 허용 및 차단, 그리고 현재 적용된 방화벽 상태를 검증하는 실무적인 명령어를 익히게 됩니다.
사전 준비 사항 및 주의사항
방화벽 설정을 변경하기 전에 반드시 다음 사항을 확인해야 합니다. 방화벽 규칙을 잘못 적용하면 원격에서 서버로 접속 중인 세션이 끊어지거나 재접속이 불가능해지는 치명적인 문제가 발생할 수 있습니다.
- 우분투 서버에 root 권한 또는 sudo 사용자로 로그인되어 있어야 합니다.
- 원격 접속 환경이라면 반드시 SSH 포트가 허용된 상태인지 먼저 확인해야 합니다.
- 클라우드 서비스(AWS, GCP, 네이버클라우드 등)를 이용 중이라면 클라우드 자체 보안그룹 설정과 우분투 내부 UFW 설정을 모두 고려해야 합니다.
UFW 설치 및 기본 상태 확인
많은 우분투 배포판에는 UFW가 기본 설치되어 있지만, 최소 설치 버전이나 특정 환경에서는 설치가 누락되어 있을 수 있습니다. 다음 명령어로 설치 상태를 확인하고 필요시 설치합니다.
sudo apt update
sudo ufw version
만약 설치되어 있지 않다면 아래 명령어로 패키지를 설치할 수 있습니다.
sudo apt install ufw
기본 방화벽 정책 설정
방화벽의 기본 원칙은 ‘모든 접근을 차단하고 필요한 것만 허용’하는 것입니다. UFW의 기본 정책 역시 들어오는 트래픽(Incoming)은 거부하고, 나가는 트래픽(Outgoing)은 허용하는 방향으로 설정하는 것이 안전합니다.
sudo ufw default deny incoming
sudo ufw default allow outgoing
SSH 접속 포트 사전 허용
방화벽을 활성화하기 전에 반드시 SSH 접속 포트(기본 22번 또는 변경된 포트)를 허용해야 합니다. 이를 누락하고 방화벽을 켜면 원격 관리 권한을 잃게 되므로 가장 주의해야 할 단계입니다.
sudo ufw allow 22/tcp
만약 기본 SSH 포트를 변경하여 사용 중이라면 해당 포트 번호를 입력해야 합니다. 예를 들어 포트 번호가 2222라면 sudo ufw allow 2222/tcp와 같이 입력합니다.
방화벽 활성화 및 상태 검증
기본 정책과 SSH 허용 규칙이 준비되었다면 방화벽을 활성화합니다.
sudo ufw enable
활성화 직후에는 반드시 현재 설정된 규칙을 상세히 확인해야 합니다. 아래 명령어로 적용된 내용을 점검합니다.
sudo ufw status verbose
웹서버 포트 개방 및 추가 규칙 관리
아파치나 Nginx 같은 웹서버를 운영한다면 HTTP(80)와 HTTPS(443) 포트를 추가로 개방해야 합니다. 서비스 이름을 이용하거나 포트 번호 직접 지정 방식으로 추가할 수 있습니다.
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
특정 IP 주소나 대역에서만 접근을 허용해야 하는 데이터베이스 포트의 경우 다음과 같이 출발지 IP를 지정하여 규칙을 추가할 수 있습니다.
sudo ufw allow from 192.168.1.100 to any port 3306 proto tcp
방화벽 규칙 삭제 및 롤백 방법
잘못 추가된 규칙이 있거나 설정을 초기화해야 할 때는 번호를 확인하여 삭제할 수 있습니다. 먼저 등록된 규칙의 번호를 확인합니다.
sudo ufw status numbered
출력된 번호를 바탕으로 특정 규칙을 삭제합니다.
sudo ufw delete [번호]
만약 모든 설정을 초기 상태로 되돌리고 싶다면 다음 명령어를 실행합니다.
sudo ufw reset
초보자가 자주 하는 실수 모음
- SSH 허용 전 UFW 활성화: 가장 흔한 사고로, 방화벽을 켠 순간 원격 세션이 끊어져 서버 콘솔에 직접 접근해야 하는 상황이 발생합니다.
- 클라우드 보안그룹 혼동: 우분투 내부 UFW에서 포트를 열었더라도 AWS나 네이버클라우드 등의 콘솔에서 보안그룹 포트가 막혀 있으면 접속이 되지 않습니다. 두 곳 모두 확인해야 합니다.
- IPv6 설정 누락: IPv6 환경을 지원하는 서버라면
/etc/default/ufw파일에서 IPv6가 활성화되어 있는지 확인하고 관련 규칙도 함께 점검해야 합니다. - 상태 검증 생략: 규칙을 추가한 뒤
sudo ufw status명령어로 정상 반영 여부를 확인하지 않아 서비스 장애로 이어지는 경우입니다.
방화벽 설정 및 점검 체크리스트
- UFW 패키지 설치 여부와 버전 확인 완료
- 기본 정책(Incoming deny, Outgoing allow) 설정 완료
- 현재 사용 중인 SSH 포트 허용 규칙 등록 완료
sudo ufw enable실행 전 SSH 포트 허용 여부 재확인 완료- 웹서버 및 필수 서비스 포트(80, 443 등) 개방 완료
sudo ufw status verbose명령어로 전체 규칙 검증 완료- 외부 기기에서 웹 서비스 및 SSH 접속 테스트 완료